GOTO 指令

GOTO 指令會導致 z/OS® Debugger 在指定的陳述式 ID 回復程式執行。 無法縮寫 GOTO 關鍵字。 如果您想要 z/OS Debugger 在目標位置將控制權傳回給您,請確定該位置有岔斷點。

讀取語法圖跳過視覺化語法圖GOTOGOTOstatement_id;

使用注意事項

  • 如果 SET WARNING 設為 OFF ,且執行時期層次容許 GOTO 對下列程式不啟用編譯器,則您可以使用 GOTO 指令:
    • 如果您使用 TEST 編譯器選項的 NOEJPD 子選項進行編譯,則是在編譯器未插入連結鉤且具有最佳化的情況下進行編譯的 COBOL 程式
    • 使用 Enterprise COBOL for z/OS 第 5 版或更新版本編譯並由 Automatic Binary Optimizer for z/OS 最佳化的程式
    • 使用 Open XL C/C++ for z/OS 編譯的程式
    在此情況下,當執行或遵循 GOTO 指令時,使用 GOTO 可能會導致無法預期的行為,包括異常終止。 在下列任一情況下,您可以在使用 OPT 和 TEST (NOEJPD) 選項所編譯的程式中取得 GOTO 指令的最佳行為:
    • 當 GOTO 或 JUMPTO 指令的目標是段落名稱或區段名稱 (標籤) 時。
    • 當 GOTO 或 JUMPTO 指令的目標是段落或區段中的第一個陳述式時。
    您可以取得最佳行為,尤其是當陳述式是 COBOL 程式中 COBOL 陳述式 PERFORM 或 GOTO 的目標時。 請參閱 SET WARNING 指令 (C、C++、COBOL 及 PL/I)
  • 當您對解除組合程式進行除錯時,無法使用 GOTO 指令。
  • 如果在指令清單中指定 GOTO (例如,作為 IF 指令或 WHEN 子句的主旨) ,則會忽略清單中的所有後續指令。
  • 如果以最小最佳化來編譯程式,則不會限制陳述式 GOTO
  • 當您使用 PLAYBACK 指令重播記錄的陳述式時,無法使用 GOTO 指令。
  • 對於 C、C++ 及 PL/I ,編譯器可以在最佳化期間移除陳述式,請使用可在程式執行期間呼叫到的 GOTO 指令來指定參照或陳述式。 您可以發出 LIST STATEMENT NUMBERS 指令來判斷可呼叫到的陳述式。
  • PL/I 容許在 PLITESTCEETEST呼叫的指令清單中使用 GOTO
  • 在 PL/I 中,容許區塊外 GOTO。 不過,可能需要資格。
  • 若為 COBOL , GOTO 指令會遵循 GOTO 陳述式的 COBOL 語言規則。 在下列情況下,您可以使用 GOTO 指令:
    • 利用編譯器所插入的連結鉤來編譯的 COBOL 程式。 如果您使用 Enterprise COBOL for z/OS第 4 版,請使用 TEST 編譯器選項的 HOOK 子選項來編譯您的程式。 如果您使用下列任何編譯器,請使用 PATHALL 子選項及 TEST 編譯器選項的 SYM 子選項來編譯您的程式:
      • Enterprise COBOL for z/OS and OS/390®第 3 版
      • COBOL for OS/390 & VM第 2 版
    • 由編譯器在未插入連結鉤且未最佳化的情況下進行編譯的 COBOL 程式。 如果您使用 Enterprise COBOL for z/OS第 4 版,請使用 TEST 編譯器選項的 NOHOOK 子選項來編譯您的程式。 如果您使用下列任何編譯器,請使用 TEST 編譯器選項的 NONE 子選項來編譯您的程式:
      • Enterprise COBOL for z/OS and OS/3903.2 版或更新版本
      • Enterprise COBOL for z/OS and OS/3903.1 版,已安裝 APAR PQ63235
      • COBOL for OS/390 & VM2.2 版
      • COBOL for OS/390 & VM2.1 版,已安裝 APAR PQ63234
    • 由編譯器插入且具有最佳化的不含連結鉤編譯的 COBOL 程式。 您必須使用 Enterprise COBOL for z/OS第 4 版來編譯您的程式,並指定 TEST 編譯器選項的 EJPDNOHOOK 子選項。 指定 EJPD 子選項可能會導致失去一些最佳化。
    • 若為 Enterprise COBOL for z/OS 第 5 版,程式一律在沒有編譯器插入連結鉤的情況下進行編譯。 如果您將 TEST 編譯器選項與 OPT 編譯器選項的任何層次一起使用,建議您使用 TEST 編譯器選項的 EJPD 子選項。
  • 如果您在 AT 外觀岔斷點、AT LOAD 岔斷點或 AT DELETE 岔斷點停止,則無法使用此指令。

範例

  • 在陳述式 23 回復執行,其中陳述式 23 位於目前作用中的區塊中。
    GOTO 23;
    如果陳述式 23 沒有岔斷點,則 z/OS Debugger 會從陳述式 23 執行,直到命中岔斷點為止。
  • 在陳述式 45 中回復執行,其中陳述式 45 位於目前作用中的區塊中。
    AT 45
    GOTO 45

如需本主題所討論資料的相關資訊,請參閱下列主題。

  • 相關作業
  • IBM® z/OS Debugger 使用手冊
  • 相關參照
  • 陳述式 ID