I言語 Lesson2 家計簿のプログラムの学習

●先頭のホームページの家計簿プログラムを実際に作る手順を学習します。
(1.1)デスクトップ上に作られているシステム名称のアイコンから起動します。

(1.2)先頭メニューで"01"を入力して「システム 支援 メニュー」に行きます。

(1.3)次のメニューで"02"を入力して「システム 開発 メニュー」に行きます。
★新規にプログラムを開発する場合は「システム 開発 メニュー」に行きます。ここは開発中なので作られるテーブルはテスト専用のテーブルで本番システムには影響が有りません。

(1.4)次のメニューで"25"を入力して「テスト データ辞書 更新」に行きます。
★最初にデータ辞書に名前を作成し、その名前を使ってテーブルを作ります。

(2.1)2行目に使用者とパスワードを入力します。
☆今回は許可ZZZYで作る関係で、許可ZZZYの管理者として登録されている、使用者の"ZZZZZZZY"とインストール時点で変更したパスワードを入れます。

(2.2)ここで検索の為'Enter'をします。
★I言語の仕様で更新プログラムに入った時点では'Enter'を押して検索をしないと更新出来ないようになって居るので、必ず最初に'Enter'を押して下さい。

(2.3)"←"(左矢印キー)を押して下に行き、"2"(作成)を入れて下記の内容で4行を作成します。
★長さ2以降は入力の必要がないので"↓"(下矢印キー)を押して最後のデータに行き'Enter'を押して作成します。尚、"↑"(上矢印キー)を押すと先頭に移動します。
★MESSAGEに「!作成OK」と出れば1件の作成が終了です、"↓"(下矢印キー)で1行下に行き"2"(作成)で次のデータを作成します。
★年月と内容の長さ2に1が設定されていますが、数値以外の型の長さ2は最低文字数の意味と成るので、1を設定すれば必ず1文字以上を入れないとエラーと成ります。。
■列名1=ZZZYAA_年月日 CHAR(8) (主キー、データ辞書の型1は"D")
■列名2=ZZZYAA_内容 NCHAR(20)(主キー、データ辞書の型1は"J")
■列名3=ZZZYAA_食費 DECIMAL(1,0)(データ辞書の型1は"+")
■列名4=ZZZYAA_金額 DECIMAL(9,0)(データ辞書の型1は"+")

(3.1)データ辞書の作成が終わったので'Esc'を押してメニューに戻り"26"を入れて「テスト テーブル 更新」に行きます。
☆ここでも'Enter'を押して一回検索した後、'←'(左矢印キー)で下に行き"2"(作成)以下下記テーブル名の"ZZZYAA_家計簿実表"と主キー項目数の"2"、'↓'(下矢印キー)で最後の項目に移動し'Enter'を押して次の画面に行きます。
■テーブル名=ZZZYAA_家計簿実表
★I言語ではメニューから起動するプログラム全体をジョブと呼び複数のプログラムを画面を分けて作る事が出来ます。「テスト テーブル 更新」では最初のプログラムでテーブル全体のデータを作成し、次のプログラムで各列情報を作成するように作られています。

(3.2)テーブルの列情報を作成します。データ名上では先ほど作ったデータ名一覧が表示されるので、先頭から主キーを作成し、'↓'(下矢印キー)で行を下げながら4個の列名を順次作成します。
★行を下げて新しい行で作らないと、その行の列の前に作成されてしまうので、必ず新しい行で作成して下さい。


(3.3)テーブルの列情報を4個、キーを先頭に作成します。
★実際のテーブルにはI言語自身が使う列名が先頭に作成され、その後に4個の列が作成されます。

(4.1)テスト テーブル 更新が終わったので'Esc'を2回押してメニューに戻り"21"を入れて「テスト 全 プログラム 更新」に行きます。
☆M0に"ZZZZ"(インストールされた時に既に出来ている)、M1に"30"(メニュー起動用は01から40までが可能)、M2に"30"(メニュー起動用は01から40までが可能)、M3に"30"(メニュー起動用は01から40までが可能)、言語は"JA",テストに"TEST"(開発中なのでTESTと成ります)、許可に"ZZZY"(使用者の許可)、部分に"AA"、処理種類は更新なので"INPUT"、認証は取りあえず不要の"X"、メニューに"家計簿更新"と入れて'Enter'を押して作成します。
★認証は今回はX(不要)としましたが、本番で使う場合は誰が更新したにか分かるようにX以外を使うようにしてください。X以外にすると開発中もパスワードの要求が来るので学習中は全てXで説明します。
☆「!作成OK」と出たら"0"(選択)で次のプログラムに行きます。
★0は選択処理で0で選択すると次のプログラムに行くようになっています。

