Page History
[ |../../index.htm#lansa/dsnbi_0185.htm]
現在地:
...
制御言語 (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