例 - 組み込み関数を 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 ファンクションのインライン・コードに含まれます。

  • No labels