その他/その他のユーティリティ - AWS Mainframe Modernization

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

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

その他/その他のユーティリティ

このセクションでは、既存のカテゴリにアタッチできなかったさまざまなユーティリティプログラムについて説明します。

以下の段落では、 PICTURE は COBOL PICTUREキーワードとして理解され、フィールドのデータ型と形式を記述するために使用されます。

CBL_AND/CBL_OR/CBL_XOR/CBL_EQ/CBL_IMP/CBL_NOT

目的

これは、一部の COBOL ダイアレクト (Micro Focus) にあるデータ項目に対するビット単位の論理オペレーションのサポートに関連しています。AWS Transform による自動リファクタリングは、Cobol MF ダイアレクトから java へのビット単位演算子の使用の変換を処理することに注意してください (以下の使用例を参照)。モダナイズされたコードを正しく実行するには、ユーティリティアプリケーションを一緒にデプロイする必要があります。

サポートされている演算子:

  • 単項演算子:

単一演算子 details
CBL_NOT ビット単位の補数 (~target)
  • バイナリ演算子:

バイナリ演算子 details
CBL_AND ビット単位 AND (ソースとターゲット)
CBL_OR ビット単位 OR (ソース | ターゲット)
CBL_XOR ビット単位の排他的 OR (ソース ^ ターゲット)
CBL_EQ ビット単位の同等性 (~(ソース ^ ターゲット))
CBL_IMP ビット単位のインプリケーション (~source | target)

Signature

1 つのオペランド (ターゲット) のみを持つ CBL_NOT を除き、他のすべてのオペレーションには、データ項目である少なくとも 2 つのオペランドがあります。最初のオペランドはソース、2 番目のオペランドはターゲットです。追加のオプションの引数 (長さ) は、処理するバイト数 (左から右) を提供します。長さを省略すると、デフォルトでソースサイズとターゲットサイズの最小値 (バイト単位) になります。オペレーションの結果はターゲットに保存されます。プログラムのリターンコードは 0 です (例外が発生しない限り)。

チェック/エラー処理

  • 使用可能な演算子ごとに、必要な引数の数が確認されます。必要な引数の最小数が満たされない場合、 IllegalArgumentExceptionがスローされます。

  • オプションの整数長引数で正がチェックされます。指定された長さが負の場合、メッセージはログに表示され、演算子は適用されません。

サンプルの使用

  • 単項演算子のサンプル:

CBL_NOT の共同使用は次のとおりです。

* TARGET: 00000101 * OPERATION: NOT * EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) MOVE X'0500' to TARGET CALL "CBL_NOT" USING TARGET BY VALUE 1.

および対応する Java モダナイゼーション:

/* TARGET: 00000101 OPERATION: NOT EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) */ ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_NOT", CallBuilder.newInstance() .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);
  • バイナリ演算子のサンプル:

例えば、CBL_AND を使用した次の COBOL コードについては、「」を参照してください。

* SOURCE: 00000011 * OPERATION: AND * TARGET: 00000101 * EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) MOVE X'0300' to SRC MOVE X'0500' to TARGET CALL "CBL_AND" USING SRC TARGET BY VALUE 1.

と Java モダナイゼーション:

/* SOURCE: 00000011 OPERATION: AND TARGET: 00000101 EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) */ ctx.getSrc().getSrcReference().setBytes(new byte[]{ 3, 0 }); ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_AND", CallBuilder.newInstance() .byReference(ctx.getSrc().getSrcReference()) .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);

CEE3ABD

目的

このユーティリティプログラムは、同じ名前のレガシープログラムの動作を模倣します。そのロールは、Abend (異常終了) コードとオプションのクリーンアップタイミングを使用してプログラムを終了することです。AWS 変換エンジンは、CEE3ABD への呼び出しの自動モダナイゼーションを処理します。モダナイズされたコードを正しく実行するには、ユーティリティアプリケーションを一緒にデプロイする必要があります。

プログラムは、指定された異常終了コードを使用して、現在の実行ユニットを停止します。指定されたコードでユーザー終了が呼び出されたことを指定する情報メッセージがログに出力されます。現時点では、タイミングパラメータは考慮されませんが、モダナイゼーションの互換性の理由から引数として存在します。

Signature

