I言語ホームページ


1.1 I言語とは、その1
I言語とはInstant言語の略です、コンピューターのプログラムを即座に作る事が出来る言語です。
プログラム作りは結構難しく、10人が勉強を始めても、実際にプログラムを作れるようになる人は、残念ながら10人とは成りません。
また、実際にプログラムを作れるようになったとしても、プログラムを作るには非常に時間がかかります。
そこでI言語では、難しい部分と、時間のかかる部分を、全てコンピューターに任せる事で、 「誰でも」「簡単に」「早く」プログラムを作れるようにしました。
VER37_8.0.4-2024年4月10日(.NET8.0.4版),VER36_6.0.5-2022年05月11日(.NET6.0.5版),VER35.12-2021年11月10日(.NET5.0.12版),VER32.1-2020年03月08日(.NET Framework版)
I言語のダウンロード(http://ilanguage.iinaa.net/download2.htm)
I言語自習書_01:I言語の動作環境の構築
I言語自習書_02:リレーショナルデータベースとSQL
I言語自習書_03:テーブルの更新処理
I言語自習書_04:トランザクション処理
I言語自習書_05:請求書発行システムの開発
I言語自習書_06:ノウハウ集
1.2 I言語とは、その2
全てをI言語で対応する事は難しいので、データはリレーショナルデータベース(RDB)に持ち、データの定義と操作の部分は、SQLと呼ばれる別の言語も使用します。
RDBは今までのデータベースとは異なり、データを一番簡単な構造の2次元の表で持っているので、SQLの文法も簡単で命令数も少なく初心者にも容易に習得できます。
SQLは簡単ですが、コンピューターシステム開発で必ず必要な、分散されて記憶されている情報を集めて処理するロジックを、SQLでテーブルを結合する方法で、簡単に対応出来る優れものです。
SQLこそがプログラムを「誰でも」「簡単に」「早く」出来るようにした救世主です。
I言語は、SQLを効果的に使う為の物ですので、一般的には給与計算、会計処理、生産管理と言った情報処理システムと呼ばれる、 事務処理システム専用の言語ですので、応用範囲は広いですが、何でも出来る言語では無いので、その点は注意して下さい。
尚、RDBのソフトはMicrosoft SQL Server 2022 Express Edition等パソコンで無償で使える物が複数提供されているので導入は容易です。
1.3 I言語とは、その3
パソコンとは、パーソナルコンピューターの略です。 日本語で言い換えれば、企業等で使用する大型の電子計算機に対し、個人で使用する小型の電子計算機の事です。
小型と言っても最近のパソコンは昔の大型の電子計算機の性能を遥かに超えているので、中小企業や個人商店の基幹システム用として十分機能します。
では、あなたはパソコンを電子計算機として活用していますか?。
残念ながら、パソコンを電子計算機として活用している人は少ないと思われます。
これでは、パソコンの能力を十分に生かし切れていません、宝の持ち腐れとは言いませんが、非常にもったいない事です。
なぜでしょうか?、それは、パソコンを電子計算機として活用する為には、目的に合ったプログラムが必要ですが、
目的に合ったプログラムがあまり無く、個人でプログラムを作ろうとすると、難しく、かつ、時間がかかる為に、
個人ではプログラムを簡単には作る事が出来ない為です。
つまり、これを解決出来る言語が「I言語」と言う事になります。
1.4 I言語とは、その4(VER22.1版 2022年6月11日改定)
それでは、I言語が難しくない事、時間がかからない事を理解してもらうために、実際のプログラムで説明します。
I言語はSQLを使います。SQLはRDBを使ってデータを効率よく記憶し、処理する為の言語です。
データはテーブル(行と列の2次元の表)と呼ぶ単位で持ちます。列がデータの種類で、行が1件づつのデータです。
I言語は、単に難しさの解消と、時間をかけない事を狙っただけでは、上手くゆかないので、規約でカバーしています、必要な部分を説明します。
I言語ではテーブルを許可(英字4文字)で大きく区分し、使用者には1個の許可を与えられます。 これにより使用者の使える名前を集約したり制約する事で、開発時の生産性を上げたり、許可の管理が簡単に行えるようにしています。
今回はインストール時点で許可"ZZZY"が作られていますので、これを使います。
テーブルの先頭は必ず許可と同じ文字列にする必要が有ります、そして、テーブルの最後は必ず"実表"(英語表記は"_TABLE")とする事としています。 (これはプログラム内で使われているテーブルが何かを簡単に判別出来るようにする為です)
更に、許可の次に2文字の許可区分を付ける事を推奨しています、今回はインストール時点で既に設定されている"AA"を許可区分とします。
それでは、ごく簡単な月単位のエンゲル係数を導くための、家計簿のテーブルを考えてみましょう。
列としては"年月日"、"内容"、"食費"、"金額"、が考えられます。尚、列名はシステム内でユニークで有る必要は有ります、 今回は一応家計簿用ですので先頭に「家計簿_」の文字を付加してユニークな列名とします。
尚、テーブルは他の行と区別する為の主キーが必要です、今回は"年月日"と"内容"で区別出来るので、この2個を主キーとします。
実際の作業は、最初に列のデータ辞書を作ってから、次にテーブルを作ります。
下記がテーブル情報です。
****************( テーブル情報 )********************
●テーブル名=ZZZYAA_家計簿実表
■列名1=家計簿_年月日 CHAR(8) (主キー、データ辞書[型1="D"],[長さ2=1])
(CHAR(8)は半角文字で8文字記憶出来る意味です、RDBには年月日を記憶出来る物も有りますが、 RDB毎に全く異なる動きをするので、I言語ではあえて文字で8文字としています)
(データ辞書の型1が"D"[DATE]は年月日を意味します)
(CHARで長さ2が1は最低1文字必要の意味です)
■列名2=家計簿_内容 NCHAR(20)(主キー、データ辞書[型1="J"],[長さ2=1])
(NCHAR(20)は全角文字(半角も含めて)で20文字記憶出来る意味ですが、I言語では都合により全角で10文字の意味となります,
プログラムの扱っている文字コードはUTF-16と呼ばれる物を使用していますが、
サロゲートペアと呼ばれるUTF-16の2文字を1文字で表現している物も問題無く扱えるように半分の文字数としています)
(データ辞書の型1が"J"[Japanise]は全て全角[日本語]を意味します)
(NCHARで長さ2が1は最低1文字必要の意味です)
■列名3=家計簿_食費 DECIMAL(1,0)(データ辞書[型1="+"])
(DECIMAL(1,0)は数値で有効桁数1桁、小数点以下0桁を意味します)
(データ辞書の型1が"+"は0以上の数値を意味しています,"-"とすると負の値も設定出来ます)
(この値が1の場合食費と見なす事にします)
■列名4=家計簿_金額 DECIMAL(9,0)(データ辞書[型1="+"])
★上記以外に、実際には、I言語自身が使うZ_で始まる列が、先頭に8個作られます。
************************************************
◎(データ辞書登録画面)◎(テーブル登録画面1/2)◎(テーブル登録画面2/2)

それでは、データーを登録するためのプログラムを作ってみます。尚、ここまでは全てI言語の開発支援プログラムで作る事が出来るので 、直接プログラムを打ち込む必要は有りません。
出来たプログラムです。
*****************( プログラム VER36.6.0.4 )******************************************
PROGRAM=,&X1,?_MM?_家計簿実表
SET={}.?&.SET&家計簿_年月日?
SET={}.?&.SET&家計簿_内容?
DATA={K}?&.DATA&家計簿_年月日?
DATA={K}?&.DATA&家計簿_内容?
DATA={}?&.DATA&家計簿_食費?
DATA={}?&.DATA&家計簿_金額?
COPY=@ZZZZZZ_SQL
*****************( 特徴 )**************************************************************
特徴1:テーブル情報がテーブル名と列名が主で、以外を変更してもプログラムの変更は不要です、プログラムとデータの完全独立を実現しています。
特徴2:更新のSQL文はI言語側で対応しています、更新では何時何処で誰が何をしたかを付加し、問題発生時に速やかに対応出来るように成っています。
特徴3:検索のSQL文はCOPY=@ZZZZZZ_SQLでコピーされています、複雑なニーズにも対応出来るように、プログラム内で組み立てています。
特徴4:命令はPROGRAM=、SET=、DATA=、COPY=の4個とCOPY=の中の「条件命令+」とREPEAT=とSQL=の3個の計7個で、後はSQL文の、SELECT,INSERT,UPDATE,BEGIN TRANSACTION,COMMIT TRANSACTION,ROLLBACK TRANSACTIONの6個を使っているだけですので、初心者でも理解は容易です。
特徴5:プログラムの書き方が他のプログラミング言語とは異なっています。理由は、初心者が覚えられない予約語を無くす事でした。 そこで、オペレーションとオペランドを分離する書き方を3個用意しました、 定義命令用の「オペレーション=オペランド」と条件命令用の「オペランド+」(+と‐がオペレーションです)と操作命令用の「オペレーション{オペランド1}{オペランド2};」です。 経験者には最初は違和感が有りますが、文法は単純ですのですぐ慣れます。
 尚、SQL文には予約語が有り、列名として使う場合RDBMS毎に対応が異なる為、I言語としては列名として予約語は使えない事としました、5個のRDBMSの予約語全て使えないので、結構使えそうな名前が使えないので設計時には注意が必要です、データ辞書作成で予約語をチェックしているので、覚える必要は有りません。
特徴6:更新時、画面に表示されているデータと同じ保証は無いので、再度読み込んで画面と異なる場合は更新しないような細かな配慮もされています。
特徴7:I言語は英大文字が基本で動いています、なので、プログラムも英大文字で作っています、理由は元々がメインフレームとの連携用に開発した関係で英大文字が基本に成っています。英小文字をあまり使わない理由はSQL Serverにも有ります、SQL Serverは同じ英小文字と英大文字を比較すると同じ文字と判定します、一方、I言語は一般的なプログラミング言語と同じ動きにしたいので、異なる文字と判定します、SQL SeverとI言語の判定結果が異なるので、誤動作防止の意味で、英小文字を極力使用しない仕様としています。
特徴8:I言語を使って、インストールもメニューも、開発支援ソフトも、運用支援ソフトも作られており、インストールすれば、即、本番運用が出来るようになっています。朝の時間起動処理を実行すると、その日の昼にデータベースのバックアップと次の稼働日の朝の時間起動処理が予約され、エンドレスで時間起動が行われるように成っています。
特徴9:I言語の一つ前のIPROGRAMで実際に一万本以上のプログラムが開発され本番運用されました、I言語はIPROGRAMのDNAを引き継いでいるので、実用性は実証済です。尚、現役時代に生産管理システムを担当していた関係で、俗にMRPと呼べれる部品発注システムをIPROGRAMで構築したので、I言語でもサンプル発注システムとして作って有ります、伝票を発行する印刷プログラムもI言語用に作って有るので、企業ニーズに合わせてカスタマイズすれば使えるように成っています、お試し下さい。
特徴10:インストールも動くように、テキストエディタでファイルに書いたプログラムを、実行する事も出来ます。実際の業務プログラムはプログラムテーブルに作るので、このプログラムのように、一般的なI言語の更新処理用プログラムで、プログラムを作ります、当然ですが、テキストエディタで出来る事もI言語でプログラミングされています。
特徴11:必要と思われる機能は殆ど網羅しましたが、それでも、不足の場合でも自力で応出来るように、I言語のソースプログラムも添付しています。
特徴12:I言語では、ライブラリをそのまま使う方法は取らないで、I言語の命令に置き換えて提供してます、初心者がつまずかない為でもありますが、動作環境に非互換が発生しても、I言語側で非互換を対応し、開発されたプログラムの影響を極力低減する為です。IPROGRAMの時にSQL Serverが再構築され、大規模な非互換が発生した事が有りましたが、非互換の殆どはIPROGRAM側で対応出来、開発したプログラムの修正が殆ど無しで移行できました。これは、長期間使用するプログラムにとって非常に重要な事と考えます。
****************( プログラムの詳細説明 )******************************************
PROGRAM=,&X1,?_MM?_家計簿実表
◎「PROGRAM=」はプログラムの処理種類を指定し、OUTPUTが標準検索処理で、INPUTが標準更新処理で、NOTがそれ以外の処理を意味します。
◎ここでは処理種類が省略されており、この場合はメニューに指定した処理種類が採用されます。
◎PROGRAM=は複数個書く事が出来、一個のプログラムの中で画面を切り替える事ができます、プログラム開発ではメニューを作ってその一つを選択してプログラムを作る画面を開いています。
◎メニューには処理種類の他に他のプログラムをコピーする指定も出来るので、同じプログラムがそのまま更新用と検索用のプログラムとして動かせます。
◎メニューの処理種類と許可はデータベースに接続するログインIDに使われ処理種類がOUTPUTはテーブルに対しSELECT権限のみが有り、更新は出来ないようになっています。
◎権限が設定されるのはマスターデータベースに対してで、他に全ての権限が有るワークデータベースも有り、どんなニーズにも対応出来るように成っています。。
◎処理種類がINPUTのデータベース接続のログインIDはテーブルに対しSELECT、INSERT、UPDATEの権限が有ります、尚、DELETEの権限は有りません。
◎INPUTにDELETEの権限が無いので行を物理的に削除出来ません、これは、削除データもUPDATEでZ_CANCELに削除日を入れ、何時何処で誰が削除したかを記憶し、問題発生に速やかに対処出来るようにしている為です。
◎列名でZ_で始まる物と英字4文字とアンダーバーで始まる列名もパッケージソフト用で予約語としており、登録出来ないので注意して下さい。
◎「&X1」は右に指定するテーブルの別名です、ユニークな別名が必要なのでここで指定する文法に成っています、&X1が推奨値です。
◎「&X1」の別名はプログラム内では殆ど省略可能になっているので、ここ以外で登場する事は殆ど有りませんが、SQL文内では必ず登場します。
◎「?_MM?_家計簿実表」は標準の検索及び更新対象のテーブル名です。
◎「?_MM?」と両端に?の有るものはプログラムの読み出し時に内容で置き換えられます。
◎「_MM」のようにアンダーバーで始まる変数はシステムが提供している物で、必要と思われる物が沢山提供されています。
◎「?_MM?」はデータベース名とスキーマ名更に許可と許可区分を含む値で置き換えられ、テスト中はテスト用データベースが設定されます。
SET={}.?&.SET&家計簿_年月日?
◎「SET=」は検索時の絞り込み用のデータを入力する為の物です。尚、PROGRAM=NOTの場合は使用しません。
◎画面はI言語が表示しているので、表示場所はほぼ決まっています。1行目はタイトル表示で、2行目はメッセージ表示で、3行目は現在入力位置の情報の表示で、SET=は4行目から見出し部と表示部が横に並んで表示されます。画面サイズはMS-DOSのCUI画面から始まった関係で、横が80文字で縦が25文字が基本に成っています、なので、入力できる文字数は最大でも80文字までですので、注意が必要です。尚、80文字以上のデータを扱いたい場合はDATA=を画面に表示しない設定も出来るので、そこに入れ、80文字以下に分割して表示し、更新時に文字を結合して、対応します。
◎「{}」は付加的な属性情報を設定する物です、今回は何も無いので空と成ります。
◎「.?&.SET&家計簿_年月日?」は該当列名のデータ型に合わせて画面を表示する情報が設定されます。
◎「&」で始まる変数名はテーブル宣言で作られる変数で、特に&.はPROGRAM=の右に書かれているテーブル名から作られた変数です、本来は&X1.と書きますがX1は省略出来ます。
◎先頭の「.」は、DATA=のデータ名と重複させない為に付けています、本来はSX1.(別名はSを取ったX1と成ります)とする代わりに「.」のみで対応出来るようにしています。
SET={}.?&.SET&家計簿_内容?
DATA={K}?&.DATA&家計簿_年月日?
◎「DATA=」は検索結果のデータの表示と、更新時のデータ入力用の項目設定用です。
◎検索結果ですので、画面に表示可能な行の数だけ作られます。尚、PROGRAM=NOTの場合は1個のみと成ります。
◎画面サイズはMS-DOSのCUI画面から始まった関係で、横が80文字に成っています、DATA=の表示は見出し部がSET=の次に来て、見出し部が表示される複数行分の下に、データ部が1行分確保されますが、右方向80文字を超えた場合は、SET=と同じように見出し部の次に表示部の形で複数行で表示されるのが基本に成っています、80文字を超えても見出し部と表示部を分離のままにしたい場合は、陽にCONTROL=SCROLLとすれば右スクロールが出来るように成ります、尚、縦サイズはI言語が画面に表示できる行数を再計算し、表示可能な分画面を広げて表示されます。又、1行に複数行分表示出来る場合は、複数行分表示されます。
◎メニュー等の画面も作れるように、DATA=の表示画面を全てFORM=命令で自前でレイアウトする事も可能です。@の連続が表示部に成りますが、表示長は決まっているので、長さが異なる場合は、I言語が長さを自動調整するので、注意が必要です。
◎「{K}」はKEYを意味し、更新時のキーを指定しています、更新処理ではDATA=に最低1か所はKを付ける必要が有ります。尚、SET=に{K}を設定する事も出来ます。
◎データ辞書の型1が"D"の年月日ですので、表示はYYYY-MM-DDと10桁表示と成ります。ただし、入力はハイフン無しで、テーブル上もハイフン無の8文字と成ります。
DATA={K}?&.DATA&家計簿_内容?
DATA={}?&.DATA&家計簿_食費?
DATA={}?&.DATA&家計簿_金額?
◎データ辞書の型1が"+"の数値で、小数点以下が無いので、データは小数点が右端と想定し、右詰めで3桁毎にカンマ付いて表示されます。
COPY=@ZZZZZZ_SQL
◎「COPY=」は他の場所からプログラムをコピーしてここに埋め込みます。
◎「@ZZZZZZ_SQL」は検索用のSQL文を組み立てるプログラムです、下記が内容です。
**************( @ZZZZZZ_SQLの内容 )************************************************************************
◎下記のプログラムは結果的には「SQL=」の命令が作られ、検索用のSQL文となります。
%ZZZZZZ_SQL_SELECT+REPEAT=_SELECT_COUNT
◎「%ZZZZZZ_SQL_SELECT+」のように最後に'+'又は'-'が有る物は、そこから右のプログラムを採用するかしないかを指定出来ます。
◎「PEPEAT=値」と値が有るとその数だけ繰り返します、「_SELECT_COUNT」はDATA=の数になります。
◎「PEPEAT=終了値[,開始値]」が文法です、初心者が良く質問をするFORやWHILEと同等の命令ですが、初心者に理解し易いように、単に開始値から終了値まで繰り返すだけの文法としました。
%ZZZZZZ_SQL_SELECT+SQL=?_SELECT##?
◎繰り返し内に有る'##'はプログラム読み出し時に最初に繰り返しの数に置き換えます、_SELECT##は_SELECT1から番号が付いて行きます。
◎配列は初心者が理解出来ないので使いませんが、変数名の一部を連番にする事で、配列と同じ事が出来るようにしています。##以外に#-が一つ少ない数、#+が一つ多い数が設定されます。
◎_SELECT1は「SELECT 別名.列名」に_SELECT2以降は「,別名.列名」となります、尚、SELECT=が有る場合は別名.列名の位置が置き換わります。
◎データ名の.以降(.が無い物はそのまま)が列名に成ります、尚、別名が無い物はPROGRAM=に書かれた別名の「X1」が付加されます。
%ZZZZZZ_SQL_SELECT+REPEAT=
◎PEPEAT=に値が無い場合は繰り返しの終了を意味します。
%Z_CANCEL_SELECT+SQL=,?_T?.Z_CANCEL
◎更新処理は削除データも表示するので、削除データの判定の為Z_CANCELも読み込みます。
◎「_T」はPROGRAM=に書かれた別名の「X1」と成ります。
%ZZZZZZ_SQL_FROM+REPEAT=_FROM_COUNT
◎「_FROM_COUNT」は1にJOIN=命令文の数が足された物です。
%ZZZZZZ_SQL_FROM+SQL=?_FROM##?
◎「_FROM##」は結合文字とテーブル名と結合条件が設定されます。
%ZZZZZZ_SQL_FROM+REPEAT=
%ZZZZZZ_SQL_LEFT+REPEAT=_LEFT_COUNT
◎「_LEFT_COUNT」はDATA=の数です。
%ZZZZZZ_SQL_LEFT+SQL=?_LEFT##?
◎「_LEFT##」はデータ辞書にテーブル結合の指定が有ると設定されます。
%ZZZZZZ_SQL_LEFT+REPEAT=
%ZZZZZZ_SQL_WHERE+REPEAT=_WHERE_COUNT
◎「_WHERE_COUNT」はSET=の数です。
%ZZZZZZ_SQL_WHERE+SQL=?_WHERE##?
◎「_WHERE##」はSET=にデータが入力された場合絞り込みのSQL文が組み込まれます、データ型が文字の場合は「(WHERE又はAND) 別名.列名 LIKE '入力値%'」と成ります。
%ZZZZZZ_SQL_WHERE+REPEAT=
%Z_CANCEL_WHERE+SQL=?_WHERE_AND? ?_T?.Z_CANCEL=' '
◎検索処理の場合削除データは不要なので、未削除データのみ表示します。
◎未削除データは「Z_CANCEL=' ’」で判定します、I言語では誤動作防止の為、通常はテーブルにNULL値は登録出来ないように成っているので、このように判定しています。
%ZZZZZZ_SQL_GROUP+REPEAT=_GROUP_COUNT
◎「_GROUP_COUNT」はDATA=の数です。
%ZZZZZZ_SQL_GROUP+SQL=?_GROUP##?
◎付加属性にGの有るデータがここに付加されます。
%ZZZZZZ_SQL_GROUP+REPEAT=
%ZZZZZZ_SQL_HAVING+SQL=?_HAVING?
◎「_HAVING」に値を転送すると、ここに設定されます。
%ZZZZZZ_SQL_ORDER+REPEAT=_ORDER_COUNT
◎「_ORDER_COUNT」はDATA=の数です。
%ZZZZZZ_SQL_ORDER+SQL=?_ORDER##?
◎通常は付加属性にKの有るデータを昇順に表示します。
%ZZZZZZ_SQL_ORDER+REPEAT=
*******************************************************************************************************************
◎(プログラム登録画面1/4)◎(プログラム登録画面2/4)◎(プログラム登録画面3/4)◎(プログラム登録画面4/4)

◎(実行画面)

先頭が*のコメント行を除くと、たった、8行しか有りませんし、テーブル名と列名がほとんどで、以外簡単な英単語があるだけで、難しそうなプログラムらしきものはありません,これだけで更新処理が問題なく出来ます。
基本のプログラムは全てI言語側が行う事で、これ以上は無理と考えられる極限まで、文字数が削減され「誰でも」「簡単に」「早く」が実現されている事が、お分かりと思います。
それでは、月単位のエンゲル係数を計算するプログラムを作ってみます。
こちらは、単なる更新や検索処理ではないので、手動でプログラムする必要があります。
月単位のエンゲル係数はSQLのSUMの合計を出す集計関数とGROUP BYのグループ化の機能を使えば出来ます。
SQLをすべて作れば、当然可能ですが、「早く」が実現できないので、ある程度の事まではI言語で対応出来るようにしています。
エンゲル係数を計算する式は、エンゲル係数を表示するDATA=の下にSELECT=で書く事で対応できます。
グループ化の指定はDATA=の次に{G}とする事で対応できます。
プログラムは下記のようになります。こちらも、たったの8行で出来ます。
****************( プログラム )*******************************
PROGRAM=,&X1,?_MM?_家計簿実表
DATA={G}年月{6}
SELECT=?_SUBSTR(X1.家計簿_年月日;1;6)?
DATA={}エンゲル係数{3,,+,Z}
SELECT=CASE SUM(?_T?.家計簿_金額) WHEN 0 THEN 0 ELSE
SELECT=100*SUM(CASE ?_T?.家計簿_食費 WHEN 1 THEN
SELECT=?_T?.家計簿_金額 ELSE 0 END)/SUM(?_T?.家計簿_金額) END
COPY=@ZZZZZZ_SQL
****************( プログラムの詳細説明 )******************************************
PROGRAM=,&X1,?_MM?_家計簿実表
DATA={G}年月{6}
◎付加属性にGを書く事で、GROUP BYが設定されます。
◎{6}は6文字表示出来る画面を表示します、このように、直接文字数を指定する事も出来ます。。
SELECT=?_SUBSTR(X1.家計簿_年月日;1;6)?
◎「SELECT=」を書くと別名.列名の代わりにSQL文に埋め込まれます。
◎年月単位に集計したいので、年月日から先頭の6文字を抜き出しています。
◎「_SUBSTR]は文字列を抜き出す関数に置き換わります、RDBMS毎に書き方が異り、引数の順番が異なる場合も考慮し、引数を含めて全体をシステム変数にしています、尚、引数はカンマでは無く、セミコロンで区切る文法に成っているので注意して下さい。
DATA={}エンゲル係数{3,,+,Z}
◎エンゲル係数を表示する画面です,3が3桁の数値で、次の空白は小数点以下の桁数で無い時は0の意味で、+が正の数値を意味します、Zは0の時0と表示します、無いと0は表示されません。
SELECT=CASE SUM(?_T?.家計簿_金額) WHEN 0 THEN 0 ELSE
SELECT=100*SUM(CASE ?_T?.家計簿_食費 WHEN 1 THEN
SELECT=?_T?.家計簿_金額 ELSE 0 END)/SUM(?_T?.家計簿_金額) END
◎エンゲル係数を計算しています。
COPY=@ZZZZZZ_SQL
****************************************************************
◎(プログラム登録画面)◎(実行画面)

