• 検索結果がありません。

COBOLアプリケーションの形態

ドキュメント内 バッチ開発ガイド (ページ 94-102)

2.5 バッチアプリケーション

2.5.2 COBOLアプリケーション

2.5.2.1 COBOLアプリケーションの形態

COBOLアプリケーションの形態について説明します。

アプリケーションの形態

バッチアプリケーションの形態は、COBOLアプリケーションの副プログラムです。バッチアプリケーションは、COBOLアプリケーションの 副プログラムとして設計します。

・ PROGRAM-IDに設定できるプログラム名の先頭は半角英文字です。

・ PROGRAM-IDに設定できるプログラム名の最大長は140バイトです。

・ パラメタは、すべて入力パラメタであり、かつデータ型を限定しています。

・ STOP RUN文を使用してバッチアプリケーションを終了しないでください。バッチアプリケーションの動作を保証しません。COBOL

アプリケーションの終了は、必ずEXIT文、またはEXIT PROGRAM文を使用してください。

・ ENTRY文を使用した二次入口点は、バッチアプリケーションの呼び出し用の入口点として使用できません。

アプリケーションからのライブラリ呼出し

バッチアプリケーションからCOBOLや他言語で作成したライブラリを呼び出すことができます。バッチアプリケーションから呼び出すラ イブラリの設計は、COBOLプログラムの開発と同じです。

2.5.2.2 COBOL アプリケーションのインタフェース

バッチジョブ定義で設定した入力パラメタを、バッチアプリケーション(COBOLアプリケーション)に渡すことができます。また、バッチア プリケーションからの復帰コードは、ジョブステップの終了コードになります。これにより、バッチアプリケーションからの復帰コードで、後 続ジョブステップを実行するかを制御できます。

バッチジョブ定義とバッチアプリケーションの入力パラメタ、および復帰コードの関係を以下に示します。

バッチアプリケーションには、以下のインタフェースがあります。

・ 入力パラメタ

- 入力パラメタの構成

- COBOL登録集の設定項目

- 入力パラメタのデータ変換規則

- 入力パラメタの未設定データの判定

・ 復帰コード

・ 環境変数

・ ファイル資源の割当て

COBOL登録集の詳細は、NetCOBOLのマニュアルを参照してください。

■入力パラメタ

入力パラメタについて説明します。

入力パラメタの構成

バッチジョブ定義のジョブステップ定義のバッチアプリケーション定義にあるパラメタに設定した値が、バッチアプリケーションの入力パ ラメタとして渡されます。入力パラメタのデータ型は、COBOL登録集に設定します。

COBOL登録集は、1バッチアプリケーションにつき、1つ作成します。なお、入力パラメタがない場合は、入力パラメタを設定するCOBOL

登録集の作成は不要です。

バッチジョブ定義に設定したパラメタの値が、バッチアプリケーションのパラメタに渡されるイメージは以下のとおりです。

バッチアプリケーションのパラメタが存在する場合

バッチアプリケーションのパラメタが存在する場合、バッチアプリケーションのすべてのパラメタを1つのCOBOL登録集に記述しま す。バッチアプリケーションには、パラメタを記述したCOBOL登録集のファイル名を記述します。

バッチアプリケーション

COBOL登録集(“PARM.CBL”)

バッチアプリケーションのパラメタが存在しない場合

バッチアプリケーションのパラメタが存在しない場合は、LINKAGE SECTIONを記述しません。

バッチアプリケーション

COBOL登録集の設定項目

COBOLアプリケーションに入力パラメタを渡す場合は、COBOL登録集が必要になります。入力パラメタが必要ない場合は、COBOL 登録集は必要ありません。入力パラメタが複数個ある場合は、1つのCOBOL登録集にまとめます。

バッチアプリケーションのCOBOL登録集は、01または77のレベル番号を持つ基本項目をパラメタとして記述できます。

* 01-LEVEL BASIC ITEM

01 PARM01 PIC X(10).

* 77-LEVEL BASIC ITEM

77 PARM77 PIC X(9).

基本項目に設定できるデータ項目は以下のとおりです。

COBOLデータ型 PIC S9(n):符号付き整数の数字項目

PIC 9(n):符号なし整数の数字項目

