例 - 組み込み関数を 3GL サブルーチンとして定義
このセクションでは、LANSA ファンクションのインライン・コードの一部となる組み込み関数の作成に必要となる手順を説明していきます。この例は非常に簡素なものですが、組み込み関数が LANSA システムに組み込まれる様子が理解できると思います。
シナリオ:これはユーザー定義の組み込み関数です。この組み込み関数を使って、日付を YYMMDD 形式から DDMMYY 形式に切り替えします。
組み込み関数が日付の操作を行なうためには、データ構造 (I SPECS) とコード (C SPECS) が必要です。
この組み込み関数の名前は UD_FLIP_DATE です。
次に利用可能な識別子は 412 です。
(DC@F47 による) BIF 定義
BIF名: | UD_FLIP_DATE |
|---|---|
一意の識別子: | 412 |
説明: | 日付の形式を YYMMDD から DDMMYY に変換 |
呼び出しまたは実行: | E |
プログラム名: | IB@412 |
呼び出し間での終了: | N |
引数の数: | 1 |
戻り値の数: | 1 |
(DC@F48 による) 引数リスト
BIF名: | UD_FLIP_DATE |
|---|---|
パラメータ・タイプ | ARG |
パラメータシーケンス: | 1 |
パラメータ番号: | 1 |
パラメータ ID | A |
説明: | YYMMDD 形式の日付 |
必須/任意: | R (R <必須> または O <任意>) |
パラメータタイプ: | N (A、N、または L) |
最小長: | 6 |
最大長: | 6 |
小数点以下最小桁数: | |
小数点以下最大桁数: | |
引き渡し長: | 6 |
引き渡す小数点以下桁数: | |
デフォルト: |
(DC@F48 による) 戻り値
BIF名: | UD_FLIP_DATE |
|---|---|
パラメータ・タイプ | RET |
パラメータシーケンス: | 1 |
パラメータ番号: | 2 |
パラメータ識別子: | B |
説明: | 出力日付 (DDMMYY) |
必須/任意: | R (R <必須> または O <任意>) |
パラメータタイプ: | N (A、N、または L) |
最小長: | 6 |
最大長: | 6 |
小数点以下最小桁数: | |
小数点以下最大桁数: | |
引き渡し長: | 6 |
引き渡す小数点以下桁数: |
以下のようにデータを組み込み関数定義ファイルに入力します: BIF412ISPC という名前のメンバーを QBIFSRC に作成して、そのデータ構造を以下のようにコーディングします。
I* 組み込み関数 412 - UD_FLIP_DATE が私用するコード
I*
IDATEIN DS
I 1 60NUMDI
I 1 20YRIN
I 3 40MNIN
I 5 60DYIN
I*
IDATEOU DS
I 1 60NUMDO
I 1 20DYOU
I 3 40MNOU
I 5 60YROU
BIF412CSPC という名前のメンバーを QBIFSRC に作成して、以下のように日付処理のコーディングをします。
C*====================================================
C* IB@412 : UD_FLIP_DATE
C*====================================================
CSR IB@412 BEGSR
C*
C MOVEL'Y' DC@RET
C*
C Z-ADDB@412A NUMDI
C*
C MOVELDYIN DYOU
C MOVELMNIN MNOU
C MOVELYRIN YROU
C*
C Z-ADDNUMDO B@412B
C*
CSR ENDSR
これらのソース・メンバーは、コンパイル時に生成される /COPY により、この組み込み関数を利用する LANSA ファンクションのインライン・コードに含まれます。