バージョン 4.2.5
 —  システム変数  —

アプリケーション関連システム変数

このドキュメントでは、次のトピックについて説明します。


*APPLIC-ID

フォーマット/長さ: A8
内容変更の可否: 不可

このシステム変数には、ユーザーが現在ログオンしているライブラリの ID が格納されます。

Top of page

*APPLIC-NAME

フォーマット/長さ: A32
内容変更の可否: 不可

Natural Security 環境の場合

Natural Security がインストールされている場合、ユーザーがログオンしているライブラリの名前が入ります。 ユーザーが特別リンク経由でログオンしている場合は、代わりにリンク名が入ります。 Natural Security がインストールされていないとき、このシステム変数の内容は SYSTEM です。

ユーザーが特別リンク経由でログオンしているかどうかに関係なく *APPLIC-NAME に常にライブラリ名が入るように、標準オプション Set *APPLIC-NAME always to library name を設定できます。 『Natural Security』ドキュメントの「Set *APPLIC-NAME always to library name」を参照してください。

Top of page

*COM

フォーマット/長さ: A128
内容変更の可否:

このシステム変数には、画面ウィンドウの外側のデータを処理するために使用できるコミュニケーションエリアを指定します。

通常、ウィンドウがアクティブな場合、ウィンドウの外側の画面にデータを入力することはできません。 ただし、変更可能なフィールドとして *COM がマップに含まれている場合は、ウィンドウが画面上に表示されていても、このフィールドにデータを入力することができます。 *COM の内容に応じて、追加の処理を実行できます。 これにより入力フィールドを持つウィンドウがアクティブな場合でも、常にユーザーがコマンド行にデータを入力できるユーザーインターフェイスを実装できます。

注意:
*COM は、変更可能なフィールドとして INPUT ステートメントで使用できますが、入力フィールドとしてではなく、システム変数として扱われます。つまり、*COM フィールドの入力に対しては、大文字変換などの入力処理はまったく行われず、入力されたままの状態で受け入れられます。 一度 INPUT ステートメントで *COM が画面に表示されると、後続の INPUTREINPUT ステートメントでは *COM の現在の内容が毎回表示されます。

以下の項目も参照してください。

Top of page

*CONVID

フォーマット/長さ: I4
内容変更の可否:

このシステム変数には、現在の会話型リモートプロシージャコール(RPC)の会話 ID が格納されます。 この ID は OPEN CONVERSATION ステートメントによって設定されます。

OPEN CONVERSATION ステートメントで、クライアントは 1 つのサーバープロセス内の多数のサービス(サブプログラム)を実行する排他使用のためのサーバーを取得することができます。 この排他使用を会話といいます。 OPEN CONVERSATION ステートメントを使用して会話を開き、この会話で起動するサブプログラムを指定します。 OPEN CONVERSATION ステートメントを実行するとき、会話を識別するユニーク ID をシステム変数 *CONVID に割り当てます。

同時に複数の会話を開くことができます。 開いている 1 つの会話から別の開いている会話に切り換えるには、ユーザーが、対応する会話 ID を *CONVID に割り当てます。

Natural RPC の詳細については、『Natural リモートプロシージャコール(RPC)』ドキュメントを参照してください。

Top of page

*COUNTER (r)

フォーマット/長さ: P10
内容変更の可否:

このシステム変数には、FINDREADHISTOGRAM、または PARSE ステートメントで開始した処理ループに入った回数が格納されます。

*COUNTER の後の (r)FINDREADHISTOGRAM、または PARSE ステートメントのステートメントラベルまたはソースコード行番号を示します。 (r) が指定されていない場合は、*COUNTER は現在アクティブな処理ループに入った回数を示します。

WHERE 節に指定された条件でレコードが除外された場合、*COUNTER は増加しませんが、 ACCEPT/REJECT ステートメントでレコードが除外されたときは、*COUNTER の数は増加します。

Top of page

*CPU-TIME

フォーマット/長さ: I4
内容変更の可否: 不可

*CPU-TIME には現在 Natural の処理で使用した CPU 時間(10 ms 単位)が含まれます。

メインフレームコンピュータ上の次のオペレーティングシステムまたは TP モニタシステムに対しては、このシステム変数には常に値ゼロが入ります。

Top of page

*CURRENT-UNIT

フォーマット/長さ: A32
内容変更の可否: 不可

このシステム変数には、現在実行されているユニットの名前が格納されます。 次の場合があります。

*CURRENT-UNIT の内容は常に大文字です。

Top of page

*DATA

フォーマット/長さ: N3
内容変更の可否: 不可

