This code will build a set of 'movel' and z-add statements for selected display/database file. It will use the field name in result 2 & 3 so that you can easily add a prefix for work/display/history, etc. The statements will be added to the bottom of the RPGILE source.
BUILDMV - Display for parameters.
A DSPSIZ(24 80 *DS3)
A CA03(03 'END OF JOB')
A R FMT001
A 2 5'BUILDMV'
A N30 2 31'BUILD MOVE CALCULATIONS'
A DSPATR(HI)
A 30 2 31'BUILD DATA STRUCTURES'
A DSPATR(HI)
A 2 73DATE
A EDTCDE(Y)
A 3 5'BUILDMV(FMT001)'
A DSPATR(UL)
A 3 73TIME
A DSPATR(UL)
A 6 25'PHYSICAL FILE NAME....'
A FILE 10A I 6 49
A 7 25'OBJECT LIBRARY NAME...'
A LIB1 10A B 7 49
A 9 25'RPG PROGRAM NAME......'
A PROG 10A I 9 49
A 10 25'SOURCE LIBRARY NAME...'
A LIB2 10A B 10 49
A 23 7'CMD03:'
A DSPATR(RI)
A 23 14'EXIT'
A DSPATR(HI)
****************** End of data ***********
BUILDMVILC - CLP program to collect parameters and call program.
PGM
DCL VAR(&FILE) TYPE(*CHAR) LEN(10)
DCL VAR(&LIB1) TYPE(*CHAR) LEN(10) +
VALUE('*LIBL ')
DCL VAR(&PROG) TYPE(*CHAR) LEN(10)
DCL VAR(&LIB2) TYPE(*CHAR) LEN(10) +
VALUE('TESTLIB ')
DCLF FILE(BUILDMV) RCDFMT(FMT001)
CLRPFM FILE(DSPFFDPF)
CHGVAR VAR(&IN30) VALUE('0')
SNDRCVF RCDFMT(FMT001)
IF COND(*IN03 = '1') THEN(GOTO CMDLBL(END001))
IF COND(&FILE = ' ') THEN(GOTO CMDLBL(END001))
IF COND(&PROG = ' ') THEN(GOTO CMDLBL(END001))
IF COND(&LIB1 = ' ') THEN(GOTO CMDLBL(END001))
IF COND(&LIB2 = ' ') THEN(GOTO CMDLBL(END001))
DSPFFD FILE(&LIB1/&FILE) OUTPUT(*OUTFILE) +
OUTFILE(DSPFFDPF)
OVRDBF FILE(QRPGLESRC) TOFILE(&LIB2/QRPGLESRC) +
MBR(&PROG)
CALL PGM(BUILDMVILE)
CLRPFM FILE(DSPFFDPF)
END001: ENDPGM
****************** End of data ***************
BUILDMVILE - Program to create RPGILE source records.
FDSPFFDPF IP E DISK
FQRPGLESRC O E DISK RENAME(QRPGLESRC:OUTPUT)
D ARA S 1 DIM(100)
D DS
D BYTEA 1 3
D BYTE1 1 1 0
D BYTE2 2 2 0
D BYTE3 3 3 0
D BYTE1A 1 1
D BYTE2A 2 2
D BYTE3A 3 3
C *IN(99) IFEQ '0'
C MOVE '1' *IN(99)
C Z-ADD 1 SEQ 6 2
C END
C*
C*
C MOVE *BLANKS BLANK1 80
C MOVEA BLANK1 ARA(1)
C MOVE 'C' ARA(6)
C WHFLDD IFEQ 0
C MOVEA 'MOVE ' ARA(26)
C MOVEA '*BLANKS' ARA(36)
C MOVE ' ' DECA 1
C Z-ADD WHFLDB BYTE# 3 0
C MOVE BYTE# BYTEA 3
C ELSE
C MOVEA 'Z-ADD' ARA(26)
C MOVEA '0' ARA(36)
C Z-ADD WHFLDP DEC 1 0
C MOVE DEC DECA 1
C Z-ADD WHFLDD BYTE# 3 0
C MOVE BYTE# BYTEA 3
C END
C* MOVEA WHFLDI ARA(36)
C MOVEA WHFLDI ARA(50)
C BYTE1 IFGT 0
C MOVE BYTE1A ARA(66)
C MOVE BYTE2A ARA(67)
C MOVE BYTE3A ARA(68)
C ELSE
C BYTE2 IFGT 0
C MOVE BYTE2A ARA(67)
C MOVE BYTE3A ARA(68)
C ELSE
C MOVE BYTE3A ARA(68)
C END
C END
C MOVEA DECA ARA(70)
C MOVEL WHFTXT TEXT 10
C MOVEA TEXT ARA(81)
C MOVEA ARA SRCDTA
C MOVE UDATE SRCDAT
C Z-ADD SEQ SRCSEQ
C WRITE OUTPUT
C ADD 1 SEQ
C*
This was first published in February 2003