システム変数とシステム関数

このドキュメントでは、Natural システム変数と Natural システム関数の用途、および Natural プログラムでの使用方法を説明します。

以下のトピックについて説明します。


システム変数

以下では次のトピックについて説明します。

機能

システム変数を使用して、システム情報を表示します。これらは、Natural プログラム内のどこからでも参照できます。

Natural システム変数は、常に変わる情報、例えば以下のような、現在の Natural セッションに関する情報を提供します。

  • 現在のライブラリ

  • ユーザーおよび端末 ID

  • ループ処理の現在のステータス

  • レポート処理の現在のステータス

  • 現在の日付と時刻

システム変数の一般的な使用方法については、後述の「システム変数およびシステム関数の使用例」、およびライブラリ SYSEXPG に含まれている例を参照してください。

システム変数に格納される情報は、Natural プログラムで適切なシステム変数を指定することにより、使用できます。例えば、日付と時刻のシステム変数は、DISPLAYWRITEPRINTMOVE、または COMPUTE の各ステートメントで指定できます。

システム変数の特徴

システム変数の名前はすべて、アスタリスク(*)で始まります。

フォーマット/長さ

システム変数のフォーマット/長さの情報については、『システム変数』ドキュメントを参照してください。次の省略形が使用されます。

Format
A 英数字
B バイナリ
D 日付
I 整数
L 論理
N 数値(アンパック)
P パック型数値
T 時刻

内容変更の可否

それぞれの説明に記載されているこの項目は、Natural プログラム内で別の値をシステム変数に割り当てることができるかどうか、つまり、Natural によって生成された内容を上書きできるかどうかを示します。

機能別のシステム変数

Natural システム変数は、以下のように分類されます。

すべてのシステム変数の詳細については、『システム変数』ドキュメントを参照してください。

システム関数

Natural システム関数は、レコードを処理した後(ただしブレイク処理の発生前)にデータに適用できる統計関数および算術関数によって構成されます。

システム関数は、AT END OF PAGEAT END OF DATA または AT BREAK ステートメントと組み合わせて使用する DISPLAYWRITEPRINTMOVE または 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

システム変数の他の例

次の例のプログラムを参照してください。

システム関数の他の例

次の例のプログラムを参照してください。