このシステム変数には、次の INPUT ステートメントで入力データとして使用できる Natural スタック内のデータ要素数が格納されます。 スタックが空である場合、*DATA には 0 が格納されます。 -1 の値は、スタック内の次の要素がコマンドか Natural トランザクション名であることを示します。

STACK ステートメント実行時の IA(INPUT 割り当て文字)および ID(INPUT 区切り文字)Natural プロファイル/セッションパラメータ指定は *DATA 値を決定するために使用されます。

Top of page

*ERROR-LINE

フォーマット/長さ: N4
内容変更の可否: 不可

このシステム変数には、エラーが発生したステートメントのソースコード行番号が格納されます。

Top of page

*ERROR-NR

フォーマット/長さ: N7
内容変更の可否:

ON ERROR 条件が発生したエラーのエラー番号です。

0~9999 の範囲内のエラー番号だけがサポートされます。

通常、*ERROR-NR はエラー条件に入ったときの Natural システムエラー番号を持っていますが、REINPUT WITH TEXT *nnnn ステートメントが実行された場合、*ERROR-NR にはアプリケーション指定のメッセージ番号 nnnn が挿入されます。

Natural プログラム内でこのシステム変数の内容を変更できますが、ON ERROR ステートメントブロック内ではできません。

他のレベル 1 のプログラムが実行されたとき、*ERROR-NR0 にリセットされます。

Top of page

*ERROR-TA

フォーマット/長さ: A8
内容変更の可否:

このシステム変数には、エラー条件が発生したときに制御を受け取るプログラムの名前が格納されます。

エラーが発生すると、Natural は STACK TOP DATA ステートメントを実行して、次の情報をスタックの先頭に挿入します。この情報はエラートランザクションで INPUT データとして使用できます。

ステータスには次のものがあります。

C コマンド処理エラー。
L ログオンエラーです。 ステータスが L の場合、行番号は 0 です。
O オブジェクト時間エラーです。
S 修正不可能な構文エラーです。
R リモートサーバーでのエラーです(Natural RPC 関連)。

Natural プロファイルパラメータ SYNERRON に設定されており、構文エラーが発生した場合、*LEVEL はゼロになり、さらに次の情報がスタックされます。

Top of page

*ETID

フォーマット/長さ: A8
内容変更の可否: 不可

このシステム変数には、現在の Adabas トランザクションデータの識別子が格納されます。 デフォルト値は次のいずれかになります。

Top of page

*ISN (r)

フォーマット/長さ: P10
内容変更の可否:

このシステム変数には、FINDREAD ステートメントで開始した処理ループ内で現在処理中のレコードの Adabas 内部シーケンス番号(ISN)が格納されます。

*ISN の後の (r) FINDREAD を発行したステートメントのラベルまたはステートメント番号を示します。 (r) を指定しない場合、*ISN は現在アクティブな処理ループ内で現在処理中のレコードの ISN を示します。

HISTOGRAM ステートメントの場合、*ISN は最後に読み込まれたディスクリプタ値のオカレンス番号を持ちます(ディスクリプタがピリオディックグループ内に存在しない場合 *ISN=0)。

データベース固有の情報:

VSAM VSAM データベースの場合、*ISN は ESDS および RRDS にだけ有効です。 ESDS の場合、*ISNFINDREAD ステートメントで開始した処理ループ内で現在処理中のレコードの相対バイトアドレス(RBA)、RRDS の場合には相対レコード番号(RRN)を持ちます。
SQL データベース *ISN を使用できません。
DL/I *ISN を使用できません。

Top of page

*LBOUND

フォーマット/長さ: 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
2
3
*

次元が指定されない場合、第 1 次元の下限が返されます。

1、2、または 3 が指定された場合、第 1 次元、第 2 次元、または第 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」も参照してください。

Top of page

*LENGTH (field)

フォーマット/長さ: I4
内容変更の可否: 不可

このシステム変数は、ダイナミック変数として定義されたフィールドの現在使用されている長さをコード単位で返します。A および B フォーマットの場合は、1 つのコード単位のサイズは 1 バイトです。U フォーマットの場合は、1 つのコード単位のサイズは 2 バイト(UTF-16)です。 *LENGTH(field) はダイナミック変数にのみ有効です。

プログラミングガイド』の「ダイナミック変数の現在の値スペース」も参照してください。

Top of page

*LEVEL

フォーマット/長さ: N2
内容変更の可否: 不可

このシステム変数には、現在アクティブなプログラム、サブプログラム、外部サブルーチン、マップ、ヘルプルーチン、ダイアログのレベル番号が格納されます。 レベル 1 はメインプログラムです。

*LEVEL はインラインサブルーチンには適用されません。

Top of page

*LIBRARY-ID

フォーマット/長さ: A8
内容変更の可否: 不可

