このドキュメントでは、次のトピックについて説明します。
フォーマット/長さ: | 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
は現在アクティブな処理ループに入った回数を示します。
WHERE
節に指定された条件でレコードが除外された場合、*COUNTER
は増加しませんが、 ACCEPT
/REJECT
ステートメントでレコードが除外されたときは、*COUNTER
の数は増加します。
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
*CPU-TIME
には現在 Natural の処理で使用した CPU 時間(10 ms 単位)が含まれます。
メインフレームコンピュータ上の次のオペレーティングシステムまたは TP モニタシステムに対しては、このシステム変数には常に値ゼロが入ります。
z/VSE
CICS
IMS/TM
UTM
Com-plete(6.3 よりも下位のバージョン)
フォーマット/長さ: | A32 |
内容変更の可否: | 不可 |
このシステム変数には、現在実行されているユニットの名前が格納されます。 次の場合があります。
オブジェクトタイプが "サブルーチン" の場合はサブルーチン名。「*SUBROUTINE
」も参照してください。
上記以外のすべてのオブジェクトタイプ(プログラム、サブプログラム、マップ、ダイアログなど)の場合はオブジェクト名。「*PROGRAM
」も参照してください。
*CURRENT-UNIT
の内容は常に大文字です。
フォーマット/長さ: | N3 |
内容変更の可否: | 不可 |
このシステム変数には、次の INPUT
ステートメントで入力データとして使用できる Natural スタック内のデータ要素数が格納されます。 スタックが空である場合、*DATA
には 0
が格納されます。 -1
の値は、スタック内の次の要素がコマンドか Natural トランザクション名であることを示します。
STACK
ステートメント実行時の IA
(INPUT 割り当て文字)および ID
(INPUT 区切り文字)Natural プロファイル/セッションパラメータ指定は *DATA
値を決定するために使用されます。
フォーマット/長さ: | N4 |
内容変更の可否: | 不可 |
このシステム変数には、エラーが発生したステートメントのソースコード行番号が格納されます。
フォーマット/長さ: | N7 |
内容変更の可否: | 可 |
ON ERROR
条件が発生したエラーのエラー番号です。
0~9999 の範囲内のエラー番号だけがサポートされます。
通常、*ERROR-NR
はエラー条件に入ったときの Natural システムエラー番号を持っていますが、REINPUT WITH TEXT *nnnn
ステートメントが実行された場合、*ERROR-NR
にはアプリケーション指定のメッセージ番号 nnnn が挿入されます。
Natural プログラム内でこのシステム変数の内容を変更できますが、ON ERROR
ステートメントブロック内ではできません。
他のレベル 1 のプログラムが実行されたとき、*ERROR-NR
は 0
にリセットされます。
フォーマット/長さ: | A8 |
内容変更の可否: | 可 |
このシステム変数には、エラー条件が発生したときに制御を受け取るプログラムの名前が格納されます。
エラーが発生すると、Natural は STACK TOP DATA
ステートメントを実行して、次の情報をスタックの先頭に挿入します。この情報はエラートランザクションで INPUT
データとして使用できます。
エラー番号(SG=OFF
のとき N4、SG=ON
のとき N5)
行番号(N4)
ステータス(A1)
プログラム名(A8)
レベル(N2)
ステータスには次のものがあります。
C | コマンド処理エラー。 |
---|---|
L | ログオンエラーです。 ステータスが L の場合、行番号は 0 です。
|
O | オブジェクト時間エラーです。 |
S | 修正不可能な構文エラーです。 |
R | リモートサーバーでのエラーです(Natural RPC 関連)。 |
Natural プロファイルパラメータ SYNERR
が ON
に設定されており、構文エラーが発生した場合、*LEVEL
はゼロになり、さらに次の情報がスタックされます。
ソース行内の障害のある項目の位置(N3)。
障害のある項目の長さ(N3)。
フォーマット/長さ: | A8 |
内容変更の可否: | 不可 |
このシステム変数には、現在の Adabas トランザクションデータの識別子が格納されます。 デフォルト値は次のいずれかになります。
Natural プロファイルパラメータ ETID
の値
TP モニタから渡されたユーザー ID
Natural 初期化中にユーザー出口で与えられた値
アクティブなユーザーのセキュリティプロファイルの値(Natural Security 環境にのみ適用)
フォーマット/長さ: | P10 |
内容変更の可否: | 可 |
このシステム変数には、FIND
や READ
ステートメントで開始した処理ループ内で現在処理中のレコードの Adabas 内部シーケンス番号(ISN)が格納されます。
*ISN
の後の (r)
は FIND
や READ
を発行したステートメントのラベルまたはステートメント番号を示します。 (r)
を指定しない場合、*ISN
は現在アクティブな処理ループ内で現在処理中のレコードの ISN を示します。
HISTOGRAM
ステートメントの場合、*ISN
は最後に読み込まれたディスクリプタ値のオカレンス番号を持ちます(ディスクリプタがピリオディックグループ内に存在しない場合 *ISN
=0)。
VSAM | VSAM データベースの場合、*ISN は ESDS および RRDS にだけ有効です。 ESDS の場合、*ISN は FIND や READ ステートメントで開始した処理ループ内で現在処理中のレコードの相対バイトアドレス(RBA)、RRDS の場合には相対レコード番号(RRN)を持ちます。
|
---|---|
SQL データベース | *ISN を使用できません。
|
DL/I | *ISN を使用できません。
|
フォーマット/長さ: | 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 20 #I := *LBOUND(#XA,2) /* lower bound of 2nd dimension is 20 #J(1:2):= *LBOUND(#XA,*) /* lower bound of all dimensions /* (1st and 2nd) /* #J(1) is 10 and #J(2) is 20
「*UBOUND
」および「*OCCURRENCE」
も参照してください。
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
このシステム変数は、ダイナミック変数として定義されたフィールドの現在使用されている長さをコード単位で返します。A および B フォーマットの場合は、1 つのコード単位のサイズは 1 バイトです。U フォーマットの場合は、1 つのコード単位のサイズは
2 バイト(UTF-16)です。 *LENGTH(field)
はダイナミック変数にのみ有効です。
『プログラミングガイド』の「ダイナミック変数の現在の値スペース」も参照してください。
フォーマット/長さ: | N2 |
内容変更の可否: | 不可 |
このシステム変数には、現在アクティブなプログラム、サブプログラム、外部サブルーチン、マップ、ヘルプルーチン、ダイアログのレベル番号が格納されます。 レベル 1 はメインプログラムです。
*LEVEL
はインラインサブルーチンには適用されません。
フォーマット/長さ: | A8 |
内容変更の可否: | 不可 |
このシステム変数には、現在使用中の Natural ライブラリ ID(LOGON
コマンドでユーザーが指定します)が格納されます。
変数 *APPLIC-ID
と同義です。
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
Natural オブジェクト内で現在実行されている行番号が含まれます。
Natural プログラミングオブジェクトが Natural Optimizer Compiler でコンパイルされている場合、システム変数が使用されるソース行が Natural Optimizer Compiler によって最適化された一連のステートメントの一部であると、*LINE
の値に正しい行番号が反映されない場合があります。
フォーマット/長さ: | P10 |
内容変更の可否: | 可 |
このシステム変数には、FIND
ステートメントの結果(WITH
節の結果)として選択されたレコード件数、あるいは HISTOGRAM
ステートメントの結果として選択された値の個数が格納されます。
*NUMBER
の後の (r)
は FIND
または HISTOGRAM
ステートメントのステートメントラベルまたはソースコード行番号を示します。 (r)
の指定がない場合、*NUMBER
は現在アクティブな処理ループを開始した FIND
や HISTOGRAM
で選択されたレコード件数を表します。
注意:
アクセスされた Adabas ファイルが Adabas 機能の Security By Value によって保護されていると、複数のレコードが見つかった場合、*NUMBER
の値は 9999999999
になります。 1 件のレコードが見つかった場合、*NUMBER
には 1 が含まれます。 レコードが見つからなかった場合、*NUMBER
には 0 が含まれます。
VSAM | VSAM データベースでは、*NUMBER は、HISTOGRAM ステートメントで使用したとき、または検索条件の演算子に EQUAL TO を使用した FIND ステートメントで見つかったレコード件数です。 他の演算子を使用した場合、*NUMBER の値は見つかったレコード件数ではありません。*NUMBER は、レコードが見つからなかった場合は 0 であり、見つかった場合は 0 以外の値となり、実際に見つかったレコード件数ではありません。
|
---|---|
SQL データベース |
|
DL/I | DL/I データベースの場合、*NUMBER は見つかったセグメントオカレンスの数ではありません。 検索条件を満たすセグメントオカレンスがない場合は 0 です。少なくとも 1 つのセグメントオカレンスが検索条件を満たす場合、値は 8,388,607=X'7FFFFF' です。
|
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
このシステム変数には、指定した次元(複数可)の配列の現在のオカレンス数が格納されます。
構文:
*OCCURRENCE (operand1 [,dim])
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | ステートメント参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | A | A | U | N | P | I | F | B | D | T | L | C | G | O | 可 | 不可 |
operand1 は、オカレンス数が返される配列です。 配列のインデックス表記はオプションです。 各次元でインデックス表記として使用できるのは、全範囲を示す表記 * のみです。
dim は、現在のオカレンス数が返される次元番号です。
dim = |
1 |
説明:
1 |
1 次元配列。 dim が指定されない場合のデフォルトです。 |
2 |
2 次元配列。 |
3 |
3 次元配列。 |
* |
対応する配列に定義されている全次元が適用されます。 |
パラメータデータエリアで、添字指定 1:V
を使用して可変配列数の配列を定義することができます(Natural ステートメントドキュメントの DEFINE DATA
ステートメントを参照)。 このような配列の現在のオカレンス数はランタイムに決定されます。 *OCCURRENCE
を使用すると、現在の配列のオカレンス数を確認することができます。
例:
DEFINE DATA PARAMETER 1 #ARRAY (A5/1:V) LOCAL 1 #I (I4) ... END-DEFINE ... FOR #I = 1 TO *OCCURRENCE(#ARRAY) ... END-FOR ...
プログラム例 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 := *OCCURRENCE(#XA) /* number of occurrences of 1st dimension is 10 #I := *OCCURRENCE(#XA,1) /* number of occurrences of 1st dimension is 10 #I := *OCCURRENCE(#XA,2) /* number of occurrences of 2nd dimension is 20 #J(1:2) := *OCCURRENCE(#XA,*) /* number of occurrences of all dimensions /* (1st and 2nd) /* #J(1) is 10 and #J(2) is 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 オブジェクトの名前が格納されます。
フォーマット/長さ: | I4 |
内容変更の可否: | 不可 |
このシステム変数には、Natural SQL ステートメントの"検索済" DELETE
、"検索済" UPDATE
、または INSERT
(select-expression 付き)で、それぞれ削除、更新、または挿入された行の件数が含まれます。 *ROWCOUNT
は、これらのステートメントのうち、最後に実行されたものを常に参照します。
フォーマット/長さ: | A8 |
内容変更の可否: | 可 |
このシステム変数にプログラム名が指定されている場合、Natural でコマンド入力プロンプト(NEXT
プロンプトまたはダイレクトコマンド行/ウィンドウ)が表示される代わりに、そのプログラムが実行されます。
*STARTUP
には、Natural Security で各ライブラリのセキュリティプロファイルに開始トランザクションとして入力されたプログラム名が含まれます(バッチモード以外)。『Natural Security』ドキュメントを参照してください。
開始トランザクションが指定されていない場合、あるいは Natural Security が使用されていない場合、*STARTUP
の値はプロファイルパラメータ MENU
の設定によって異なります。
MENU=OFF
が設定されている場合、*STARTUP
は空白になります。
MENU=ON
が設定されている場合、*STARTUP
には MAINMENU
が含まれます。つまり、Natural メインメニューが表示されます。
Natural プログラムで *STARTUP
にプログラム名を割り当てることにより、常にその前の内容を上書きできます。
注意:
バッチモードで使用する開始プログラムは FETCH
や STACK COMMAND
ステートメントを含んでいる必要があります。そうでないと NAT9969 エラーが発生することがあります。
非セキュリティ環境または現在のライブラリにコマンドモードが禁止されていないセキュリティ環境で Natural 端末コマンド %%
または同等のコマンドでコマンド入力モードを呼び出すと、開始メカニズムは中止します。 この後、再び有効にするには、ライブラリにログオンしなおすか、*STARTUP
にプログラム名を割り当てるプログラムを実行します。
重要:*STARTUP
に含まれているプログラムを無効にするには、RESET *STARTUP
を使用して、このシステム変数がプログラムレベルでリセットされるようにする必要があります。
コマンドモードが禁止された Natural Security 環境のライブラリでは、%%
を入力すると *STARTUP
内の名前のプログラムが呼び出されます。
開始トランザクション(*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
で指定された名前が含まれます。
Natural Security がアクティブな場合は、ライブラリのセキュリティプロファイルで値を定義できます。
注意:
*STEPLIB
ライブラリのデータベース ID とファイル番号は、その名前から派生します。 ライブラリ SYSTEM
を除いて、SYSxxx
の名前が含まれるライブラリは FNAT
にあり、他のライブラリは FUSER
にあるとみなされます。
フォーマット/長さ: | A32 |
内容変更の可否: | 不可 |
このシステム変数には、現在実行中の外部サブルーチンの名前が格納されます。 *SUBROUTINE
の内容は常に大文字です。
フォーマット/長さ: | HANDLE OF OBJECT |
内容変更の可否: | 不可 |
このシステム変数には、現在アクティブなオブジェクトに対するハンドルが格納されます。 現在アクティブなオブジェクトは、*THIS-OBJECT
を使用して、そのオブジェクト自体のメソッドを実行するか、または別のオブジェクトに対するこのオブジェクト自体への参照を渡します。
メソッドが実行されているとき、*THIS-OBJECT
には実際の値のみが含まれています。 メソッドが実行されていないときには、NULL-HANDLE
が含まれています。
フォーマット/長さ: | A32 |
内容変更の可否: | 不可 |
このシステム変数には、現在実行されている Natural オブジェクトのタイプが格納されます。
*TYPE
の有効な値は次のとおりです。
値 | オブジェクトタイプ |
---|---|
PROGRAM |
プログラム |
SUBPROGRAM |
サブプログラム |
SUBROUTINE |
サブルーチン |
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」
も参照してください。