データ域命令
データ域命令には以下のものがあります。
これらの命令は、従来型の構文と自由形式構文の両方で使用可能です。
IN および OUT 命令では、演算項目 2 の指定によって、プログラム内の 1 つ
またはすべてのデータ域の検索および書き出しを行うことができます。
また、IN および OUT 命令では、ユーザーがデータ域のロックやアンロック
を制御することもできます。 データ域がロックされている場合には、他のプログラムまたはプロシージャー
によって読み取ることはできますが、更新することはできません。
次のロック状態が使用されます。
- *LOCK が指定された IN 命令の場合には、データ域が読み取り可占有ロック
状態になります。
- *LOCK が指定された OUT 命令の場合には、データ域は書き出し操作の後で
ロックされたままになります。
- ブランクが指定された OUT 命令の場合には、データ域は更新された後で
アンロックされます。
- データ域をアンロックしてレコードのロックを解除するために UNLOCK を
使用した場合には、データ域またはレコード (あるいはその両方) が更新され
ません。
データ域との実際のデータの転送中には、データ域にシステムの内部ロック
があります。 複数のユーザーが同じデータ域に対して競合している場合には、ユーザーは、
データ域が使用できないことを示すエラー・メッセージを受け取ります。
IN、OUT、および UNLOCK 命令を使用する場合には、次のことに留意してく
ださい。
- データ域命令は、オペレーティング・システムに定義されていないデータ
域には実行することができません。
- データ域に対して IN、OUT、および UNLOCK 命令を実行する前に、そのデ
ータ域の定義仕様書に DTAARA キーワードを指定するか、または *DTAARA DEFINE
ステートメントの結果のフィールドにそのデータ域を指定し
なければなりません (DEFINE ステートメントの詳細については、DEFINE (フィールド定義)を参照して
ください)。
- ロックされたデータ域を別の RPG プログラムで更新したりロックすること
はできませんが、このデータ域は演算項目 1 をブランクにして IN 命令で検索
することができます。
- データ域の名前を、複数オカレンス・データ構造、入力レコード・フィールド、
配列、配列要素、またはテーブルの名前にすることはできません。
- データ域を、複数オカレンス・データ構造、データ域データ構造、プログラム
状況データ構造、ファイル情報データ構造 (INFDS)、または *DTAARA DEFINE
ステートメントに現れるデータ構造のサブフィールドにすることはできませ
ん。
- データ域の名前が実行時に判別される場合、
DTAARA(*VAR) キーワードが使用中であるため、その名前を含む変数は IN 命令の実行前に設定する必要があります。
以前に実行した *LOCK IN 命令が原因でデータ域がロックされる場合、そのデータ域に対する他の命令 (IN、OUT、UNLOCK) は、以前にロックされた
データ域を使用し、データ域の名前を含む変数を調べません。
- ライブラリー名が DTAARA キーワードで指定されていない場合には、
データ域を探すためにライブラリー・リストが使用されます。
定義仕様書の 23 桁目に U を入れて定義したデータ構造
は、データ構造がデータ域であることを示します。
データ域データ構造が指定されている場合には、IN、OUT、および UNLOCK 命令
コードを使用してデータ域にさらに命令を指定するために DTAARA キーワード
を指定することができます。 データ域はプログラムの初期化時に自動的に読み取られてロックされ、プロ
グラムが LR オンで終了した時にそのデータ構造の内容がデータ域に書き出
されます。データ域データ構造のためのデータ域が見付からない場合、
初期値としてブランクを使用して、データ域が作成されます。
データ域を見付けるためにライブラリー・リストが検索された場合、
新規データ域は QTEMP 内に作成されます。
内部データ域 (*LDA) を定義するために、次のいずれかを行うことができ
ます。
- データ域の定義仕様書に DTAARA(*LDA) キーワードを指定する。
- データ域の定義仕様書に UDS を指定して、名前をブランクにする。
- *DTAARA DEFINE ステートメントの演算項目 2 に *LDA を指定する。
*PDA を定義するためには、データ域の定義仕様書に DTAARA(*PDA) キーワー
ドを指定するか、あるいは *DTAARA DEFINE ステートメントの演算項目 2
に *PDA を指定することができます。
[ ページのトップ | 前ページ | 次ページ | 目次 |
索引 ]