AWS Mainframe Modernization Service (受管執行期環境體驗) 不再向新客戶開放。對於與 AWS Mainframe Modernization Service (受管執行期環境體驗) 類似的功能,探索 AWS Mainframe Modernization Service (自我管理體驗)。現有客戶可以繼續正常使用該服務。如需詳細資訊,請參閱AWS 大型主機現代化可用性變更。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
命令公用程式
本節與 公用程式相關,其角色是處理使用控制卡提供的使用者命令。
IKJEFT1A/IKJEFT1B/KEQEFT01/IKJEFT01/DSNDBTCH
IKJEFT1A 用途
IKJEFT1A 及其別名會在批次任務中執行 TSO (T ime S haring O ption) 命令,而不需要互動式 TSO 工作階段、橋接非互動式批次和互動式 TSO 環境。
模擬具有特定環境差異的舊版 IKJEFT1A 行為:例如,現代環境會忽略 DB2 TERM(inate) 命令 (記錄為資訊性)。
注意
此處未詳細說明的命令語法 - IKJEFT1A 未變更使用舊版命令資料集。如需 TSO 命令詳細資訊,請參閱舊版平台文件。
IKJEFT1A 簽章
使用SYSTSIN資料集進行命令輸入 (透過 JCL DD指令定義)。現代化版本使用相同的資料集不變。僅在現代化 Groovy 任務指令碼中調用。
IKJEFT1A 相關組態參數
公用程式的行為會受到下列組態參數的影響:
-
systin.encoding
如需設定此參數的詳細資訊選用 Web 應用程式的可用屬性,請參閱 。
IKJEFT1A 檢查/錯誤處理
當 SYSTSIN 資料集中有不支援的命令時,RuntimeException便會擲出 。
IKJEFT1A 範例用量
舊版 JCL 指令碼 (使用 SYSTSIN資料集的內嵌內容,使用 DD * 指令)
//********************************************************************* //* READ THE TEMPORARY INPUT FILE * //********************************************************************* // IF IDCM00032.RC = 1 THEN //067FILEKEY EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSIN DD * DSN SYSTEM(DB2P) RUN PROGRAM(067-fileKey) PLAN(FILEKEYPLAN) PARM('RT') END /* //TEMPVSAM DD DSN=IDXVIDEO.TEMPVSAM,DISP=SHR //FKOUT DD DSN=output(out067.txt),DISP=(NEW,CATLG) // ENDIF //*********************************************************************
和相符的現代化指令碼 (在 groovy 中) -- SYSTSIN 資料集的內嵌內容由「串流」 -- 表示
// STEP 067FILEKEY - PGM - IKJEFT01*********************************************** def step067FILEKEY(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("067FILEKEY", "IKJEFT01", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSTSIN") .stream( """ DSN SYSTEM(DB2P) RUN PROGRAM(067-fileKey) PLAN(FILEKEYPLAN) PARM('RT') END """, getEncoding()) .build() .bluesam("TEMPVSAM") .dataset("IDXVIDEO.TEMPVSAM") .disposition("SHR") .build() .fileSystem("FKOUT") .path("output(out067.txt)") .disposition("NEW") .normalTermination("CATLG") .build() .getFileConfigurations()) .withParameters(params) .runProgram("IKJEFT01") }) } } }
QCMDEXC
QCMDEXC 用途
此公用程式程式模擬 AS/400 系統公用程式 QCMDEXC 的行為,用於在執行時間以動態方式執行系統命令。
功能:
-
動態剖析和執行命令。
-
支援具名和位置參數格式。
QCMDEXC 簽章
接受 1-2 個參數:
-
首先:包含要執行之命令的英數字元資料
-
第二個 (選用):從第一個參數讀取的位元組長度 (預設為完整長度)
QCMDEXC 檢查/錯誤處理
在下列情況下,RuntimeException將會擲回 :
-
當提供的引數數目不是一或兩個時;
-
如果命令引數是空的,或如果要執行的命令無法辨識;
-
如果命令執行因任何原因失敗;此外,來自程式的傳回碼將設定為 1。
QCMDEXC 範例用量
以下是來自舊版 COBOL 程式的範例用量:資料項目在用作 QCMDEXC 程式呼叫的引數之前CL-COMMANDX,會先安裝 命令:
INITIALIZE CL-COMMANDX. STRING "CPYF FROMFILE(PLAYERS) TOFILE(" DELIMITED BY SIZE, "NEWFILE" DELIMITED BY SIZE, ") MBROPT(*REPLACE) FMTOPT(*NOCHK) CRTFILE(*YES)" DELIMITED BY SIZE INTO CL-COMMANDX END-STRING. CALL "QCMDEXC" USING CL-COMMANDX CLENGTHX.
現代化為 Java 程式碼後,這會變成:
DataUtils.initialize(ctx.getClCommandx().getClCommandxReference()); StringConcatenationBuilder.newInstance(ctx.getClCommandx().getClCommandxReference()) .addDelimitedBySize("CPYF FROMFILE(PLAYERS) TOFILE(") .addDelimitedBySize("NEWFILE") .addDelimitedBySize(") MBROPT(*REPLACE) FMTOPT(*NOCHK) CRTFILE(*YES)") .end(); ctrl.callSubProgram("QCMDEXC", CallBuilder.newInstance() .byReference(ctx.getClCommandx().getClCommandxReference()) .byReference(ctx.getClengthx().getClengthxReference()) .getArguments(), ctx);
請注意,在現代化程式碼中「原狀」使用舊版命令內容,無需進行任何修改。