以下に、V5R3 の ILE RPG における機能強化について説明します。
新規組み込み関数 %SUBARR を使用すると、副配列への代入または値として副配列を返すことができます。
既存の %LOOKUP 組み込み関数とともに、この拡張では要素数が変化する動的サイズ変更配列の実装が可能になりました。
%SUBARR(array : start) は、array(start) から配列の末尾までの配列の要素を指定します。
%SUBARR(array : start : num) は、array(start) から array(start + num - 1) までの配列の要素を指定します。
例:
// 配列の一部を別の配列にコピー: resultArr = %subarr(array1:start:num); // 配列の一部を別の配列の一部にコピー: %subarr(Array1:x:y) = %subarr(Array2:m:n); // 配列の一部をソート sorta %subarr(Array3:x:y); // 配列の一部の合計 sum = %xfoot(%subarr(Array4:x:y));
演算項目 2 として %SUBARR が指定されると、%SUBARR 組み込み関数で示された部分配列のみがソートされます。
%DEC は、最初のパラメーターに日付、時刻またはタイム・スタンプを指定し、 オプションの 2 番目のパラメーターで結果の数値のフォーマットを指定できるように拡張されました。
例:
D numDdMmYy s 6p 0 D date s d datfmt(*jul) date = D'2003-08-21'; numDdMmYy = %dec(date : *dmy); // now numDdMmYy = 210803
制御仕様書 CCSID キーワードは最初のパラメーターとして *CHAR を許容するように拡張されました。 最初のパラメーターが *CHAR の場合、2 番目のパラメーターは *JOBRUN である必要があります。 CCSID(*CHAR : *JOBRUN) は、実行時に文字データが UCS-2 に変換される方法を制御します。 CCSID(*CHAR:*JOBRUN) が指定されると、文字デ ータはジョブ CCSID 内にあると見なされ、CCSID(*CHAR : *JOBRUN) が指定 されない場合は、文字データはジョブ CCSID に関連する混合バイト CCSID 内にあるものと見なされます。
%TRIM には、トリムする文字のリストを指定する、オプションの 2 番目のパラメーターを取るように拡張されました。
例:
trimchars = '*-.'; data = '***a-b-c-.' result = %trim(data : trimchars); // 結果 = 'a-b-c'。すべての * - および . はデータの末尾からトリムされました。
プロトタイプ・パラメーターに OPTIONS(*TRIM) が指定されると、渡さ れるデータの先頭および末尾のブランクはトリムされます。 OPTIONS(*TRIM) は文字、UCS-2 および CONST または VALUE で定義されたグラフィック・パラメーターに対して有効です。 また、OPTIONS(*STRING) で定義されたポインター・パラメーターに対しても有効です。 OPTIONS(*STRING : *TRIM) が指定されると、ポインターが呼び出しで渡される場合であっても、渡されるデータはトリムされます。
例:
D proc pr D parm1 5a const options(*trim) D parm2 5a const options(*trim : *rightadj) D parm3 5a const varying options(*trim) D parm4 * value options(*string : *trim) D parm5 * value options(*string : *trim) D ptr s * D data s 10a D fld1 s 5a /free data = ' rst ' + x'00'; ptr = %addr(data); proc (' xyz ' : ' @#$ ' : ' 123 ' : ' abc ' : ptr); // 呼び出されたプロシージャーは以下のパラメーターを受け取ります // parm1 = 'xyz ' // parm2 = ' @#$' // parm3 = '123' // parm4 = a pointer to 'abc.' (where . is x'00') // parm5 = a pointer to 'rst.' (where . is x'00')
パック・データおよびゾーン・データを 63 桁および小数点以下 63 桁まで定義できます。以前の上限は 31 桁でした。
例:
Foutfile o e k disk D outrecDs e ds extname(outfile) prefix(O_) /free O_FLD1 = 'ABCDE'; O_FLD2 = 7; write outrec outrecDs; *inlr = *on; /end-free
Flog if e k disk infds(infds) D infds ds D recname 261 270 D input ds qualified D rec1 likerec(rec1) overlay(input) D rec2 likerec(rec2) overlay(input) /free read log input; dow not %eof(log); dsply recname; if recname = 'REC1'; // ハンドル rec1 elseif recname = 'REC2'; // ハンドル rec2 endif; read log input; enddo; *inlr = *on; /end-free
この環境変数は RPG プログラムがジョブ内で Java メソッドを呼び出す 前に設定する必要があります。
この環境変数には、オプション文字列内に現れない文字で分離および終了された Java オプションが含まれます。 一般にセミコロンが適切です。
例:
1. 単一のオプションを指定: システムのデフォルトの JDK が 1.3 であり、RPG プログラムで JDK 1.4 を使用する場合は、 環境変数 QIBM_RPG_JAVA_PROPERTIES に次の値を設定します。
'-Djava.version=1.4;'なお、オプションが 1 つのみの場合でも、終了文字が必要であることに注意してください。 この例ではセミコロンを使用しています。
2. 複数のオプションを指定: os400.stdout オプションもデフォルト以外の値を設定する場合は、環境変数を次の値に設定します。
'-Djava.version=1.4!-Dos400.stdout=file:mystdout.txt!'
この例では分離文字/終了文字として感嘆符を使用しています。 注: この機能は PTF 適用済みの V5R1 および V5R2 でもサポートされています。 V5R1: SI10069、V5R2: SI10101。
この環境変数はいつでも設定、変更、または除去できます。
この環境変数に値 'Y' が含まれる場合、RPG からの Java メソ ッド呼び出し中に Java 例外が発生するか、呼び出された Java メソ ッドが例外を呼び出し元にスローすると、例外の Java トレースが出力されます。デフォルトでは、画面に出力され、読み取れない場合もあります。 ファイルに出力するには、Java オプション os400.stderr を設定します。 (これは新規ジョブに対して行う必要があり、 QIBM_RPG_JAVA_PROPERTIES 環境変数を次の値に設定することで行います。
'-Dos400.stderr=file:stderr.txt;'
RPG コンパイラーは、パラメーター PPGENOPT に *NONE 以外の値を指定して呼び出された場合、RPG プリプロセッサーとして動作します。 この場合、プログラムが生成されるのではなく、新しいソース・ファイルが生成されます。 新しいソース・ファイルには、/DEFINE や /IF などの条件コンパイル・ディレクティブによって受け入れられたオリジナルのソース行が含まれます。 また、/COPY ステートメントで組み込まれたファイルのソース行、およびオプションで /INCLUDE ステートメントで組み込まれたソース行も含まれます。 PPGENOPT(*DFT) または PPGENOPT(*NORMVCOMMENT) が指定された場合、 新しいソース・ファイルにはオリジナル・ソース・ファイルからのコメントも含まれます。
SQL プリコンパイラーが新規パラメーター RPGPPOPT に *NONE 以外の値を指定して呼び出されると、 プリコンパイラーは /COPY、条件コンパイル・ディレクティブ、そしておそらくは /INCLUDE ディレクティブを処理するために、 この RPG プリプロセッサーを使用します。 これにより、SQLRPGLE ソースでネストされた /COPY ステートメントおよび条件付きで使用されるステートメントを使用できます。言語単位 | 要素 | 説明 |
制御仕様書キーワード |
CCSID(*GRAPH:パラメーター| *UCS2:数値| *CHAR:*JOBRUN) |
実行時の文字データの扱いを制御するために、 最初のパラメーターとして *CHAR、2 番目のパラメーターとして *JOBRUN を 指定できるようになりました。 |
組み込み関数 | %DEC(式 {形式}) | タイプ Date、Time または Timestamp のパラメーターを使用できるようになりました。 |
%TRIM(式:式) | トリムする文字のセットを示す 2 番目のパラメ ーターを指定できるようになりました。 | |
定義仕様書キーワード | OPTIONS(*TRIM) | 渡されたパラメーターからブランクをトリム することを示します。 |
定義仕様書 | 長さおよび小数点以下の桁数の入力 | パック・フィールドおよびゾーン・フィールドでは 、長さおよび小数点以下の桁数として 63 桁まで指定できます。 |
入力仕様書 | 長さ入力 | パック・フィールドの長さとして 32 まで、ゾーン ・フィールドの長さとして 63 まで指定できます。 |
小数部の桁数入力 | パック・フィールドおよびゾーン・フィールドでは、小数点以下の桁数として 63 桁まで指定できます。 | |
演算仕様書 | 長さおよび小数点以下の桁数の入力 | パック・フィールドおよびゾーン・フィールドでは 、長さおよび小数点以下の桁数として 63 桁まで指定できます。 |
CHAIN、READ、READE、 READP、および READPE 命令 | 演算項目 2 が外部記述ファイルの名前である 場合に、結果フィールドにデータ構造を指定できます。 | |
CHAIN、READ、READC、 READE、READP、READPE、 WRITE、UPDATE 操作 | 演算項目 2 が外部記述レコード様式 の名前である場合に、結果フィールドに外部記述データ構造を指定できます。 | |
SORTA 操作 | 演算項目 2 が拡張され、%SUBARR を指定できる ようになりました。 |
言語単位 | 要素 | 説明 |
組み込み関数 | %SUBARR(配列:開始要素 {:要素の数}) | 配列のセクションを返すか、配列のセクションを変更できます。 |
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.