9.3.2 処理定義の例
図9-2に示した業務の処理定義の例を,次に示します。
- 処理定義名:KOSIN
[更新処理] @代入△%売上金=%売上金+金額 [追加処理] @代入△%コード=得意先コード @代入△%名前='???' @代入△%売上金=金額 |
- 更新処理
データの更新
照合項目の内容が一致するレコードがあったとき,更新するデータベースTOKUIの「金額」の内容に,更新元のデータベースUDATAの「金額」の内容を加算します。
項目名の指定方法
@代入のオペランドでは,更新するデータベースの項目名「売上金」に「%」を付けて指定しています。これは,更新元のデータベースの項目と更新するデータベースの項目を区別するための指定方法で,「%項目名」といいます。
- 追加処理
照合項目の内容が一致するレコードがなかったときに追加するレコードの,項目の内容を指定しています。TOKUIの「コード」,「売上金」には,UDATAの「得意先コード」,「金額」の内容をそのまま設定します。TOKUIの「名前」には,「???」を設定します。
図9-3に示した業務の処理定義の例を,次に示します。
[更新処理] @代入△%売上金=%売上金+金額 @レコード入力△SHOHIN,?コード=コード,,,U @判定開始△#コード<>¥NIL @成立 @代入△#在庫=#在庫-数量 @更新 @不成立 @処理終了 @判定終了 |
- 更新処理
TOKUIのデータの更新
照合項目の内容が一致するレコードがあったとき,更新するデータベースTOKUIの「金額」の内容に,更新元のデータベースUDATAの「金額」の内容を加算します。
SHOHINのデータの更新
@レコード入力で,更新対象でないデータベースSHOHINのレコードを読み込みます。SHOHINの「コード」の内容が,更新元のデータベースUDATAの「コード」の内容と同じであるレコードを読み込むように,条件を指定してあります。
@判定開始~@判定終了では,該当するレコードが実際にあったかどうかを判定します。レコードがあった場合,その「在庫」の内容からUDATAの「数量」の内容を減算します。さらに,@更新で「在庫」の内容を減算結果で更新します。これを即時更新といいます。レコードがなかった場合は,@処理終了で更新処理を終了します。
図9-4に示した業務(@DB加工による加工業務の例2)の処理定義の例を,次に示します。
- 手順業務
- データベース更新業務(処理定義名:KAKO)
[更新処理] @代入△¥L01=金額*1.05 @代入△%金額=¥L01 @代入△%税金=金額*0.05 @判定開始△¥L01<5000 @成立△@代入△%備考='売上小' @不成立△@代入△%備考='売上大' @判定終了 |
- 手順業務からの呼び出し
@DB加工で,データベース更新業務KAKOを呼び出しています。入力データベースはUDATA,出力データベースはUDAFTERです。
- 更新処理
出力データベースの内容の設定
入力データベースUDATAの「金額」の内容に1.05を掛けて,いったんローカル変数「¥L01」に代入します。その値を,出力データベースUDAFTERの「金額」に設定します。また,UDAFTERの「税金」には,UDATAの「金額」の内容に0.05を掛けた値を設定します。
@判定開始~@判定終了では,最初の@代入で「¥L01」に代入した値が5000未満かどうかを判定します。5000未満だった場合は「売上小」を,5000以上だった場合は「売上大」を,それぞれUDAFTERの「備考」に設定します。
項目名の指定方法
@代入のオペランドでは,出力データベースの項目名「金額」などに「%」を付けて指定しています。これは,入力データベースの項目と出力データベースの項目を区別するための指定方法で,「%項目名」といいます。
「%項目名」の内容の参照
@判定開始のオペランドでは,「%金額」の内容ではなく,「¥L01」の内容を判定しています。
「%項目名」の内容は,1レコード分の処理が終わったときに,初めて更新されます。「%項目名」の内容を変更する処理(@代入など)を指定していても,そのレコードの処理が終わるまでは,変更前の内容しか参照できません。
(例)
@代入△%金額=金額*1.05 (1)
@代入△%利益=%金額*利益率 (2)
(1)の結果は,(2)の%金額には反映されません。
変更後の内容を参照したいときは,処理結果をいったんローカル変数「¥Lnn」やグローバル変数「¥Gnn」に代入して,その値を利用します。
(例)
@代入△¥L01=金額*1.05 (1)
@代入△%金額=¥L01
@代入△%利益=¥L01*利益率 (2)
(1)の結果に基づいて(2)を計算できます。