PIC X(n):英数字項目

バッチアプリケーションの入力パラメタに設定した基本項目に指定できる句は、バッチ実行基盤では以下とおりに取り扱います。

句名 記述可否 意味 備考

BLANK WHEN ZERO句

× データ項目の値がゼロの とき、値を空白に置き換え ます。

指定した場合、COBOL実行基盤インタフェース生成 ツール実行時にエラーになります。

CHARACTER TYPE 句

× 印字するときの文字の形 式を指定します。

指定した場合、COBOL実行基盤インタフェース生成 ツール実行時にエラーになります。

EXTERNAL句 × レコードに外部属性を与え

ます。

指定した場合、COBOL実行基盤インタフェース生成 ツール実行時にエラーになります。

GLOBAL句 △ データ名が大域名である

ことを指定します。

指定できますが、指定した場合、無効になります。

JUSTIFIED句 × 受取り側データ項目の右

端に合わせて転記するこ とを指定します。

指定した場合、COBOL実行基盤インタフェース生成 ツール実行時にエラーになります。

句名 記述可否 意味 備考

OCCURS句 × 繰り返し項目を定義しま

す。

バッチアプリケーション実行時にパラメタの値が正しく 設定されません。

PICTURE句 ○ 基本項目の形式を指定し

ます。

PRINTING

POSITION句

× 印字するときの横方向の 印字位置を指定します。

指定した場合、COBOL実行基盤インタフェース生成 ツール実行時にエラーになります。

REDEFINES句 × 同じ記憶領域に異なる

データ項目を定義します。

指定した場合、COBOL実行基盤インタフェース生成 ツール実行時にエラーになります。

RENAME句 × いくつかの基本項目をまと

めたものに名前を付けま す。

指定した場合、COBOL実行基盤インタフェース生成 ツール実行時にエラーになります。

SIGN句 ○ 符号部の形式を指定しま

す。

外部10進項目だけ有効になります。

SYNCHRONIZED句 × 計算機の記憶装置の固有

の境界にしたがって、基本 項目を配置することを指定 します。

指定した場合、COBOL実行基盤インタフェース生成 ツール実行時にエラーになります。

USAGE句 ○ データ項目の用途を指定

します。

VALUE句 △ データ項目の初期値を指

定します。

指定できますが、指定した場合、無効になります。

[記述可否の記号]

○:指定できることを示します。

△:指定できますが、指定しても、無効、または指定どおりに設定されないことを示します。

×:指定した場合、COBOL実行基盤インタフェース生成ツール実行時にエラーになることを示します。

・ バッチアプリケーションのパラメタは最大32個です。

・ パラメタ名は、英数字、“-”(ハイフン)、および“_”(アンダースコア)を使用してください。パラメタ名に日本語は使用できません。

・ バッチ実行基盤では、パラメタ名の英小文字、英大文字は区別しません。

・ バッチ実行基盤では、“-”(ハイフン)と“_”(アンダースコア)は同一の文字として取り扱います。

・ 英数字項目(PIC X(n))の最大長は、1,024文字です。

・ 数字項目の最大長は、19文字です。

・ パラメタ名にFILLER、および無記名項目を使用できません。

・ COBOL登録集に手続きを含むことはできません。

・ 部、節、段落の見出しを含むことはできません。

・ 翻訳エラーとなる記述を含むことはできません。

・ COBOLのマニュアルに記載している予約語のほかに、バッチ実行基盤の予約語として以下がありますので、使用しないでくださ

い。

- INVALID-MARKER

- “APFW_”で始まるすべての文字列

COBOL実行基盤インタフェース生成ツールについては、“6.1.2 COBOL実行基盤インタフェース生成ツールの実行”を参照してくださ い。

入力パラメタのデータ変換規則

バッチ実行基盤では、COBOLアプリケーションを呼び出すときに、バッチジョブ定義に設定した値を、COBOLアプリケーションのデー タ型に対応するように変換します。

このデータ交換時の規則は、以下のとおりです。

数字項目

バッチ実行基盤では、COBOLアプリケーションのデータ項目の桁数に合わせて、桁落としや0詰めが行われます。

以下に例を示します。

バッチジョブ定義に設定した値 COBOLアプリケーション

