コマンドユーティリティ - AWS Mainframe Modernization

AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization Service (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、AWS 「 Mainframe Modernization の可用性の変更」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

コマンドユーティリティ

このセクションは、コントロールカードを使用して提供されるユーザーコマンドを処理するロールを持つユーティリティプログラムに関連しています。

IKJEFT1A/IKJEFT1B/KEQEFT01/IKJEFT01/DSNDBTCH

IKJEFT1A の目的

IKJEFT1A とそのエイリアスは、インタラクティブ TSO セッションを必要とせずにバッチジョブで TSO (T ime S 共有 O プション) コマンドを実行し、非インタラクティブバッチ環境とインタラクティブ TSO 環境をブリッジします。

環境固有の違いがあるレガシー IKJEFT1A の動作を模倣します。たとえば、DB2 TERM(inate) コマンドは最新の環境では無視されます (情報として記録されます)。

注記

ここで説明されていないコマンド構文 - IKJEFT1A は従来のコマンドデータセットを変更せずに使用します。TSO コマンドの詳細については、レガシープラットフォームのドキュメントを参照してください。

IKJEFT1A 署名

コマンド入力 (JCL DDディレクティブで定義) にSYSTSINデータセットを使用します。モダナイズバージョンでは、同じデータセットが変更されていません。モダナイズされた Groovy ジョブスクリプトでのみ呼び出されます。

IKJEFT1A 関連の設定パラメータ

ユーティリティの動作は、次の設定パラメータの影響を受けます。

  • systin.encoding

このパラメータの設定の詳細については、オプションのウェブアプリケーションで使用可能なプロパティ「」を参照してください。

IKJEFT1A チェック/エラー処理

サポートされていないコマンドが SYSTSIN データセットに存在する場合、 RuntimeExceptionがスローされます。

IKJEFT1A サンプルの使用

レガシー JCL スクリプト ( DD *ディレクティブを使用してSYSTSINデータセットのインラインコンテンツを使用する)

//********************************************************************* //* 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 個のパラメータを受け入れます。

  • 最初: 実行するコマンドを含む英数字データ

  • 2 番目 (オプション): 最初のパラメータから読み取るバイト単位の長さ (デフォルトは全長)

QCMDEXC チェック/エラー処理

次の場合、 RuntimeException がスローされます。

  • 指定された引数が 1 つまたは 2 つでない場合。

  • コマンド引数が空の場合、または実行するコマンドが認識されない場合。

  • コマンドの実行が何らかの理由で失敗した場合、さらにプログラムからのリターンコードは 1 に設定されます。

QCMDEXC サンプルの使用

レガシー COBOL プログラムの使用例を次に示します。データ項目CL-COMMANDXには、QCMDEXC プログラム呼び出しの引数として使用される前に コマンドが付属しています。

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);

レガシーコマンドの内容は、モダナイズされたコードで「そのまま」使用されており、変更はありません。