as400 interview questions and answers-Part 21
1. What is the difference between DOW and DOU?
Ans:
Ü DOW Versus DOU
DOW -- Do While -- does the statements in the DO-group while the condition is true.
The logical test for the condition happens at the DOW statement, i.e., at the beginning.
This implies that the statements won't be executed at all if the condition is false at
the time the DOW statement is executed.
DOU -- Do Until -- does the statements in the DO-group until the condition is true.
The logical test for the condition happens at the ENDDO statement. This implies that the
statements will always be executed at least once when the DO-group is reached.
1. Explain EXCEPT opcode in rpgle.
Ans:
Ü EXCEPT (rpgle) / EXCPT (rpg)
·
The EXCEPT opcode is used to write the exception
records.
·
Exceptional records are defined at O-spec with ‘E’ as record type.
·
Whatever exceptional fields have been defined
inside the exception records will be processed during the c-spec calculation.
·
If there are multiple entries for the same
record name then they will be processed one by one.
·
EXCEPT can be used for printing a report and to
partially update a physical file.
Example
I.
Partially update a file using EXCEPT
Columns . . . : 6 100 Browse
SEU==>
FMT FX FFilename++IPEASF.....L.....A.Device+.Keywords+++++++++++++++++++++++++
*************** Beginning of data *************************************
0001.00 FACCOUNT UF A E K DISK
0002.00 *
0003.00 C KLST1 KLIST
0004.00 C KFLD ORG
0005.00 C KFLD ACC
0006.00 C EVAL ORG=192
0007.00 C EVAL ACC='A00000000017'
0008.00 C KLST1 SETLL ACCOUNT
0009.00 C IF %EQUAL(ACCOUNT)
0010.00 C READ ACCOUNT
0011.00 C EVAL CCY='AZK'
0012.00 C EXCEPT UPDATE_R
0013.00 C ENDIF
0014.00 C SETON LR
0015.00 *
0016.00 OREC1 E UPDATE_R
0017.00 O CCY
****************** End of data ****************************************
II.
Print a report using EXCEPT
Columns . . . : 1 100 Browse
SEU==>
FMT FX .....FFilename++IPEASF.....L.....A.Device+.Keywords+++++++++++++++++++++++++++++
*************** Beginning of data **********************************************
0001.00 FACCOUNT UF A E K DISK
0002.00 FQPRINT O F 132 PRINTER OFLIND(*In90)
0003.00 *
0004.00 C EXCEPT HEADER
0005.00 C *LOVAL SETLL ACCOUNT
0006.00 C READ(N) ACCOUNT
0007.00 C DOW NOT %EOF(ACCOUNT)
0008.00 C IF *IN90=*ON
0009.00 C EXCEPT HEADER
0010.00 C ENDIF
0011.00 C EXCEPT DETAIL
0012.00 C READ(N) ACCOUNT
0013.00 C ENDDO
0014.00 C EXCEPT FOOTER
0015.00 C SETON LR
0016.00 *
0017.00 OQPRINT E HEADER >>>> Exception record with
0018.00 O 6 'PAGE' record name entry ‘HEADER’
0019.00 O Page 10
0020.00 O 47 'PARTY ACCOUNT REPORT'
0021.00 O 65 'DATE'
0022.00 O Udate Y 75
0023.00 O E HEADER 1 >>>>> Exception record with
0024.00 O 10 'ORG CODE' record name ‘HEADER’
0025.00 O 25 'ACCOUNT NO'
0026.00 O 36 'CURRENCY'
0027.00 O 52 'PARTY NAME'
0028.00 O E DETAIL 1 >>>>> Exception record with
0029.00 O ORG 10 record name entry ‘DETAIL’
0030.00 O ACC 25
0031.00 O CCY 36
0032.00 O PARTY 52
0033.00 O E FOOTER 1 >>>record name entry ‘FOOTER’
0034.00 O 42 '**************************'
****************** End of data ********************************************************
OUTPUT
Display Spooled File
File . . . . . : QPRINT Page/Line 1/1
Control . . . . . Columns 1 - 130
Find . . . . . .
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9
PAGE 1 PARTY ACCOUNT REPORT DATE 2/09/13
ORG CODE ACCOUNT NO CURRENCY PARTY NAME
190 A00000000001 CCY P00000000001
190 A00000000005 INR P00000000005
190 A00000000006 TRY P00000000006
191 A00000000002 EUR P00000000002
191 A00000000008 GBP P00000000002
191 A00000000009 USD P00000000001
192 A00000000003 USD P00000000003
192 A00000000004 TRY P00000000004
192 A00000000007 INR P00000000007
195 A00000000010 EUR P00000000003
**************************
Bottom
F3=Exit F12=Cancel F19=Left F20=Right F24=More keys
III.
Print a report using EXCEPT with no entry in
FACTOR-2
When we are
putting EXCEPT opcode with no entry in factor-2, then all the exception records
with no record name entry in output spec are written during the calculation as
is clear from the example below.
*************** Beginning of data ***********************************
0001.00 FACCOUNT UF A E K DISK
0002.00 FQPRINT O F 132 PRINTER OFLIND(*In90)
0003.00 *
0004.00 C EXCEPT HEADER
0005.00 C EXCEPT >>> EXCEPT opcode without FACTOR-2 entry
0006.00 C *LOVAL SETLL ACCOUNT
0007.00 C READ(N) ACCOUNT
0008.00 C DOW NOT %EOF(ACCOUNT)
0009.00 C IF *IN90=*ON
0010.00 C EXCEPT HEADER
0011.00 C EXCEPT >>> EXCEPT opcode without FACTOR-2 entry
0012.00 C EVAL *IN90=*OFF
0013.00 C ENDIF
0014.00 C EXCEPT DETAIL
0015.00 C READ(N) ACCOUNT
0016.00 C ENDDO
0017.00 C EXCEPT FOOTER
0018.00 C SETON LR
0019.00 *
0020.00 OQPRINT E HEADER >>>>> Exception record with
0021.00 O 6 'PAGE' record name entry ‘HEADER’
0022.00 O Page 10
0023.00 O 47 'PARTY ACCOUNT REPORT'
0024.00 O 65 'DATE'
0025.00 O Udate Y 75
0026.00 O E 1 >>>>> Exception record with
0027.00 O 10 'ORG CODE' no record name entry
0028.00 O 25 'ACCOUNT NO'
0029.00 O 36 'CURRENCY'
0030.00 O 52 'PARTY NAME'
0031.00 O E DETAIL 1 >>>> Exception record with
0032.00 O ORG 10 record name entry ‘DETAIL’
0033.00 O ACC 25
0034.00 O CCY 36
0035.00 O PARTY 52
0036.00 O E FOOTER 1 >>>> record name entry ‘FOOTER’
0037.00 O 42 '**************************'
****************** End of data *********************************************************
OUTPUT
Display Spooled File
File . . . . . : QPRINT Page/Line 1/1
Control . . . . . Columns 1 - 130
Find . . . . . .
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9
PAGE 1 PARTY ACCOUNT REPORT DATE 2/09/13
ORG CODE ACCOUNT NO CURRENCY PARTY NAME
190 A00000000001 CCY P00000000001
190 A00000000005 INR P00000000005
190 A00000000006 TRY P00000000006
190 A00000000013 EUR P00000000009
190 P00000000019 EUR P00000000015
191 A00000000002 EUR P00000000002
191 A00000000008 GBP P00000000002
191 A00000000009 USD P00000000001
PAGE 2 PARTY ACCOUNT REPORT DATE 2/09/13
ORG CODE ACCOUNT NO CURRENCY PARTY NAME
191 P00000000014 USD P00000000004
192 A00000000003 USD P00000000003
192 A00000000004 TRY P00000000004
192 A00000000007 INR P00000000007
192 A00000000012 EUR P00000000002
192 A00000000015 INR P00000000010
192 A00000000016 GBP P00000000011
192 A00000000017 GBP P00000000017
193 A00000000011 TRY P00000000005
195 A00000000010 EUR P00000000003
**************************
Bottom
F3=Exit F12=Cancel F19=Left F20=Right F24=More keys