定義 PIC S9(8)

値 +123456789 +23456789

+12345678 +12345678

+123456 +00123456

符号の整形については、COBOLアプリケーションのデータ型が符号をもつか、SIGN句が指定されているかによって決定します。

COBOLアプリケーションのデータ型が符号付きである場合は、必要に応じて以下のように符号を補います。

バッチジョブ定義に設定した値 COBOLアプリケーション

定義 PIC S9(8)

値 +12345678 +12345678

-12345678 -12345678

12345678 +12345678

COBOLアプリケーションのデータ型が符号なしである場合は、以下のように符号を削除します。

バッチジョブ定義に設定した値 COBOLアプリケーション

定義 PIC 9(8)

値 +12345678 12345678

-12345678 12345678

12345678 12345678

英数字項目

バッチ実行基盤では、COBOLアプリケーションのデータ項目の大きさに合わせて、末尾に半角空白文字を挿入したり、文字列を 削除したりします。

バッチジョブ定義に設定した値 COBOLアプリケーション

定義 PIC X(10)

値 ABC■12 ABC■12■■■■

1234567890AB 1234567890

(表中の“■”は半角空白文字を示します)

入力パラメタの未設定データの判定

バッチ実行基盤では、バッチアプリケーション定義にバッチアプリケーションへ渡すパラメタの値を設定せずに、バッチアプリケーショ ンを呼び出すことがあります。この未設定のパラメタに対して、値が設定されていないことを判定できます。

入力パラメタの長さが2バイト未満の場合、本機能は使用できません。

入力パラメタの未設定データの判定を行うには、バッチワークユニットの環境変数に“APFW_PARAM_COMPLEMENT_MODE=ON” を設定する必要があります。

バッチワークユニットの環境変数の設定方法については、“Interstage Job Workload Server セットアップガイド”の“バッチワークユニット の設定変更”および“Environment Variable:環境変数”を参照してください。

これらの未設定データの判定のために、COBOL登録集“INVALID_MARKER.cbl”を提供しています。必要に応じてCOBOL開発環 境に取り込んでください。

COBOL登録集“INVALID_MARKER.cbl”は“Interstage Job Workload Server 開発環境パッケージ”の以下に示すディレクトリに格納 されています。

Interstage Job Workload Serverのインストールディレクトリ\BAS\copy\

COBOL登録集“INVALID_MARKER.cbl”は、以下に示すようにデフォルトの値として“7FFF”が定義されています。

ほかの値に変更する場合は、“INVALID_MARKER.cbl”の定義を変更してください。

変更できるのは値のみです。長さは変更しないでください。

01 INVALID-MARKER PIC X(2) VALUE X"7FFF".

01 INVALID-MARKER2 REDEFINES INVALID-MARKER PIC N(1).

未設定データの判定処理は未設定であることを識別するための値をあらかじめ定義し、バッチアプリケーション内でこの値とパラメタの 値を比較します。このため、判定に使用する値は実行時にパラメタの値として使用されない値でなければなりません。バッチアプリケー ション実行時にパラメタとして使用されない値を決定できない場合は、未設定データ判定処理を使用できません。未設定データの判 定を行う場合、バッチアプリケーションは、次のようにCOPY文でCOBOL登録集“INVALID_MARKER.cbl”を取り込んでください。

WORKING-STORAGE SECTION.

COPY INVALID_MARKER.

入力パラメタが未設定かどうかをバッチアプリケーションが判定するためには、この登録集で設定したデータ名“INVALID-MARKER”

を使用して、次のように判定します。

・ 英数字項目の場合

IF FUNCTION LENG(IN-PARAM) >

FUNCTION LENG(INVALID-MARKER) AND

IN-PARAM(1:FUNCTION LENGTH(INVALID-MARKER)) NOT = INVALID-MARKER THEN 《入力パラメタ設定時の処理》

ELSE

《入力パラメタ未設定時の処理》

END-IF.

■復帰コード

バッチアプリケーションの復帰コードを決定します。

また、バッチ実行基盤で使用できるユーザアプリケーションの復帰コードは、ジョブのジョブステップ終了コードとジョブ終了コードにも なります。

ドキュメント内 バッチ開発ガイド (ページ 94-102)