このシステム変数には、現在使用中の Natural ライブラリ ID(LOGON コマンドでユーザーが指定します)が格納されます。

変数 *APPLIC-ID と同義です。

Top of page

*LINE

フォーマット/長さ: I4
内容変更の可否: 不可

Natural オブジェクト内で現在実行されている行番号が含まれます。

Natural プログラミングオブジェクトが Natural Optimizer Compiler でコンパイルされている場合、システム変数が使用されるソース行が Natural Optimizer Compiler によって最適化された一連のステートメントの一部であると、*LINE の値に正しい行番号が反映されない場合があります。

Top of page

*NUMBER (r)

フォーマット/長さ: P10
内容変更の可否:

このシステム変数には、FIND ステートメントの結果(WITH 節の結果)として選択されたレコード件数、あるいは HISTOGRAM ステートメントの結果として選択された値の個数が格納されます。

*NUMBER の後の (r) FIND または HISTOGRAM ステートメントのステートメントラベルまたはソースコード行番号を示します。 (r) の指定がない場合、*NUMBER は現在アクティブな処理ループを開始した FINDHISTOGRAM で選択されたレコード件数を表します。

注意:
アクセスされた Adabas ファイルが Adabas 機能の Security By Value によって保護されていると、複数のレコードが見つかった場合、*NUMBER の値は 9999999999 になります。 1 件のレコードが見つかった場合、*NUMBER には 1 が含まれます。 レコードが見つからなかった場合、*NUMBER には 0 が含まれます。

データベース固有の情報:

VSAM VSAM データベースでは、*NUMBER は、HISTOGRAM ステートメントで使用したとき、または検索条件の演算子に EQUAL TO を使用した FIND ステートメントで見つかったレコード件数です。 他の演算子を使用した場合、*NUMBER の値は見つかったレコード件数ではありません。*NUMBER は、レコードが見つからなかった場合は 0 であり、見つかった場合は 0 以外の値となり、実際に見つかったレコード件数ではありません。
SQL データベース

WHERE 節のない FIND NUMBERHISTOGRAM ステートメントで使用すると、*NUMBER には見つかった行の数が格納されます。 その他の場合に SQL データベーステーブルに適用しても、*NUMBER には見つかった行の数は格納されません。行が見つからなかった場合、*NUMBER0 です。0 以外の値は、行が見つかったことを示しますが、その値は実際に見つかった行の数とは関係ありません。

WHERE 節を指定して FIND NUMBER を使用した場合は、検出された行数は *COUNTER で返されます。

DL/I DL/I データベースの場合、*NUMBER は見つかったセグメントオカレンスの数ではありません。 検索条件を満たすセグメントオカレンスがない場合は 0 です。少なくとも 1 つのセグメントオカレンスが検索条件を満たす場合、値は 8,388,607=X'7FFFFF' です。

Top of page

*OCCURRENCE

フォーマット/長さ: I4
内容変更の可否: 不可

このシステム変数には、指定した次元(複数可)の配列の現在のオカレンス数が格納されます。

構文:

*OCCURRENCE (operand1 [,dim])

オペランド定義テーブル:

オペランド 構文要素 フォーマット ステートメント参照 ダイナミック定義
operand1     A     A U N P I F B D T L C G O 不可

operand1 は、オカレンス数が返される配列です。 配列のインデックス表記はオプションです。 各次元でインデックス表記として使用できるのは、全範囲を示す表記 * のみです。

dim は、現在のオカレンス数が返される次元番号です。

dim =

1
2
3
*

説明:

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

Top of page

*PAGE-EVENT

フォーマット/長さ: U(ダイナミック)
内容変更の可否: 不可

このシステム変数には、Natural for Ajax から提供される現在のイベント名が格納されます。

これは、PROCESS PAGE ステートメントを使用したリッチ GUI プログラミングで使用されます。 詳細については、『Natural for Ajax』ドキュメントを参照してください。

Top of page

*PAGE-LEVEL

フォーマット/長さ: I4
内容変更の可否: 不可

このシステム変数には、アクティブな PROCESS PAGE MODAL ステートメントブロックのレベルが格納されます。

アクティブな PROCESS PAGE MODAL がない場合、*PAGE-LEVEL の値は 0 です。

注意:
*PAGE-LEVEL の値が 0 より大きい場合、INPUTPRINTWRITE、または DISPLAY ステートメントでレポート 0 へ出力しないようにできます。

Top of page

*PROGRAM

フォーマット/長さ: A8
内容変更の可否: 不可

このシステム変数には、現在実行中の Natural オブジェクトの名前が格納されます。

Top of page

*ROWCOUNT

フォーマット/長さ: I4
内容変更の可否: 不可

