The DSPFFD command on the AS/400 is quite cumbersome to read through. So, I wrote a routine that will give me the field descriptions and sizes along with a record size summary, which encapsulates the detail found in the DSPFFD command. I call mine DFD. It uses the DSPFFD command to output to a file in QTEMP. Then I run a query over the file, selecting those fields that I want to display or print. In the command and CLP I designate whether to display the query output or to print the output using the query output options on the RUNQRY command. It's really quick, the tech support and programming staff use it regularly and are grateful for not having to dig through the DSPFFD display.
DFD Command Specifications
Command:
CMD PROMPT('Display File Field Description')
PARM KWD(FILE) TYPE(*CHAR) LEN(11) MIN(1) +
PROMPT('File Name -' 01)
PARM KWD(LIBRARY) TYPE(*CHAR) LEN(11) MIN(1) +
PROMPT('Library Name -' 02)
PARM KWD(OUTPUT) TYPE(*CHAR) LEN(11) RSTD(*YES) +
DFT(*DISPLAY) VALUES(*DISPLAY *PRINTER) +
MIN(0) PROMPT('Output Device -' 03)
Program:
PGM PARM(&FILE &LIBRARY &OUTPUT)
DCL VAR(&FILE) TYPE(*CHAR) LEN(11)
DCL VAR(&LIBRARY) TYPE(*CHAR) LEN(11)
Requires Free Membership to View
Register today to access targeted resources from our editorial writers and independent industry experts including news, tips, and advice to help you do your job more efficiently and effectively. Stay informed on the hottest topics and biggest challenges faced by IT professionals working with iSeries products and services.
DCL VAR(&OUTPUT) TYPE(*CHAR) LEN(11)
DLTF QTEMP/DDSLIST
MONMSG MSGID(CPF0000)
DSPFFD FILE(&LIBRARY/&FILE) OUTPUT(*OUTFILE) +
OUTFILE(QTEMP/DDSLIST)
MONMSG MSGID(CPF3012 CPF3064) EXEC(DO)
SNDPGMMSG MSG('File Not Found!!! Command Aborted!!!')
GOTO CMDLBL(EXIT)
ENDDO
RUNQRY QRY(COMMON/DSPFFDQ) QRYFILE((QTEMP/DDSLIST)) +
OUTTYPE(&OUTPUT) OUTFORM(*DETAIL)
EXIT:
ENDPGM
Query:
1. First to do is to run the Command "DSPFFD", going to and Outfile in Library OTEMP
2.
Create a Query, placing it in QGPL or a library common to all users. a. File . . . . . . . . . DDSLIST Name, F4 for list
Library . . . . . QTEMP Name, *LIBL, F4 for list
Member . . . . . . *FIRST Name, *FIRST, F4 for list
Format . . . . . . QWHDRFFD Name, *FIRST, F4 for list
b. Select and Sequence:
Seq Field Text Len Dec
10 WHFILE File 10
20 WHFTYP Type of file: P=Phy, L=Log, D=Dev 1
30 WHNAME Record format 10
40 WHFLDE External field name 10
50 WHFLDB Field length in bytes 5 0
60 WHFLDP Decimal positions to right of decimal 2 0
70 WHFLDD Number of digits 2 0
80 WHIBO Input buffer position 5 0
90 WHFTXT Field text description 50
c. Set up a Sort Pattern
Sort
Prty A/D Field Text Len Dec
10 A WHFILE File 10
20 A WHFTYP Type of file: P=Physical, L=Logical, D=D 1
30 A WHNAME Record format 10
d. Set Up Report for Selected fields accepting defaults
e. Report Summary Functions
---Options--- Field Text
5 WHFLDE External field name
1 5 WHFLDB Field length in bytes
f. Define Report Breaks
Break Sort
Level Prty Field Text
1 10 WHFILE File
1 20 WHFTYP Type of file: P=Physical, L=Logical
1 30 WHNAME Record format
g. Output Type and Output form
Output type . . . . . . . . . . . 1 1=Display
2=Printer
3=Database file
Form of output . . . . . . . . . . 1 1=Detail
2=Summary only
This will set up will place the output to your display when the Command DFD is executed, unless you change the default for the Command to place the output to a printer (see values clause in third parm of DFD Command source).
This was first published in April 2001