ここで紹介する例題は,RDBにアクセスする処理を部品化し,テンプレートから呼び出して使えるようにしたものです。RDBを部品化することによって,使うRDBの差異に,呼び出す部品を変えることで対応できるため,一つのテンプレートを,より多くのプログラム作成に使うことができます。また,一部の処理を部品化することによって,その分,テンプレートでの記述が少なくて済み,見やすくなります。
ジャーナルファイル(SAMファイル)のデータを基に,キーが存在すればDBを更新し,存在しない場合は新規に追加します。さらに,新規に追加したものだけをモニタファイル(SAMファイル)に出力します。
例題で使用するファイル・DBのレコード形式を次に示します。
例題を理解するために,部品を呼び出して展開する方法と,部品中に記述された処理をテンプレート中の任意の位置に埋め込む方法の2種類の部品の使い方を説明します。
一つの部品にはプロシジャを複数指定できます。@@procプロシジャ名を記述して,プロシジャ宣言します。部品は,テンプレート中から@@<ファイル名>プロシジャ名で呼び出します。
@@merge文と@@put文を使って,部品中に記述された処理をテンプレート中の任意の位置に埋め込むことができます。この機能を使えば,例えば部品中でCOBOLの手続きを展開しながら,処理に必要なデータ定義をWORKING-STORAGE SECTIONやLINKAGE SECTIONの任意の位置に展開できます。
部品には@@put 可変記号名 <<を指定し,続けて埋め込みテキストを記述します。テンプレートには,テキストを埋め込みたい個所を指示する@@merge(可変記号名)を記述します。
以降,例題テンプレートとソースプログラム生成結果を順に示します。対応させて参照してください。