このシステム変数には、Natural SQL ステートメントの"検索済" DELETE"検索済" UPDATE、または INSERTselect-expression 付き)で、それぞれ削除、更新、または挿入された行の件数が含まれます。 *ROWCOUNT は、これらのステートメントのうち、最後に実行されたものを常に参照します。

Top of page

*STARTUP

フォーマット/長さ: A8
内容変更の可否:

このシステム変数にプログラム名が指定されている場合、Natural でコマンド入力プロンプト(NEXT プロンプトまたはダイレクトコマンド行/ウィンドウ)が表示される代わりに、そのプログラムが実行されます。

*STARTUP には、Natural Security で各ライブラリのセキュリティプロファイルに開始トランザクションとして入力されたプログラム名が含まれます(バッチモード以外)。『Natural Security』ドキュメントを参照してください。

開始トランザクションが指定されていない場合、あるいは Natural Security が使用されていない場合、*STARTUP の値はプロファイルパラメータ MENU の設定によって異なります。

Natural プログラムで *STARTUP にプログラム名を割り当てることにより、常にその前の内容を上書きできます。

注意:
バッチモードで使用する開始プログラムは FETCHSTACK COMMAND ステートメントを含んでいる必要があります。そうでないと NAT9969 エラーが発生することがあります。

非セキュリティ環境または現在のライブラリにコマンドモードが禁止されていないセキュリティ環境で Natural 端末コマンド %% または同等のコマンドでコマンド入力モードを呼び出すと、開始メカニズムは中止します。 この後、再び有効にするには、ライブラリにログオンしなおすか、*STARTUP にプログラム名を割り当てるプログラムを実行します。

重要:
*STARTUP に含まれているプログラムを無効にするには、RESET *STARTUP を使用して、このシステム変数がプログラムレベルでリセットされるようにする必要があります。

Natural Security の場合:

コマンドモードが禁止された Natural Security 環境のライブラリでは、%% を入力すると *STARTUP 内の名前のプログラムが呼び出されます。

開始トランザクション(*STARTUP)による Natural ランタイムエラーが発生した場合、Natural のエラー処理によって開始トランザクションが再度実行される場合があります。 このことにより、エラーループ状況が発生します。 このようなループを回避するために、標準オプション Logoff in error case if *STARTUP is active を使用できます。 『Natural Security』ドキュメントの「Logoff in Error Case if *STARTUP is Active」を参照してください。

Top of page

*STEPLIB

フォーマット/長さ: A8
内容変更の可否: 不可

このシステム変数には、現在ユーザーがログオンしている Natural ライブラリに連結された STEPLIB ライブラリの名前が格納されます。

Natural Security がアクティブでない場合は、*STEPLIB にはプロファイルパラメータ STEPLIB で指定された名前が含まれます。

Natural Security がアクティブな場合は、ライブラリのセキュリティプロファイルで値を定義できます。

注意:
*STEPLIB ライブラリのデータベース ID とファイル番号は、その名前から派生します。 ライブラリ SYSTEM を除いて、SYSxxx の名前が含まれるライブラリは FNAT にあり、他のライブラリは FUSER にあるとみなされます。

Top of page

*SUBROUTINE

フォーマット/長さ: A32
内容変更の可否: 不可

このシステム変数には、現在実行中の外部サブルーチンの名前が格納されます。 *SUBROUTINE の内容は常に大文字です。

Top of page

*THIS-OBJECT

フォーマット/長さ: HANDLE OF OBJECT
内容変更の可否: 不可

このシステム変数には、現在アクティブなオブジェクトに対するハンドルが格納されます。 現在アクティブなオブジェクトは、*THIS-OBJECT を使用して、そのオブジェクト自体のメソッドを実行するか、または別のオブジェクトに対するこのオブジェクト自体への参照を渡します。

メソッドが実行されているとき、*THIS-OBJECT には実際の値のみが含まれています。 メソッドが実行されていないときには、NULL-HANDLE が含まれています。

Top of page

*TYPE

フォーマット/長さ: A32
内容変更の可否: 不可

このシステム変数には、現在実行されている Natural オブジェクトのタイプが格納されます。

*TYPE の有効な値は次のとおりです。

オブジェクトタイプ
PROGRAM プログラム
SUBPROGRAM サブプログラム
SUBROUTINE サブルーチン
HELPROUTINE ヘルプルーチン
MAP マップ
ADAPTER アダプタ

Top of page

*UBOUND

フォーマット/長さ: 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
2
3
*

次元が指定されない場合、第 1 次元の上限が返されます。

1、2、または 3 が指定された場合、第 1 次元、第 2 次元、または第 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」も参照してください。

Top of page