エンゲル係数を求めているのはSQLで対応可能ですが、少し複雑ですので説明します。
「CASE SUM(?_T?.家計簿_金額) WHEN 0 THEN 0 ELSE ...」は分母が0の時SQLがエラーとなるのでこれを回避するため0の時は0とし0以外のみ計算します。
「CASE ?_T?.家計簿_食費 WHEN 1 THEN ?_T?.家計簿_金額 ELSE 0 END)」は食費のみ金額を設定し食費以外は0を設定することで食費のみの金額を算出します。
「100*SUM(食費分の金額)/SUM(その月の金額)」でエンゲル係数が%で求められます。
SQLは0で割るとエラーと成る仕様になっています、I言語で0に成らないプログラムにする事も可能ですが、万が一0に成ってもエラーに成らないように、このようにしています。
このプログラムはCOPY=@ZZZZZZ_SQLで検索のSQLが下記のように組み立てられます。
SELECT SUBSTRING(X1.家計簿_年月日,1,6)
,CASE SUM(X1.家計簿_金額) WHEN 0 THEN 0 ELSE
100*SUM(CASE X1.家計簿_食費 WHEN 1 THEN X1.家計簿_金額 ELSE 0 END)/SUM(X1.家計簿_金額) END
FROM ?_MM?_家計簿実表 X1
WHERE X1.Z_CANCEL=' ' GROUP BY (SUBSTRING(X1.家計簿_年月日,1,6)) ORDER BY 1,2

