I言語技術情報1(HELLO WORLDの表示)


HELLO WORLDの表示。
I言語は誰でも早くを実現するためI言語側が気を利かせて色々な処理をしてくれます、そのためそれをある程度想定していないと思ったように動きませんので、良く言語の説明でサンプルとして出てくる”HELLO WORLD”の表示のプログラムを例にしてI言語がどのように動くかを説明します。
I言語にはサーバーで動くバッチ用プログラムとクライアントで画面を使って動くプログラムがあります。”HELLO WORLD"を画面上に表示したいので画面表示用プログラムとして作ります。
I言語ではプログラムの単位をジョブと呼んでいます。画面表示用プログラムはメニューから起動するのでメニューで入力できる01から40までを3個使ってジョブ名を決めます。
今回は"ZZZZ303030"をジョブ名として作ります。(作り方はI言語VER7システム開発の入門編にあります)
まずはI言語の動きを説明するため順にプログラムを作ります。
画面表示プログラムでは最初に"PROGRAM="で始めます"="の先は検索プログラムは"OUTPUT"で更新プログラムは"INPUT"で検索でも更新でもないプログラムは"NOT"です。尚、メニューでの指定と同じ場合は省略できます。
”HELLO WORLD"を表示するプログラムは更新はしないのでOUTPUTまたはNOTを使用します。OUTPUTはデータベースから検索する事を想定していますが、これを使って作ってみます。
100 PROGRAM=OUTPUT
これを実行してみます。

画面を表示して2行目で入力状態となりました。
I言語では”OUTPUT"の場合SET=で入力をしてSQL=で検索し検索結果をDATA=に表示しますが、SET=が一つもないのでI言語が気を利かせて2行目に入力項目を設定し入力状態となりました。
ここで[Enter]で検索するので、[Enter]を入力してみます。

[SQL IS NULL]で異常終了してしまいました。これはSQL=が何もないためですのでSQL=を書いてみます。
100 PROGRAM=OUTPUT
200 SQL=SELECT 'HELLO WORLD' ?_FROM_DUAL?
SQL=以下は検索用のSQL文です、検索の場合最初にSELECTで次に列名等を書きますが今回は引用符で文字列の'HELLO WORLD'を指定しています。
?_FROM_DUAL?はデータベースのテーブルを使用しない場合の変数でデータベース毎に異なります、SQL Serverでは空白となります。
では実行してみます。

[Enter]では今度はエラーなりませんが'HELLO WORLD’は表示されません。理由は検索結果を表示するためのDATA=が書かれていないためです。そこでDATA=を書きます、DATA=の書く場所はPROGRAM=以下のどこでも良いですが、I言語側の理由でSQL=の前に書く方が問題は少ないので2行目に書きます。
100 PROGRAM=OUTPUT
150 DATA=A{11}
200 SQL=SELECT 'HELLO WORLD' ?_FROM_DUAL?
Aはデータ名で{11}が表示場所の桁数です。
では実行してみます。

これで'HELLO WORLD'のプログラムがほぼ完成です。尚、表示項目が縦5列になっています、これも、I言語が気を利かして 、横80文字分で表示出来る列を計算して表示しています、それでは、もう少し手を加えて、縦1列に変更してみます。
縦1列にするには1列目が80文字以上とすれば良いのでAの右に80文字の空白を入れます。
100 PROGRAM=OUTPUT
150 DATA={,,80}A{11}
200 SQL=SELECT 'HELLO WORLD' ?_FROM_DUAL?
では実行してみます。

これで縦1列になりました。
補足:I言語の最初のプログラムはDOS上で動くプログラムでした。DOSでは横80文字で縦25文字表示でしたので、I言語もこの文字数をそのまま継承しています。
尚、横方向は80文字以下には成りません。また、画面の解像度に合わせて必要な場合は横80文字以上、縦25文字以上になります。
今度は横1行としてみます。行数はLINE=で指定します。
100 PROGRAM=OUTPUT
125 LINE=1
150 DATA={,,80}A{11}
200 SQL=SELECT 'HELLO WORLD' ?_FROM_DUAL?
では実行してみます。

これで'HELLO WORLD'の表示プログラムが完成です。
補足:縦方向はライン数に合わせて25文字以下になります。
このプログラムはSQL=を使っているのでデータベースを使う前提でないと動きません。I言語はデータベースが無くても動くようにできます。この場合のプログラムを説明します。
メニューやプログラムもデータベースに作ります。今回はデータベースを使わないのでこれも使わないでメモ帳でプログラムを作ります。デスクトップ上に”HELLO.I7”をメモ帳で下記のうように作って下さい。(ファイルの場合番号は無しです)
(注意:メモ帳では通常拡張子が".txt”となります、".I7"にするには「ファイル」「名前を付けて保存」でファイル名を”HELLO.I7"と拡張子を変えて「保存」で出来ます)
*******( HELLO.I7 )**************************************
PROGRAM=OUTPUT
LINE=1
BEGIN
=OUTPUT{'HELLO WORLD'};
DATA={,,80}A{11}
**********************************************************
BEGINはプログラム開始時に直下に書かれている=で始まる命令群を実行する宣言です。
OUTPUT{}でSQL=と同じ結果を得られます。
次にこのファイル上で「右ボタン」「プロパティ」「全般」「変更」「参照」でファイル名に"C:¥I¥BIN¥I7MENUW.EXE”を設定し「開く」「OK」「OK」で閉じ、ファイルをダブルクリックします。

[Enter]で検索するとタイトルバーと1行目の見出しは違いますが、’HELLO WORLD'がデータベース無しで表示出来ます。
[Enter]で検索しないで即表示したい場合は以下のようにCONTROL=BEGIN_ENTERを書けば即表示されます。
*******( HELLO.I7 )**************************************
PROGRAM=OUTPUT
CONTROL=BEGIN_ENTER
LINE=1
BEGIN
=OUTPUT{'HELLO WORLD'};
DATA={,,80}A{11}
**********************************************************
All Rights Reserved, Copyright (C) 2009-2010 Nobumichi Harasawa.