プログラムは 0 または 2 の引数を受け入れます。2 つの引数は次のとおりです。

  • Abend コード (正の整数値として解釈できるデータ項目)

  • クリーンアップタイミング (正の整数値として解釈可能なデータ項目) -- 無視

引数を指定しない場合、次のデフォルト値が使用されます。

  • Abend コード: 0

  • クリーンアップのタイミング: 0

チェック/エラー処理

  • 0 または 2 の引数が指定されていることをチェックします。指定されていない場合、 がスローIllegalArgumentExceptionされます。

  • 2 つの引数を指定する場合は、abend コードが 0~4095 (両方を含む)、タイミングが 0~5 (両方を含む) であることを確認します。

これらのテストに失敗すると、 がトリガーされますIllegalArgumentException

サンプルの使用

以下は、Carddemo アプリケーションからの COBOL プログラムの使用例です。

9999-ABEND-PROGRAM. DISPLAY 'ABENDING PROGRAM' MOVE 0 TO TIMING MOVE 999 TO ABCODE CALL 'CEE3ABD'.

および対応するモダナイズされた Java コード:

public void _9999AbendProgram(final Cbtrn03cContext ctx, final ExecutionController ctrl) { DisplayUtils.display(ctx, ctrl, LOGGER, "ABENDING PROGRAM"); ctx.getTiming().setTiming(0); ctx.getAbcode().setAbcode(999); ctrl.callSubProgram("CEE3ABD", CallBuilder.newInstance() .getArguments(), ctx); }

CEEDATE

目的

CEEDATE ユーティリティは、指定された形式を使用して、リリアンの日付 (1582 年 10 月 15 日以降の日数) を表す数値を文字ベースの日付表現に変換します。

これは、同じ名前のレガシーシステムユーティリティの動作を模倣します。

Signature

その性質上、CEEDATE ユーティリティはむしろプログラムから呼び出されることを意図しています。

これには 3 つまたは 4 つの引数が必要です (最後の引数はオプションです)。

  • 必須の最初の引数は、値がリリアン日付として解釈される数値データ項目です。

  • 必須の 2 番目の引数は、日付から文字への変換に使用されるPICTURE文字列を保持する英数字のデータ項目です。

  • 必須の 3 番目の引数は、ターゲットの英数字データ項目であり、2 番目の引数を として使用して最初の引数を変換した結果を保持します。 PICTURE

  • 4 番目のオプションの引数は、ユーティリティからのフィードバックコードを保存するために使用されるデータ項目です。

チェック/エラー処理

  • ユーティリティに渡される引数が 3 つまたは 4 つでない場合、 BluageWrapperExceptionがスローされます。

  • 指定された最初の数値引数をリリアン日付として (範囲外) 適切に評価できない場合、エラーメッセージがログに記録されます。オプションのフィードバックコード所有者が存在する場合、重要度 3 のフィードバックコードとメッセージ番号 2512 が供給されます。

  • 指定された が無効であるため、日付変換中に例外が発生した場合PICTURE、エラーメッセージがログに記録されます。オプションのフィードバックコード所有者が存在する場合、重要度 3 のフィードバックコードとメッセージ番号 2518 が供給されます。

  • 何らかの理由で変換が正しく実行できない場合、出力データ項目は空白で埋められます。

  • 変換が成功すると、オプションのフィードバックコードホルダーに重要度 0 (メッセージなし) のフィードバックコードが供給されます。

サンプルの使用

COBOL プログラムからのサンプル呼び出しを次に示します (フィードバックコードホルダー FC の構造には省略記号が含まれており、 にはここに示されていない数百の条件 (レベル 88) エントリが含まれています)。

WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 TIMESTAMP-OUT PIC X(80). 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. 01 FC. ... * lilian date for 4 June 1990 MOVE SPACES TO MASK-STR MOVE 148887 TO LILIANS. MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEEDATE-ROUTINE USING LILIANS MASK TIMESTAMP-OUT FC.

CEELOCT

目的

CEELOCT ユーティリティは、ローカルの日付/時刻を 3 つの形式で返すために使用されます。

  • リリアン日付 (1582 年 10 月 14 日以降の日数)

  • リリアン秒 (1582 年 10 月 14 日 00:00:00 からの秒数)

  • グレゴリオ語文字列 ( の形式YYYYMMDDHHMISS999)

