+================================================================
=== I言語 Ver6.2 バージョンアップ情報 (2009-10-14現在)===
================================================================
（★=非互換発生、■＝バグ対応、▲＝支援プログラム修正、●＝新機能追加）
===================================================================
◎************( 2009-10-21 VER6.7提供 )*********
★VER6.7-2(2009-10-21)ZZZZ9999952がエラーとなる問題に対応しました。
3200　=IF{WMIN!=}JUMP{J}; カレンダーの最終日有りはその日。
の最後に'*'を付けて
=IF{WMIN!=}JUMP{J}; カレンダーの最終日有りはその日。*
に変更しました。
★VER6.7-1(2009-10-18)LISTBOXが１項目の時その値を自動的に入力する処理復活。
◎************( 2009-10-15 VER6.6提供 )*********
★VER6.6-7(2009-10-14)誤動作防止のためインストール出来るRDBMSを過去２世代までに変更。
◎************( 2009-10-14 VER6.6提供 )*********
▲VER6.6-6(2009-10-10)OracleでZZZZ010539のリンクサーバで@付き変数設定に問題が有り修正しました。
9400　=LINK+'.?W_LDB?.I_?SYSTEM?_?WRT?_DBO_~~.'};
を
9400　=LINK+'.?W_LDB?.I_?SYSTEM?_?WRT?_DBO_?W_PERM?.'};
に変更しました。
■VER6.6-5(2009-10-12)DB2でLNK関連LOGINーIDでログインできない問題に対応しました。（INSTALLファイルとZZZZ010540を修正）
▲VER6.6-4(2009-10-10)OracleでZZZZ010540で設定した許可のZZZZ_SYS_...COLUMN_VIEWに問題がありZZZZ_NULLの値が０と１で逆になっている問題に対応しました。
◎************( 2009-10-09 VER6.6提供 )*********
■VER6.6-3(2009-10-09)PostgreSQLでZZZZ_SYS_...COLUMN_VIEWの設定に問題が有り、デフォルト値がNULLになる場合がある問題に対応しました。
PostgreSQLの場合VIEWの作りなおしが必要で、再インストール及び新規許可設定済みの場合はZZZZ010540で再度設定しなおす必要があります。
★VER6.6-2(2009-10-09)JOB_PERMISSION=?_PERMISSION?を最初のプログラムで指定した場合パスワードチェック前に設定されるため常に'ZZZZ'となります。
   ★ミス防止のため_PERMISSION(_PERSON,_PERSON_NAME含む)は設定前に使った場合はエラーとします。
   ●関連で_SQL_PERMISSIONのシステム変数を新設しSQL=の許可を変更出来るようにします。（ただし、_JOB_PERMISSIONと同じ条件付き）