今回はほんの1例ですが、少し複雑な作業が必要でも、I言語側がほとんど対応してくれるので、
「誰でも」「簡単に」「早く」が実現可能な事がお分かりと思います。
ここまでは、他の開発ソフトでも比較的簡単に出来ますが、I言語はここからシステムが更に複雑になっても、「誰でも」「簡単に」「早く」が可能です。
家計簿でも、実際に使う場合は更に多くの機能を組み込んで、毎月行う作業を極力少なくする事が一番大事です。
たとえば、新聞代などは多分毎月同じです、中には火災保険のように年1度の物もあるので、この辺も含めて、定期的に自動で処理させるための、時間起動機能(一般的にはバッチ処理と呼びます)もI言語には組み込まれています。
開発支援も運用支援もすべてI言語で作られています、この点も他の開発ソフトとは異なります、つまり、結構複雑な開発支援も運用支援も開発出来るソフトですので、その実力は非常に高いと言えます。
尚、「2. I言語 のインストール方法」にインストール方法。 「 5. 家計簿のプログラムの学習」に実際のプログラムの作り方が載っているので、是非チャレンジしてみて下さい。
1.5 I言語とは、その5
I言語は。元々は自分自身のシステム開発の改善の為に作ったIPROGRAM(初期はICOBOLでその後SQLを使用)が会社で作った物なので、無償で公開出来るように自宅で0から再構築した物です。 一般には基幹システムと呼ばれるシステムまで構築出来る機能を持っています。(スケジュールに合わせて、バッチ処理を起動する機能も組み込まれています) IPROGRAMですが、既に1万本以上のプログラムが作られ本稼働していますので、実用性は保証済みです。
1.6 I言語とは、その6
ICT化が進んだ企業では、1人が1台のパソコンを使用していると思いますが、やはり、計算機としての利用はほんの少しと思われます。 理由は、プログラム開発は難しく、更に、時間がかかる為、個人のニーズまで情報処理部門がシステム化する余力が無いためです。 結局、個々の担当者は情報処理を自分の頭を使って行っています、その結果、ノウハウは個人の頭の中で留まってしまい、人が変われば、 また、1からノウハウを伝承する必要があります。 一方、I言語を使えば、自らの力で、自分の頭で行っている情報処理を、プログラムとしてコンピューターに蓄積することが容易に出来るようになります。 これを、社員の全員が始めれば、社員のあらゆるノウハウが蓄積され、人が変わっても1からノウハウを教える必要が無くなります。 担当者は、システム化により、日常業務に追われる事もなく、プログラムを改良する事で、更に、有効なノウハウがコンピューターに構築されます。 企業にとって、非常に大きな発展が期待出来ます。
コンピュータの専門家へのメッセージ
1.7 I言語とは、その7
初心者に難しい技術と、プログラムの解読が困難に成る物を、可能な限り使わないようにしました。
(1.7.1)オブジェクト指向プログラミング---初心者には難しい言葉が多く、解読時インスタンス名からクラス名の読み替えが有り、解読が困難なので使いません。
(1.7.2)関数---関数内は変数名の読み替えが必要で、解読が困難になるので、使いません。ただし、同じステップが何か所も必要な場合は便利なので、単にプログラムをコピーし、変数名の読み替え無しで関数と同じ使い方が出来るようにしました。
(1.7.3)for命令等---for,while,do,switch命令等は初心者には難しい事と、命令の記入方法を単純にしたため、このような命令を実現する為には新たな記入方法を追加する必要が有り、使わないようにしました。ただし、便利な場合も有るので、簡単に対応出来る文法としました。
(1.7.4)ifのelse---プログラムミスを起こしやすいく、解読しにくく成るので、使わないようにしました。
(1.7.5)ポインタ---初心者には難しい事と、C言語以外のプログラムは殆ど採用していないのでので、使わないようにしました。
(1.7.6)配列---初心者には難しいので、使わないようにしました。ただし、無いと困る場合が有るので、通常の名前の一部分を連番とする事で配列のように使える機能を用意しました。
(1.7.7)構造体,共用体---初心者には難しい事と、データの処理部分はSQLで対応するので、一時テーブルで対応可能なので、使わないようにしました。
(1.7.8)列挙型---初心者には難しい事と、無くても別の方法で対応可能なので、使わないようにしました。
(1.7.9)データ型---データはRDBに持つので、テーブルにはデータ型の概念が有りますが、I言語内ではデータ型の概念は希薄で、全て文字列で処理しています。
(1.7.10)予約語---記入方法を「命令=処理内容」と「命令{処理内容}」とし、命令と処理内容を完全に分離し、予約語を無用としました。ただし、SQLには予約語が存在するので、SQLの予約語は判定しエラーとする機能を付けました。
(1.7.11)GUI---有れば便利ですが、使うと操作が複雑になり、操作に戸惑う画面が出来てまうので、I言語側で最低限必要なGUIのみを提供し、操作に戸惑う事が無い事を優先しました。
(1.7.12)SQLとI言語以外---メインフレームではプログラミング言語であるCOBOLのマニュアルは3冊ほどでしたが、それ以外のマニュアルが100冊以上ありました。プログラミングはテキストエディターが必要で、画面は画面を作るソフトが必要で沢山の本を習得しないとプログラムを完成できませんでした。そこで、可能な物は全てSQLとI言語のみで対応しました、テキストエディタも画面ソフトも使わないで、インストールもメニューもプログラム開発も全てI言語のプログラムで対応できるようになっています。
1.8 I言語とは、その8
経済産業省のDXレポートに「2025年の崖」とショッキングな言葉が書かれています。
要約すると、現行システムが解読困難なプラックボックス状態になると、2025年に崖となってDX化を阻害するとの事です。
解読が容易なプログラミング手法とし、構造化プログラミングが提案されましたが、実際に実践し解読をしたところ、
構造化のブロック単位に分岐が有り、そこで、解読が中断してしまい、非常に解読が困難になってしまっていました。
この時goto命令が解読を困難にしているとの説も出ましたは、これも分岐命令ですので、解読を困難にしていると思われます。
この、二つの事例から、分岐命令が解読を困難にしている原因で有ると言えます。
実は、goto命令以上に分岐している物が実際のプログラムには存在します、それは、ユーザーが作ったラムダ式以外の関数です、
関数は、更に、関数内では引数からの変数名の読み替えも必要で、この、2点で解読を非常に困難にしているのが現実です。
I言語では、「2025年の崖」を作らない対策として、解読が容易なプログラムも狙っているので、関数も有りません。
ただし、関数が無いと、同じロジックを何か所も書く必要が有り、これも、解読を困難にする原因ですので、
分岐しないで書いたロジックの一部に名前を付けて、他の場所でコピー出来る機能を用意し、分岐も、変数名の読み替えも無で、
関数の長所のみが生かせるようにしています。
又、goto命令は廃止すると不便ですので、先に行くJUMP命令と、前に戻るBACK命令を用意し、少しでも解読が容易になるように工夫してあります。
尚、ifに有るelse命令は便利ですが、解読が困難になる原因と成っているので、あえて使えない文法としています。
関数がと思った人が居るかと思いますが、更に解読を困難にしている物が、オブジェクト指向プログラミングです、
オブジェクト指向プログラミングは関数以上にインスタンス名からクラス名への読み替えが必要で、更に、インスタンスを階層構造に出来るので、
解読が困難なプログラムが容易い作られてしまう致命欠点を持っています、最大の問題はオブジェクト指向プログラミングの長所は述べるが、
解読が困難に成る致命欠点を誰も指摘していないので、「2025年の崖」にまっしぐらに進んでしまっている事です。
1.9 I言語とは、その9
プログラミングは頭脳労働の生産性を改善出来る道具です。
プログラミングの開発には予想以上に時間が掛かるため、企業のシステム開発は基幹システムと呼ばれる、
基幹と成るシステムの開発に手いっぱいで、各担当者のシステム化にまでは手が回らず、
各担当者は相変わらず自分の頭脳で情報処理を行っており、各担当者の仕事の生産性を改善出来ない状況です。
日本は少子化で働き手が不足する方向に有ります、なので、国民全員がプログラミングを習得し、
自分自身の仕事の生産性を改善すれば働き手不足には成りません。
その意味で、小学校でもプログラミングが重要として「プログラミング教育の必須」が始まりましたが、
専門家はプログラミングが出来るように成る事では無く「プログラミング的思考が身に付く事」と言っており、
国民全員がプログラミングできる方向には残念ながら向かっていません。これを、改善する為には、
誰でも習得出来るプログラミングが必要です。
機械語は人間には難しいとして、沢山のプログラミング言語が作られたハズですが、最近のプログラミング言語は、
機械語には無い難しい技術や言葉のてんこ盛り状態で、小学生には理解出来ない状況になってしまっています。
I言語は、難しい技術や言葉を成るべく使わないで、難しい部分を時間を掛けてI言語に組み込む事を繰り返し、
誰でも簡単に早くプログラミングが出来るようにしています。
2.I言語バージョン27以上の使用条件(2021年5月12日改定)
(1)使用中に損害が発生しても一切保証はしません。
(2)危険を伴うシステムには適用しないで下さい。
(3)I言語は全て無料で使用出来ます。
(4)I言語で商売をする、開発ソフトを他社(他人)に提供する場合はプログラム名が重複しないようにユニークなメニュー名を取得して下さい。
(4.1)メニュ-名はAAAAからVZZZまでで、まだ未登録の物を取得できます。
(4.2)取得したい場合は希望のメニュ-名を明記したメールを直接原沢に下さい、 メニュー名が未登録の場合は可能を、登録済の場合は不可能を返信します。
(5)難読化しないで使う場合は重要情報を扱うシステムには適用しないで下さい。
(5.1)I言語はソースプログラムも添付されていますが、.NET FRAMEWORKで作られているので、 リバースエンジニアリングをすれば、ソースプログラムを復元できます。 従って、ソースプログラムが無くても、パスワードを解読しようとすれば解読可能ですので、 重要情報を扱うシステムには適用しないで下さい。
(5.2)重要情報を扱うシステムで使いたい場合は、ソースプログラムの一部を変更し、 再コンパイルしてから、リバースエンジニアリングが出来ない処理を施して、インストール環境を再構築して使用します。
(6)QtはLGPL版を使用しています。
★使用条件を承諾する場合のみ使用できます。
2.1 I言語バージョン5以上26以下の使用条件(2015年1月2日改定)
(1)使用中に損害が発生しても一切保証はしません。
(2)危険を伴うシステムには適用しないで下さい。
(3)I言語は全て無料で使用出来ます。
(3.1)インストール用ファイルはコンピュータ名が”I1"か"I2で"セットアップ名が”I"の場合のみそのままでインストール出来ます。(VER11以前のみ)
(3.2)別のコンピュータ名(15文字以内)とセットアップ名(20文字以内)でインストールしたい場合は事前にインストール用ファイルを作って下さい。(VER12以後は作ります) 尚、セットアップ名は使用者のパスワード暗号化文字として使用されます。
(4)I言語で商売をする、開発ソフトを他社(他人)に提供する場合は開発権が必要です。
★親会社、子会社を含む自社または自分のためのシステム開発には開発権は不要です。
(4.1)開発権はメニュ-名のAAAAからVZZZまでで、まだ未登録の物を取得できます。
(4.2)ソフトの委託開発やパッケージソフトの開発、販売をする等、給与以外のお金が動く行為は開発権が必要です。
(4.3)開発したシステムを無償で他人(他社)に提供する場合も開発権が必要です。
(4.4)開発権は希望のメニュ-名を明記したメールを直接原沢に下さい、 メニュー名が未登録の場合で特に問題が無い場合は許可を、登録済または問題が有る場合は不許可を返信します。
(5)重要情報を扱うシステムには適用しないで下さい。
(5.1)I言語はソースプログラムも添付されていますが、.NET FRAMEWORKで作られているので、 リバースエンジニアリングをすれば、ソースプログラムを復元できます。 従って、ソースプログラムが無くても、パスワードを解読しようとすれば技術的には解読可能ですので、 重要情報を扱うシステムには適用しないで下さい。
(5.2)重要情報を扱うシステムで使いたい場合は、ソースプログラムのパスワードロジックを変更し、 再コンパイルしてから、リバースエンジニアリングが出来ない処理を施して、インストール環境を再構築して使用下さい。
(6)リバースエンジニアリング等でパスワードを解読する行為は禁止とします。
(7)インストール環境を変更した物は下記を除いて、他社(他人)に配布は出来ません。(自社又は自分のみでの使用は可能です)
(7.1)I言語に問題が有った場合(RDBMSやNET Frameworkの新旧バージョン対策含む)の、問題解決の為の変更は可能です。(仕様の追加、修正を伴う場合は不可です)
(7.2)上記(5.2)を実施する場合の変更は可能です。
★使用条件を承諾する場合のみ使用できます。
3.0 VER28.1以降の動作確認方法について(2022年05月15日修正)(2018年10月29日作成)
◎年齢的にそろそろ限界にきているので、動作確認をVER28.1以降、最新Windows+最新Microsoft C#+最新.NET(.NET Frameworkでは有りません)+最新SQL Serverのみとします。
◎それ以外は動作確認は完璧には行いませんので、使う場合は各自で動作確認をして、動くようにしてから使用するようお願いします。
◎OSはLinuxも動きます。
◎コンパイラはMONO版C#(Linux用、現在停止中),OracleJava版,CPP+Qt版(Linux版は停止中)も開発、ただし、全ての機能が動く訳では無いので、動く範囲で使用して下さい。
◎RDBMSはDB2,Oracle,PostgreSQL,MariaDB(Firebird,HiRDBは中止。Symfoware版も一部作りましたが、機能不足で動きません)
◎(解決:Npgsql.dllに問題が有り、PostgreSQLはデータベースのバックアップがエラーとなってしまいます。)
3.1 VER27.1,VER26.1,VER25.1の動作確認済環境(2018年08月31日修正)(2017年11月06日作成)
◎VER27.1について:VER26.1まででほぼ改善項目は対応完了しました、よって、VER27.1は現時点で提供予定は未定です、
 新機能が必要に成った時点、又は重大な問題が発見された時点で、VER27.1の開発を開始しますのでよろしくお願いします。。