これは、同じ名前のレガシーシステムユーティリティの動作を模倣します。

Signature

その性質上、CEELOCT ユーティリティはプログラムから呼び出されることを意図しています。

これには 3 つまたは 4 つの引数が必要です (最後の引数はオプションです)。

  • 必須の最初の引数はデータ項目で、リリアン日付の保存に使用されます。

  • 必須の 2 番目の引数はデータ項目で、リリアン秒の保存に使用されます。

  • 必須の 3 番目の引数はデータ項目で、上記の形式を使用してグレゴリオ暦の日付を保存するために使用されます。

  • オプションの 4 番目の引数は、ユーティリティからのフィードバックコードを保存するために使用されるデータ項目です。

チェック/エラー処理

  • ユーティリティに渡される引数が 3 つまたは 4 つでない場合、 BluageWrapperExceptionがスローされます。

  • ローカルの日付/時刻から出力形式への変換の処理中に例外が発生した場合: 1 番目と 2 番目の引数は 0 に設定され、3 番目の引数は変更されません。エラーメッセージがログに記録されます。オプションで、フィードバックコード所有者に重要度 3 のフィードバックコードとメッセージ番号 2531 が供給されます。

  • 成功すると、3 つの引数すべてに適切なコンテンツが入力され、オプションのフィードバックコードに重要度 0 のコードが供給されます。

サンプルの使用

CEELOCT ユーティリティの使用方法を示す COBOL スニペットの例を次に示します。フィードバックコードホルダー構造 FC には数百の条件 (レベル 88) エントリが含まれているため、完全には指定されません。

WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 GREGORN PIC X(80). 01 SECONDS COMP-2. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... CALL CEELOCT-ROUTINE USING LILIANS SECONDS GREGORN FC.

CEERAN0

目的

CEERAN0 プログラムは、指定されたシードを使用して 0.0~1.0 の擬似乱数を生成するために呼び出されます。これは、ユーザーが指定したシードを必要とする乗算合法メソッドアルゴリズムに基づいています。シードとして 0 を使用すると、シードが実際に Greenwich 平均時間 (プログラムの実行時) から計算される特定のモードがトリガーされます。それ以外の場合、シードはそのまま使用されます。擬似ランダムシーケンスは予測可能です。

Signature

CEERAN0 プログラムには 3 つのパラメータがあります。

  • シード (入力パラメータ)、正の整数として解釈できるデータ項目 (0 を含む)

  • 乱数 (出力パラメータ)。倍精度浮動小数点数として解釈できるデータ項目 (0.0 から 1.0 までの値を除く)。これはプログラムの結果です。

  • オプションのフィードバックコード (出力パラメータ)。乱数計算に関するプログラムからのフィードバックを保存するために使用される 12 バイトのデータ項目です。

チェック/エラー処理

  • 引数が 2 または 3 でない場合、 IllegalArgumentExceptionがスローされます。

  • シード値は 0~2147483646 の間でなければなりません。シード値がこれらの範囲外の場合、エラーメッセージが記録され、フィードバックコードは重要度 3、メッセージ番号は 2524 に設定されます。生成される乱数は -1.0 (レガシー動作へのアナログ) に設定されます。

  • シード値が 0 に設定されているが、システムが Greewich 平均時間を取得できなかった場合 (何らかの理由で)、フォールバックとして値 1 を使用して計算が行われ、フィードバックコードは重要度 1 に設定され、メッセージ番号は 2523 に設定されます。乱数の計算はフォールバックシード値 (従来の動作に対するアナログ) で続行されます。

サンプルの使用

これは、フィードバックコードを含むすべてのパラメータと複数のレイヤー (エンティティ、サービス) からのビットを使用して、CEERAN0 プログラムを使用する方法を示す Java サンプルです。

//Entity layer public class Randomin extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMIN"); private final Elementary randomin = new Elementary(root,new BinaryIntegerType(4, true),new BigDecimal("0")).named("RANDOMIN"); ... public class Randomout extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMOUT"); private final Elementary randomout = new Elementary(root,new DoubleFloatingPointType(),new BigDecimal("0")).named("RANDOMOUT"); ... public class Returncode1 extends RecordEntity { private final Group root = new Group(getData()).named("RETURNCODE"); private final Elementary returncode1 = new Elementary(root,new AlphanumericType(12)," ").named("RETURNCODE"); ... // Service layer CallHandler.newInstance(ctrl, ctx, ctx.getErrorContext()) .byReference(ctx.getRandomin().getRandominReference(), ctx.getRandomout().getRandomoutReference(), ctx.getReturncode1().getReturncode1Reference()) .call("CEERAN0");

