このドキュメントでは、Natural システム変数と Natural システム関数の用途、および Natural プログラムでの使用方法を説明します。
次のトピックについて説明します。
以下では次のトピックについて説明します。
システム変数を使用して、システム情報を表示します。 これらは、Natural プログラム内のどこからでも参照できます。
Natural システム変数は、常に変わる情報、例えば以下のような、現在の Natural セッションに関する情報を提供します。
現在のライブラリ
ユーザーおよび端末 ID
ループ処理の現在のステータス
レポート処理の現在のステータス
現在の日付と時刻
システム変数の一般的な使用方法については、後述の「システム変数およびシステム関数の使用例」、およびライブラリ SYSEXPG に含まれている例を参照してください。
システム変数に格納される情報は、Natural プログラムで適切なシステム変数を指定することにより、使用できます。 例えば、日付と時刻のシステム変数は、DISPLAY
、WRITE
、PRINT
、MOVE
、または COMPUTE
の各ステートメントで指定できます。
システム変数の名前はすべて、アスタリスク(*)で始まります。
システム変数のフォーマット/長さの情報については、『システム変数』ドキュメントを参照してください。 次の省略形が使用されます。
フォーマット | |
---|---|
A | 英数字 |
B | バイナリ |
D | 日付 |
I | 整数 |
L | 論理 |
N | 数値(アンパック) |
P | パック型数値 |
T | 時刻 |
それぞれの説明に記載されているこの項目は、Natural プログラム内で別の値をシステム変数に割り当てることができるかどうか、つまり、Natural によって生成された内容を上書きできるかどうかを示します。
Natural システム変数は、以下のように分類されます。
すべてのシステム変数の詳細については、『システム変数』ドキュメントを参照してください。
Natural システム関数は、レコードを処理した後(ただしブレイク処理の発生前)にデータに適用できる統計関数および算術関数によって構成されます。
システム関数は、AT END OF PAGE
、AT END OF DATA
、または AT BREAK
の各ステートメントとともに使用される DISPLAY
、WRITE
、PRINT
、MOVE
、または COMPUTE
の各ステートメントに指定できます。
AT END OF PAGE
ステートメントの場合、対応する DISPLAY
ステートメントで GIVE SYSTEM FUNCTIONS
節を使用する必要があります(以下の例を参照)。
システム関数は、以下の機能に分類されます。
有効なすべてのシステム関数の詳細については、『システム関数』ドキュメントを参照してください。
『システム関数』ドキュメントの「処理ループでのシステム関数の使用」も参照してください。
システム関数の一般的な使用方法については、以下のプログラム例およびライブラリ SYSEXPG に格納されている例を参照してください。
以下のプログラム例は、システム変数およびシステム関数の使用方法を示しています。
** Example 'SYSVAX01': System variables and system functions ************************************************************************ DEFINE DATA LOCAL 1 MYVIEW VIEW OF EMPLOYEES 2 CITY 2 NAME 2 JOB-TITLE 2 INCOME (1:1) 3 CURR-CODE 3 SALARY 3 BONUS (1:1) END-DEFINE * WRITE TITLE LEFT JUSTIFIED 'EMPLOYEE SALARY REPORT AS OF' *DAT4E / * READ (3) MYVIEW BY CITY STARTING FROM 'E' DISPLAY GIVE SYSTEM FUNCTIONS NAME (AL=15) JOB-TITLE (AL=15) INCOME (1:1) AT START OF DATA WRITE 'REPORT CREATED AT:' *TIME 'HOURS' / END-START AT END OF DATA WRITE / 'LAST PERSON SELECTED:' OLD (NAME) / END-ENDDATA END-READ * AT END OF PAGE WRITE 'AVERAGE SALARY:' AVER (SALARY(1)) END-ENDPAGE END
説明:
システム変数 *DATE
は、WRITE TITLE
ステートメントで出力されています。
システム変数 *TIME
は、AT START OF DATA
ステートメントで出力されています。
システム関数 OLD
は、AT END OF DATA
ステートメントで使用されています。
システム関数 AVER
は、AT END OF PAGE
ステートメントで使用されています。
プログラム SYSVAX01 の出力:
システム変数およびシステム関数がどのように表示されているかに注意してください。
EMPLOYEE SALARY REPORT AS OF 11/11/2004 NAME CURRENT INCOME POSITION CURRENCY ANNUAL BONUS CODE SALARY --------------- --------------- -------- ---------- ---------- REPORT CREATED AT: 14:15:55.0 HOURS DUYVERMAN PROGRAMMER USD 34000 0 PRATT SALES PERSON USD 38000 9000 MARKUSH TRAINEE USD 22000 0 LAST PERSON SELECTED: MARKUSH AVERAGE SALARY: 31333
次の例のプログラムを参照してください。
次の例のプログラムを参照してください。