(10)いよいよ伝票データを入力するプログラムを作る
(6)や(8)では、商品データを入力するプログラムを作りました。
今度はもう1つの伝票データを入力するプログラムを作ってみます。伝票入力で商品コードを入力すると、商品ファイルからその商品コードに対応する商品名と価格を持ってきて表示するようにします。
今回のプログラムでは、商品ファイル内のデータを使用しますので、(8)のプログラムを使って、何でも良いのであらかじめいくつか商品コードを入力しておいてください。
今回の要点は、マスタファイルに伝票ファイル、補助ファイルに商品ファイルを割り当てて、伝票データを入力すると商品ファイルから商品名や価格を入手できるようにするところです。
プログラムを作る
もう何回もSMARTは使ったので、今までと同じところは省略して説明します。
パラメータセット名は伝票入力なので「DENIN」にしておきます。

データを入力するプログラムを作るので、当然実行機能は「0.データ入力」を選びます。

タイトルは何でも良いです。今回は「伝票データ入力」にしました。

説明していない項目は、今までと同じように選択していきます。
レコード登録名は、伝票のデータを入力するので#DDMで作った「TAHDENPYO」を入力します。

ファイル名も「TAHDENPYO」を入力します。

補助ファイルは使用するので、「1.はい」を選択します。

補助ファイルのレコード登録名を入力します。
今回は商品ファイルのレコードの名前を入れるので、「TAHSHOHIN」と入力します。

商品ファイルのファイル名を入れます。「TAHSHOHIN」です。

伝票ファイルと商品ファイルを紐付ける項目を入力します。
伝票ファイルの商品コードを入力すると、同じ商品コードの商品名や価格を画面に出すので、対応キーは「NO-MEI」となります。

対応キーが複数あるときは続けて入力することになりますが、今回は対応キーは1個しかないので、[II]キーを押して次の入力に行きます。

商品コードを入力したときに、それが商品ファイル上になかったときにどうするかを決めます。
今回は、商品ファイル上に商品がなかったときにエラーとしたいので、「1.無いとエラー」を選択します。

補助ファイルが複数あるときは、ここで2個目以降のレコード/ファイルを入力していきます。
今回は補助ファイルは1個しかないので、もう入力する必要はありません。[II]キーを押して先に進みます。

今回は初期入力項目は指定しないので「0.いいえ」を選択します。

レコード間リンク項目も「0.いいえ」を選択します。

関数も今回は「0.いいえ」にします。

生成項目も今回は「0.いいえ」にします。

プログラム起動時の処理も「0.いいえ」にします。

画面形式は「3.形式指定(2)」にします。

画面フォーマットは、今回は何も指定しません。
(「形式指定」にしたときには画面フォーマットを入力するのが普通です。今回は説明のためまず何も指定しないとどうなるかを見てもらいます。後で画面フォーマットを作ってもらいます。)

明細が何行目から始まるかを入力します。
今回は8行目から始めるので、「8」と入力します。

1つの明細が何行で構成されているかを入力します。
今回は1明細が1行なので「1」と入力します。

明細が何行目で終わるのかを入力します。
今回は17行目が最終行なので「17」と入力します。

明細の繰り返しの数(いくつ明細を入力できるようにするか)を入力します。
今回は最大10個明細を入力できるようにしたいので、「10」と入力します。

今回の例では自動DUPの指定は「0.いいえ」としました。

有効値のチェックは「0.いいえ」とします。

規定値のチェックは「0.いいえ」とします。

合計チェックの指定は「0.いいえ」とします。

ここから見出し部分の設計に入ります。
伝票コードを入力する位置を指定します。 行位置に「3」、

桁位置は「10」

伝票コードの名前「DENO」を入れます。

伝票コードは入力する項目なので「0.入力/変更」を選択します。

同じように繰り返して、年月日も入力していきます。
行位置 | 桁位置 | 項目名 | 操作区分 |
---|---|---|---|
4 | 50 | YY | 0 |
4 | 56 | MM | 0 |
4 | 60 | DD | 0 |
ここまで入力したら見出し部分の入力は終わりなので、[II]キーを押して見出し部分の入力を終わらせます。

この画面でも[II]キーを押します。

ここから明細の入力になります。
条件によって、明細を入力(表示)できるようにしたり、できないようにしたりできます。
今回は特に条件は設けずに、必ず入力できるようにします。「0.無条件」を選択します。

何行目の項目を設定するのかを聞いています。今回は1行しかない明細(以前、画面明細形式(SDT)で1明細が1行と入力しています。)なので、「1」と入力します。

1つ目の項目(MNUM)の画面表示位置を入力します。
今回は「4」と入力しました。

「MNUM」と入力します。

「0.入力/変更」を選択します。

後は同じように入力していきます。
桁位置 | 項目名 | 操作区分 |
---|---|---|
8 | NO-MEI | 0 |
16 | DATA | - |
39 | KAKAKU | - |
48 | KAZU | 0 |

明細の項目を全部入力したら、[II]キーを押して明細項目の入力を終了します。

明細が複数行あるならば続けて2行目以降の入力を行いますが、今回は明細は1行分しかありません。これ以上行を入力する必要はないので、[II]キーを押します。

1種類しか明細はないので、これ以上明細を入力する必要はありません。[II]キーを押します。

今回はあまり複雑なことはしないので、「0.いいえ」を選択します。

プログラム終了時の処理は、何もしないので「0.いいえ」を選択します。

実行時のセキュリティコードは、今回は何も入力しません。
[II]キーを押してください。

実行時メモリサイズは「32」ぐらいで問題ありません。(下の画面例では63と入力していますが。)

すぐ実行しないので「0.いいえ」を選択します。

パラメータリストを印刷するかどうか選択します。「1.はい」を選択すると今まで入力した内容が印刷されます。
お好みで選んでください。下の画面の例では「0.いいえ」を選択しています。

これで全部入力は終了しました。
変更しないならば[実行]キーを押してください。

プログラムを実行してみる
プログラムを実行してみましょう。
装置名「MSD001」、パラメータライブラリ「TAHPARAM」に今回作ったプログラム「DENIN」が入っています。
RUNコマンド行で「DENIN,DEV=MSD001,FIL=TAHPARAM;」と入力して、[ENTER]キーを押します。

すると下のような画面になります。
罫線などが入っていないので、殺風景な画面です。
最初は伝票番号を入力します。練習用のプログラムなので「1」とか「2」とか適当な番号を入力しましょう。
ちなみにプログラム中で同じ番号が入力できないようにガードされています。以前入力した番号を入力するとエラーになります。

右側には年月日を入力します。
練習用のプログラムなので適当に入力してください。

明細行を入力していきます。
以前作った商品データのファイルと連動しています。
まず明細番号を入力し、次に商品コードを入力します。すると商品コードに対応した商品名と単価が商品データのファイルから読み込まれて、自動的に画面に表示されます。もし商品コードがファイル中に無い場合は、エラーとなります。最後に個数を入力します。

適当にどんどん入力していきます。
[II]キーを押すと、次の伝票入力になります。

もう飽きたなら、ここで[PF9]キーを押します。
そうするとプログラムは終了します。