シーセックス

目的

CEESECS ユーティリティは、タイムスタンプ文字列表現をリリアン秒 (1582 年 10 月 14 日 00:00:00 からの秒数) に変換します。

Signature

その性質上、CEESECS ユーティリティはむしろプログラムから呼び出されることを意図しています。

これには 3 つまたは 4 つの引数が必要です (最後の引数はオプションです)。

  • 必須の最初の引数は、値がタイムスタンプとして解釈されるデータ項目です。

  • 必須の 2 番目の引数は、最初の引数の解釈方法を指定するために使用されるPICTURE文字列を保持する英数字のデータ項目です。

  • 必須の 3 番目の引数はデータ項目で、2 番目の引数を として使用して最初の引数を変換した結果を保持します。 PICTURE

  • 4 番目のオプションの引数は、ユーティリティからのフィードバックコードを保存するために使用されるデータ項目です。

チェック/エラー処理

  • ユーティリティに渡される引数が 3 つまたは 4 つでない場合、 BluageWrapperExceptionがスローされます。

  • 引数としてユーティリティに渡されたタイムスタンプが無効である場合、エラーメッセージが記録され、オプションで、フィードバックコードホルダーに重要度 3 のフィードバックコードとメッセージ番号 2513 が供給されます。

  • 引数としてユーティリティに渡された画像が無効である場合、エラーメッセージが記録され、オプションで、フィードバックコード所有者に重要度 3 のフィードバックコードとメッセージ番号 2518 が送られます。

  • 何らかの理由でリリアン秒出力を計算できない場合、3 番目の引数 (出力) は 0 に設定されます。

サンプルの使用

COBOL プログラムで CEESECS ユーティリティを呼び出す例を次に示します。

WORKING-STORAGE SECTION. 01 SECONDS COMP-2. 01 TIMESTAMP-IN. 05 TIMESTAMP-IN-LEN PIC S9(4) BINARY. 05 TIMESTAMP-IN-STR. 10 TIMESTAMP-IN-CHAR PIC X OCCURS 0 TO 256 DEPENDING ON TIMESTAMP-IN-LEN. 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... ... * date for lilian second 12,799,191,601.123 MOVE '1988-5-16-19:00:01.123' TO TIMESTAMP-IN-STR MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEESECS-ROUTINE USING TIMESTAMP-IN MASK SECONDS FC.

ILBOABN0

目的

ILBOABN0 プログラムの目的は、ユーザーが用意した異常終了 (異常終了) コードを使用して、制御された方法で現在の実行ユニットを中断することです。多くの場合、エラー処理専用プログラムで使用されます。

現在の実行ユニットの中断は、 をスローすることによって発生しますStopRunUnitException

Signature

ILBOABN0 プログラムは 1 つの必須引数を取ります。これは、異常終了コードを含むデータ項目です (整数として解釈可能である必要があります)。

チェック/エラー処理

をスローStopRunUnitExceptionして現在の実行単位の実行を中断している間、プログラムはリターンコードを最初の引数として指定された値に設定します。さらに、情報メッセージがログに記録されます。

サンプルの使用

以下は、AWS 変換による COBOL モダナイゼーションに起因する ILBOABN0 プログラムの使用例です。

77 WS-ABND-CODE COMP PIC S9(4) VALUE +1234. ... ... 1970-ABNDIT. CALL 'ILBOABN0' USING WS-ABND-CODE.

および一致する Java モダナイゼーション:

//Entity layer private final Group root = new Group(getData()); private final Elementary wsAbndCode = new Elementary(root,new BinaryType(4, 0, "STD", false, false, true),Short.valueOf("1234")); ... //Service layer @Override public void _1970Abndit(final MyPgmContext ctx, final ExecutionController ctrl) { ctrl.callSubProgram("ILBOABN0", CallBuilder.newInstance() .byReference(ctx.getWsAbndCode().getWsAbndCodeReference()) .getArguments(), ctx);