(4.2)テーブル情報を元にプログラムを作るので操作に"TABLE 1"(1はテーブルを1個使用の意味)を入れて'Enter'を押します。

(4.3)'Enter'を押して検索すると先ほど作った「ZZZYAA_家計簿実表」が表示されるので、"←"(左矢印キー)で下に行き、"0"(選択)で選択します。

(4.4)テーブル情報からプログラムが作られています。
◆200 PROGRAM=,&X1,?_MM?_家計簿実表
★PORGRAM=はプログラムの最初に書きます。(時間起動処理は除く)
★=の右がカンマは値が省略されている意味で、メニューの処理種類が採用され、このプログラムはINPUT(更新)の更新処理となります。
★&X1は更新テーブルの別名指定で&X1が推奨値です。
★「?_MM?_家計簿実表」は更新用のテーブル名の指定です。
★?_MM?のように?で囲われた物はその名前の内容で置き換わります。
★?_MM?はテーブル名の先頭に付ける事で、テストと本番で内容が変わって別のテーブルを使う事とテーブルの先頭に許可+部分の6文字を付加するようになって居ます。
◆300 SET={}?&.SET&~+_年月日?、◆400 SET={}?&.SET&~+_内容?
★SET=は主に検索条件を入力する場合に記入します。
★データの型が文字列の場合は入力すると先頭の文字が該当文字に一致する条件のLIKE(列名 LIKE 'ABC%')のSQLが「_WHERE数」に設定されます。
★&で始まる名前の物はテーブル情報から作られた物で、&.は別名を省略しており、PROGRAM=の右で指定したテーブルから作られています。 
★「SET={}?&.SET&~+_年月日?」のデータ名は「~+_年月日」となりますが、文字数の削減を行なった結果こうなっています、これを知っていないとプログラムミスを誘発するので、ここで説明しておきます。SET=のデータ名がDATA=のデータ名と重複しないようにする必要が有るので、本来は先頭が"S"で次がテーブルの別名"X1"と"."と"~+_年月日"で構成して"SX1.~+_年月日"とするはずですが、文字数の削減をねらって,まずPROGRAM=のテーブルの別名を省略可能にし"SX1."を"S."で表せるようにして、更に"S."も省略可能にし"~+_年月日"だけで良いようにしました。 よって、このデータ名はI言語が組み立てるSQLではPROGRAM=で設定した別名が付きます、なので、直接SQL文を組み込む場合は別名に注意が必要です。
◆800 DATA={K}.?&.DATA&~+_年月日?、◆1000 DATA={K}.?&.DATA&~+_内容?、◆1200 DATA={}.?&.DATA&~+_食費?、◆1400 DATA={}.?&.DATA&~+_金額?
★DATA=は検索結果の表示と、更新データの入力用として使用します
★{K}が付いている物が更新のキーとなります。
★DATA=のデータ名はPROGRAM=のテーブルの別名は省略できるので、「.~+_年月日」がデータ名とできます。
◆1500 COPY=@ZZZZZZ_SQL
★COPY=は他からプログラムをここにコピーします。名前の先頭に@が無い場合はプログラムの前方で「NAME=名前」で指定された物をコピーしますが、@が有る場合はプログラム内では無く事前に用意されている混在テーブルから持ってきます。
★@ZZZZZZ_SQLは検索用のSQL文(SQL=)を作成するプログラムでSET=やDATA=の設定情報からSQL文を組み立てています。

(4.5)操作に"T"(TEST)を入れて'Enter'を押せばテスト実行出来ます。"2"(作成)で実際のデータを作成します。
★テスト中はテストと分かるように1行目に背景赤のTESTが表示されます。
☆これで、家計簿実表の更新まで完成です。ここまで理解できれば、「月別エンゲル係数表示」のプログラムも作れるので、ZZZZ303031に作ってみて下さい。
All Rights Reserved, Copyright (C) 2016-2016 Nobumichi Harasawa.