Ü SETGT
(E) (Set
Greater Than)
·
This opcode positions
the file pointer at the next record which is having the key/RRN value just
greater than the current key /RRN value.
·
After positioning the
file pointer we can go for any file operation e.g. READ, READP, READPE, READE.
·
In factor-1 we can use
figurative constants *LOVAL, *HIVAL, *START, *END or we can use RRN VALUE or KEY
VALUE or KEY LIST.
·
SETGT if successful
sets EOF() to *OFF, else if not successful doesn’t do anything to EOF().
·
For a descending order
file, to read the first record we can do:
*HIVAL SETGT
File001
READ
·
For a descending order
file, to read the last record we can do:
*LOVAL SETGT
File001
READP
·
For an ascending order
file, to read the first record we can do:
*LOVAL SETGT
File001
READ
·
For an ascending order
file, to read the last record we can do:
*HIVAL
SETGT File001
READP
·
To handle SETGT
exceptions (file status codes greater than 1000), either the operation code extender
'E' or an error indicator at LO level can be used.
Factor 1
|
Op-code
|
Factor 2
|
Result Field
|
Resulting Indicators
HI LO EQ
|
Search argument
|
SETGT(E)
|
File or record format name
|
|
Greater value match found
|
Error
|
|
Example – I : SETGT sets
EOF()=*ON if successful
Columns . . . : 6 80 Browse AMITCC/QRPGLESRC
SEU==> OP_SETGT
FMT FX FFilename++IPEASF.....L.....A.Device+.Keywords+++++++++++++++++++++++++++++
*************** Beginning of data ****************************************************
0001.00 FPF0001 IF E K DISK 130211
0003.00 C *HIVAL SETGT PF0001 130212
0004.00 C READ PF0001 130212
0005.00 C IF %EOF(PF0001) 130212
0006.00 C 'END OF FILE' DSPLY 130212
0007.00 C ENDIF 130212
0008.00 C 'P00000000001'SETGT REC2 130212
0009.00 C IF %FOUND(PF0001) 130212
0010.00 C 'HIGHER VALUE'DSPLY 130212
0011.00 C ELSE 130212
0012.00 C 'NO RECORDS' DSPLY 130212
0013.00 C ENDIF 130211
0014.00 C IF NOT %EOF(PF0001) 130212
0015.00 C 'NOT EOF' DSPLY 130212
0016.00 C ENDIF 130212
0017.00 C SETON LR 130128
****************** End of data *******************************************************
OUTPUT
END
OF FILE
HIGHER
VALUE
NOT
EOF
Example – II : Use of %found(File
name) with SETGT
Physical file used in the program: PF0001
PNAME PNUM PADDR OPNDD
OPNMM OPNYY OPNSTS
AMINEM P00000000001 CONIZA TOJ
2 1 2,012
1
IROBO P00000000002 HENGURIZZA
1 6 2,012
1
ZENNIE P00000000003 UENAI
13 1 2,012
2
JOHNNE P00000000004 HOLLYNIA
14 2 2,011
1
JENNUMA P00000000008 UNIBAR
9 1 2,011
2
******** End of report
********
·
First
of all put ‘P00000000007’ in factor-1 for SETGT operation.
Columns . . . : 6 80 Edit AMITCC/QRPGLESRC
SEU==> OP_SETGT
FMT FX FFilename++IPEASF.....L.....A.Device+.Keywords+++++++++++++++++++++++++++++
*************** Beginning of data ****************************************************
0001.00 FPF0001 IF E K DISK 130211
0003.00 DSTRING S 35A INZ(*BLANKS) 130212
0004.00 C 'P00000000007'SETGT REC2 90 130212
0005.00 C IF %FOUND(PF0001) 130212
0006.00 C READ PF0001 130212
0007.00 C EVAL STRING='HIGHER VALUE FOUND=' + PNUM 130212
0008.00 C STRING DSPLY 130212
0009.00 C ELSEIF %EOF(PF0001) 130212
0010.00 C 'END OF FILE' DSPLY 130212
0011.00 C ELSE 130212
0012.00 C 'NO RECORDS' DSPLY 130212
0013.00 C ENDIF 130211
0014.00 C SETON LR 130128
****************** End of data *******************************************************
OUTPUT
DSPLY HIGHER VALUE FOUND=P00000000008
·
Now
we put ‘P00000000015’ in factor-1 for SETGT operation.
Columns . . . : 6 80 Edit AMITCC/QRPGLESRC
SEU==> OP_SETGT
FMT FX FFilename++IPEASF.....L.....A.Device+.Keywords+++++++++++++++++++++++++++++
*************** Beginning of data ****************************************************
0001.00 FPF0001 IF E K DISK 130211
0003.00 DSTRING S 35A INZ(*BLANKS) 130212
0004.00 C 'P00000000015'SETGT REC2 90 130212
0005.00 C IF %FOUND(PF0001) 130212
0006.00 C READ PF0001 130212
0007.00 C EVAL STRING='HIGHER VALUE FOUND=' + PNUM 130212
0008.00 C STRING DSPLY 130212
0009.00 C ELSEIF %EOF(PF0001) >>>>> SETGT if not successful 130212
0010.00 C 'END OF FILE' DSPLY doesn’t set EOF. 130212
0011.00 C ELSE 130212
0012.00 C 'NO RECORDS' DSPLY 130212
0013.00 C ENDIF 130211
0014.00 C SETON LR 130128
****************** End of data *******************************************************
OUTPUT
Example – III : To read a particular key value in reverse order
Physical file used in the
program = ACCSUBPF
ORG CODE ACC NUMBER CURRENCY ACCOUNT MNG COUNTRY PARTY
190 A00000000001 EUR DFJASHN NKDAHFJ P00000000001
191 A00000000002 USD DAJFK DAJH P00000000001
192 A00000000003 TRY DAHB BJDKFA P00000000001
193 A00000000004 USD KIRAN NDKAL P00000000001
194 A00000000005 KWR DANK NKD P00000000001
195 A00000000006 TRY APPRINA SOUTN P00000000001
195 A00000000007 USD SONATNA SOUTN P00000000001
****** ******** End of report ********
Columns . . . : 6 80 Browse AMITCC/QRPGLESRC
SEU==> OP_READPE
FMT FX FFilename++IPEASF.....L.....A.Device+.Keywords+++++++++++++++++++++++++++++
*************** Beginning of data ****************************************************
0001.00 FACCSUBPF IF E K DISK 130211
0002.00 C 'P00000000001'SETGT ACCSUBPF 130211
0003.00 C 'P00000000001'READPE ACCSUBPF 130211
0004.00 C DOW NOT %EOF() 130211
0005.00 C ACC DSPLY 130211
0006.00 C READPE ACCSUBPF 130211
0007.00 C ENDDO 130211
0008.00 C SETON LR 130211
****************** End of data *******************************************************
OUTPUT
A00000000007
A00000000006
A00000000005
A00000000004
A00000000003
A00000000002
A00000000001