Adabas トリガとストアドプロシージャ機能には、ユーザー作成のプログラムからトリガ定義を保守するために呼び出し可能なルーチン TRGMAIN が用意されています。 TRGMAIN の機能は次のとおりです。
新しいトリガの追加
既存のトリガの修正
既存のトリガの削除
特定のトリガ定義の表示
トリガのアクティブ化
トリガの非アクティブ化
トリガメンテナンスルーチンを呼び出す手順
次のように入力します。
CALL 'TRGMAIN' function calling-parameters
ここで、function(機能)と calling-parameter(呼び出しパラメータ)について、次のセクションで説明します。
このドキュメントでは、次のトピックについて説明します。
FUNC パラメータは、トリガ定義で実行されるアクションを指定します。 正しい値は次のとおりです。
| ADD | 追加 |
| MOD | 修正 |
| DEL | 削除 |
| DISP | 表示 |
| ACT | アクティブ化 |
| DEACT | 非アクティブ化 |
CALLING-PARMS を構成するパラメータは、アクションの実行に必要な情報を指定します。 これらのパラメータは、オンライントリガメンテナンス機能で要求される情報と整合性があり、次のフィールドが含まれます(デフォルト値に下線付き)。
| フィールド名 | 長さ | 説明 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TRG-DBNR | N5 | トリガファイル DBnr | ||||||||||||||
| FILE-NAME | A32 | FFT で定義されたファイル名 | ||||||||||||||
| CMD-TYPE | A1 |
|
||||||||||||||
| FIELD-NAME | A32 | FFT で定義されたフィールド名 | ||||||||||||||
| TRIGGER-PROG | A8 | Natural トリガプログラムの名前 | ||||||||||||||
| PRIORITY | N3 | トリガのプライオリティ | ||||||||||||||
| PRE-CMD-SELECT | A1 |
|
||||||||||||||
| PART-NON-FLAG | A1 |
|
||||||||||||||
| CALLNAT-FLAG | A1 |
|
||||||||||||||
| RECBUFF-OPTION | A1 |
|
||||||||||||||
| ACT-TYPE | A4 |
|
||||||||||||||
| TRG-RSV | A39 | 予約済み(将来的に使用される予定) | ||||||||||||||
| RESP | N4 | API から返されるレスポンスコード | ||||||||||||||
| RETURN-MSG | A68 | レスポンスコードのテキストによる説明 | ||||||||||||||
| VERSION | N3 | GCB のバージョン | ||||||||||||||
| PRODVERN | N3 | データベースのバージョン | ||||||||||||||
| NUCID | P5 | ニュークリアス ID | ||||||||||||||
*******************************************************************
Program UMAINT Library SYSTRG
0010 *******************************************************************
0020 * Application .. Trigger Maintenance
0030 * Program ...... UMAINT
0040 * Function ..... Sample call program to call API TRGMAIN that
0050 * maintains trigger definitions.
0060 * (Add,Delete,Modify,Display,Activate,Deactivate).
0070 *
0080 * Parameters ... The following parameters are passed when calling
0090 * the API:
0100 * FUNC (A5) Action to perform on Trigger Definition
0110 * Valid values are ADD - Add
0120 * MOD - Modify
0130 * DEL - Delete
0140 * DISP - Display
0150 * ACT - Activate
0160 * DEACT - Deactivate
0170 * TRG-DBNR (N5) Trigger file DBnr
0180 * FILE-NAME (A32) File name defined in the FFT
0190 * CMD-TYPE (A1) Command type that causes trigger to fire
0200 * Valid values are R - Read
0210 * F - Find
0220 * I - Insert
0230 * U - Update
0240 * D - Delete
0250 * * - All commands
0260 * FIELD-NAME (A32) Field name defined in the FFT
0270 * TRIGGER-PROG (A8) Name of the Natural trigger program
0280 * PRIORITY (N3) Trigger priority
0290 * PRE-CMD-SELECT (A1) Pre-trigger or post-trigger
0300 * Valid values are Y - Pre trigger
0310 * N - Post trigger
0320 * PART-NON-FLAG (A1) Participation flag
0330 * Valid values are A - Asyncronous
0340 * N - Non-participating
0350 * P - Participating
0360 * CALLNAT-FLAG (A1) CALLNAT parameters
0370 * Valid values are N - No parmeters passed
0380 * E - Response code only
0390 * C - Control parms and
0400 * response code
0410 * RECBUFF-OPTION (A1) Record buffer access
0420 * Valid values are A - Access only
0430 * U - Updates allowed
0440 * N - No access to RB
0450 * ACT-TYPE (A4) Type of activation/deactivation
0460 * Valid values are: TEMP - Temporary
0470 * PERM - Permanent
0480 * RESP (N4) Response code returned from the API
0490 * RETURN-MSG (A68) Text description of the response code
0500 ********************************************************************
0510 DEFINE DATA LOCAL
0520 01 FUNC (A5)
0530 01 CALLING-PARMS (A161)
0540 01 REDEFINE CALLING-PARMS
0550 02 TRG-DBNR (N5)
0560 02 FILE-NAME (A32)
0570 02 CMD-TYPE (A1)
0580 02 FIELD-NAME (A32)
0590 02 TRIGGER-PROGRAM (A8)
0600 02 PRIORITY (N3)
0610 02 PRE-CMD-SELECT (A1)
0620 02 PART-NON-FLAG (A1)
0630 02 CALLNAT-FLAG (A1)
0640 02 RECBUFF-OPTION (A1)
0650 02 ACT-TYPE (A4)
0660 02 RESP (N4)
0670 02 RETURN-MSG (A68)
0680 01 MAP-MSG (A68)
0690 01 HOLD-FUNC (A5)
0700 01 HOLD-PRE-CMD-SELECT (A1)
0710 01 PAGE-TITLE (A50)
0720 01 #ATTR (C)
0730 END-DEFINE
0740 RESET CALLING-PARMS MAP-MSG
0750 MOVE 233 TO TRG-DBNR
0760 SET KEY PF3
0770 **
0780 ** Request function and required fields
0790 **
0800 REPEAT
0810 INPUT (AD=TMIL'_' CD=NE)
0820 MAP-MSG (IP=OFF AD=O)
0830 / 9T 'API Maintenance of Trigger Definitions' (YEI)
0840 // 'Function..........' FUNC 30T '(Add, Del, Mod, Disp, or ".")'
0850 // 'File Name.........' FILE-NAME
0860 / 'Field Name........' FIELD-NAME
0870 / 'Command Type......' CMD-TYPE 30T '(R, F, I, U, D, or *)'
0880 / 'Pre-Command.......' PRE-CMD-SELECT 30T '(Y, N, or blank)'
0890 RESET MAP-MSG
0900 **
0910 ** Escape out of here
0920 **
0930 IF FUNC = MASK('.') OR *PF-KEY = 'PF3'
0940 ESCAPE BOTTOM
0950 ** Set up Page Titles
0960 DECIDE ON FIRST VALUE OF FUNC
0970 VALUE 'DISP' MOVE 'Display' TO PAGE-TITLE
0980 VALUE 'ADD' MOVE 'Add' TO PAGE-TITLE
0990 VALUE 'MOD' MOVE 'Modify' TO PAGE-TITLE
1000 VALUE 'DEL' MOVE 'Delete' TO PAGE-TITLE
1010 VALUE 'X' ESCAPE BOTTOM
1020 NONE REINPUT 'Invalid Function Code'
1030 END-DECIDE
1040 COMPRESS PAGE-TITLE 'Trigger Definition' INTO PAGE-TITLE
1050 IF FILE-NAME = ' '
1060 REINPUT 'File Name cannot be BLANK' MARK *FILE-NAME
1070 **
1080 ** Handle Request to Display a Trigger
1090 **
1100 IF FUNC = 'DISP'
1110 DO
1120 PERFORM GET-TRIGGER
1130 INPUT (AD=O CD=NE)
1140 MAP-MSG (IP=OFF AD=O)
1150 / 9T 'API Maintenance of Trigger Definitions' (YEI)
1160 // 10T PAGE-TITLE (IP=OFF)
1170 // 'File name.........' FILE-NAME
1180 / 'Field Name........' FIELD-NAME
1190 / 'Command Type......' CMD-TYPE
1200 // 'Trigger Program...' TRIGGER-PROGRAM
1210 / 'Priority..........' PRIORITY
1220 / 'Pre-Command.......' PRE-CMD-SELECT
1230 / 'Trigger Type......' PART-NON-FLAG
1240 / 'CALLNAT Params....' CALLNAT-FLAG
1250 / 'RecBuffer Access..' RECBUFF-OPTION
1260 RESET FUNC
1270 MOVE RETURN-MSG TO MAP-MSG
1280 DOEND
1290 **
1300 ** Handle Request to Alter Trigger Definitions
1310 **
1320 IF FUNC = 'ADD' OR= 'MOD' OR= 'DEL'
1330 DO
1340 IF (FUNC = 'MOD' OR= 'DEL')
1350 PERFORM GET-TRIGGER
1360 IF FUNC = 'DEL'
1370 DO
1380 MOVE 'Press ENTER to Delete or PF-3 to Cancel' TO MAP-MSG
1390 MOVE (AD=P) TO #ATTR
1400 DOEND
1410 ELSE DO
1420 MOVE 'Press ENTER to confirm data or PF-3 to Cancel' TO MAP-MSG
1430 MOVE (AD=D CD=NE) TO #ATTR
1440 DOEND
1450 REPEAT
1460 INPUT (AD=TMIL'_' CD=NE)
1470 MAP-MSG (IP=OFF AD=O)
1480 / 9T 'API Maintenance of Trigger Definitions' (YEI)
1490 // 10T PAGE-TITLE (AD=O IP=OFF)
1500 // 'File Name.........' FILE-NAME (AD=O)
1510 / 'Field Name........' FIELD-NAME (CV=#ATTR)
1520 / 'Command Type......' CMD-TYPE (CV=#ATTR)
1530 // 'Trigger Program...' TRIGGER-PROGRAM (CV=#ATTR)
1540 / 'Priority..........' PRIORITY (CV=#ATTR)
1550 / 'Pre-Command.......' PRE-CMD-SELECT (CV=#ATTR)
1560 / 'Trigger Type......' PART-NON-FLAG (CV=#ATTR)
1570 / 'CALLNAT Params....' CALLNAT-FLAG (CV=#ATTR)
1580 / 'RecBuffer Access..' RECBUFF-OPTION (CV=#ATTR)
1590 RESET MAP-MSG
1600 IF *PF-KEY = 'PF3'
1610 DO
1620 MOVE 'Function cancelled per user request' TO MAP-MSG
1630 ESCAPE BOTTOM
1640 DOEND
1650 **
1660 ** Perform the update of data (add, del, or mod)
1670 ** and handle the response
1680 **
1690 CALLNAT 'TRGMAIN' FUNC CALLING-PARMS
1700 DECIDE ON FIRST VALUE OF RESP
1710 VALUE 0 MOVE RETURN-MSG TO MAP-MSG
1720 EXAMINE MAP-MSG FOR 'confirmed' REPLACE 'successful'
1730 ESCAPE BOTTOM
1740 VALUE 20 REINPUT WITH TEXT RETURN-MSG MARK *FIELD-NAME
1750 VALUE 23 REINPUT WITH TEXT RETURN-MSG MARK *FIELD-NAME
1760 VALUE 25 REINPUT WITH TEXT RETURN-MSG MARK *CMD-TYPE
1770 * VALUE 37 REINPUT WITH TEXT RETURN-MSG MARK *PRIORITY
1780 * VALUE 38 REINPUT WITH TEXT RETURN-MSG MARK *PRIORITY
1790 VALUE 39 REINPUT WITH TEXT RETURN-MSG MARK *TRIGGER-PROGRAM
1800 VALUE 40 REINPUT WITH TEXT RETURN-MSG MARK *PRE-CMD-SELECT
1810 VALUE 41 REINPUT WITH TEXT RETURN-MSG MARK *PART-NON-FLAG
1820 VALUE 42 REINPUT WITH TEXT RETURN-MSG MARK *CALLNAT-FLAG
1830 VALUE 43 REINPUT WITH TEXT RETURN-MSG MARK *RECBUFF-OPTION
1840 NONE MOVE RETURN-MSG TO MAP-MSG
1850 END-DECIDE
1860 LOOP
1870 RESET FUNC
1880 DOEND
1890 ** Loop back up to display the starting screen
1900 LOOP
1910 *******************************
1920 ** Subroutine to retrieve the *
1930 ** trigger information *
1940 *******************************
1950 DEFINE SUBROUTINE GET-TRIGGER
1960 MOVE FUNC TO HOLD-FUNC /* Go get the existing
1970 MOVE 'DISP' TO FUNC /* trigger information
1980 MOVE PRE-CMD-SELECT TO HOLD-PRE-CMD-SELECT
1990 CALLNAT 'TRGMAIN' FUNC CALLING-PARMS
2000 MOVE HOLD-FUNC TO FUNC
2010 IF RESP NE 0
2020 REINPUT WITH TEXT RETURN-MSG
2030 IF RESP = 0
2040 DO
2050 IF PRE-CMD-SELECT NE HOLD-PRE-CMD-SELECT
2060 AND HOLD-PRE-CMD-SELECT NE ' '
2070 DO
2080 MOVE HOLD-PRE-CMD-SELECT TO PRE-CMD-SELECT
2090 MOVE 'Trigger does not exist' TO MAP-MSG
2100 IF HOLD-PRE-CMD-SELECT = 'Y'
2110 COMPRESS 'Pre-' MAP-MSG INTO MAP-MSG
2120 ELSE COMPRESS 'Post-' MAP-MSG INTO MAP-MSG
2130 MOVE HOLD-FUNC TO FUNC
2140 ESCAPE TOP
2150 DOEND
2160 IF CMD-TYPE = ' '
2170 MOVE '*' TO CMD-TYPE
2180 DOEND
2190 RETURN
2200 *** End of Subroutine ***
2210 END
2220 **
| コード | 説明 |
|---|---|
| 000 | 機能は正常に終了しました。 |
| 013 | 無効なファイル - フィールドエントリが指定されました。 トリガ機能では、ファイル - フィールドテーブルへのアクセスが必要です。ファイル - フィールドテーブルは、ロングファイル名からファイル番号へ、およびフィールド名から 2 文字の Adabas フィールド ID へのマッピングを行います。 詳細については、「ファイル - フィールドテーブル」を参照してください。 |
| 016 | この条件のトリガ定義は見つかりませんでした。 |
| 020 | 削除コマンドクラスでフィールド名は空白にする必要があります。 |
| 023 | このファイルのフィールド名は見つかりませんでした。 指定されたフィールド名はこのファイルのファイル - フィールドテーブルに存在しません。 詳細については、「ファイル - フィールドテーブル」を参照してください。 |
| 025 | コマンドの種類が無効です。 有効な値については上記のリストを参照してください。 |
| 027 | このファイルおよびコマンドの種類のフィールドが見つかりませんでした。 |
| 029 | このファイル、コマンド、およびフィールドの条件のトリガが見つかりませんでした。 |
| 037 | プライオリティは 1~900 の間でなければなりません。 |
| 038 | Adabas フィールド名が ** の場合は、プライオリティを設定できません。 |
| 039 | Natural サブプログラム名が無効です。 |
| 040 | プレトリガの場合は "Y"、ポストトリガの場合は "N" を指定してください。 |
| 041 | トリガタイプは A、N、または P のみです。 |
| 042 | CALLNAT タイプは C、E、または N のみです。 |
| 043 | レコードバッファの使用は A、N、または U のみです。 |
| 044 | 無効なパラメータの組み合わせです。 非同期トリガで使用できるレコードバッファがありません。 |
| 045 | 無効なパラメータの組み合わせです。 読み込みまたは検索コマンドのプレトリガで利用可能なレコードバッファがありません。 |
| 046 | 無効なパラメータの組み合わせです。 削除コマンドで利用可能なレコードバッファがありません。 |
| 047 | このパラメータの組み合わせにトリガはすでに存在します。 |
| 048 | 無効な要求です。 トリガはすでに指定された状態です。 |
| 052 | トリガ状態を変更することは現在できません。 |
| 103 | ファイル名を空白にできません。 |
| 111 | 無効な機能コードです。 |
| 112 | TYPE は TEMP または PERM にする必要があります。 トリガのアクティブ化/非アクティブ化のタイプは、一時(TEMP、このニュークリアスセッション間のみ持続)または永続(PERM)のどちらかにする必要があります。 |
| 1xxx | Adabas レスポンス 22 が返されました。xxx は、サブコードを表します。 |
| 3xxx | ゼロ以外の Adabas レスポンスコードが返されました。xxx は実際の Adabas レスポンスコードです。 |
| 9999 | 機能は成功しませんでした。 パラメータおよび既存のトリガ定義を確認してください。 Software AG 技術サポートに連絡してください。 |