+================================================================ === 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が1項目の時その値を自動的に入力する処理復活。 ◎************( 2009-10-15 VER6.6提供 )********* ★VER6.6-7(2009-10-14)誤動作防止のためインストール出来るRDBMSを過去2世代までに変更。 ◎************( 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の値が0と1で逆になっている問題に対応しました。 ◎************( 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{更新対象テーブル名}{更新列名[,...]}{更新データ[,...]}{2個目のテーブル名以下のコーディング}; 更新対象テーブルの別名は'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: データ値が範囲外です。?」となるエラー対応中。 原因:CREATE_INDEXで列数が10個以上の場合発生、VIEWのZZZZ_NOをCHAR(1)からINT(2桁)に変更します。 ▲VER6.2-10(2009-09-27)サンプル発注システムのZZZZ404021でQTYの設定が出来ない問題に対応。 4210以下のW_番号を+1追加(1行で2箇所),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を新設しました。(1を付ける意味が不明確の為) ▲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=[,[相手の列名1][,[相手の列名2][,[相手の列名3]]]] JOIN_KEY=[,[相手の列名1][,[相手の列名2][,[相手の列名3]]]] JOIN_WHERE=追加する比較条件 ************************************************ ジョイン名はINNER,LEFT,RIGTH,FULLとする。 結合相手がPROGRAM=で指定したテーブルの場合は省略可能。 インデックスの設定さている物に限りその番号を指定する。 インデックス番号省略時は0と見なす。 JOIN_KEY=,JOIN_WHEREは続けて書いた物が有効で、複数行可能とする。 相手の列名と同じ場合はJOIN_KEY=は省略可能。 変数 _JOIN_COUNT---PROGRAM=およびジョイン名の宣言された数。 _JOIN##---JOINのSQL文 例:(インデックス番号1の列名はそれぞれ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=に指定した別名で指定が無い時はデータ名からの設定にしました。