I言語自習書_03:家計簿プログラムの作成

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

◎"88"でHELP画面が表示され、画面の操作方法や、I言語の文法が見られるので、参考にして下さい。
(1.2)先頭メニューで"01"を入力して「システム 支援 メニュー」に行きます。
(前のメニューに戻るには"00"を入力するか[Esc]キーを押します)

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

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

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


(2.2)データ辞書を下記の方法で4行を作成します。
☆""(左矢印キー)を押して下に行き、"2"(作成)を入れて下記の方法で4行を作成します。
(作成を途中で中止したい場合は[Esc]キーを押します)
☆許可に自動で"ZZZY"が入るので[Enter]で次に行きます、
(入力値が1個の場合I言語側が値を自動で設定します)
([Enter]か[Tab]で次に行きます、前に戻る時は[Shift+Tab]か"←"(左矢印キー)を使います)
☆データ名に"家計簿_年月日"を入れ[Enter]で次に行きます、
☆言語は自動で"JA"が入るので[Enter]で次に行きます、
☆許可区分に"AA"を入れます、
☆基本データ名は空白のままで良いので[Enter]で次に行きます、
☆テストは自動で"TEST"が入るのでそのまま[Enter]で次に行きます、
☆タイトルには自動でデータ名の_以降の「年月日」が入っているのでそのまま[Enter]で次に行きます、
☆初期タイプで"CHAR"を入力し[Enter]で次に行きます、
(テキストボックスが表示されている場合、[PgUp]と[PgDn]で選んで,[Enter]でも入力出来ます)
☆型1で"D"を入力すると初期長さ1に"8"が入って長さ2に移動するので、"1"を入力すれば入力作業は終わりです、
(型1が"D"の場合初期長さ1は"8"と決まっているので、自動で入力して次に行きます)
☆長さ2以降は入力の必要がないので""(下矢印キー)を押して最後のデータに行き[Enter]を押して作成します。
("↑"(上矢印キー)を押すと先頭に移動します)
MESSAGEに「"!作成OK」と出れば1件の作成が終了です、""(下矢印キー)で1行下に行き"2"(作成)で次のデータを同じように作成します。
■列名1=家計簿_年月日 CHAR(8) (主キー、データ辞書の型1は"D")
■列名2=家計簿_内容 NCHAR(20)(主キー、データ辞書の型1は"J")
[Enter]家計簿_内容[Enter][Enter]AA[Enter][Enter][Enter]NCHAR[Enter]J[Enter]20[Enter][Enter]1↓[Enter]
■列名3=家計簿_食費 DECIMAL(1,0)(データ辞書の型1は"+")
↓2[Enter]家計簿_食費[Enter][Enter]AA[Enter][Enter][Enter]DECIMAL[Enter]+[Enter]1↓[Enter]
■列名4=家計簿_金額 DECIMAL(9,0)(データ辞書の型1は"+")
↓2[Enter]家計簿_金額[Enter][Enter]AA[Enter][Enter][Enter]DECIMAL[Enter]+[Enter]9↓[Enter]

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

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

(3.3)テーブルの列情報を4個、キーを先頭に作成します。
☆""で下に行き"2"の作成を入力し"家計簿_年月日"をリストボックスから選んで[Enter]で次に行き""で最後に行き[Enter]で作成。
☆""で一行下げ"2"の作成を入力し"家計簿_内容"をリストボックスから選んで[Enter]で次に行き""で最後に行き[Enter]で作成。
☆""で一行下げ"2"の作成を入力し"家計簿_食費"をリストボックスから選んで[Enter]で次に行き""で最後に行き[Enter]で作成。
☆""で一行下げ"2"の作成を入力し"家計簿_金額"をリストボックスから選んで[Enter]で次に行き""で最後に行き[Enter]で作成。
★実際のテーブルにはI言語自身が使う列名が先頭に作成され、その後に4個の列が作成されます。

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

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

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

(★注意★このプログラムは古い仕様でSET=のデータ名の先頭にドットが無くDATA=にドットが有りますが最新は逆に成っています)
(4.4)テーブル情報からプログラムが作られています。
◆200 PROGRAM=,&X1,?_MM?_家計簿実表
★PORGRAM=はプログラムの最初に書きます。(時間起動処理は除く)
★=の右がカンマは値が省略されている意味で、メニューの処理種類が採用され、このプログラムはINPUT(更新)の更新処理となります。
★&X1は更新テーブルの別名指定で&X1が推奨値です。
★「?_MM?_家計簿実表」は更新用のテーブル名の指定です。
★?_MM?のように?で囲われた物はその名前の内容で置き換わります。
★?_MM?はテーブル名の先頭に付ける事で、テストと本番で内容が変わって別のテーブルを使う事とテーブルの先頭に許可+部分の6文字を付加するようになって居ます。
◆300 SET={}?&.SET&家計簿_年月日?、◆400 SET={}?&.SET&家計簿_内容?
★SET=は主に検索条件を入力する場合に記入します。
★データの型が文字列の場合は入力すると先頭の文字が該当文字に一致する条件のLIKE(X1.列名 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"で作成します。
(作ったプログラムも操作方法は開発支援プログラムと全く同じです)
☆年月日で"20160305"と入力し[Enter]で次に行きます。
(入力は数字6桁で入力しますが、表示は年-月-日とハイフンが付加されます)
(長さ2が1と成っているので最低1文字必要で空白は入力出来ないので、空白のまま[Enter]すると今日の年月日が入力されます)
(日の2桁を入力して[Enter]すると今日の年月が付加されます)
(月日の4桁を入力して[Enter]すると今日の年が付加されます)
☆"衣類購入"入力し[Enter]で次に行きます。
(型1がJの全角入力なので、漢字キーを押さなくてもそのままで日本語が入力出来ます)
☆食費では無いので"0"を入力します。
(0は普通の状態では空白表示と成ります、DECIMALのDEFAULT値は0の設定です)
☆金額で"30000"を入力し[Enter]で作成出来ます。
(3桁毎のカンマの入力は出来ないので数字のみ入力します)
☆残り4行も同じように操作してみて下さい。
★テスト中はテストと分かるように1行目に背景赤のTESTが表示されます。
☆これで、家計簿実表の更新まで完成です。ここまで理解できれば、「月別エンゲル係数表示」のプログラムも作れるので、ZZZZ303031に作ってみて下さい。
All Rights Reserved, Copyright (C) 2016-2024 Nobumichi Harasawa.