制御言語 (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