11
Fri, Oct
6 New Articles

Getting Into Outfiles

CL
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

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 
BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

Support MC Press Online

$

Book Reviews

Resource Center

  • SB Profound WC 5536 Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application. You can find Part 1 here. In Part 2 of our free Node.js Webinar Series, Brian May teaches you the different tooling options available for writing code, debugging, and using Git for version control. Brian will briefly discuss the different tools available, and demonstrate his preferred setup for Node development on IBM i or any platform. Attend this webinar to learn:

  • SB Profound WP 5539More than ever, there is a demand for IT to deliver innovation. Your IBM i has been an essential part of your business operations for years. However, your organization may struggle to maintain the current system and implement new projects. The thousands of customers we've worked with and surveyed state that expectations regarding the digital footprint and vision of the company are not aligned with the current IT environment.

  • SB HelpSystems ROBOT Generic IBM announced the E1080 servers using the latest Power10 processor in September 2021. The most powerful processor from IBM to date, Power10 is designed to handle the demands of doing business in today’s high-tech atmosphere, including running cloud applications, supporting big data, and managing AI workloads. But what does Power10 mean for your data center? In this recorded webinar, IBMers Dan Sundt and Dylan Boday join IBM Power Champion Tom Huntington for a discussion on why Power10 technology is the right strategic investment if you run IBM i, AIX, or Linux. In this action-packed hour, Tom will share trends from the IBM i and AIX user communities while Dan and Dylan dive into the tech specs for key hardware, including:

  • Magic MarkTRY the one package that solves all your document design and printing challenges on all your platforms. Produce bar code labels, electronic forms, ad hoc reports, and RFID tags – without programming! MarkMagic is the only document design and print solution that combines report writing, WYSIWYG label and forms design, and conditional printing in one integrated product. Make sure your data survives when catastrophe hits. Request your trial now!  Request Now.

  • SB HelpSystems ROBOT GenericForms of ransomware has been around for over 30 years, and with more and more organizations suffering attacks each year, it continues to endure. What has made ransomware such a durable threat and what is the best way to combat it? In order to prevent ransomware, organizations must first understand how it works.

  • SB HelpSystems ROBOT GenericIT security is a top priority for businesses around the world, but most IBM i pros don’t know where to begin—and most cybersecurity experts don’t know IBM i. In this session, Robin Tatam explores the business impact of lax IBM i security, the top vulnerabilities putting IBM i at risk, and the steps you can take to protect your organization. If you’re looking to avoid unexpected downtime or corrupted data, you don’t want to miss this session.

  • SB HelpSystems ROBOT GenericCan you trust all of your users all of the time? A typical end user receives 16 malicious emails each month, but only 17 percent of these phishing campaigns are reported to IT. Once an attack is underway, most organizations won’t discover the breach until six months later. A staggering amount of damage can occur in that time. Despite these risks, 93 percent of organizations are leaving their IBM i systems vulnerable to cybercrime. In this on-demand webinar, IBM i security experts Robin Tatam and Sandi Moore will reveal:

  • FORTRA Disaster protection is vital to every business. Yet, it often consists of patched together procedures that are prone to error. From automatic backups to data encryption to media management, Robot automates the routine (yet often complex) tasks of iSeries backup and recovery, saving you time and money and making the process safer and more reliable. Automate your backups with the Robot Backup and Recovery Solution. Key features include:

  • FORTRAManaging messages on your IBM i can be more than a full-time job if you have to do it manually. Messages need a response and resources must be monitored—often over multiple systems and across platforms. How can you be sure you won’t miss important system events? Automate your message center with the Robot Message Management Solution. Key features include:

  • FORTRAThe thought of printing, distributing, and storing iSeries reports manually may reduce you to tears. Paper and labor costs associated with report generation can spiral out of control. Mountains of paper threaten to swamp your files. Robot automates report bursting, distribution, bundling, and archiving, and offers secure, selective online report viewing. Manage your reports with the Robot Report Management Solution. Key features include:

  • FORTRAFor over 30 years, Robot has been a leader in systems management for IBM i. With batch job creation and scheduling at its core, the Robot Job Scheduling Solution reduces the opportunity for human error and helps you maintain service levels, automating even the biggest, most complex runbooks. Manage your job schedule with the Robot Job Scheduling Solution. Key features include:

  • LANSA Business users want new applications now. Market and regulatory pressures require faster application updates and delivery into production. Your IBM i developers may be approaching retirement, and you see no sure way to fill their positions with experienced developers. In addition, you may be caught between maintaining your existing applications and the uncertainty of moving to something new.

  • LANSAWhen it comes to creating your business applications, there are hundreds of coding platforms and programming languages to choose from. These options range from very complex traditional programming languages to Low-Code platforms where sometimes no traditional coding experience is needed. Download our whitepaper, The Power of Writing Code in a Low-Code Solution, and:

  • LANSASupply Chain is becoming increasingly complex and unpredictable. From raw materials for manufacturing to food supply chains, the journey from source to production to delivery to consumers is marred with inefficiencies, manual processes, shortages, recalls, counterfeits, and scandals. In this webinar, we discuss how:

  • The MC Resource Centers bring you the widest selection of white papers, trial software, and on-demand webcasts for you to choose from. >> Review the list of White Papers, Trial Software or On-Demand Webcast at the MC Press Resource Center. >> Add the items to yru Cart and complet he checkout process and submit

  • Profound Logic Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application.

  • SB Profound WC 5536Join us for this hour-long webcast that will explore:

  • Fortra IT managers hoping to find new IBM i talent are discovering that the pool of experienced RPG programmers and operators or administrators with intimate knowledge of the operating system and the applications that run on it is small. This begs the question: How will you manage the platform that supports such a big part of your business? This guide offers strategies and software suggestions to help you plan IT staffing and resources and smooth the transition after your AS/400 talent retires. Read on to learn: