CICS プログラムのモックへの MFUPP の使用

次のプログラムのソース コードは付録にあります。

  • CICSHello.cbl
  • MFUT_CICSHello.cpy
  • MFUM_CICSHello.cpy

この例では、テキスト文字列の受信と操作に EXEC CICS 文を使用するソース プログラムを使用します。テスト ケースで文字列の値に基づいてアサーションを生成しますが、MFUPP プリプロセッサはすべての EXEC CICS 文を無視するように設定されているため、テキスト文字列を提供するにはコードのモックが必要です。

  1. COBOL ソース ファイル CICSHello.cbl を作成し、このファイルに付録の内容をコピーします。
  2. ソース ファイル内の各 EXEC CICS 呼び出しの詳細を抽出するカタログ ファイルを作成します。

    Windows:

    cobol CICSHello.cbl preprocess(mfupp) cics"ignore" mock"cics" exec-report-file endp int"";

    UNIX:

    cob -vi -C "p(mfupp) cics(ignore) mock(cics) exec-report-file endp" CICSHello.cbl

    CICSHello.mfupp-et カタログ ファイルが生成されます。このファイルには、CICSHello.cbl 内の各 EXEC CICS 文の詳細が含まれます。テストの実行に使用されるフレームワーク ファイルを生成するために、これらの詳細を次の手順で使用します。カタログ ファイルの抜粋を次に示します。3 行目以降が CICSHello.cbl 内の各 EXEC CICS 文のエントリです。

    CICS カタログ ファイル
  3. テスト対象にしたときにソース コードに挿入されるフレームワーク ファイルを生成します。

    Windows:

    mfurun -generate-exec-mock-snippet CICSHello.mfupp-et

    UNIX:

    cobmfurun -generate-exec-mock-snippet CICSHello.mfupp-et

    EXEC CICS 文のモックに使用できるMFUT_CICSHELLO.cpyMFUM_CICSHELLO.cpyMFUPD_CICSHELLO.cpyMFUPDS_CICSHELLO.cpyMFULK_CICSHELLO.cpyMFUWS_CICSHELLO.cpy の各ファイルが作成されます。

  4. テスト ケース ファイル (MFUT_CICSHELLO.cpy) の内容を付録のコードに置き換えます。
  5. ソース ファイルとそれをサポートするコピーブック ファイルをコンパイルします。

    Windows:

    cobol CICSHello.cbl preprocess(mfupp) cics"ignore" mock"cics" endp int"";

    UNIX:

    cob -vi -C "p(mfupp) cics(ignore) mock(cics)" CICSHello.cbl

    このコンパイルは、すべての EXEC CICS コマンドを無視するように設定されています。

  6. テストを実行します。

    Windows:

    mfurun CICSHello.int

    UNIX:

    cobmfurun CICSHello

    ソース コードは元々 EXEC CICS 文を使用してユーザーが提供したものであるため、テストは最初は失敗するはずです。すべての EXEC CICS 文を無視するように設定しているため、テストでユーザーの応答の「モック」を作成する必要があります。これにより、プログラムを最後まで実行できるようになります。

  7. MFUM_CICSHello.cpy ファイルを編集し、次のセクションに MOVE "Hello" to WS-MESSAGE-R(4:) を追加します。
               MOCK-CID-SEND-EA84590D SECTION.
                   IF MFU-PP-MOCK-EXEC-CRC NOT EQUAL "EA84590D"
                       DISPLAY "CICS Statement changed (EA84590D)"
                   END-IF
                   MOVE "Hello" to WS-MESSAGE-R(4:)
                   MOVE MFU-PP-ACTION-DO-NOTHING TO RETURN-CODE
               .

    セクション名は CICSHelpp.mfupp-et のカタログ化されたエントリからの派生です(完全なプログラムは付録にあります)。

  8. 修正したモック コードでコードを再コンパイルします。

    Windows:

    cobol CICSHello.cbl preprocess(mfupp) cics"ignore" mock"cics" endp int"";

    UNIX:

    cob -vi -C "p(mfupp) cics(ignore) mock(cics)" CICSHello.cbl
  9. テストを再度実行します。

    Windows:

    mfurun CICSHello.int

    UNIX:

    cobmfurun CICSHello

    今回はテストでエラーにならないユーザー入力のモックを受け取っているため、テストは成功します。