Steps to analyze the outfile format.
1. Run the command (refer to Figures 1 and 2 for options).
2. Use DSPFFD to view the file structure.
3. Look at the outfile data with CPYF or Query.
4. Run the command with output to the workstation.
Use the outfile as an externally defined file.
Using an outfile requires a thorough investigation.
Brief: Many system-supplied and QUSRTOOL commands have an OUTFILE parameter that can be used to direct system information to a database file. Although outfiles are not difficult to use, you must know which commands provide this capability and how to interpret the file. Once you have the outfile, you can use it in your programs like any other database file.
If you have not already written or worked with AS/400 commands that use outfiles, chances are that you will at some point. A casual review of recent issues of Midrange Computing magazine shows several instances where outfiles are used in utility and sample programs, so it is not difficult to locate examples. A more difficult task, however, is grasping the concepts and basics of outfiles, which are seldom discussed.
Outfiles constitute one of the methods you can use to get your system to tell you about itself. They are an option in addition to displays and printed listings of system-maintained information. Typically, you can use outfiles to get lists of objects in a library, members or fields in a file, hardware and software resources, authorities, distributions and other configuration data. Unfortunately, you cannot assume that all system information commands (the WRK and DSP commands) supply an outfile option; in fact, many of them do not.
The basic idea of an outfile (which is a shortened form of output file) is that certain system commands can be directed to write their output to a predefined database file, rather than to your display or to a printed listing. You can use that database file in your programs, exactly as you would a file that you create.
There are really only two issues that you need to be aware of when creating a program that uses an outfile. First, is there an outfile available for the information that you need? Second, if there is such an outfile, what is the format of the information?
Commands That Supply Outfiles
A list of system-supplied commands that provide an OUTFILE parameter is shown in 1. (The chart is adapted from the Database Guide, SC41-9659, CD book QPRG1DAT.) Also shown in the figure are the names of the system-supplied model outfiles and the record formats in the outfiles.
A list of system-supplied commands that provide an OUTFILE parameter is shown in Figure 1. (The chart is adapted from the Database Guide, SC41-9659, CD book QPRG1DAT.) Also shown in the figure are the names of the system-supplied model outfiles and the record formats in the outfiles.
The first step in using an outfile is either to review the chart to determine if there is a command that supplies the type of information you need in an outfile, or to prompt for the command and see if there is an OUTFILE parameter. In addition to the system-supplied commands that provide an outfile, there are 20 commands in the QUSRTOOL library that convert system information into outfiles. Those commands, the CVT commands, are listed in 2.
The first step in using an outfile is either to review the chart to determine if there is a command that supplies the type of information you need in an outfile, or to prompt for the command and see if there is an OUTFILE parameter. In addition to the system-supplied commands that provide an outfile, there are 20 commands in the QUSRTOOL library that convert system information into outfiles. Those commands, the CVT commands, are listed in Figure 2.
If a system or QUSRTOOL command does not write the information you want to an outfile, you are faced with the unpleasant prospect of writing a program that retrieves the printed information and writes it to an outfile. For example, the Display Override (DSPOVR) command does not provide an OUTFILE parameter, even though you might want to have the output directed to a database file from that command. The usual practice with a command like DSPOVR is to run it with output to a printed listing, then use the Copy Spooled File (CPYSPLF) command to copy the spool file to a database file. You then run a special customized program to read the CPYSPLF file, picking out the fields you need and writing them to a database file that is used as your outfile. That's your course of action if you want to create your own command with outfile capability, and it's the approach that most of the QUSRTOOL CVT commands use. Alter-natively, if you do not need to create a general purpose command, you can simply code the spool file analysis in the program and process the CPYSPLF file directly. If you use one of these methods, be aware that you'll need to check your program or command with each new release of OS/400, since the format of the printed listing could change.
Files That Are Supplied
For the commands shown in1 and 2, the system-supplied outfiles and record formats are shown. You can determine the name of these outfiles as well as the record format for some of the commands by using the Help key on the OUTFILE parameter when the command prompter is used. Most of the commands provide only one outfile format, although there are a few (such as Display File Description [DSPFD], Display Hardware Resources [DSPHDWRSC] and Display Journal [DSPJRN]) that work with more than one format. The outfiles listed in 1 are located in library QSYS. These files don't contain data-they are used for definition only. Like most other IBM-supplied objects, you should not change, delete or move them.
For the commands shown in Figures 1 and 2, the system-supplied outfiles and record formats are shown. You can determine the name of these outfiles as well as the record format for some of the commands by using the Help key on the OUTFILE parameter when the command prompter is used. Most of the commands provide only one outfile format, although there are a few (such as Display File Description [DSPFD], Display Hardware Resources [DSPHDWRSC] and Display Journal [DSPJRN]) that work with more than one format. The outfiles listed in Figure 1 are located in library QSYS. These files don't contain data-they are used for definition only. Like most other IBM-supplied objects, you should not change, delete or move them.
You will find that there are no DDS source members provided for the system- supplied outfiles. The DDS source members are included for the QUSRTOOL commands (in source file QUSRTOOL/QATTDDS), although you will have to do some research to match up the DDS source member with the corresponding outfile for a QUSRTOOL command. 2 lists the QUSRTOOL outfiles with the names that are used when the commands are executed.
You will find that there are no DDS source members provided for the system- supplied outfiles. The DDS source members are included for the QUSRTOOL commands (in source file QUSRTOOL/QATTDDS), although you will have to do some research to match up the DDS source member with the corresponding outfile for a QUSRTOOL command. Figure 2 lists the QUSRTOOL outfiles with the names that are used when the commands are executed.
Although the DDS is not supplied, if you know the name of the outfile for a system-supplied command you can determine what information is available. You accomplish that by running the Display File Field Description (DSPFFD) command for the outfile. This command displays or prints a list of fields in the file. You can review the list to see the field names, types, lengths and descriptions-the same field level information you would get from a DDS source member. 3 presents a sample listing from DSPFFD. For a QUSRTOOL command, you should first run the command (to generate the outfile) and then run the DSPFFD command for the outfile.
Although the DDS is not supplied, if you know the name of the outfile for a system-supplied command you can determine what information is available. You accomplish that by running the Display File Field Description (DSPFFD) command for the outfile. This command displays or prints a list of fields in the file. You can review the list to see the field names, types, lengths and descriptions-the same field level information you would get from a DDS source member. Figure 3 presents a sample listing from DSPFFD. For a QUSRTOOL command, you should first run the command (to generate the outfile) and then run the DSPFFD command for the outfile.
Specifying a File to Use as an Outfile
When you run a command that supports an outfile, you name the outfile and indicate the library in which you want the file to be located. The name you use can be the same as the system-supplied name or any other name that you want. You can choose any library for the outfile; however, you cannot specify library QSYS if you use the system-supplied outfile name. If you do, escape message CPF3072 is sent, indicating that the file is a system file.
All of the system-supplied commands with outfile support (with the exception of the RUNQRY command), and most of the QUSRTOOL commands, include an output member (OUTMBR) parameter. For the system-supplied commands, this parameter names the member in the outfile that is to contain the records. A second part of the OUTMBR parameter is used to stipulate whether to add records to existing records in the member or replace existing records. The default for the member name is *FIRST and the default for the add/replace option is *REPLACE. (The QUSRTOOL commands use separate OUTMBR and REPLACE parameters for these options, rather than combining them into the one OUTMBR parameter.)
When you run a command to an outfile, you can use a new or existing file. If you choose an existing file, you must ensure that the format of the existing file is the same as the format of the model file. For example, you cannot direct the output from a Display File Description (DSPFD) command to an outfile created by the Display Directory (DSPDIR) command. If the outfile name that you selected does not exist, a copy of the outfile is created from the model outfile used by the command. If you do not designate a member name, a member is added to the file with the same name as the file.
When you run an outfile-capable command several times, using the same file name, the values specified for the OUTMBR parameter control how the data is written. If you assign a member name that does not exist in the outfile, the member is added and records are written to that member. For an existing member, the add/replace option is used.
Determining What's in an Outfile
As mentioned, the primary method used to determine what information is in an outfile is to use the system-supplied DSPFFD command. The majority of the fields available in any outfile are self-explanatory, but there are instances where the fields or the values that are put into those fields are unclear. Unfortunately, I have found minimal documentation on outfile fields, other than the 50-character text description associated with the field.
I have discovered that the best way to understand what is in an outfile is to actually run the command to create the outfile, run the DSPFFD command to list the fields in the outfile, and then dump some of the outfile records, either with the CPYF command or with a simple query. Since I am usually only interested in a few of the fields, I try to identify those and ignore the rest. You can sometimes spot those fields more quickly with the file dump rather than the DSPFFD listing. If I get really stuck or am unclear about the values in a field, I run the command with output to my terminal and review the fields on the display.
For the commands that provide multiple outfiles, such as the DSPFD command, you may want to run the command first with the display or print option. Once you determine which combination of command parameters provides you with the required information, you can run the command with the outfile option.
Using Outfiles in Your Programs
After running a command that creates an outfile, you can use the file like any other database file. You can copy from and to it, run queries against it, sort it or build logical files over it, or use it in a CL or other HLL program.
Outfiles are externally defined files in your programs and, like any other externally defined file, the outfile must exist before compiling the program. If you are using a system-supplied outfile, you can simply specify the name of the model outfile on your program's file definition statement (the RPG F- spec); the file definition is found in library QSYS. Unlike the system- supplied outfiles, the QUSRTOOL outfiles do not exist until the command that uses them is run. For a QUSRTOOL outfile, you will have to run the command first to create a version of the outfile, using the same name for the outfile as the name used in your program.
Because outfiles are usually temporary files that are needed only for the duration of the program that uses them, you will typically designate QTEMP as the library to contain the outfile. You must be sure that when your program runs it is able to locate the outfile you just created. The safest technique is to use the OVRDBF command to direct your program to open the outfile in the library where the command created it. As an alternative to creating the outfile in QTEMP or another library, you can set up the outfiles that you use as "permanent" work files. (See "TechTalk" in the February 1992 issue of Midrange Computing for a discussion of using permanent work files.)
Keyed Access to an Outfile
If you want to use an outfile with a keyed access path, you can employ a technique that does not involve creating a logical file over the outfile. The file is created as a physical file with the DDS FORMAT keyword because the file is sharing the format of the system-supplied outfile. The record format name is the same as the format name in the system-supplied file. This is similar to using the CRTDUPOBJ command to create a duplicate of the file. However, because we are duplicating the file in DDS, we can also add to the definition of the duplicate file, specifically by adding key fields to indicate the required access path.
To use this technique, you first create the DDS specifications for the outfile that you are going to use, similar to the sample shown in 4. Then you run the Create Physical File (CRTPF) command from those specifications. Once the file is created, you can name it on the OUTFILE parameter of the appropriate command. Because it is an existing file with the same record format, the command can write the records to the file. Your programs can then use the file as a keyed file. However, you cannot define select/omit fields, because you are creating a physical file. If you need that capability, you'll have to define a logical file over the outfile that you create.
To use this technique, you first create the DDS specifications for the outfile that you are going to use, similar to the sample shown in Figure 4. Then you run the Create Physical File (CRTPF) command from those specifications. Once the file is created, you can name it on the OUTFILE parameter of the appropriate command. Because it is an existing file with the same record format, the command can write the records to the file. Your programs can then use the file as a keyed file. However, you cannot define select/omit fields, because you are creating a physical file. If you need that capability, you'll have to define a logical file over the outfile that you create.
The sidebar on page 70 illustrates how you can use an outfile in a CL program and gives you a solution to one of the pitfalls of this technique. As additional examples, I want to refer you to several recent articles in Midrange Computing that use outfile processing. Those articles are listed in 5. The listing is fairly representative of the frequency with which outfiles are used. As you can tell from the article titles, most of the usage falls into the utility program arena.
The sidebar on page 70 illustrates how you can use an outfile in a CL program and gives you a solution to one of the pitfalls of this technique. As additional examples, I want to refer you to several recent articles in Midrange Computing that use outfile processing. Those articles are listed in Figure 5. The listing is fairly representative of the frequency with which outfiles are used. As you can tell from the article titles, most of the usage falls into the utility program arena.
If you are unfamiliar with using files in CL programs, you should pay particular attention to the "Files in CL" article. That example provides a shell program that you can use to process a file in a CL program. Many of the examples of using outfiles are of the outfile being used in a CL program, although there is no reason why the outfile cannot be used in any other type of program.
Investigation Pays Off
Outfiles are really no different from any other type of database file that you can create and use. The main considerations for using outfiles are determining what is available and the meaning of the information, which involves some research and experimentation on your part. However, once you have tried a few examples, you will find a pattern that you can use to locate, examine and use an outfile.
Examples of Using Outfiles
One of the problems you may encounter is processing an outfile in the same CL program that creates it. To process the file, the CL program needs the Declare File (DCLF) command, which assumes that the file already exists. But the file may not exist since the command that creates the outfile hasn't been executed yet (the command will be executed in the program). It's a Catch-22 situation, but there's a way out.
Remember that the model files for system-supplied outfiles exist in QSYS. To solve the problem, use these four steps:
1. Code your DCLF command using the system-supplied file name in QSYS, but without actually referencing QSYS. Don't use any library qualifier. When you compile the program, the compiler will find the file in QSYS.
2. Code the command that produces the outfile, choosing in the OUTFILE parameter the same name as the model file, but qualified with QTEMP or any other library (except QSYS). QTEMP is recommended, however, because in that case the file is automatically deleted when the job ends.
3. Code an Override with Database File (OVRDBF) command, naming the model file in the FILE parameter and the actual file you produced (in QTEMP or elsewhere) in the TOFILE parameter.
4. Process the file with the Receive File (RCVF) command which will read the copy in QTEMP because of the previous OVRDBF.
The skeleton program depicted in the figure below illustrates the process. If you adopt this approach, you can compile the program without trouble, since the file declared in DCLF exists in QSYS.
Skeleton CL Program Using an Outfile
PROGRAM: PGM DCLF FILE(QADSPOBJ) DSPOBJD OBJ(*ALL) OBJTYPE(*DEVD) OUTPUT(*OUTFILE) + OUTFILE(QTEMP/QADSPOBJ) OVRDBF FILE(QADSPOBJ) TOFILE(QTEMP/QADSPOBJ) LOOP: RCVF MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(END_LOOP)) /* Include commands to process the record */ GOTO CMDLBL(LOOP) END_LOOP: /* Etc. */ ENDPGM
References:
Database Guide, SC41-9658 (CD book QPRG1DAT)
Programming: Reference Summary, SX41-0028 (CD book QSYSSUM)
System Programmer's Interface Reference, SC41-8223 (CD book QPRG2SPI)
Getting Into Outfiles
Figure 1 Command that support OUTFILE parameter
Figure 1: Commands That Support OUTFILE Parameter Model Format Command File Name Notes DSPAUTHLR QADSHLR QSYDSHLR DSPAUTL QAOBJAUT QSYDSAUT DSPAUTLOBJ QADALO QSYDALO DSPDBR QADSPDBR QWHDRDBR DSPDIR QAOSDIRO OSDIRE OUTFILFMT(*TYPE1) QAOSDIRB OSDIRB OUTFILFMT(*TYPE2) DETAIL(*BASIC) QAOSDIRF OSDIRF OUTFILFMT(*TYPE2) DETAIL(*FULL) QAOSDIRX OSDIRX OUTFILFMT(*TYPE3) DETAIL(*FULL) DSPDSTL QAOSDSTO OSDSTL DSPFD QAFDACCP QWHFDACP TYPE(*ACCPTH) QAFDBASI QWHFDBAS TYPE(*BASATR) QAFDCSEQ QWHFDSEQ TYPE(*SEQ) QAFDJOIN QWHFDJN TYPE(*JOIN) QAFDMBR QWHFDMBR TYPE(*MBR) QAFDMBRL QWHFDML TYPE(*MBRLIST) QAFDRFMT QWHFDFMT TYPE(*RCDFMT) QAFDSELO QWHFDSO TYPE(*SELECT) QAFDSPOL QWHFDSPL TYPE(*SPOOL) QAFDBSC QWHFDBSC TYPE(*ATR) FILEATR(*BSCF) QAFDCMN QWHFDCMN TYPE(*ATR) FILEATR(*CMNF) QAFDDDM QWHFDDDM TYPE(*ATR) FILEATR(QWHFDDDM) QAFDDKT QWHFDDKT TYPE(*ATR) FILEATR(*DKTF) QAFDDSP QWHFDDSP TYPE(*ATR) FILEATR(*DSPF) QAFDICF QWHFDICF TYPE(*ATR) FILEATR(*ICFF) QAFDLGL QWHFDLGL TYPE(*ATR) FILEATR(*LF) QAFDPHY QWHFDPHY TYPE(*ATR) FILEATR(*PF) QAFDPRT QWHFDPRT TYPE(*ATR) FILEATR(*PRTF) QAFDSAV QWHFDSAV TYPE(*ATR) FILEATR(*SAVF) QAFDTAP QWHFDTAP TYPE(*ATR) FILEATR(*TAPF) DSPFLR QADSPDOC DOCDTL TYPE(*DOC) QADSPFLR FLRDTL TYPE(*FLR) DSPHDWRSC QARZDCMN QRZDCMN TYPE(*CMN) QARZDLWS QRZDLWS TYPE(*LWS) QARZDPRC QRZDPRC TYPE(*PRC) QARZDSTG QRZDSTG TYPE(*STG) QARZDTRA QRZDTRA TYPE(*TRA) DSPLCLHDW QARZHWOF QARZHDWD DSPJRN QADSPJRN QJORDJE OUTFILFMT(*TYPE1) QADSPJR2 QJORDJE2 OUTFILFMT(*TYPE2) QADSPJR3 QJORDJE3 OUTFILFMT(*TYPE3) QAWCTPJE QAWCTPJE JRNCDE(P) ENTTYP(TP) QADXERLG QDXERLOG JRNCDE(S) ENTTYP(XE) QADXJRNL QDXLGLOG JRNCDE(S) ENTTYP(XL) QASYAFJE QASYAFJE JRNCDE(T) ENTTYP(AF) QASYCAJE QASYCAJE JRNCDE(T) ENTTYP(CA) QASYCPJE QASYCPJE JRNCDE(T) ENTTYP(CP) QASYDOJE QASYDOJE JRNCDE(T) ENTTYP(DO) QASYDSJE QASYDSJE JRNCDE(T) ENTTYP(DS) QASYJDJE QASYJDJE JRNCDE(T) ENTTYP(JD) QASYNAJE QASYNAJE JRNCDE(T) ENTTYP(NA) QASYOWJE QASYOWJE JRNCDE(T) ENTTYP(OW) QASYPAJE QASYPAJE JRNCDE(T) ENTTYP(PA) QASYPSJE QASYPSJE JRNCDE(T) ENTTYP(PS) QASYPWJE QASYPWJE JRNCDE(T) ENTTYP(PW) QASYRAJE QASYRAJE JRNCDE(T) ENTTYP(RA) QASYRJJE QASYRJJE JRNCDE(T) ENTTYP(RJ) QASYROJE QASYROJE JRNCDE(T) ENTTYP(RO) QASYRPJE QASYRPJE JRNCDE(T) ENTTYP(RP) QASYRUJE QASYRUJE JRNCDE(T) ENTTYP(RU) QASYSEJE QASYSEJE JRNCDE(T) ENTTYP(SE) QASYSVJE QASYSVJE JRNCDE(T) ENTTYP(SV) QAJBACG QWTJAJBE QAPTACG QSPJAPTE QAZDALLG QZALLLOG (not in QSYS) QAZDCFLG QZDCFLOG QAZDERLG QZDERLOG QAZDJRNL QZDLGLOG QAZDRTLG QZDRTLOG DSPOBJAUT QAOBJAUT QSYDSAUT DSPOBJD QADSPOBJ QLIDOBJD DSPPGMADP QADPGMAD QADPGMAD DSPPGMREF QADSPPGM QWHDRPPR DSPPRB QASXPBOF QSXPBOF TYPE(*BASIC) QASXCAOF QSXCAOF TYPE(*CAUSE) QASXFXOF QSXFXOF TYPE(*FIX) QASXTXOF QSXTXOF TYPE(*USRTXT) QASXSDOF QSXSDOF TYPE(*SPTDTA) DSPPTF QADSPPTF QSCPTF DSPSFWRSC QARZLCOF QARZLCGD DSPUSRPRF QADSPUPA QSYDSUPA PRTDOC QAOPOUFL RECORD PRTERRLOG QAPRTELG QSCELOG QRYDOCLIB QAOSIQDL OSQDL QRYDST QAOSILIN OSLIN OPTION(*IN) QAOSILOT OSLOUT OPTION(*OUT) RCVDST QAOSIRCV OSRVCD RTVDOC QAOSIRTV OSRTVD RUNQRY (based on Query request) SAVDLO QAOJSAVO OJSDLO STRCPYSCN QASCCPY OSCCPY1 TRICF TQAIFTRCF QIFTRC TRCJOB QATRCJOB QSCTJTRC WRKNETF QANFDNTF QNFDNTF
Getting Into Outfiles
Figure 2 QUSRTOOL CVT commands
Figure 2: QUSRTOOL CVT Commands Model Format Command Description File Name CVTALLJOBQ Convert all job queues ALLJOBQP AJRCD CVTALLOUTQ Convert all output queues ALLOUTQP AORCD CVTCFGSTS Convert configuration status CFGSTSP CFRCD CVTDSKSTS Convert disk status DSKSTSP DSRCD CVTJOBQ Convert job queue JOBQP JQRCD CVTJRNA Convert journal attributes JRNFILP JRNFILR JRNACPP JRNACPR JRNRCVP JRNRCVR CVTJRNRCVA Convert journal receiver attributes JRNRCVAP JRNRCVAR CVTMSGF Convert message file MSGFP MSGFR CVTOBJLCK Convert object locks OBJLCKP OBJLCKR CVTOUTQ Convert output queue OUTQP SPLREC CVTPGMA Convert program attributes PGMATRP PGRCD CVTQHST Convert QHST file QHSTP QHSTR CVTSAVFD Convert SAVF description SAVFDP SAVFDR CVTSYSSTS Convert system status SYSSTSP SSRCD CVTTAPSAVD Convert tape save description TAPSAVDP TAPSAVDR CVTVOLSTAT Convert volume statistics VOLSTATP VOLSTATR CVTWRKACT Convert WRKACTJOB WRKACTP WRKACTR CVTWRKSBS Convert WRKSBS WRKSBSP WRKSBSR CVTWRKSPLF Convert WRKSPLF WRKSPLFP SFREC CVTWRKUSR Convert WRKUSRJOB WRKUSRP UJRCD
Getting Into Outfiles
Figure 3 Sample listing of DSPFFD
Figure 3: Sample Listing of DSPFFD 5738SS1 V2R1M1 920306 Display File Field Description Input parameters File . . . . . . . . . . . . . . . . . . . : QADSPOBJ Library . . . . . . . . . . . . . . . . . : *LIBL File Information File . . . . . . . . . . . . . . . . . . . : QADSPOBJ Library . . . . . . . . . . . . . . . . . : QSYS File location . . . . . . . . . . . . . . . : *LCL Externally described . . . . . . . . . . . : Yes Number of record formats . . . . . . . . . : 1 Type of file . . . . . . . . . . . . . . . : Physical File creation date . . . . . . . . . . . . : 10/22/90 Text 'description'. . . . . . . . . . . . . : System supplied outfile for DSPOBJD command. Record Format Information Record format . . . . . . . . . . . . . . . : QLIDOBJD Format level identifier . . . . . . . . . . : 3DE02B8DA1EA0 Number of fields . . . . . . . . . . . . . : 75 Record length . . . . . . . . . . . . . . . : 471 Format text . . . . . . . . . . . . . . . . : Object description Field Level Information Data Field Buffer Buffer Field Column Field Type Length Length Position Usage Heading ODDCEN CHAR 1 1 1 Both Display Century Field text . . . . . . . . . . . . . . . : Display century Coded Character Set Identifier . . . . . : 65535 ODDDAT CHAR 6 6 2 Both Display Date Field text . . . . . . . . . . . . . . . : Display date: format- Job date format Coded Character Set Identifier . . . . . : 65535 ODDTIM CHAR 6 6 8 Both Display Time Field text . . . . . . . . . . . . . . . : Display time Coded Character Set Identifier . . . . . : 65535 ODLBNM CHAR 10 10 14 Both Library Field text . . . . . . . . . . . . . . . : Library Coded Character Set Identifier . . . . . : 65535 ODOBNM CHAR 10 10 24 Both Object Field text . . . . . . . . . . . . . . . : Object Coded Character Set Identifier . . . . . : 65535
Getting Into Outfiles
Figure 4 DDS for adding a key to an existing format
Figure 4: DDS for Adding a Key to an Existing Format ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ... 6 ...+... 7 A* FILE FOR DSPFFD - KEYED ON -LIB/FILE/FIELD A R QWHDRFFD FORMAT(QADSPFFD) A K WHLIB A K WHFILE A K WHFLDI ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ... 6 ...+... 7
Getting Into Outfiles
Figure 5 Examples of using outfiles in MC articles
Figure 5: Examples of Using Outfiles in Midrange Computing Articles July 1992 Selective Clear Output Queue Command, CVTOUTQ June 1992 Under New Ownership, DSPOBJD Get a Handle on Object Authorities, DSPOBJD, DSPOBJAUT What Programs Use a File (Tech Talk), DSPOBJD, DSPPGMREF Files in CL (Tech Talk), DSPOBJD (CL shell for processing files) May 1992 Reorganize Your Data Queues, DSPOBJAUT
LATEST COMMENTS
MC Press Online