●VER6.6-1(2009-10-07)&[テーブル別名].Z_...の変数を新設Z_で始まるツール用列名が存在すると'1'が無いと'0'が設定されます。
▲VER6.5-3(2009-10-06)ZZZZ0102228の「テスト テーブルの複写」のWORK用テーブルコピー機能をVER6.5の非互換部分に合わせて修正を実施。
関連でZZZZ010241とZZZZ010242を修正。（ZZZZ010221の「テスト 全      プログラム 更新」で使用）
◎************( 2009-10-05 VER6.5提供 )*********
★VER6.5-2(2--0-10-03)POSTGRESQL,ORACLE,DB2でWORK用テーブルが作成したログインID以外では消せない問題や見れない問題が発生しました。
非互換ですが、同名のテーブルを作らないように_Wで始まるシステム変数で最後が許可の場合は更にINPは'I',OUTは'O'を付加する事とします。
その他の非互換となる変数は_WORK_TABLE及び_WORKとなります。
一方、ZZZZ_SYS_..._..._VIEWのZZZZ_USERが今まで空白でしたが、SQL SERVER以外はINP,OUT(WORK用)又はDBO(MAST用)を設定する事としました。
許可で作るVIEWも変更が必要です、新規に許可を作成してある場合は,再インストール後ZZZZ010504で再度VIEWを作りなおす必要が有ります。
◎************( 2009-09-30 VER6.4提供 )*********
▲VER6.4-2(2009-09-29)ORACLEでZZZZ999958がZZZZ_PUBLICの桁不足でエラーとなる問題に対応しました。
（修正）1820 =WHEN ZZZZ_GRANT='PUBLIC' THEN 'PUBLIC'
（作成）1821 =ELSE ' ' END AS ZZZZ_PUBLIC FROM
としました。
●VER6.4-1(2009-09-29)UPDATE命令新設。
複数テーブルを使った、複数項目のUPDATEはRDBMS毎にUPDATE文が異なるので
同じ記入方法で全てのRDBMSに対応出来るようにする。
文法
UPDATE{更新対象テーブル名}{更新列名[,...]}{更新データ[,...]}｛２個目のテーブル名以下のコーディング};
更新対象テーブルの別名は'O'とする。
◎************( 2009-09-27 VER6.3提供 )*********
●VER6.3-1(2009-09-27)SQLでの繰り返し関数をシステム変数_REPEATで提供します。
M=REPLICATE,O=LPAD、I,P=REPEATとなります。
■★VER6.3-1(2009-09-27)ORACLEでZZZZ_SYS_WORK_ZZZY_INDEX_VIEWが「ORA-25137: データ値が範囲外です。?」となるエラー対応中。
原因：ＣＲＥＡＴＥ＿ＩＮＤＥＸで列数が１０個以上の場合発生、ＶＩＥＷのＺＺＺＺ＿ＮＯをＣＨＡＲ（１）からＩＮＴ（２桁）に変更します。
▲VER6.2-10(2009-09-27)サンプル発注システムのZZZZ404021でQTYの設定が出来ない問題に対応。
4210以下のW_番号を+１追加(1行で２箇所),4900のPREPEAT=8をREPEAT=9に変更。
◎************( 2009-09-26 VER6.2提供 )*********
■VER6.2-9(2009-09-26)&.DATA&の型1が！の時%.SET&の型1が/となる問題に対処しました。
▲VER6.2-8(2009-09-26)ZZZZ010225がDB2でLISTBOX1等を指定するとエラーになる問題に対応しました。
23400　=+'?_C??_SUBSTR?(~~_NAME,5,30)'
を
23400　=+'?_C??_SUBSTR?(~~_NAME,5,26)'
に変更しました。
▲VER6.2-7(2009-09-22)サンプル発注システムをテーブル構造も含め大幅改造しました。
（★注意：旧バージョンではテーブル構造が異なるためエラーが出ます、再インストールは注意下さい）
●VER6.2-6(2009-09-18)INNER2,LEFT2,RIGTH2,FULL2を新設しました、条件判定でZ_CANCEL IS NULLを付加しません。
●VER6.2-5(2009-09-18)CREATE_TABLE1と全く同じ動きをするCREATE_TABLEを新設しました。（１を付ける意味が不明確の為）
▲VER6.2-5(2009-09-18)本番テーブル複写でリンクサーバーからの場合PUBLICは見えますがLINKが見えない問題を対応しました。
　ZZZZ010228を修正しました。
  4700 ={WHERE X2.~~_GRANT IN('LNK_ZZ','PUBLIC')
　のLINK_ZZをLINK_ZZZZに変更し
  4700 ={WHERE X2.~~_GRANT IN('LNK_ZZZZ','PUBLIC')
　としました。
▲VER6.2-4(2009-09-18)本番テーブル更新で公開を変更した時でテストテーブルが存在しない場合エラーとなる問題を対応しました。
　ZZZZ010226を修正しました。
　8220　%~~_TEST-=DBO_GRANT{?W_TEST?}{TABLE}{?X1.~~_PUBLIC?};
　の最後にNOP{}を付け
　8220　%~~_TEST-=DBO_GRANT{?W_TEST?}{TABLE}{?X1.~~_PUBLIC?}NOP{};
　としました。
▲VER6.2-3(2009-09-18)リンクサーバーのログイン情報が不足していました。
　ZZZZ010539を修正しました。
　7700　=IF{W_PERM!='ZZZZ'}JUMP{JUMP};
　をコメント化で
　7700　*IF{W_PERM!='ZZZZ'}JUMP{JUMP};
　としました。
■VER6.2-2(2009-09-17)時間起動テストで終了をNET SENDで送っていましたがVistaでなくなったのでMSGに変更しました。
●VER6.2-1(2009-09-17)SET{_TRIM=...};で前後の空白を取った文字列を転送します。
◎************( 2009-09-15 VER6.1提供 )*********
●VER6.1-1(2009-09-14)高度なJOIN機能をI言語に組み込む為、文法を再設計しました。
★VER5とは非互換がありますので注意下さい。
定義命令でINNER　JOIN、LEFT OUTER JOIN、RIGTH OUTER JOIN、FULL OUTER JOINを指定可能とする。
文法：
定義命令
************************************************
ジョイン名=&別名,テーブル名，[&結合相手の別名][，インデックス番号]
JOIN_KEY=[,[相手の列名１][,[相手の列名２][,[相手の列名３]]]]
JOIN_KEY=[,[相手の列名１][,[相手の列名２][,[相手の列名３]]]]
JOIN_WHERE=追加する比較条件
************************************************
ジョイン名はINNER,LEFT,RIGTH,FULLとする。
結合相手がPROGRAM=で指定したテーブルの場合は省略可能。
インデックスの設定さている物に限りその番号を指定する。
インデックス番号省略時は０と見なす。
JOIN_KEY=,JOIN_WHEREは続けて書いた物が有効で、複数行可能とする。
相手の列名と同じ場合はJOIN_KEY=は省略可能。
変数
_JOIN_COUNT---PROGRAM=およびジョイン名の宣言された数。
_JOIN##---JOINのSQL文
例：（インデックス番号１の列名はそれぞれZZZY_？_KEY1、ZZZY_？_KEY2とする）
　　PROGRAM=&X1,?_M?_A_TABLE
　　INNER=&X2,?_M?_B_TABLE,,1
　　JOIN_KEY=ZZZY_A_KEY1
　　JOIN_KEY=,ZZZY_B_KEY1
    LEFT=&X3,?_M?_C_TABLE,&X2,1
　　JOIN_KEY=ZZZY_A_KEY1
　　JOIN_KEY=,ZZZY_B_KEY1
　　結果
　　_JOIN_COUNT=3
    _JOIN1=FROM ?_M?_A_TABLE X1 
    _JOIN2=INNER JOIN ?_M?_B_TABLE X2 
           ON  X2.ZZZY_B_KEY1=X1.ZZZY_A_KEY1
           AND X2.ZZZY_B_KEY2=X1.ZZZY_A_KEY2
           AND X2.Z_CANCEL IS NULL
    _JOIN3=LEFT OUTER JOIN ?_M?_B_TABLE X3 
           ON  X3.ZZZY_C_KEY1=X2.ZZZY_B_KEY1
           AND X3.ZZZY_C_KEY2=X2.ZZZY_B_KEY2
           AND X3.Z_CANCEL IS NULL
★非互換は以下に説明：
SET=およびDATA=でのデータ名と別名、列名の関係を以下のように規定する物とする。
SET=およびDATA=でデータ辞書の別名とデータ辞書のデータ名を受取るるように改定し、この情報を元にプログラムを組み立てるように変更。
DATA=はデーター名は"別名.列名"とするが別名が無い場合はPROGRAM＝の別名が省略されている事とする。
SET=はデーター名は"S+別名.列名"とするが別名が無い場合はPROGRAM＝の別名が省略されている事とする、
　　　また先頭にSが無い場合も可能とする、したがって、別名は先頭にSを指定する事は出来無い。
SET=、DATA=の属性の次をデータ辞書用別名とし、特殊文字を先頭に付加して条件を変える。
コメント用項目のデータ名は無条件でSET=の場合は"S+別名.データ辞書の名前"
、DATA=の場合は"別名.データ辞書の名前"と判断する。
&---データ辞書で指定しているテーブルを使用する事を宣言する。（無い場合はデータ辞書のテーブル関連は使用出来ない）
データ辞書のテーブル指定はCHECKがLISTBOX1、LISTBOX21、LISTBOX22、SECTION1、SECTION2の場合CHECK61に指定。
＊－－－コメントデータ項目が無いものとして、&のチェック機能以外は全て実行しない。
＃－－－＊とほぼ同じで有るが＿WHERE用の＠WHEREの転送は実行する。
＠－－－＆に対して＿LEFT##のみ空白とする。
_WHERE_ANDはSQL開始時と_WHERE1使用時に'WHERE'に戻り_WHERE##に文字列が設定された場合か＿WHERE_ANDが使用された場合’AND'となる。
_WHERE##は設定方法を変更し＠WHEREに設定されている文字列をそのまま設定する。
_XはDATA=に指定した別名で指定が無い時はデータ名からの設定にしました。
