|
Having a problem creating an RPG trigger to create two unique sequence
numbers
upon insert of a record. I keep ending up with no values being inserted
into
the sequence fields and I'm not sure why.
The created table:
CREATE TABLE TABLEA (
FIELDA CHAR(50) NOT NULL,
FIELDB CHAR(50) NOT NULL,
FIELDC CHAR(50) NOT NULL,
SEQNUM1 DEC(9,0),
FIELDD CHAR(35) NOT NULL,
SEQNUM2 DEC(9,0),
FIELDF CHAR(8),
FIELDG CHAR(8),
FIELDH CHAR(50) NOT NULL,
FIELDI CHAR(18) NOT NULL,
FIELDJ CHAR(35) NOT NULL,
FIELDK CHAR(3) NOT NULL,
FIELDL CHAR(8) NOT NULL
);
Program Listing:
(I hardcoded the trigger buffer and fields for reference purposes.)
FMT * *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
...+... 8 ..
0000.22 D* Trigger Buffer Length
0000.23 DTRGBUFLEN S 9B 0
0000.24 DSEQ1 S 9P 0
0000.25 DSEQ2 S 9P 0
0000.26 D*
0000.27 D* Trigger Buffer -- After Image of Modulus Number
0000.28 DTRGBUFDS DS
0000.29 D* BEFORE BUFFER HEADER
0000.30 DBFBUFHDR 96A
0000.44 D* BEFORE RECORD IMAGE
0000.45 DBFIELDA 50A
0000.46 DBFIELDB 50A
0000.47 DBFIELDC 50A
0000.48 DBSEQNUM1 9P 0
0000.49 DBFIELDD 35A
0000.50 DBSEQNUM2 9P 0
0000.51 DBFIELDE 8A
0000.52 DBFIELDF 8A
0000.53 DBFIELDG 50A
0000.54 DBFIELDH 18A
0000.55 DBFIELDI 35A
0000.56 DBFIELDJ 3A
0000.57 DBFIELDK 8A
0000.60 D* BEFORE COLUMN MAP
0000.61 DBFCOLMAP 13A
0000.62 D* AFTER IMAGE
0000.63 DAFIELDA 50A
0000.64 DAFIELDB 50A
0000.65 DAFIELDC 50A
0000.66 DASEQNUM1 9P 0
0000.67 DAFIELDD 35A
0000.68 DASEQNUM2 9P 0
0000.69 DAFIELDE 8A
0000.70 DAFIELDF 8A
0000.71 DAFIELDG 50A
0000.72 DAFIELDH 18A
0000.73 DAFIELDI 35A
0000.74 DAFIELDJ 3A
0000.75 DAFIELDK 8A
0000.76 DACOLMAP 13A
0000.89 D/EJECT
0000.90
C**********************************************************************
0000.91 C* MAIN
0000.92
C**********************************************************************
0000.93 C* GET LAST USED SEQUENCE NUMBERS FROM DATA AREAS. INCREMENT BY ONE.
0000.94 C* MOVE NUMBER INTO SEQ1 & SEQ2
0000.95
C**********************************************************************
0000.96 C* SEQUENCE #1
0002.00 C *DTAARA DEFINE SEQ1
0003.00 C *LOCK IN *DTAARA
0004.00 C EVAL SEQ1 = SEQ1 + 1
0005.00 C Z-ADD SEQ1 ASEQNUM1
0006.00 C OUT *DTAARA
0006.01 C* SEQUENCE #2
0006.02 C *DTAARA DEFINE SEQ2
0006.03 C *LOCK IN *DTAARA
0006.04 C EVAL SEQ2 = SEQ2 + 1
0006.05 C Z-ADD SEQ2 ASEQNUM2
0006.06 C OUT *DTAARA
0006.07 C*
0006.08 C RETURN
0006.09 C*
0007.00 C* ENTRY TRIGGER PARMS
0008.00 C *ENTRY PLIST
0009.00 C PARM TRGBUFDS
0010.00 C PARM TRGBUFLEN
0011.00 C/EJECT
I add the trigger to the file.
Type choices, press Enter.
Physical file . . . . . . . . . > TABLEA Name
Library . . . . . . . . . . . > MYLIB Name, *LIBL, *CURLIB
Trigger time . . . . . . . . . . > *AFTER *BEFORE, *AFTER
Trigger event . . . . . . . . . > *INSERT *INSERT, *DELETE, *UPDATE
Program . . . . . . . . . . . . > SELIDR Name
Library . . . . . . . . . . . > MYLIB Name, *LIBL, *CURLIB
Replace trigger . . . . . . . . > *YES *NO, *YES
Allow Repeated Change . . . . . > *YES *NO, *YES
Threadsafe . . . . . . . . . . . *UNKNOWN *UNKNOWN, *NO, *YES
Multithreaded job action . . . . *SYSVAL *SYSVAL, *MSG, *NORUN,
*RUN
I don't end up getting any values in the sequence fields.
On V4R5 of the OS.
The data areas are defined as 9,0 *DEC each.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.