//**************************************************************** // プログラム名: CUSMNT * // 関連ファイル: CUSMSTL1 (LF) * // MNTMENU (DSPF) * // 説明: このプログラムは、WORKSTN ファイルを使用した * // 得意先マスター・ファイル維持プログラムです。 * // このプログラムでユーザーは、得意先レコードを * // 追加、更新、削除、表示できます。 * // PF3 を使用してプログラムを終了します。 * //**************************************************************** Fcusmstl1 uf a e k disk Fmntmenu cf e workstn indds(indicators) // フィールド定義: D indicators ds D exitKey n overlay(indicators:3) D disableInput n overlay(indicators:4) D addKey n overlay(indicators:5) D updateKey n overlay(indicators:6) D deleteKey n overlay(indicators:7) D displayKey n overlay(indicators:8) D prevKey n overlay(indicators:12) D custExists n overlay(indicators:51) D custNotFound n overlay(indicators:52) // キー・リスト定義 C CSTKEY KLIST C KFLD CUST
//***************************************************************** // メインライン * //***************************************************************** /free mode = 'DISPLAY'; exfmt hdrscn; // 終了キーが押されるまでループする dow not exitKey; exsr SetMaintenanceMode; if cust <> 0; if mode = 'ADD'; exsr AddSub; elseif mode = 'UPDATE'; exsr UpdateSub; elseif mode = 'DELETE'; exsr DeleteSub; elseif mode = 'DISPLAY'; exsr InquirySub; endif; endif; exfmt hdrscn; custExists = *off; // エラー・メッセージをオフにする CustNotFound = *off; enddo; *inlr = *on;
//**************************************************************** // サブルーチン - AddSub * // 目的 - 新しい得意先をファイルに追加する * //**************************************************************** begsr AddSub; // 得意先番号は既にファイルにあるか ? chain CstKey cmlrec1; if %found(cusmstl1); // 既に使用されている得意先番号の場合 custExists = *on; leavesr; endif; // 新しい得意先データの初期化 custExists = *off; // エラー・メッセージをオフにする CustNotFound = *off; name = *blank; addr1 = *blank; addr2 = *blank; city = *blank; state = *blank; zip = 0; // この得意先レコードの更新データを入れるためのプロンプトを出す exfmt cstbld; // よければ、得意先を得意先ファイルに追加する if not *in12; write cmlrec1; endif; endsr; // サブルーチン AddSub の終わり //**************************************************************** // サブルーチン - UpdateSub * // 目的 - 得意先マスター・レコードを更新する * //**************************************************************** begsr UpdateSub; // 得意先番号の探索 chain cstkey cmlrec1; if not %found(cusmstl1); // 得意先がファイルにない custNotFound = *on; leavesr; endif; // この得意先の情報を表示する disableInput = *off; exfmt cstinq; if not prevKey; // ファイルの中の情報を更新する update cmlrec1; else; // 更新したくない場合でも、少なくとも // そのレコードのアンロックは行なう unlock cusmstl1; endif; endsr; // サブルーチン UpdateSub の終わり
//**************************************************************** // サブルーチン - DeleteSub * // 目的 - 得意先マスター・レコードを削除する * //**************************************************************** begsr DeleteSub; // 得意先番号の探索 chain cstkey cmlrec1; if not %found(cusmstl1); // 得意先がファイルにない custNotFound = *on; leavesr; endif; // この得意先の情報を表示する disableInput = *on; exfmt cstinq; if not prevKey; // 得意先レコードの削除 delete cmlrec1; else; // 削除したくない場合でも、少なくとも // そのレコードのアンロックは行なう unlock cusmstl1; endif; endsr; // サブルーチン DeleteSub の終わり //**************************************************************** // サブルーチン - InquirySub * // 目的 - 得意先マスター・レコードを表示する * //**************************************************************** begsr InquirySub; // 得意先番号の探索 chain(n) cstkey cmlrec1; // レコードをロックしない if not %found(cusmstl1); // 得意先がファイルにない custNotFound = *on; leavesr; endif; // この得意先の情報を表示する disableInput = *on; exfmt cstinq; endsr; // サブルーチン InquirySub; の終わり
//**************************************************************** // サブルーチン - SetMaintenanceMode * // 目的 - 維持モードの設定 * //**************************************************************** begsr SetMaintenanceMode; if addKey; mode = 'ADD'; elseif updateKey; mode = 'UPDATE'; elseif deleteKey; mode = 'DELETE'; elseif displayKey; mode = 'DISPLAY'; endif; endsr; // サブルーチン SetMaintenanceMode の終わり /end-free
このプログラムは、得意先マスター・ファイルの追加、変更、 および削除の保守を行います。このプログラムは照会に使用することもできます。
プログラムは最初は、デフォルト (表示) の処理方式を設定し、 得意先保守プロンプト画面を表示します。ワークステーション・ユーザーは、F3 キーを押して (標識 03 がオンになる) ジョブの終了を要求することができます。そうでない場合には、得意先情報を処理するために、ユーザーは得意先番号を 入力して、実行キーを押します。 ユーザーは、F5 (追加)、F6 (更新)、F7 (削除)、または F8 (表示) を押して 処理方式を変更することができます。
新しいレコードをファイルに追加するためには、プログラムは得意先番号を 検索引数として使用して、マスター・ファイルに連鎖します。 ファイルにレコードが存在していない場合には、プログラムは CSTBLD 画面を表示して、 ユーザーが新しい得意先レコードを入力できるようにします。 レコードが既にファイルに存在している場合には、エラー・メッセージが表 示されます。ユーザーは、F12 キーを押して (標識 12 をオンに設定する)、 追加操作を取り消してレコードを解放することができます。 そうでない場合には、追加操作を続行するために、ユーザーは、入力フィールドに 新しい得意先レコードの情報を入力し、新しいレコードをマスター・ファイルに書き出します。
既存のレコードを更新、削除、または表示するためには、プログラムは得意先 番号を検索引数として使用し、マスター・ファイルに連鎖します。その得意先のレコードがファイルに存在している場合には、プログラムは 得意先ファイル照会画面 CSTINQ を表示します。レコードがファイルに存在していない場合には、エラー・メッセージが表 示されます。処理方式が表示または削除の場合には、入力フィールドは変更できないように 保護されています。そうでない場合には、得意先レコードを続行するために、ユーザーは、得意先 レコード入力フィールドに新しい情報を入力することができます。ユーザーは、F12 キーを押して (標識 12 をオンに設定する)、更新操作ま たは削除操作を取り消して、レコードを解放することができます。表示モードでは、実行キーを押すと、自動的にレコードが解放されます。
図 197 では、ワークステーション・ユーザーがプロンプトへの 応答として得意先番号 00007 を入力して、その得意先レコードを表示します。
DISPLAY MODE 22:30:21 CUSTOMER FILE MAINTENANCE 9/30/94 00007 <--Enter Customer Number F3 End Job F5 Add F6 Update F7 Delete F8 Display
得意先番号 00007 の得意先レコードはマスター・ファイルに存在しているので 、図 198 に示すようにデータが表示されます。
DISPLAY MODE
22:31:06 CUSTOMER FILE MAINTENANCE 9/30/94
Customer: 00007
Mikhail Yuri
1001 Bay Street
Suite 1702
Livonia
MI 11201
F12 Cancel DISPLAY
ワークステーション・ユーザーは、図 199 に示すように、 追加プロンプトに対して新しい得意先番号を入力して応答します。
ADD MODE 22:31:43 CUSTOMER FILE MAINTENANCE 9/30/94 00012 <--Enter Customer Number F3 End Job F5 Add F6 Update F7 Delete F8 Display
図 200 では、新しい得意先が得意先マスター・ファイルに追加 されます。
ADD MODE
22:32:04 CUSTOMER FILE MAINTENANCE 9/30/94
Customer: 00012
Name JUDAH GOULD
Address 2074 BATHURST AVENUE
Address
City YORKTOWN
State NY Zip 70068
F12 Cancel Addition
ワークステーション・ユーザーは、図 201 に示すように、 削除プロンプトに対して得意先番号を入力して応答します。
DELETE MODE 22:32:55 CUSTOMER FILE MAINTENANCE 9/30/94 00011 <--Enter Customer Number F3 End Job F5 Add F6 Update F7 Delete F8 Display
ワークステーション・ユーザーは、図 202 に示すように、 更新プロンプトに対して得意先番号を入力して応答します。
UPDATE MODE 22:33:17 CUSTOMER FILE MAINTENANCE 9/30/94 00010 <--Enter Customer Number F3 End Job F5 Add F6 Update F7 Delete F8 Display
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.