このドキュメントでは、次のトピックについて説明します。
フォーマット/長さ: | A8 |
内容変更の可否: | 不可 |
このシステム変数には、ユーザーが現在ログオンしているライブラリの ID が格納されます。
フォーマット/長さ: | A32 |
内容変更の可否: | 不可 |
Natural Security がインストールされている場合、ユーザーがログオンしているライブラリの名前が入ります。ユーザーが特別リンク経由でログオンしている場合は、代わりにリンク名が入ります。Natural Security がインストールされていない場合、このシステム変数には名前
SYSTEM
が含まれています。
ユーザーが特別リンク経由でログオンしているかどうかに関係なく *APPLIC-NAME
に常にライブラリ名が入るように、標準オプション Set *APPLIC-NAME always to library name
を設定できます。『Natural Security』ドキュメントの「Set *APPLIC-NAME always to library name」を参照してください。
フォーマット/長さ: | A128 |
内容変更の可否: | 可 |
このシステム変数には、画面ウィンドウの外側のデータを処理するために使用できるコミュニケーションエリアを指定します。
通常、ウィンドウがアクティブな場合、ウィンドウの外側の画面にデータを入力することはできません。ただし、変更可能なフィールドとして *COM
がマップに含まれている場合は、ウィンドウが画面上に表示されていても、このフィールドにデータを入力することができます。*COM
の内容に応じて、追加の処理を実行できます。これにより入力フィールドを持つウィンドウがアクティブな場合でも、常にユーザーがコマンド行にデータを入力できるユーザーインターフェイスを実装できます。
注意:*COM
は、変更可能なフィールドとして INPUT
ステートメントで使用できますが、入力フィールドとしてではなく、システム変数として扱われます。つまり、*COM
フィールドの入力に対しては、大文字変換などの入力処理はまったく行われず、入力されたままの状態で受け入れられます。一度 INPUT
ステートメントで *COM
が画面に表示されると、後続の INPUT
や REINPUT
ステートメントでは *COM
の現在の内容が毎回表示されます。
以下の項目も参照してください。
『プログラミングガイド』の「ダイアログ設計」
フォーマット/長さ: | I4 |
内容変更の可否: | 可 |
このシステム変数には、現在の会話型リモートプロシージャコール(RPC)の会話 ID が格納されます。この ID は OPEN CONVERSATION
ステートメントによって設定されます。
OPEN CONVERSATION
ステートメントで、クライアントは 1 つのサーバープロセス内の多数のサービス(サブプログラム)を実行する排他使用のためのサーバーを取得することができます。この排他使用を会話といいます。OPEN
CONVERSATION
ステートメントを使用して会話を開き、この会話で起動するサブプログラムを指定します。OPEN
CONVERSATION
ステートメントを実行するとき、会話を識別するユニーク ID をシステム変数 *CONVID
に割り当てます。
同時に複数の会話を開くことができます。開いている 1 つの会話から別の開いている会話に切り換えるには、ユーザーが、対応する会話 ID を *CONVID
に割り当てます。
Natural RPC の詳細については、『Natural RPC(リモートプロシージャコール)』ドキュメントを参照してください。
フォーマット/長さ: | P10 |
内容変更の可否: | 可 |
このシステム変数には、FIND
、READ
、HISTOGRAM
、または PARSE
ステートメントで開始した処理ループに入った回数が格納されます。
*COUNTER
の後の (r)
表記は FIND
、READ
、HISTOGRAM
または PARSE
ステートメントラベルまたはソースコード行番号を示します。(r)
が指定されていない場合は、*COUNTER
は現在アクティブな処理ループに入った回数を示します。
*COUNTER
は、WHERE
節に指定された条件でレコードが除外された場合は増加しません。*COUNTER
は、ACCEPT
/REJECT
ステートメントでレコードが除外された場合は増加します。
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
*CPU-TIME
には現在 Natural の処理で使用した CPU 時間(10 ms 単位)が含まれます。
フォーマット/長さ: | A32 |
内容変更の可否: | 不可 |
このシステム変数には、現在実行されているユニットの名前が格納されます。次の場合があります。
オブジェクトタイプが"ファンクション"の場合はファンクション名。
インラインサブルーチンが実行された場合はインラインサブルーチン名。
オブジェクトタイプが"サブルーチン"の場合は外部サブルーチン名。「*SUBROUTINE
」も参照してください。
上記以外のすべてのオブジェクトタイプ(プログラム、サブプログラム、マップ、ダイアログなど)の場合はオブジェクト名。「*PROGRAM
」も参照してください。
*CURRENT-UNIT
の内容は常に大文字です。
フォーマット/長さ: | N3 |
内容変更の可否: | 不可 |
このシステム変数には、次の INPUT
ステートメントで入力データとして使用できる Natural スタック内のデータ要素数が格納されます。スタックが空である場合、*DATA
には 0
が格納されます。-1
の値は、スタック内の次の要素がコマンドか Natural トランザクション名であることを示します。
STACK
ステートメント実行時の IA
(入力割り当て文字)および ID
(入力デリミタ文字)Natural プロファイル/セッションパラメータ指定は *DATA
値を決定するために使用されます。
フォーマット/長さ: | N4 |
内容変更の可否: | 不可 |
このシステム変数には、エラーが発生したステートメントのソースコード行番号が格納されます。
レベル 1 のプログラムが実行されたとき、*ERROR-LINE
は 0
にリセットされます。
または、*ERROR
を指定できます。
フォーマット/長さ: | N7 |
内容変更の可否: | 可 |
ON ERROR
条件が発生したエラーのエラー番号です。
0~9999 の範囲内のエラー番号だけがサポートされます。
通常、*ERROR-NR
はエラー条件に入ったときの Natural システムエラー番号を持っていますが、REINPUT WITH TEXT
*nnnn
ステートメントが実行された場合、*ERROR-NR
にはアプリケーション指定のメッセージ番号 nnnn が挿入されます。
Natural プログラム内でこのシステム変数の内容を変更できますが、ON
ERROR
ステートメントブロック内ではできません。
レベル 1 のプログラムが実行されたとき、*ERROR-NR
は 0
にリセットされます。
フォーマット/長さ: | A8 |
内容変更の可否: | 可 |
このシステム変数には、エラー条件が発生したときに制御を受け取るエラートランザクションプログラムの名前が格納されます。
詳細については、『プログラミングガイド』の「エラートランザクションプログラムの使用」を参照してください。
フォーマット/長さ: | A8 |
内容変更の可否: | 不可 |
このシステム変数には、現在の Adabas トランザクションデータの識別子が格納されます。デフォルト値は次のいずれかになります。
Natural プロファイルパラメータ ETID
の値
アクティブなユーザーのセキュリティプロファイルの値(Natural Security 環境にのみ適用)
フォーマット/長さ: | P10 |
内容変更の可否: | 可 |
このシステム変数には、FIND
や READ
ステートメントで開始した処理ループ内で現在処理中のレコードの Adabas 内部シーケンス番号(ISN)が格納されます。
*ISN
の後の (r)
表記は FIND
や READ
を発行したステートメントのラベルまたはステートメント番号を示します。(r)
を指定しない場合、*ISN
は現在アクティブな処理ループ内で現在処理中のレコードの ISN を示します。
HISTOGRAM
ステートメントの場合、*ISN
は最後に読み込まれたディスクリプタ値のオカレンス番号を持ちます(ディスクリプタがピリオディックグループ内に存在しない場合、*ISN
= 0)。
SQL データベース | *ISN は使用できません。
|
---|---|
Tamino | *ISN には XML オブジェクト ID が含まれます。
|
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
*LBOUND
には、指定した次元(1、2、3)または全次元(* 表記)の配列の現在の下限(添字の値)が含まれます。
構文:
*LBOUND (operand1 [,dim])
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | A | A | U | N | P | I | F | B | D | T | L | C | G | O | ○ | × |
operand1 は、下限が指定される配列です。配列のインデックス表記はオプションです。各次元でインデックス表記として使用できるのは、全範囲を示す表記 * のみです。
dim は、現在の下限が返される次元番号です。
dim = |
1 |
次元が指定されない場合、第 1 次元の下限が返されます。
1、2、または 3 が指定された場合、第 1 次元、第 2 次元、または第 3 次元の下限が返されます。
* が指定されると、定義されたすべての次元(下記参照)の下限が返されます。
1 次元配列の場合は 1
2 次元配列の場合は 2
3 次元配列の場合は 3
X-array が割り当てられておらず、この X-array の指定された次元の下限が変更可能なインデックス範囲である場合(インデックス定義内にアスタリスク(*)文字で表されている場合)、指定された次元の下限は未定義で、*LBOUND
にアクセスするとランタイムエラーが発生します。ランタイムエラーを避けるために、次のように *OCCURRENCE
を使用して検出件数がゼロかどうかを確認できます。
DEFINE DATA LOCAL 1 #XA(A5/1:*) END-DEFINE IF *OCCURRENCE (#XA) NE 0 AND *LBOUND(#XA) > 10 THEN ...
例:
DEFINE DATA LOCAL 1 #I (I4) 1 #J (I4/1:3) 1 #XA (A5/10:*,20:*) END-DEFINE #I := *LBOUND(#XA) /* lower bound of 1st dimension is 10 #I := *LBOUND(#XA,1) /* lower bound of 1st dimension is 10 #I := *LBOUND(#XA,2) /* lower bound of 2nd dimension is 20 #J(1:2):= *LBOUND(#XA,*) /* lower bound of all dimensions /* #J(1) is 10 and #J(2) is 20 END
「*UBOUND
」および「*OCCURRENCE
」も参照してください。
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
このシステム変数は、ダイナミック変数として定義されたフィールドの現在使用されている長さをコード単位で返します。A および B フォーマットの場合は、1 つのコード単位のサイズは 1 バイトです。U フォーマットの場合は、1 つのコード単位のサイズは
2 バイト(UTF-16)です。*LENGTH(field)
はダイナミック変数にのみ有効です。
『プログラミングガイド』の「ダイナミック変数の現在の値スペース」も参照してください。
フォーマット/長さ: | N2 |
内容変更の可否: | 不可 |
このシステム変数には、現在アクティブなプログラム、サブプログラム、外部サブルーチン、マップ、ヘルプルーチン、ダイアログのレベル番号が格納されます。レベル 1 はメインプログラムです。ランタイム時により高いレベル(最大 = 512
)が発生した場合、*LEVEL
の内容は 99
になります。
*LEVEL
はインラインサブルーチンには適用されません。
『プログラミングガイド』の「エラートランザクションプログラムの使用」も参照してください。
フォーマット/長さ: | A8 |
内容変更の可否: | 不可 |
このシステム変数には、現在使用中の Natural ライブラリ ID(ログオン時にLOGON
コマンドでユーザーが指定します)が格納されます。
変数 *APPLIC-ID
と同義です。
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
Natural オブジェクト内で現在実行されている行番号が含まれます。
フォーマット/長さ: | A100 |
内容変更の可否: | 不可 |
現在実行されているステートメントの行番号と、使用されている INCLUDE
レベルの行番号すべてを返します。
(コピーコード内ではなく)プログラムのメインソースで使用されると、参照されている行の番号のみが返されます。この場合、データは *LINE
によって返されるものと同じですが、フォーマットは(A100)です。
*LINEX
が(ネストされた)INCLUDE
構造で使用されている場合、最初の INCLUDE
から最後の INCLUDE
までのすべての行番号とステートメントの行番号が、スラッシュで区切られてこのフィールドに返されます。
例:
.... 3200 3210 INCLUDE COPY01 0010 ... 0020 ... .... 0200 INCLUDE COPY02 0010 ... 0020 ... .... 0050 PRINT *LINEX
PRINT
ステートメントによって生成される出力 3210/0200/0050
は、*LINEX
が最初に参照された位置を正確に特定するために必要な完全な行番号パスを表します。
フォーマット/長さ: | A8 |
内容変更の可否: | 不可 |
このシステム変数には、現在実行されているオブジェクトがロードされたライブラリ ID が含まれています。
フォーマット/長さ: | P10 |
内容変更の可否: | 可 |
このシステム変数には次のいずれかが含まれています。
*NUMBER
の後の (r)
表記は、関連するステートメントのステートメントラベルまたはソースコード行番号を示します。(r)
が指定されていない場合、*NUMBER
は最も内側のアクティブな FIND
または HISTOGRAM
処理ループをデフォルトで自動的に参照します。
注意:*NUMBER
が FIND
ステートメントともに使用され、アクセスされた Adabas ファイルが Adabas 機能の Security By Value によって保護されていると、複数のレコードが見つかった場合、*NUMBER
の値は 9999999999
になります。1 件のレコードが見つかった場合、*NUMBER
には 1 が含まれます。レコードが見つからなかった場合、*NUMBER
には 0 が含まれます。
SQL データベース | SQL データベースの場合、WHERE 節のない FIND NUMBER または HISTOGRAM ステートメントで使用すると、*NUMBER には見つかった行数のみが格納されます。それ以外の場合は、*NUMBER の値には見つかった行数は含まれません。*NUMBER は、行が見つからなかった場合は 0 、見つかった場合は 0 以外の値となり、実際に見つかった行数ではありません。
|
---|---|
Tamino | WHERE 節のない FIND NUMBER ステートメントで使用すると、*NUMBER には見つかった行の数が格納されます。それ以外の場合、XML データベースに適用されると、*NUMBER の値には見つかった行数は含まれません。*NUMBER 行が見つからなかった場合は 0 になります。0 以外の値は、行が見つかったことを示します。ただし、その値は実際に見つかった行の数とは関係ありません。
|
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
このシステム変数は、現在の配列のオカレンス数を提供します。これは、あらゆる種類の配列フィールドに適用でき、オカレンス数は固定または可変です。
内容:
オカレンス数が一定のスタティック配列
例:(1:5)
可変オカレンス数を持つ X-array
例:(1:*)
以下のように定義されるパラメータ配列:(1:V)
構文:
*OCCURRENCE (operand1 [,dim])
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | A | A | U | N | P | I | F | B | D | T | L | C | G | O | ○ | × |
operand1 は、オカレンス数が返される配列です。配列のインデックス表記はオプションです。各次元で使用できるのは、*OCC(#X(*))
または *OCC(#Y(*,*))
などの全範囲を示す表記 * のみです(提供されている場合)。
dim は、現在のオカレンス数が返される次元番号です。
dim = |
1 |
説明
1 |
1 次元配列。dim が指定されない場合のデフォルトです。 |
2 |
2 次元配列。 |
3 |
3 次元配列。 |
* |
対応する配列に定義されている全次元が適用されます。 |
パラメータデータエリアで、添字指定 (1:V)
を使用して可変配列数の配列を定義することができます(DEFINE DATA
ステートメントを参照)。このような配列の現在のオカレンス数はランタイムに決定されます。*OCCURRENCE
を使用すると、現在の配列のオカレンス数を確認することができます。
例:
DEFINE DATA PARAMETER 1 #PARR (I2/1:V) LOCAL 1 #FARR (I2/1:5) 1 #XARR1 (I2/1:*) 1 #XARR2 (I2/1:*,1:*) 1 #I (I2) 1 #J (I2) END-DEFINE FOR #I = 1 TO *OCC(#PARR) /* Parameter array WRITE 2X #I END-FOR FOR #I = 1 TO *OCC(#FARR) /* Fixed array WRITE 4X #I END-FOR EXPAND ARRAY #XARR1 TO (1:4) FOR #I = 1 TO *OCC(#XARR1) /* X-Array WRITE 6X #I END-FOR EXPAND ARRAY #XARR2 TO (1:3,1:4) FOR #I = 1 TO *OCC(#XARR2,1) /* X-Array FOR #J = 1 TO *OCC(#XARR2,2) WRITE 8X #I #J END-FOR END-FOR END
プログラム例 OCC1P
および OCC2P
も参照してください。
X-array に関して、*OCCURRENCE
は現在のオカレンス数を持ちます。
DEFINE DATA LOCAL 1 #I (I4) 1 #J (I4/1:3) 1 #XA (A5/1:*,1:*) END-DEFINE EXPAND ARRAY #XA TO (1:10,1:20) #I := *OCC(#XA) /* #I=10 #I := *OCC(#XA,1) /* #I=10 #I := *OCC(#XA,2) /* #I=20 #J(1:2) := *OCC(#XA,*) /* #J(1)=10 #J(2)=20 END
フォーマット/長さ: | U(ダイナミック) |
内容変更の可否: | 不可 |
このシステム変数には、Natural for Ajax から提供される現在のイベント名が格納されます。
これは、PROCESS
PAGE
ステートメントを使用したリッチ GUI プログラミングで使用されます。詳細については、『Natural for Ajax』ドキュメントを参照してください。
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
このシステム変数には、アクティブな PROCESS PAGE
MODAL
ステートメントブロックのレベルが格納されます。
アクティブな PROCESS PAGE
MODAL
がない場合、*PAGE-LEVEL
の値は 0
です。
注意:*PAGE-LEVEL
の値が 0
より大きい場合、INPUT
、PRINT
、WRITE
、または DISPLAY
ステートメントでレポート 0 へ出力しないようにできます。
フォーマット/長さ: | A8 |
内容変更の可否: | 不可 |
このシステム変数には、現在実行中の Natural オブジェクトの名前が格納されます。
フォーマット/長さ: | A16 |
内容変更の可否: | 不可 |
このシステム変数は、アプリケーションが REINPUT
または PROCESS PAGE
UPDATE
ステートメントを実行できる状態にあるかどうかを示します。
アプリケーションは、INPUT
および PROCESS PAGE
USING
ステートメント(Natural for Ajax を実行している場合)を使用して、入力/出力処理を実行できます。特定の条件下では、アプリケーションがこれらの I/O ステートメントを REINPUT
または PROCESS PAGE UPDATE
ステートメントとともに返し、再実行することがあります。
このシステム変数によって返される値は、この位置でこのような再実行ステートメントが可能かどうかを示します。次のいずれかの値を返します。
値 | 説明 |
---|---|
(空白) | アプリケーションは、REINPUT ステートメントと PROCESS PAGE UPDATE ステートメントのいずれも実行できません。
|
REINPUT |
アプリケーションは REINPUT を実行できますが、PROCESS PAGE UPDATE ステートメントは実行できません。
|
UPDATE |
アプリケーションは PROCESS PAGE
UPDATE を実行できますが、REINPUT ステートメントは実行できません。
|
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
このシステム変数には、Natural SQL ステートメントの"検索済"DELETE
、"検索済"UPDATE
、または INSERT
(select-expression 付き)で、それぞれ削除、更新、または挿入された行の件数が含まれます。*ROWCOUNT
は、これらのステートメントのうち、最後に実行されたものを常に参照します。
フォーマット/長さ: | A8 |
内容変更の可否: | 可 |
このシステム変数にプログラム名が指定されている場合、Natural でコマンド入力プロンプト(NEXT
プロンプトまたはダイレクトコマンド行/ウィンドウ)が表示される代わりに、そのプログラムが実行されます。
*STARTUP
には、Natural Security で各ライブラリのセキュリティプロファイルに開始トランザクションとして入力されたプログラム名が含まれます(バッチモード以外)。『Natural Security』ドキュメントを参照してください。
開始トランザクションが指定されていない場合、あるいは Natural Security が使用されていない場合、*STARTUP
にはプロファイルパラメータ STARTUP
の値が含まれます(メインフレーム環境を除く)。
Natural プログラムで *STARTUP
にプログラム名を割り当てることにより、常にその前の内容を上書きできます。
*STARTUP
に含まれるプログラムを非アクティブ化するには、次の手順を実行します。
例えば、RESET *STARTUP
ステートメントを使用して、*STARTUP
システム変数を空白の値に設定します。
*STARTUP
に含まれている起動プログラムを終了します。*STARTUP
が使用されるコンテキストに応じて、それぞれプログラムループまたは Natural エラー NAT9969 を発生させることなく起動プログラムを適切に終了する方法がいくつかあります。
起動プログラムを定義する場合は、システム変数 *DEVICE
、*SERVER-TYPE
および *SCREEN-IO
に対して返される値がプログラムの結果に影響を与える可能性があることを考慮してください。例えば、意図しない結果を回避するために、次の手順を実行します。
バッチモードでは、起動プログラムに FETCH
または STACK COMMAND
ステートメントを含めます。これを行わなかった場合、プログラムループまたは Natural エラー NAT9969 が発生する可能性があります。
Natural 開発サーバー環境を NaturalONE からマッピングし、アクティブな *STARTUP
を持つライブラリを選択した場合は、*STARTUP
を非アクティブ化することで、起動プログラムが I/O を実行せず、正しく終了することを確認してください。アプリケーションプログラミングインターフェイス USR4218N を使用して、NaturalONE が現在のシステム環境かどうかを確認できます。
非セキュリティ環境または現在のライブラリにコマンドモードが禁止されていないセキュリティ環境で Natural 端末コマンド %%
または同等のコマンドでコマンド入力モードを呼び出すと、起動メカニズムは中止します。この後、再び有効にするには、ライブラリにログオンしなおすか、*STARTUP
にプログラム名を再度割り当てるプログラムを実行します。
コマンドモードが禁止された Natural Security 環境のライブラリでは、%%
を入力すると *STARTUP
内の名前のプログラムが呼び出されます。
プログラムが存在するライブラリのセキュリティプロファイルで NEXT/MORE 行が許可されていない場合、スタートアッププログラムには FETCH
または STACK COMMAND
ステートメントが含まれている必要があります。『Natural Security』ドキュメントの「Library Maintenance」セクションの「セキュリティオプション」で説明されている対応するオプション設定も参照してください。
開始トランザクション(*STARTUP
)による Natural ランタイムエラーが発生した場合、Natural のエラー処理によって開始トランザクションが再度実行される場合があります。このことにより、エラーループ状況が発生します。このようなループを回避するには、標準オプション Logoff
in error case if *STARTUP is active
を使用できます。『Natural Security』ドキュメントの「Logoff in Error Case if *STARTUP is Active」を参照してください。
フォーマット/長さ: | A8 |
内容変更の可否: | 不可 |
このシステム変数には、現在ユーザーがログオンしている Natural ライブラリに連結された STEPLIB ライブラリの名前が格納されます。
Natural Security がアクティブでない場合は、*STEPLIB
には使用されるパラメータファイル内のプロファイルパラメータ STEPLIB
で指定された *STEPLIB
名が含まれます。
Natural Security がアクティブな場合は、ライブラリのセキュリティプロファイルで値を定義できます。
注意:*STEPLIB
ライブラリのデータベース ID とファイル番号は、その名前から派生します。ライブラリ SYSTEM
を除いて、SYSxxx
の名前のライブラリは FNAT
にあり、他のライブラリは FUSER
にあるとみなされます。
フォーマット/長さ: | A32 |
内容変更の可否: | 不可 |
このシステム変数には、現在実行中の外部サブルーチンの名前が格納されます。*SUBROUTINE
の内容は常に大文字です。
フォーマット/長さ: | HANDLE OF OBJECT |
内容変更の可否: | 不可 |
このシステム変数には、現在アクティブなオブジェクトに対するハンドルが格納されます。現在アクティブなオブジェクトは、*THIS-OBJECT
を使用して、そのオブジェクト自体のメソッドを実行するか、または別のオブジェクトに対するこのオブジェクト自体への参照を渡します。
*THIS-OBJECT
には、メソッドが実行されている場合は実際の値のみが含まれています。それ以外の場合は、NULL-HANDLE
が含まれます。
フォーマット/長さ: | A32 |
内容変更の可否: | 不可 |
このシステム変数には、現在実行されている Natural オブジェクトのタイプが格納されます。
*TYPE
の有効な値:
値 | オブジェクトタイプ |
---|---|
PROGRAM |
プログラム |
FUNCTION |
関数 |
SUBPROGRAM |
Subprogram |
SUBROUTINE |
サブルーチン |
HELPROUTINE |
Helproutine |
MAP |
マップ |
ADAPTER |
アダプタ |
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
*UBOUND
には、指定した次元(1、2、3)または全次元(*表記)の配列の現在の上限(添字値)が含まれます。
構文:
*UBOUND (operand1 [,dim])
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | A | A | U | N | P | I | F | B | D | T | L | C | G | O | ○ | × |
operand1 は、上限が指定される配列です。配列のインデックス表記はオプションです。各次元でインデックス表記として使用できるのは、全範囲を示す表記 * のみです。
dim は、現在の上限が返される次元番号です。
dim = |
1 |
次元が指定されない場合、第 1 次元の上限が返されます。
1、2、または 3 が指定された場合、第 1 次元、第 2 次元、または第 3 次元の上限が返されます。
* が指定されると、定義されたすべての次元(下記参照)の上限が返されます。
1 次元配列の場合は 1
2 次元配列の場合は 2
3 次元配列の場合は 3
X-array が割り当てられておらず、この X-array の指定された次元の上限が変更可能なインデックス範囲である場合(インデックス定義内にアスタリスク(*)文字で表されている場合)、指定された次元の上限は未定義で、*UBOUND
にアクセスするとランタイムエラーが発生します。ランタイムエラーを避けるために、次のように *OCCURRENCE
を使用して検出件数がゼロかどうかを確認できます。
DEFINE DATA LOCAL 1 #XA(A5/1:*) END-DEFINE IF *OCCURRENCE (#XA) NE 0 AND *UBOUND(#XA) > 10 THEN ...
例:
DEFINE DATA LOCAL 1 #I (I4) 1 #J (I4/1:3) 1 #XA (A5/*:10,*:20) END-DEFINE #i := *UBOUND(#XA) /* upper bound of 1st dimension is 10 #i := *UBOUND(#XA,1) /* upper bound of 1st dimension is 10 #i := *UBOUND(#XA,2) /* upper bound of 2nd dimension is 20 #j(1:2):= *UBOUND(#XA,*) /* upper bound of all dimensions /* (1st and 2nd) /* #J(1) is 10 and #J(2) is 20
「*LBOUND
」および「*OCCURRENCE
」も参照してください。