制御言語 (CL) のスケルトン

LANSA データ・ライブラリのソースファイル DC@F28 に以下のサンプルのソースコードが提供されています。この名前は通常 DC@DTALIB です。


/*=================================================================*/
 /*          標準組み込み関数提供者の免責事項         */
 /*=================================================================*/
 /*                                                                    +
        提供者名 : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        +
                                                                       +
      BIF 機能は非常にパワフルで、LANSA で生成されたアプリケーションに対し+
      非常にオープンなインターフェースとなっています。                    +
                                                                       +
      ゆえに、ユーザー定義組み込み関数を定義する場合、   +
      もしくは、代理店提供の組み込み関数を購入する場合も、       +
      自身のシステムに構築したすべての LANSA アプリケーションの +
      整合性、利便性、セキュリティ、保守性、移植性に与える影響に対する    +
      責任はすべてお客様自身にあります。   +
                                                                       +
      製品の代理店(ベンダー)により組み込み関数の定義や保守のサポート  +
      が提供される可能性はありますが、その場合でもこのベンダーには   +
      その機能に関する責任や法的な義務はありません。                      +

 /*=================================================================*/
 /*                プログラム基本情報                            */
 /*=================================================================*/
 /*                                                                    +
    Copyright     : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 1991.   +
                                                                       +
       プログラム名  : XXXXXXX                                            +
                                                                       +
       組み込み関数名: XXXXXXXXXXXXXXXXXXXX                              +
                                                                       +
       作成日   : DD/DD/DD                                           +
                                                                       +
       作者名   : XXXXXXXXXXXXXX                                     +
                                                                       +
       説明   : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +
                                                                    */
 /*=================================================================*/
 /*                プログラム修正履歴                        */
 /*=================================================================*/
 /*                                                                    +
       参照   日付     修正者氏名     修正内容      +
    ---    ----     ------------   ------------------------------      +
    NNNNN  DD/DD/DD XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  +
    NNNNN  DD/DD/DD XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  +
    NNNNN  DD/DD/DD XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  +
                                                                    */

 /*=================================================================*/
 /* エントリー パラメータ リスト仕様                             */
 /*=================================================================*/
 /*                                                                    +
        固定パラメータ (すべての組み込み関数)                        +
     -----------------------------------------                         +
            DC@IDS :標準の情報データ構造                    +
            DC@EDS :標準の交換データ構造                     +
            PR@IDS : 標準のプロセス情報データ構造           +
        変数の引数と戻り値 (DC@F48 定義より)      +
     -------------------------------------------------------------     +
            B$###n : 組み込み関数 引数/戻り値 記述し番号 n       +
            B@###n : 組み込み関数 引数/戻り値 値番号 n             +
                                                                    */
 /*=================================================================*/

  BI@P###: PGM PARM(&DC@IDS &DC@EDS &PR@IDS)

 /*=================================================================*/
 /*                     変数の宣言                       */
 /*=================================================================*/

             DCL        VAR(&DC@IDS) TYPE(*CHAR) LEN(1024)
             DCL        VAR(&DC@EDS) TYPE(*CHAR) LEN(1024)
             DCL        VAR(&PR@IDS) TYPE(*CHAR) LEN(1024)

             DCL        VAR(&$PGMNM) TYPE(*CHAR) LEN(10)
             DCL        VAR(&PR@PGM) TYPE(*CHAR) LEN(10)
             DCL        VAR(&PR@B@N) TYPE(*CHAR) LEN(3)
             DCL        VAR(&PR@B@A) TYPE(*CHAR) LEN(1)
             DCL        VAR(&DC@RET) TYPE(*CHAR) LEN(1)
             DCL        VAR(&DC@MID) TYPE(*CHAR) LEN(7)
             DCL        VAR(&DC@MVR) TYPE(*CHAR) LEN(132)
             DCL        VAR(&@COPYR) TYPE(*CHAR) LEN(80) VALUE('(C) +
                          COPYRIGHT <<組織名は      +
                             ここ>>, 1991. ALL RIGHTS RESERVED')

 /*=================================================================*/
 /*                     グローバル エラー ハンドラー       */
 /*=================================================================*/

        MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO ARGERR)

 /*=================================================================*/
 /*                      プログラム メイン行                       */
 /*=================================================================*/

 /* フィールドの設定とデータ構造から一部をマッピング ....   */

             CHGVAR     &$PGMNM   '??????????'
             CHGVAR     &PR@PGM   %SST(&PR@IDS 424 10)
             CHGVAR     &PR@B@N   %SST(&PR@IDS 157  3)
             CHGVAR     &PR@B@A   %SST(&PR@IDS 160  1)

 /* 最初は「良い」リターンが結果として得られると想定しています .....*/

             CHGVAR     &DC@RET 'Y'

 /* 必須の評価/アクションの実行 / アクションはここ .....           */


      /* プログラム処理ロジックの終わり                            */

ENDPGM:      CHGVAR %SST(&DC@EDS 38   1) &DC@RET
             CHGVAR %SST(&DC@EDS 39   7) &DC@MID
             CHGVAR %SST(&DC@EDS 46 132) &DC@MVR
             RETURN

/*==================================================================*/
/* ARGERR : プログラムに引き渡された引数のエラー処理。 */
/*        呼び出し元は、このロジックの実行前にエラーの原因を        */
/*        反映させるためにDC@MID とDC@MVRを設定する必要があります。 */
/*        このロジックが起動されると、プログラム全体が終了します。  */
/*        これによって、このRDMLファンクションの呼び出しはエラーとなり*/
/*        DC@MID/DC@MVR内のエラー詳細を示すメッセージが表示されます。*/
/*==================================================================*/
ARGERR:

/* 呼び出し元に返す追加メッセージをすべて転送  */

             CALL       PGM(DC@P9007) PARM(&$PGMNM &PR@PGM)
              MONMSG     (CPF0000 MCH0000)

/* "不正な" 戻りコードを設定 ....                                 */

             CHGVAR &DC@RET 'N'
             MONMSG     (CPF0000 MCH0000)

/* 呼び出し元のプログラムに制御を戻す....                       */

             GOTO ENDPGM

/*==================================================================*/

             CHGVAR     VAR(%SST(&@COPYR 80 1)) VALUE(' ')
             ENDPGM
  • No labels