(1)OS------.NET Framework4.6.xをインストールしている64Bit Windows又はJava1.8.xかMono4.4.xをインストールしている64Bit Linux。
◎注意:違うバージョンや32BitOSで使いたい場合は、各自で対応と動作確認をお願いします。
◎注意:Ubuntuの場合は「sudo passwd root」でrootユーザを使えるようにしてからインストールして下さい。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事。
◎推奨:サーバーはWindowsでMicrosoftSQLServerを推奨します。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがあるので、必ず[システム要件]を確認して下さい。
(2-1)MicrosoftSQLServer2017。(ExpressEdition含む)【★注意★:ExpressEditionはI言語のインストールでインスタンス名がWindowsは[SQLEXPRESS」、Linuxは空白が初期値となります】
(2-2)PostgreSQL 10.x 又は9.6.x。
(2-3)MariaDB10.2.x。
(2-4)IBM DB2 11.x(Express-C含む)。【★注意★MONO版は動きません】
(2-5)Oracle12C,Oracle11G ExpressEdition。【★注意★MONO版は動きません】
I言語勉強1:SQL Server 2017 ExpressとSSMSのインストール
I言語勉強2:SQL
I言語勉強3:I言語のインストール
I言語勉強4:「5. 家計簿のプログラムの学習」に続く。

I言語の学習 1.リレーショナルデータベースとSQLとI言語
I言語の学習 2. SQL ServerとI言語のインストール
I言語の学習 3. SQLとI言語の連携の学習
3.2 VER24.1,VER23.1,VER22.1,VER21.1,VER20.1の動作確認済環境(2017年08月31日修正)(2016年8月31日作成)
◎★注意★:VER23.1に関するお願い:VER22.1に対し、一部文法を変更し、PROGRAM{、SPLIT_CHAR{、SPLIT_FORM{の命令が非互換となっているので、注意して下さい。
◎★注意★:VER22.1に関するお願い:VER22.1を出すにあたり基本仕様の見直しを行った結果、基本仕様の改定を決断し実行しました。 これにより提供している全テーブルの列名と全プログラムの修正を行いましたので、 不具合箇所が新たに発生している可能性が有ります。支援ソフトもI言語で組まれているので解読は容易です、不具合が有った場合は使用者ZZZZZZZZで修正して使って下さい。 対応方法不明の場合は直接原沢までE-mailしてもらえれば対応版を速やかに提供しますので、よろしくお願いします。 変更点は、列名の先頭を許可とする仕様を廃止し自由とする代わりに、データ辞書の主キーをデータ名のみから許可とデータ名に変更しました。 尚、I言語で提供しているテーブルに関しては旧方式の許可+部分の'ZZZZZZ'(プログラム上は~+)を全てSYSTEMとする事で対応しました。(尚、SYSTEM_USERはSQLの予約語のためSYSTEM_USER_Xとなています)
(1)OS------.NET Framework4.6.xをインストールしている64Bit Windows又はJava1.8.xかMono4.4.xをインストールしている64Bit Linux。
◎注意:違うバージョンや32BitOSで使いたい場合は、各自で対応と動作確認をお願いします。
◎注意:VER17.1で命令の基本仕様を変更したので、広範囲に非互換となりました。
◎注意:I言語のVER16以前のバージョンが同じサーバーにインストールされていると、RDBMSの定義ファイル等動作環境を変更した為、正しく動か無い場合が有ります。
◎注意:Ubuntuの場合は「sudo passwd root」でrootユーザを使えるようにしてからインストールして下さい。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事。f
◎推奨:サーバーはWindowsでMicrosoftSQLServerを推奨します。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがあるので、必ず[システム要件]を確認して下さい。
(2-1)Windows(サーバー)
(2-1-1)MicrosoftSQLServer2016。(ExpressEdition含む)【Linuxサーバーは動きません,linuxクライアントは動きます】
【★注意★:「基本」でインストールするとインスタンス名が「SQLEXPRESS01」と成りますが、I言語はデフォルトではインスタンス名が「SQLEXPRESS」と成っているので「01」を追加して下さい。尚、「基本」以外でインストールした場合は「SQLEXPRESS」と成ります。】
(2-2)Windows又はLinux(サーバー)。
(2-2-1)PostgreSQL9.5.x。【★注意★:VER20.1はインストール環境にミスがありnpgsql.dllが無いエラーが出てインストール出来ません。¥I_SERVER¥SET_I.TXTをテキストエディタ(メモ帳等)で開き「'ms.net45'」を「'bin'」に修正してからインストールして下さい。】
(2-2-2)MariaDB10.1.x。【★注意★10.1.19+MySQLのDDL7.0.6は動きません,原因不明につきインストールをしないで下さい】
(2-2-3)IBM DB2 11.x(Express-C含む)。【★注意★MONO版は動きません】
(2-2-4)Oracle12C,Oracle11G ExpressEdition。【★注意★:VER20.1はインストール環境にミスがありインストールでNULLがinsert出来ないエラーが出てインストール出来ません。¥I_SERVER¥SET_END.TXTをテキストエディタ(メモ帳等)で開き「,'',」を「,’',」(引用符の間に空白を入れる)に修正してからインストールして下さい。】【★注意★MONO版は動きません】
1. SQL Server 2016 Express Edition のインストール方法
2. I言語 のインストール方法
3. リレーショナルデータベースの学習
4. I言語とリレーショナルデータベースの学習
5. 家計簿のプログラムの学習
6. 家計簿のリストボックスによる入力改善の学習
7.家計簿の時間起動による自動入力化の学習
8.家計簿の本番移行の学習
9.インターネットの学習
3.3 VER19.1,VER18.1の動作確認済環境(2016年4月3日修正)
(1)OS------.NET Framework4.5.xをインストールしている64Bit Windows又はJava1.8.xかMono4.0.xをインストールしている64Bit Linux。
◎注意:違うバージョンや32BitOSで使いたい場合は、各自で対応と動作確認をお願いします。
◎注意:VER17.1で命令の基本仕様を変更したので、広範囲に非互換となりました。
◎注意:I言語のVER16以前のバージョンが同じサーバーにインストールされていると、RDBMSの定義ファイル等動作環境を変更した為、正しく動か無い場合が有ります。
◎注意:Ubuntuの場合は「sudo passwd root」でrootユーザを使えるようにしてからインストールして下さい。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事。
◎推奨:サーバーはWindowsでMicrosoftSQLServerを推奨します。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがあるので、必ず[システム要件]を確認して下さい。
(2-1)Windows(サーバー)
(2-1-1)MicrosoftSQLServer2014。(ExpressEdition含む)【Linuxサーバーは動きません,linuxクライアントは動きます】
(2-2)Windows又はLinux(サーバー)。
(2-2-1)PostgreSQL9.4.x。【★注意★VER19.1は.NET版,MONO版は「PG_START_BACKUP()」がエラーとなりデータベースのバックアップが動きません。対応策が無いので本番運用は出来ません。】
(2-2-2)MariaDB10.1.x。
(2-2-3)Firebird2.5.x。【★注意★Java版は動きません】
(2-2-4)IBM DB2 10.x(Express-C含む)。【★注意★MONO版は動きません】
(2-2-5)Oracle12C,Oracle11G ExpressEdition。【★注意★MONO版は動きません】
◎I言語 Lesson1 インストールの学習

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

◎I言語 Lesson3 家計簿のリストボックスによる入力改善の学習

◎I言語 Lesson4 家計簿の時間起動による自動入力化の学習

◎I言語 Lesson5 家計簿の本番移行の学習

◎I言語 Lesson6 インターネットの学習

◎I言語 Lesson7 グラフ表示の学習
3.4 VER17.1VER16.1の動作確認済環境(2016年2月8日修正、2015年8月31作成)
(1)OS------.NET Framework4.5.xをインストールしている64Bit Windows又はJava1.7.xかMono4.0.x版(2016年2月7日復活)をインストールしている64Bit Linux。
◎注意:違うバージョンや32BitOSで使いたい場合は、各自で対応と動作確認をお願いします。
◎注意:VER17.1で命令の基本仕様を変更したので、広範囲に非互換となりました。
◎注意:I言語のVER16以前のバージョンが同じサーバーにインストールされていると、RDBMSの定義ファイル等動作環境を変更した為、正しく動か無い場合が有ります。
◎注意:Ubuntuの場合は「sudo passwd root」でrootユーザを使えるようにしてからインストールして下さい。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事。
◎推奨:サーバーはWindowsでMicrosoftSQLServerを推奨します。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがあるので、必ず[システム要件]を確認して下さい。
(2-1)Windows(サーバー)
(2-1-1)MicrosoftSQLServer2014。(ExpressEdition含む)【Linuxサーバーは動きません,linuxクライアントは動きます】
(2-2)Windows又はLinux(サーバー)。
(2-2-1)PostgreSQL9.4.x。【★注意★VER16.1は設定ファイルの更新に問題が有り、データベースが起動しなくなるのでインストールをしないで下さい】
(2-2-2)MariaDB10.0.x。
(2-2-3)Firebird2.5.x。【★注意★Java版は動きません】
(2-2-4)IBM DB2 10.x(Express-C含む)。【★注意★MONO版は動きません】
(2-2-5)Oracle12C,Oracle11G ExpressEdition。【★注意★MONO版は動きません】
3.5 VER15.1,VER14.1,VER13の動作確認済環境(,2015年5月25日修正,2015年4月3日追加,2015年3月8日作成)
(1)OS------.NET Framework4.5.xをインストールしている64Bit Windows又はJava1.7.xをインストールしている64Bit Linux。
◎注意:違うバージョンや32BitOSで使いたい場合は、各自で対応と動作確認をお願いします。
◎注意:Ubuntuの場合は「sudo passwd root」でrootユーザを使えるようにしてからインストールして下さい。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事。
◎注意:MicrosoftSQLServerを推奨します。以外はバックアップ等全ての機能を対応出来てはいないので、不足分は各自で対応と動作確認をお願いします。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがあるので、必ず[システム要件]を確認して下さい。
(2-1)Windows
(2-1-1)MicrosoftSQLServer2014。(ExpressEdition含む)【linuxクライアントも確認済】
(2-1-2)Firebird2.5.x。【★注意★linuxクライアントは動きません】
(2-2)Windows又はLinux。
(2-2-1)PostgreSQL9.4.x。
(2-2-2)MariaDB10.0.x。
(2-2-3)IBM DB2 10.x(Express-C含む)。【★警告★VER15.1はインストールでエラーと成ってしまうのでインストールしないで下さい、VER16.1で解消の予定】
(2-2-4)Oracle12C,Oracle11G ExpressEdition。
3.6 VER12の動作確認済環境(2015年1月2日作成)
(1)OS------.NET Framework4.5.xをインストールしている64Bit Windows又はJava1.7.xをインストールしている64Bit Linux。
◎注意:違うバージョンや32BitOSで使いたい場合は、各自で対応と動作確認をお願いします。
◎注意:Ubuntuの場合は「sudo passwd root」でrootユーザを使えるようにしてからインストールして下さい。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事。
◎注意:MicrosoftSQLServerを推奨します。以外はバックアップ等全ての機能を対応出来てはいないので、不足分は各自で対応と動作確認をお願いします。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがあるので、必ず[システム要件]を確認して下さい。
(2-1)Windows
(2-1-1)MicrosoftSQLServer2014。(ExpressEdition含む)【linuxクライアントも確認済】
(2-1-2)Firebird2.5.x。【★注意★linuxクライアントは動きません】
(2-2)Windows又はLinux。
(2-2-1)PostgreSQL9.3.x。【★注意★インストールでエラーが出てインストール出来ません、インストールする前にI_SERVER\SET_DB_P.TXTの「=SQL{BEGIN TRANSACTION};」を「=LOGIN_SQL{BEGIN TRANSACTION};」に「=SQL{COMMIT TRANSACTION};」を「=LOGIN_SQL{COMMIT TRANSACTION};」に変更して下さい。】
(2-2-2)MariaDB10.0.x。
(2-2-3)IBM DB210.x(Express-C含む)。
(2-2-4)Oracle12C。
3.7 VER11の動作確認済環境(2014年11月22日作成)
(1)OS------.NET Framework4.5.xをインストールしている64Bit Windows又はJava1.7.xをインストールしている64Bit Linux。
◎注意:違うバージョンや32BitOSで使いたい場合は、各自で対応と動作確認をお願いします。
◎注意:Ubuntuの場合は「sudo passwd root」でrootユーザを使えるようにしてからインストールして下さい。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事。
◎注意:MicrosoftSQLServerを推奨します。以外はバックアップ等全ての機能を対応出来てはいないので、不足分は各自で対応と動作確認をお願いします。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがあるので、必ず[システム要件]を確認して下さい。
(2-1)Windows
(2-1-1)MicrosoftSQLServer2014。(ExpressEdition含む)【linuxクライアントも確認済】
(2-1-2)IBM DB210.x(Express-C含む)。【linuxクライアントも確認済】
(2-1-3)Oracle12C。【linuxクライアントも確認済】
(2-1-4)Firebird2.5.x。【★注意★linuxクライアントは動きません】
(2-2)Windows又はLinux。
(2-2-1)PostgreSQL9.3.x。
(2-2-2)MariaDB10.0.x。
3.8 VER10の動作確認済環境(2014年8月31日修正、2014年8月31日作成)
(1)OS------.NET Framework4.5.1をインストールしている64BitOS。(違うバージョンや32BitOSで使いたい場合は、各自で対応と動作確認をお願いします)。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事(違うバージョンで使いたい場合は、各自で対応と動作確認をお願いします)。
◎注意:MicrosoftSQLServer以外はバックアップ等全ての機能を対応出来てはいないので、不足分は各自で対応して下さい。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがありますので、必ず[システム要件]を確認して下さい。
◎注意:JAVA対応のため大幅にプログラムを直したので、新たな問題が発生している可能性があります、動作確認を行ってから御使用下さい。
◎一部機能が使えませんが、linux用でJAVA(1.7.0_51)版も作ってあります。
◎linux用MONO版はとりあえず作成を中止しています、使う場合はcompile.batを修正してコンパイルして使って下さい。
(2-1)MicrosoftSQLServer2014。(ExpressEdition含む)
(2-2)PostgreSQL9.3.x。
(2-3)IBM DB2 10.x(Express-C含む)。
(2-4)MariaDB 10.0.x。
(2-5)Firebird 2.5.x。
(2-6)Oracle12C。
3.9 VER9の動作確認済環境(2014年4月3日修正、2013年9月16日作成)
(1)OS------.NET Framework4.5.1をインストールしている64BitOS。(違うバージョンや32BitOSで使いたい場合は、各自で対応と動作確認をお願いします)。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事(違うバージョンで使いたい場合は、各自で対応と動作確認をお願いします)。
◎注意:MicrosoftSQLServer以外はバックアップ等全ての機能を対応出来てはいないので、不足分は各自で対応して下さい。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがありますので、必ず[システム要件]を確認して下さい。
◎注意:JAVA対応のため大幅にプログラムを直したので、新たな問題が発生している可能性があります、動作確認を行ってから御使用下さい。
◎一部機能が使えませんが、linux用でJAVA(V1.7)版も作ってあります。
◎linux用MONO版はとりあえず作成を中止しています、使う場合はcompile.batを修正してコンパイルして使って下さい。
(2-1)MicrosoftSQLServer2012。(ExpressEdition含む)
(2-2)PostgreSQL9.3.x。
(2-3)IBM DB2 10.x(Express-C含む)。
(2-4)MariaDB 5.5.x又はMySQL5.5.x。
(2-5)Firebird 2.5.x。
(2-6)Oracle12C又はOracle11G ExpressEdition。
★注意:2-7は動作確認出来ていないので使う場合は各自で対応を御願いします。
(2-7)HiRDB 9(.NET Framework4.5.1用のソフトが無いので動作確認出来ていません)
3.10 VER7,8の動作環境(2014年4月4日修正)
(1)OS------.NET Framework2.0(3.0,3.5SP1でも可)をインストールしている32BitOS。
(WindowsXP,Vista,2003,2008,7)(Vista,2008,7はインストール不要です)
(Windows8はVER8.7,VER7.38以降可能,時間予約のATコマンドを廃止しSCHTASKSで対応)
◎注意:Microsoftの延長サポート終了と同時に、I言語もサポートを中止します。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事。
◎注意:MicrosoftSQLServer以外はバックアップ等全ての機能を対応出来てはいないので、不足分は各自で対応下さい。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがありますので、必ず[システム要件]を確認して下さい。
(2-1)MicrosoftSQLServer2012,2008(R2含む),2005。(ExpressEdition含む)(linuxクライアントも可能)
(2-2)PostgreSQL9.2.x,9.1.x,9.0.x。(8.4.x,8.3.xも可)
(2-3)Oracle11G(Release2含む),10G。(ExpressEdition含む)
(2-4)IBM DB2 10.x(10.1),9.x(9.7,9.5)(Express-C含む)
(2-5)VER8のみ:MySQL 5.5.x
(2-6)VER8.3以降:Firebird 2.5.x
(2-7)VER8.3以降:HiRDB 8 (9は64BitOS用の為未確認、尚、色々のエラーが発生する頻度が高いので、本番運用する場合は動作確認を十分行って下さい)
4.その他
I言語の紹介

I言語が出来るまでの経緯
5.旧I言語のダウンロードページ(最新は先頭に移動しました)
★VER7.29より、I1,I2以外のコンピュータ名でもインストール出来るように、 インストールファイル作成機能を付けました。
★VER7.29より、ソースプログラムを添付しました。
【★注意★VER7以降は、OSやRDBMS等のバージョンアップ対応が主なので、新バージョンが出ても、特に問題が無い限り、新バージョンに切り替える必要は有りません】
【★注意★別のバージョンを再インストールすると問題が出るので絶対にしないで下さい】
【★注意★I2720180831.ZIPで朝一のバッチ処理が異常終了する問題があります。すみませんが、ZZZZ010137の「混在テーブル更新」に使用者「ZZZZZZZZ」で入りキー1の「ZZZZZZ_@」を0で選択し、キー2の「ZZZZZZ_PERMISSION_COUNT」のETCデータを3で「2」に変更し、キー2の「ZZZZZZ_PERMISSION_NO3」を1で削除してから、朝一の処理を実行してください。
(VER30以前:VER30.1-2019年8月31日、VER29.1-2019年4月3日、VER28.1-2018年11月6日)
VER30以前:I言語のダウンロード(http://ilanguage.iinaa.net/download.htm)

6.I言語の開発権、質問、問題報告のページ
自宅サーバーが壊れたので、開発権、質問、問題報告は直接原沢までメール下さい。
7. VER8提供について(2011年5月17日改定)
MySQLの開発実験に成功しましたので、VER8を提供しました。VER8提供に関しては下記の方針とします。
MySQLのユーザー名は16文字以下の制約が有ります。一方、VER7の仕様ではユーザー名は、システム名を除いても既に16文字を使用している為、VER7の仕様のままでは対応出来ません。よって、MySQL対応の為にVER8を提供する必要があります。
VER8は「VER7の命名規約の変更+MySQL」の意味とし、VER7はVER8へのバージョンアップは無用とします。
今後、問題の修正や新機能については、VER7とVER8のどちらも対応します。
VER7とVER8は命名規約が異なる為、プログラムの互換は有りませんので、注意して下さい。
VER8はVER7の名前の"REAL","TEST","MAST",WORK","DBO","INP","OUT","LNK"を基本的には先頭の1文字で表現します。
テーブル名や列名は、許可(英字4文字)の次に部分(英数字2文字)を設定する事とし、ツールとしても、この部分の機能を付加しています。
ツール関連の名前は先頭が"ZZZZ"(4文字)から"ZZZZZZ"(6文字)となります。(文字数が多くなった名前は、一部変更しています)
★注意:VER8とVER7は命名規約が異なる為互換がありません、VER7には絶対に再インストールしないで下さい。
(2011年7月01日変更)FirebirdとHiRDBを組み込みました。
(2011年7月29日変更)Symfowareの組み込みを中止。
([JYP6015E UPDATE文の設定句に副問合せが指定されました.]エラー発生で、対応方法が無い為中止)
◎I言語VER8のインストール手順

◎I言語VER8システム開発の入門編 2/9 VER8(データ辞書の作成) 3/9 VER8(テーブルの作成) 4/9 VER8(プログラムの作成) 5/9 VER8(問題点と改善点の対応) 6/9 VER8(ファイルからの登録) 7/9 VER8(ひらがな項目の追加) 8/9 VER8(承認機能の追加) 9/9 VER8(インターネットでの公開)}
◎I言語技術情報1(HELLO WORLDの表示)

◎I言語技術情報2(データベース関連)

◎I言語技術情報3(変数の変換)

◎I言語技術情報4(行制御命令)

◎I言語技術情報5(SQL=で使用する変数の説明VER7.23以降用)

◎I言語技術情報6(特別なシステム変数)

◎I言語技術情報7(配列の扱い方)

◎I言語技術情報8(プログラム更新画面の操作方法)

◎I言語技術情報9(入力アシスト機能の説明)
*****(2011年4月23日以前の内容、VER8提供中止ついて)*************************************************
(前回報告).NET Frameworkはリバースエンジニアリングをする事でソースプログラムが復元出来ます。よって、パスワードが解読される危険がありますので、パスワードの作成方法を変更し、ソースプログラム自体を難読化して、リバースエンジニアリングを実施しても解読出来ないように改めた物をVER8として提供します。
(検討結果)リバースエンジニアリングが可能であれば、ソースを解読出来なくても、パスワードを見つけ出す事は技術的に可能なので、物理的にリバースエンジニアリングが出来ないようにしないと解決しません。 リバースエンジニアリングが出来ないようにする事は、個人レベルでは開発出来ないので、VER8の提供は中止しました。
(今後の対応)
(1)提供するI言語はリバースエンジニアリングでパスワードが解析可能であることを前提で使ってください。
(2)I言語を使する場合は無償とします。I1,I2以外のサーバーへのインストールを可能とするため、 インストールファイル作成プログラムも提供しました。
(3)企業の基幹システムで使用したい場合はソースプログラムを提供しましたので、パスワードのロジックを変更し、再コンパイル後、リバースエンジニアリングが物理的に出来ない処置をしてから、使用して下さい。
(4)使用権は無しとし、開発権のみ条件を変更しました。
8. VER7について
.NET Frameworkは現在2.0(3.0,3.5含む)及び4.0に対応済みですが、サポート期間を考慮し、VER7に対しては順次新.NET Frameworkにも対応して行きます。
VER6に対し非互換が発生したのでVER7を提供しました、新規インストールの場合はこちらを使って下さい。
★注意:VER7はVER8にバージョンを上げる必要は有りません、今後も提供を続けます。
注意:サーバーはVER5やVER6とは共存出来ません。
(クライアントはPostgreSQLのNpgsqlのバージョンが異なる場合を除き共存可能です)
注意:VER5やVER6に再インストールすると非互換のため問題が出るので絶対にしないで下さい。
◎I言語VER7のインストール手順

◎I言語VER7システム開発の入門編 2/9 VER7(データ辞書の作成) 3/9 VER7(テーブルの作成) 4/9 VER7(プログラムの作成) 5/9 VER7(問題点と改善点の対応) 6/9 VER7(ファイルからの登録) 7/9 VER7(ひらがな項目の追加) 8/9 VER7(承認機能の追加) 9/9 VER7(インターネットでの公開)}
◎I言語技術情報1(HELLO WORLDの表示)

◎I言語技術情報2(データベース関連)

◎I言語技術情報3(変数の変換)

◎I言語技術情報4(行制御命令)

◎I言語技術情報5(SQL=で使用する変数の説明VER7.23以降用)

◎I言語技術情報6(特別なシステム変数)
9.VER6について
注意:.NET Framework2.0のサポート期間が2016年4月12日までのようですので、VER6もこの日までをサポート期間とします。それまでにVER7への移行をお願いします。
VER5に対し非互換が発生したのでVER6を提供しました。
注意:サーバーはVER5やVER7とは共存出来ません。(クライアントは共存可能です)
注意:VER5やVER7に再インストールすると非互換のため問題が出るので絶対にしないで下さい。
I言語VER6のインストール手順

I言語VER6システム開発の入門編(6/9以降はVER5で説明していますが、VER6でも同じように動きます) {2/9VER6(データ辞書の作成) 3/9VER6(テーブルの作成) 4/9VER6(プログラムの作成) 5/9VER6(問題点と改善点の対応) 6/9(ファイルからの登録) 7/9(ひらがな項目の追加) 8/9(承認機能の追加) 9/9(インターネットでの公開)}
10.VER5について
注意:.NET Framework2.0のサポート期間が2016年4月12日までのようですので、VER5もこの日までをサポート期間とします。それまでにVER7への移行をお願いします。
注意:サーバーはVER6やVER7とは共存出来ません。(クライアントは共存可能です)
注意:VER6やVER7に再インストールすると非互換のため問題が出るので絶対にしないで下さい。
I言語VER5インストール手順

I言語VER5システム開発の入門編 {2/9VER5(データ辞書の作成) 3/9VER5(テーブルの作成) 4/9VER5(プログラムの作成) 5/9VER5(問題点と改善点の対応) 6/9(ファイルからの登録) 7/9(ひらがな項目の追加) 8/9(承認機能の追加) 9/9(インターネットでの公開)}
11.提供者
メールアドレス:harasawa@mis.janis.or.jp(このメールアドレスへの特定電子メールの送信を拒否いたします)
氏名:原沢信道(ひらがな:はらさわ のぶみち)
住所:長野県飯田市
GITHUB: https://github.com/i-language/i-language
( 写真は我が家の庭から見た風景です)

All Rights Reserved, Copyright (C) 2009-2024 Nobumichi Harasawa.