The Adabas triggers and stored procedures facility provides a callable routine TRGMAIN to maintain trigger definitions from user-written programs. TRGMAIN functions include
add new triggers
modify existing triggers
purge existing triggers
display a specific trigger definition
activate triggers
deactivate triggers
To call the trigger maintenance routine
Enter the following:
CALL 'TRGMAIN' function calling-parameters
where the functions and calling parameters are as described in the following sections.
This document covers the following topics:
The FUNC parameter specifies what action is to be performed on the trigger definition. Valid values are
ADD | Add |
MOD | Modify |
DEL | Purge |
DISP | Display |
ACT | Activate |
DEACT | Deactivate |
The parameters that compose CALLING-PARMS provides the information needed to complete the actions. These parameters are consistent with the information requested by the online Trigger Maintenance facility and include the following fields (default values are underlined):
Field Name | Length | Description | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TRG-DBNR | N5 | Trigger file DBnr | ||||||||||||||
FILE-NAME | A32 | File name defined in the FFT | ||||||||||||||
CMD-TYPE | A1 |
|
||||||||||||||
FIELD-NAME | A32 | Field name defined in the FFT | ||||||||||||||
TRIGGER-PROG | A8 | Name of the Natural trigger program | ||||||||||||||
PRIORITY | N3 | Trigger priority | ||||||||||||||
PRE-CMD-SELECT | A1 |
|
||||||||||||||
PART-NON-FLAG | A1 |
|
||||||||||||||
CALLNAT-FLAG | A1 |
|
||||||||||||||
RECBUFF-OPTION | A1 |
|
||||||||||||||
ACT-TYPE | A4 |
|
||||||||||||||
TRG-RSV | A39 | Reserved for future use | ||||||||||||||
RESP | N4 | Response code returned from the API | ||||||||||||||
RETURN-MSG | A68 | Text description of the response code | ||||||||||||||
VERSION | N3 | GCB version | ||||||||||||||
PRODVERN | N3 | Database version | ||||||||||||||
NUCID | P5 | Nucleus ID |
0010 ************************************************************************ 0020 * Application .. ADABAS Triggers Subsystem 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 * FUNCTION (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 - De-activate 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-POST-FLAG (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/De-activation 0460 * Valid values are: TEMP - Temporary 0470 * PERM - Permanent 0480 * VERSION (N3) Version of the GCB 0490 * Valid values are: 201 for v81 0500 * 202 for v82 0510 * PRODVERN (N3) Version of the Adabas 0520 * Valid values are: 812, 813, 814 for v81x 0530 * 822, 823, 824, 825, 826 for v82x 0540 * NUCID (P5) NUCID 0550 * RESP (N4) Response Code returned from the API 0560 * RETURN-MSG (A68) Text description of the response code 0570 ********************************************************************** 0580 DEFINE DATA 0590 LOCAL USING TRGPMAIN 0600 LOCAL 0610 01 MAP-MSG (A68) 0620 01 HOLD-FUNCTION (A5) 0630 01 HOLD-PRE-POST-FLAG (A1) 0640 01 PAGE-TITLE (A50) 0650 01 #ATTR (C) 0660 END-DEFINE 0670 RESET CALLING-PARMS MAP-MSG 0680 MOVE 233 TO TRG-DBNR 0690 VERSION := 202 0700 PRODVERN := 822 0710 NUCID := 0 0720 SET KEY PF3 0730 ** 0740 ** Request function and required fields 0750 ** 0760 REPEAT 0770 INPUT (AD=TMIL'_' CD=NE) 0780 MAP-MSG (IP=OFF AD=O) 0790 / 9T 'API Maintenance of Trigger Definitions' (YEI) 0800 // 'Function..........' FUNCTION 30T '(Add, Del, Mod, Disp, or ".")' 0810 // 'File Name.........' FILE-NAME 0820 / 'Field Name........' FIELD-NAME 0830 / 'Command Type......' CMD-TYPE 30T '(R, F, I, U, D, or *)' 0840 / 'Pre-Command.......' PRE-POST-FLAG 30T '(Y, N, or blank)' 0850 RESET MAP-MSG 0860 ** 0870 ** Escape out of here 0880 ** 0890 IF FUNCTION = MASK('.') OR *PF-KEY = 'PF3' 0900 ESCAPE BOTTOM 0910 ** Set up Page Titles 0920 DECIDE ON FIRST VALUE OF FUNCTION 0930 VALUE 'DISP' MOVE 'Display' TO PAGE-TITLE 0940 VALUE 'ADD' MOVE 'Add' TO PAGE-TITLE 0950 VALUE 'MOD' MOVE 'Modify' TO PAGE-TITLE 0960 VALUE 'DEL' MOVE 'Delete' TO PAGE-TITLE 0970 VALUE 'X' ESCAPE BOTTOM 0980 NONE REINPUT 'Invalid Function Code' 0990 END-DECIDE 1000 COMPRESS PAGE-TITLE 'Trigger Definition' INTO PAGE-TITLE 1010 IF FILE-NAME = ' ' 1020 REINPUT 'File Name can not be BLANK' MARK *FILE-NAME 1030 ** 1040 ** Handle Request to Display a Trigger 1050 ** 1060 IF FUNCTION = 'DISP' 1070 DO 1080 PERFORM GET-TRIGGER 1090 INPUT (AD=O CD=NE) 1100 MAP-MSG (IP=OFF AD=O) 1110 / 9T 'API Maintenance of Trigger Definitions' (YEI) 1120 // 10T PAGE-TITLE (IP=OFF) 1130 // 'File name.........' FILE-NAME 1140 / 'Field Name........' FIELD-NAME 1150 / 'Command Type......' CMD-TYPE 1160 // 'Trigger Program...' TRIGGER-PROGRAM 1170 / 'Priority..........' PRIORITY 1180 / 'Pre-Command.......' PRE-POST-FLAG 1190 / 'Trigger Type......' PART-NON-FLAG 1200 / 'CALLNAT Params....' CALLNAT-FLAG 1210 / 'RecBuffer Access..' RECBUFF-OPTION 1220 RESET FUNCTION 1230 MOVE RETURN-MSG TO MAP-MSG 1240 DOEND 1250 ** 1260 ** Handle Request to Alter Trigger Definitions 1270 ** 1280 IF FUNCTION = 'ADD' OR= 'MOD' OR= 'DEL' 1290 DO 1300 IF (FUNCTION = 'MOD' OR= 'DEL') 1310 PERFORM GET-TRIGGER 1320 IF FUNCTION = 'DEL' 1330 DO 1340 MOVE 'Press ENTER to Delete or PF-3 to Cancel' TO MAP-MSG 1350 MOVE (AD=P) TO #ATTR 1360 DOEND 1370 ELSE DO 1380 MOVE 'Press ENTER to confirm data or PF-3 to Cancel' TO MAP-MSG 1390 MOVE (AD=D CD=NE) TO #ATTR 1400 DOEND 1410 REPEAT 1420 INPUT (AD=TMIL'_' CD=NE) 1430 MAP-MSG (IP=OFF AD=O) 1440 / 9T 'API Maintenance of Trigger Definitions' (YEI) 1450 // 10T PAGE-TITLE (AD=O IP=OFF) 1460 // 'File Name.........' FILE-NAME (AD=O) 1470 / 'Field Name........' FIELD-NAME (CV=#ATTR) 1480 / 'Command Type......' CMD-TYPE (CV=#ATTR) 1490 // 'Trigger Program...' TRIGGER-PROGRAM (CV=#ATTR) 1500 / 'Priority..........' PRIORITY (CV=#ATTR) 1510 / 'Pre-Command.......' PRE-POST-FLAG (CV=#ATTR) 1520 / 'Trigger Type......' PART-NON-FLAG (CV=#ATTR) 1530 / 'CALLNAT Params....' CALLNAT-FLAG (CV=#ATTR) 1540 / 'RecBuffer Access..' RECBUFF-OPTION (CV=#ATTR) 1550 RESET MAP-MSG 1560 IF *PF-KEY = 'PF3' 1570 DO 1580 MOVE 'Function cancelled per user request' TO MAP-MSG 1590 ESCAPE BOTTOM 1600 DOEND 1610 ** 1620 ** Perform the update of data (add, del, or mod) 1630 ** and handle the response 1640 ** 1650 CALLNAT 'TRGMAIN' FUNCTION CALLING-PARMS 1660 DECIDE ON FIRST VALUE OF RESP 1670 VALUE 0 MOVE RETURN-MSG TO MAP-MSG 1680 EXAMINE MAP-MSG FOR 'confirmed' REPLACE 'successful' 1690 ESCAPE BOTTOM 1700 VALUE 20 REINPUT WITH TEXT RETURN-MSG MARK *FIELD-NAME 1710 VALUE 23 REINPUT WITH TEXT RETURN-MSG MARK *FIELD-NAME 1720 VALUE 25 REINPUT WITH TEXT RETURN-MSG MARK *CMD-TYPE 1730 * VALUE 37 REINPUT WITH TEXT RETURN-MSG MARK *PRIORITY 1740 * VALUE 38 REINPUT WITH TEXT RETURN-MSG MARK *PRIORITY 1750 VALUE 39 REINPUT WITH TEXT RETURN-MSG MARK *TRIGGER-PROGRAM 1760 VALUE 40 REINPUT WITH TEXT RETURN-MSG MARK *PRE-POST-FLAG 1770 VALUE 41 REINPUT WITH TEXT RETURN-MSG MARK *PART-NON-FLAG 1780 VALUE 42 REINPUT WITH TEXT RETURN-MSG MARK *CALLNAT-FLAG 1790 VALUE 43 REINPUT WITH TEXT RETURN-MSG MARK *RECBUFF-OPTION 1800 NONE MOVE RETURN-MSG TO MAP-MSG 1810 END-DECIDE 1820 LOOP 1830 RESET FUNCTION 1840 DOEND 1850 ** Loop back up to display the starting screen 1860 LOOP 1870 ******************************* 1880 ** Subroutine to retrieve the * 1890 ** trigger information * 1900 ******************************* 1910 DEFINE SUBROUTINE GET-TRIGGER 1920 MOVE FUNCTION TO HOLD-FUNCTION /* Go get the existing 1930 MOVE 'DISP' TO FUNCTION /* Trigger Information 1940 MOVE PRE-POST-FLAG TO HOLD-PRE-POST-FLAG 1950 CALLNAT 'TRGMAIN' FUNCTION CALLING-PARMS 1960 MOVE HOLD-FUNCTION TO FUNCTION 1970 IF RESP NE 0 1980 REINPUT WITH TEXT RETURN-MSG 1990 IF RESP = 0 2000 DO 2010 IF PRE-POST-FLAG NE HOLD-PRE-POST-FLAG 2020 AND HOLD-PRE-POST-FLAG NE ' ' 2030 DO 2040 MOVE HOLD-PRE-POST-FLAG TO PRE-POST-FLAG 2050 MOVE 'Trigger does not exist' TO MAP-MSG 2060 IF HOLD-PRE-POST-FLAG = 'Y' 2070 COMPRESS 'Pre-' MAP-MSG INTO MAP-MSG 2080 ELSE COMPRESS 'Post-' MAP-MSG INTO MAP-MSG 2090 MOVE HOLD-FUNCTION TO FUNCTION 2100 ESCAPE TOP 2110 DOEND 2120 IF CMD-TYPE = ' ' 2130 MOVE '*' TO CMD-TYPE 2140 DOEND 2150 RETURN 2160 *** End of Subroutine *** 2170 END 2180 **
Code | Meaning |
---|---|
000 | Function completed successfully. |
013 | Invalid file-field entry specified. The triggers facility requires access to a file-field table that maps long file names to file numbers and field names to Adabas two-character field identifiers. See section File-Field Tables for more information. |
016 | No trigger definition found with this criteria. |
020 | Field name must be blank for delete command class. |
023 | Field name not found for this file. The field name specified does not exist in the file-field table for this file. See section File-Field Tables for more information. |
025 | Invalid command type. See list above for valid values. |
027 | No field found for this file and command type. |
029 | No trigger found for this file, command, and field criteria. |
037 | Priority must be between 1 and 900. |
038 | Priority cannot be set if Adabas field name is **. |
039 | Natural subprogram name is invalid. |
040 | Specify "Y" for pre-trigger and "N" for post-trigger. |
041 | Trigger type may be "A", "N", or "P" only. |
042 | CALLNAT type may be "C", "E", or "N" only. |
043 | Record buffer usage may be "A", "N", or "U" only. |
044 | Invalid parameter combination. No record buffer available with asyncronous triggers. |
045 | Invalid parameter combination. No record buffer available for pre-triggers for read or find commands. |
046 | Invalid parameter combination. No record buffer available for delete commands. |
047 | A trigger already exists for this parameter combination. |
048 | Invalid request. Trigger is already in the specified state. |
052 | Change in trigger state not possible now. |
103 | File name must not be blank. |
111 | Invalid function code. |
112 | TYPE must be temp or perm. The type of activation or deactivation of a trigger must be either temporary (lasting for this nucleus session only) or permanent. |
1xxx | Function resulted in an Adabas response code 22 (ADARSP022) where xxx represents the subcode. |
3xxx | Non-zero Adabas response code was returned, where xxx is the actual Adabas response code. |
9999 | Function not successful. Verify parameters and existing trigger definitions. Contact your Software AG technical support representative with questions. |