AWS Mainframe Modernization 自我管理體驗不再開放給新客戶。如需類似 AWS Mainframe Modernization 自我管理體驗的功能,請從廠商導向產品和來源探索功能 AWS Transform。現有客戶可以繼續正常使用該服務。如需詳細資訊,請參閱AWS 大型主機現代化可用性變更。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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);
請注意,在現代化程式碼中「原狀」使用舊版命令內容,無需進行任何修改。