SEWB+/CONSTRUCTION アプリケーション開発ガイド

[目次][用語][索引][前へ][次へ]

6.1.2 マスタ更新・追加出力の例題

ここで紹介する例題は,RDBにアクセスする処理を部品化し,テンプレートから呼び出して使えるようにしたものです。RDBを部品化することによって,使うRDBの差異に,呼び出す部品を変えることで対応できるため,一つのテンプレートを,より多くのプログラム作成に使うことができます。また,一部の処理を部品化することによって,その分,テンプレートでの記述が少なくて済み,見やすくなります。

<この項の構成>
(1) 例題テンプレートで作れるプログラム
(2) 例題テンプレートの入出力構成
(3) ファイル・DBのレコード形式
(4) 例題テンプレートの処理概要
(5) 部品の展開
(6) 例題テンプレートの記述のポイント
(7) 例題テンプレートと生成されたソースプログラム

(1) 例題テンプレートで作れるプログラム

ジャーナルファイル(SAMファイル)のデータを基に,キーが存在すればDBを更新し,存在しない場合は新規に追加します。さらに,新規に追加したものだけをモニタファイル(SAMファイル)に出力します。

(2) 例題テンプレートの入出力構成

[図データ]

(3) ファイル・DBのレコード形式

例題で使用するファイル・DBのレコード形式を次に示します。

(4) 例題テンプレートの処理概要

[図データ]

(5) 部品の展開

例題を理解するために,部品を呼び出して展開する方法と,部品中に記述された処理をテンプレート中の任意の位置に埋め込む方法の2種類の部品の使い方を説明します。

(a) 部品の呼び出し

一つの部品にはプロシジャを複数指定できます。@@procプロシジャ名を記述して,プロシジャ宣言します。部品は,テンプレート中から@@<ファイル名>プロシジャ名で呼び出します。

使用例
[図データ]
  1. ソースプログラムを生成する前に部品の検索パスを「環境設定」ウィンドウで指定する必要がある。
  2. テンプレートTEMP1からは別ファイルの部品PART1.csrの@@proc Aが呼び出せる。
  3. 部品PART1の@@proc Aは自分のファイルの@@proc Bが呼び出せる。<>内に何も記述しない場合,自分のファイル名が仮定される。
  4. 部品PART1からは別ファイルの部品PART2.csrの@@proc Aが呼び出せる(ネストして呼び出すこともできる)。
  5. 部品PART1の中からもう一度自分自身(部品PART1)を呼び出せる(リカーシブルに呼び出しができる)。
(b) 部品の処理の埋め込み

@@merge文と@@put文を使って,部品中に記述された処理をテンプレート中の任意の位置に埋め込むことができます。この機能を使えば,例えば部品中でCOBOLの手続きを展開しながら,処理に必要なデータ定義をWORKING-STORAGE SECTIONやLINKAGE SECTIONの任意の位置に展開することができます。

部品には@@put 可変記号名 <<を指定し,続けて埋め込みテキストを記述します。テンプレートには,テキストを埋め込みたい個所を指示する@@merge(可変記号名)を記述します。

使用例
[図データ]
  1. テンプレートから呼ばれた部品中の処理は,呼ばれた位置に展開される。この例は,「(a)部品の呼び出し」の例と同じである。
  2. @@merge文で@M_PROC_Lの埋め込みを指定しているので,部品から@@put文で同じ可変記号名を指定してある処理がテンプレートの@@merge文の位置に展開される。
  3. テンプレートから@@merge文で埋め込み指示された可変記号名と同じ名称の処理が,@@put文で複数実行された場合は,検索された順にテンプレートの@@merge文の位置に展開される。

(6) 例題テンプレートの記述のポイント

  1. RDBアクセスの部品を使うことによって,見やすいテンプレートにすることができる。さらに,部品を変えることによってDBの差異を反映したソースプログラムを生成できる。
  2. @@put文,@@merge文を使って,部品の各セクションを呼び出し,展開する。
  3. モニタファイルへの出力指示の有無を判断し,展開を制御する(@@if文を使用)。

(7) 例題テンプレートと生成されたソースプログラム

(7)では,テンプレートを左ページに,生成されたソースプログラムを右ページに掲載し,ページの左と右で生成結果をテンプレートと対応させて見られるようになっています。

テンプレート(マスタ更新・追加出力)1/9
[図データ]

テンプレート(マスタ更新・追加出力)2/9
[図データ]

ソースプログラム(マスタ更新・追加出力)1/8
[図データ]

テンプレート(マスタ更新・追加出力)3/9
[図データ]

ソースプログラム(マスタ更新・追加出力)2/8
[図データ]

テンプレート(マスタ更新・追加出力)4/9
[図データ]

ソースプログラム(マスタ更新・追加出力)3/8
[図データ]

テンプレート(マスタ更新・追加出力)5/9
[図データ]

ソースプログラム(マスタ更新・追加出力)4/8
[図データ]

テンプレート(マスタ更新・追加出力)6/9
[図データ]

ソースプログラム(マスタ更新・追加出力)5/8
[図データ]

テンプレート(マスタ更新・追加出力)7/9
[図データ]

ソースプログラム(マスタ更新・追加出力)6/8
[図データ]

テンプレート(マスタ更新・追加出力)8/9
[図データ]

ソースプログラム(マスタ更新・追加出力)7/8
[図データ]

テンプレート(マスタ更新・追加出力)9/9
[図データ]

ソースプログラム(マスタ更新・追加出力)8/8
[図データ]

DBアクセス部品(RDBPARTS)テンプレート(マスタ更新・追加出力)1/5
[図データ]

DBアクセス部品(RDBPARTS)テンプレート(マスタ更新・追加出力)2/5
[図データ]

DBアクセス部品(RDBPARTS)テンプレート(マスタ更新・追加出力)3/5
[図データ]

DBアクセス部品(RDBPARTS)テンプレート(マスタ更新・追加出力)4/5
[図データ]

DBアクセス部品(RDBPARTS)テンプレート(マスタ更新・追加出力)5/5
[図データ]