//**************************************************************** // プログラム名: SCHNAM * // 関連ファイル: CUSMSTL3 (論理ファイル) * // SNAMMENU (WORKSTN ファイル) * // 説明: このプログラムは、WORKSTN サブファイル処理を * // 使用した得意先マスター検索プログラムです。 * // このプログラムは、得意先名でユーザーに * // プロンプトを出し、setll 命令での cusmstl3 の * // 位置付けにそれを使用します。さらにサブファイル * // を使ってレコードを表示します。 * // 他のページを充てんするために、ロールアップ・ * // キーを押します。得意先詳細を表示するには、「X」* // をその得意先のところに入れ、Enter を押します。 * // プログラムを終了するために PF3 を押します。 * //**************************************************************** Fcusmstl3 if e k disk Fsnammenu cf e workstn sfile(subfile:recnum) F indds(indicators) // フィールド定義: D recnum s 5p 0 D indicators ds D exitKey n overlay(indicators:3) D restartKey n overlay(indicators:4) D sflClear n overlay(indicators:55) D rollupKey n overlay(indicators:95) // キー・リスト定義 C cstkey klist C kfld srcnam C zipkey klist C kfld name
//****************************************************************** // メインライン * //****************************************************************** /free write foot1; write head; exfmt prompt; // 終了キーが押されるまでループする dow not exitKey; setll cstkey cusrec; exsr ProcessSubfile; exsr DisplayCustomerDetail; // 終了キーがサブファイル表示で押された場合は、ループを出る if exitKey; leave; endif; // 再始動キーがサブファイル表示で押された場合は、ループを繰り返す if restartKey; iter; endif; write foot1; write head; exfmt prompt; enddo; *inlr = *on; //***************************************************************** // サブルーチン - ProcessSubfile * // 目的 - サブファイルを処理し、表示する * //***************************************************************** begsr ProcessSubfile; // ロールアップ・キーが押されるまでループする dou not rollupKey; // サブファイルに追加する情報は他にあるか ? if not %eof(cusmstl3); // サブファイルを消去し、得意先データで充てんする exsr ClearSubfile; exsr FillSubfile; endif; // サブファイルを書き出し、応答を待つ write foot2; exfmt subctl; enddo; endsr; // サブルーチン ProcessSubfile の終わり
//****************************************************************** // サブルーチン - FillSubfile * // 目的 - サブファイルを充てんする * //****************************************************************** begsr FillSubfile; // 指定した郵便番号で得意先レコード全体をループする recnum = 0; dou %eof(snammenu); // 指定した郵便番号で次のレコードを読み取る read cusrec; if %eof(cusmstl3); // レコードがなくなったら、以下を行う leavesr; endif; // このレコードの情報をサブファイルに追加する recnum = recnum + 1; sel = *blank; write subfile; enddo; endsr; // サブルーチン FillSubfile の終わり //**************************************************************** // サブルーチン - ClearSubfile * // 目的 - サブファイル・レコードの消去 * //**************************************************************** begsr ClearSubfile; sflClear = *on; write subctl; sflClear = *off; endsr; // サブルーチン ClearSubfile の終わり
//***************************************************************** // サブルーチン - DisplayCustomerDetail * // 目的 - 指定した得意先レコードの表示 * //***************************************************************** begsr DisplayCustomerDetail; // サブファイルの変更されたレコード全体をループする readc subfile; dow not %eof(snammenu); // 要求した得意先レコードの表示を再始動する restartKey = *on; // 得意先レコードを検索し、表示する chain zipkey cusrec; exfmt cusdsp; // 終了キーが押される場合は、ループを終了する if exitKey; leave; endif; readc subfile; enddo; endsr; // サブルーチン ChangeSubfile の終了 /end-free
ファイル仕様書は、検索するディスク・ファイルおよび使用される 表示装置ファイル (SNAMMENU) を指定します。WORKSTN ファイルの SFILE キーワードは、サブファイルとして使用される レコード様式 (SUBFILE) を指定します。 相対レコード番号フィールド (RECNUM) は、サブファイル内のどの レコードをアクセスするかを指定します。
プログラムは、PROMPT レコード様式を表示し、ワークステーション・ユーザー の応答を待機します。F3 は、プログラムの終了を制御する標識 03 をオンに設定します。 SETLL 命令によって CUSMSTL3 ファイルを位置付けるためのキーとして、名前 (NAME) が使用されます。SETLL 命令では、ファイル名 CUSMSTL3 ではなく、レコード様式名 CUSREC が 使用されることに注意してください。
SFLPRC サブルーチンは、サブファイルの処理 (消去、充てん、および表 示) を扱います。サブファイルは、サブルーチン SFLCLR の中での追加の要求のために準備され ます。標識 55 がオンの場合には、画面上で処置は行われませんが、サブファイル ・レコードの主記憶域は消去されます。SFLFIL ルーチンはサブファイルをレコードで充てんします。CUSMSTL3 ファイルからレコードが読み取られ、レコード・カウント (RECNUM) が増え、そのレコードがサブファイルに書き出されます。 このサブルーチンは、サブファイルがいっぱいになるか (WRITE 命令の標識 21)、 または CUSMSTL3 ファイルでファイルの終わりが起こる (READ 命令の標識 71) まで、反復されます。サブファイルがいっぱいになるか、ファイルの終わりが 検出されると、サブファイルが EXFMT 命令によってサブファイル制御レコード様式で、画面に表示 されます。ユーザーは、画面を検討して次のことを決定します。
図 211 では、ユーザーは、初期化プロンプトに対して得意先名を 入力して応答します。
22:35:26 CUSTOMER SEARCH & INQUIRY BY NAME 9/30/94
Enter Search Name JUDAH GOULD
ENTER - Continue F3 - End Job
図 212 に示すように、ユーザーは X を入力して、 さらに情報を要求します。
22:35:43 CUSTOMER SEARCH & INQUIRY BY NAME 9/30/94 Search Name JUDAH GOULD Select "X" Customer Name Number Zip Code X JUDAH GOULD 00012 70068 JUDAH GOULD 00209 31088 ENTER - Continue F3 - End Job F4 - Restart Name
選択した得意先の詳細は、 図 213 に示されています。 この時点で、ユーザーは、適切な機能キーを選択して照会を続行または終了し ます。
23:39:48 CUSTOMER SEARCH & INQUIRY BY NAME 9/30/94
Customer 00012
Name JUDAH GOULD
Address 2074 BATHURST AVENUE
City YORKTOWN
State NY Zip Code 70068
A/R Balance .00
ENTER - Continue F3 - End Job F4 - Restart Name
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.