Professional Documents
Culture Documents
Introductory Reference To The IBM AS400
Introductory Reference To The IBM AS400
Sign On
System . . . . . : MKTAS400
Subsystem . . . . : QINTER
Display . . . . . : PCnnnnS1
User . . . . . . . . . . . . . . __________
Password . . . . . . . . . . . .
Program/procedure. . . . . . . . __________
Menu . . . . . . . . . . . . . . __________
Current library. . . . . . . . . __________
To execute the command, supply the required information for Message text and user
profile and press <Enter>. Most of the parameters used on commands have default
values that are used if no other value is specified. You may change the default values if
you desire to do so.
If <F4>= Prompt is shown on the prompt display, you can press < F4>to request a list of
predefined values (such as *SYSOPR and *ALLACT in the above display) that are
permitted in the field where the cursor is currently positioned.
In relation to the SNDMSG command, you can use DSPMSG at any time to display
messages in your message queue.
Libraries
Every object is contained in a library. A library is an object, of type *LIB, that contains a
group of objects. It is similar to the "root" or top-level directory on Unix, MS-DOS, and
VAX/VMS. However, unlike these systems, a library cannot "contain" other libraries (with
the exception of QSYS, the system master library, which "contains" all libraries on the
system). An interesting implication of the non-hierarchical nature of libraries is that two
users cannot have libraries with the same name. There are basically three general
categories of libraries:
1. QSYS - the library that contains all other libraries,
2. System supplied libraries NOTE:all IBM-supplied library names begin with the
letter "Q" or "#"
3. User-created libraries.
Files
A file is an object, of type *FILE, that contains data in the form of a database, device
data, or a group of related records that are handled as a unit. In this manual, we are
primarily concerned with database files. There are two types of database files:
1. physical files
2. logical files.
A physical file contains actual data stored on the system. It has a fixed-length record
format. In this manual, we are primarily interested in two kinds of physical files:
1. data physical files
2. source physical files.
A data physical file (*FILE PF-DTA) contains data that cannot be compiled, such as an
input file to a program. In conventional terms, a data physical file is a data file, for
example an employee master file. A data physical file normally has a record format. This
record format is defined using Data Description Specifications (DDS is a language that
is used to describe database files to the system). This description is then compiled to
produce a *FILE object with attribute PF-DTA.
A source physical file (*FILE PF-SRC) contains source statements, for example the
source statements of a Pascal or COBOL program. A source physical file has the
attribute "PF-SRC". It is usually created using the "Create Source Physical File"
(CRTSRCPF) command (more information about this command will be given later). A
source physical file is actually a special type of data physical file. The CRTSRCPF
command creates a physical file with attributes appropriate for source physical files. For
example, the default record length is 92 (80 for the source data field, 6 for the sequence
number field, and 6 for the date field. Refer to the section on the SEU editor for the
meanings of these fields.)
The data records in a data physical file can be grouped into members. A data physical
file may contain one or more members. These members are not objects themselves but
subsets of an object. This implies that all members of an object share the same basic
characteristics with the other members in the object such as ownership and security. In
a PF-SRC file, each member contains source statements for a program or DDS source.
Members have an attribute associated with them, which in the case of PF-SRC
members, determines how the various systems programs (such as the editor and
compilers) on the AS/400 treat the member. This attribute is specified when creating the
member, and allows compilation to be totally automatic. Once, for example, a member
has been specified as having an attribute of CBL (for COBOL program,) the AS/400
editor, SEU, will format the program as a COBOL program, and when PDM (Program
Development Manager) is given the instruction to compile the file, it "knows" that it
should invoke the COBOL compiler. An example of a PF-SRC file and its members is
shown below (we will explain how to get to this screen in the section on PDM):
File . . . . . . SRCFILE___
Library . . . . YOURLIB___ Position to . . . . __________
Parameters or command
===> ___________________________________________________________
|
| contains
|
.------------------+----^-----------------.--------.
| | | |
Programs (*PGM) Outqueues (*OUTQ) Files (*FILE) Other
[Executable] | | objects
| contains |
Spooled Files |
[Output intended for Printer] |
|
.----------------^--.
| |
Physical Data Logical
file file
(PF) (LF-DTA)
| ^ contains
.------^-----. Member(s)
| | [Reorginized data]
Source Data
Physical Physical
File File
(PF-SRC) (PF-DTA)
| |
contains | | contains
| |
Member(s) Member(s)
[Program source] [Actual Data]
Creating a Library
A library has already been created for during user profile creation. The name of this
library is normally the same as that of your user profile. In this section, we will create
another library and use this library as an example throughout the manual. Note that you
can use your default library, i.e. the library that has the same name as that as your user
profile, to store all your application objects.
To create a library, type the CRTLIB ("Create Library") on a command line and press
<F4>to prompt on it. Type in the name of the library and enter a brief description for the
library. Leave the library type as *PROD (a production library is one that is used for
normal processing).
Press <Enter>. You should see a message at the bottom of the screen saying "Library
... created". If you see the message "Library ... already exists", it means that some other
user already has a library by the same name. Note: All libraries are on the same "level"
with only QSYS above them. If you get this message, try another name for the library.
Other commands that operate on libraries are:
• DSPLIB (Display Library)
• DLTLIB (Delete Library)
• WRKLIB (Work with Library).
Library Lists
You may have noticed in the previous screen that the "Library" field defaults to the value
*CURLIB, meaning the current library. The current library is tied closely to the concept of
a library list. Before we discuss what the current library is, we first explain what a library
list is. A library list is similar in concept to the "PATH" in Unix and MS-DOS. It specifies
which libraries are to be searched and the order in which they are searched when the
system looks for an object. A library list is identified by the value *LIBL. A default library
list is automatically created by OS/400 for each job started by a user. Your default
library, that is the library that has the same name as that as your user profile, is
automatically included in your library list. You can display your library list by typing
DSPLIBL and press <Enter> on a command line. The following is the library list for the
user "JOHNDOE".
System: MKTAS400
Note that you may not have all the libraries in the above list. As you can see, a library
list is divided into three parts:
system portion
which consists of the libraries that are required to run system functions
current library
which by default, is the library that has the same name as your user profile (in this case, the
library "JOHNDOE"). The current library is the first user library that is searched before the
rest of the user libraries in the list.
user portion
which consists of libraries that holds user objects. Some user libraries, such as QTEMP,
QGPL, and QGDDM come with the system while others are locally supplied. In addition, the
user can create their own libraries and add them to their library list.
If a user does not specify a library name when requesting an operation on an object, the
libraries in the library list are searched for the object (starting with the system libraries,
the current library, and the user libraries). For example, assume that the user
"JOHNDOE" has an executable program (*PGM object) called "TESTPROG" in the
library "YOURLIB". User "JOHNDOE" wants to run the program (using the CALL
command) and issues the command CALL TESTPROG. A message will appear stating that
the program is not found in the library list. This is because "YOURLIB" is currently not in
the library list. If, however, "TESTPROG" is qualified by "YOURLIB" as CALL
YOURLIB/TESTPROG then the program can be found and executed.
To add a library to the library list, type the "Add Library List Entry" (ADDLIBLE)
command, followed by the library name (or prompt on the command) ADDLIBLE YOURLIB.
If "JOHNDOE" now issues the the unqualified CALL command, the program can now be
located and executed since the library that contains the program is now in the library
list. You can edit your library list using the EDTLIBL command and remove a library list
entry using the RMVLIBLE command. "YOURLIB" can be made the current library by
typing CHGCURLIB YOURLIB.
Some commands automatically default to the current library (*CURLIB), such as the
CRTSRCPF command. Note, however, that both commands (ADDLIBLE and
CHGCURLIB) are only effective for a particular session. Next time, when "JOHNDOE"
signs on, "YOURLIB" will no longer be in their library list and hence, no longer the
current library. In the section "Steps in Developing a Program", we will create an "initial
program" that will automatically run these commands when a user signs on the system.
The *PRV value on the "Library" field indicates that the default is to work on the library
the user last worked with. These may be replaced with the name of a specific library.
The "Object" and "Object type" options allow the user to limit which objects will be
displayed. Type WRKOBJPDM and prompt with <F4>.
Bottom
Parameters or command
===> ________________________________________________________________
Presently, there should be just one object in the library, the source physical file
"SRCFILE" that you have just created.
PDM Options
Options are displayed across the top of the screen (for a list of all the options available
in PDM, see Table 1 at the end of this section.) Each option is an action which may be
performed on an object by placing its number on the "Opt" line next to the object and
pressing the < Enter> key. This method of specifying actions on a form listing the
objects available is consistent throughout PDM.
There are two important special features which this method of specifying actions offers:
First, the options support the prompting facility, and second, multiple objects may be
operated on in succession. To use the prompting facility, simply press <F4> while an
option number is on one of the "Opt" lines. PDM will present the prompt screen for the
command associated with that option number. Multiple objects may be operated on
sequentially by placing numbers on more than one Opt line. For example, assume we
have two source files in "YOURLIB". You can type "5" (Display) against one and type "7"
(Rename) against the other. Pressing <Enter> causes PDM to process each option in
turn.
More on PDM levels
Moving down levels in PDM is accomplished using the "12" (Work With...) option. At the
WRKOBJPDM screen, the action of this option depends on the file type. Placing a 12 on
the line next to an item on this display will:
• If the item is of type *FILE, go to the WRKMBRPDM display for that file (there are
different types of WRKMBRPDM displays for source and data files.)
• If the item is of type *OUTQ, go to the "Work With Output Queue" display,
allowing the user to work with spooled files.
• If the item is of type *PGM, present a display allowing the user to call the
program, change its attributes, etc. (programs may also be called from the
WRKOBJPDM screen by using the 16 option.)
When this method of changing levels is used, pressing <Enter> or <F12> (cancel) with
no options on the screen returns to the previous level.
Work with Members
The WRKMBRPDM display is the bottom level of PDM. When working with a source
physical file at this level, option 2 runs the STRSEU command to begin editing a
member and 14 calls the compiler for a program of that type (if specific compiler options
are needed, for instance the *DEBUG option to include debugging information in the
program, remember that the prompting facility may be invoked on any PDM option.)
When working with a physical data file, the "2=change" option is no longer valid.
However, the "18" option may be invoked to modify the file using DFU (Data File Utility).
Type "12" against "SRCFILE" to work with it. The following "Work with Members using
PDM" screen appears:
File . . . . . . SRCFILE___
Library . . . . YOURLIB___ Position to . . . . __________
Parameters or command
===> ________________________________________________________________
Bottom
You will now be inside the SEU editor. For now, press <F3> to quit and type "Y" in the
"Change/Create member" field to save the source member. Later on, in the section on
SEU we will use this source member. On return to the WRKMBRPDM screen, you will
notice that "SRCMBR" is now in "SRCFILE".
The "Work with Members using PDM" screen can be accessed directly using the
WRKMBRPDM command. Type this command and press <F4> to prompt on it. To work
with the member that we have just created, enter the names of the library and file as
shown below. If you have many members in your file, you can use the "Member" and/or
"Member Type" fields to narrow down the number of members to work with.
If you press <Enter> without typing anything, the screen readjusts as shown:
Columns . . . .: 1 80 Edit
SEU==> _______________________________________________________ SRCMBR
Type I (for insert) on the first line as shown and press <Enter> .
Columns . . . .: 1 80 Edit
Columns . . . .: 1 80 Edit
Notice the sequence numbers of records at the extreme left. The sequence number field
of a record is used to specify the line commands. For more information on line
commands see 'Using SEU line commands'.
To save the current member and exit SEU follow the following procedure 'Exiting the
Editor.'
Exiting the Editor
To exit SEU press <F3>. The exit display shows up:
Exit
If you wish to save the changes you have made, you may simply press < Enter> .
The default values supplied for most of the options above are self-explanatory.
However, note the following:
• If you have decided not to quit the editor, press <F12> to cancel the exit display.
This returns you back to the editing mode.
• The default value for 'Change/create member' is Y, if the member is modified,
otherwise N. Type N in this field only if you do not want to save changes made to
your member.
• The default value for 'Return to editing' option is N, if your member did not have
any syntax errors. However, if syntax errors do persist, the system supplies Y in
this field and returns back to the editing mode ( unless you explicitly type N and
force it to exit ).
Using Line Commands
SEU supports various line commands that guide us in editing an existing member. For
example, command C is used to copy lines, command M for moving lines and so on. The
SEU line commands are entered over the digits that make up the sequence number of a
record. In the following discussion, a sample TEXT document is used to illustrate the
use of the various commands. Note: If you type a line command, and then you decide
to cancel it, use <F5> to refresh the screen.
To edit a member that has already been created,
• Use the command WRKMBRPDM as explained in the previous section, reach
the 'Work with members using PDM' display.
• Use the tab keys to position the cursor at the desired member, and type option 2.
The screen for editing that member will show up.
For example, to edit the member SRCMBR created before, type WRKMBRPDM
YOURLIB/SRCFILE on any command line, and press < Enter> . From the "Work with
members using PDM" display, type option 2 in front of member SRCMBR and press
<Enter> . The edit display for this member is shown:
Columns . . . .: 1 71 Edit YOURLIB/SRCFILE
Inserting a line
To insert a line after a particular record, type I (insert) on the sequence number field of
that record, and press <Enter> .
The screen adjusts as shown below. Type in the line to be inserted and press <Enter> .
Copying a line
To copy the "Begin First Block" line to the end of the program, type C (copy) in the
sequence number field, and press Enter. Note the message on the top that indicates a
pending Copy line command.
Type A (after) on the last line as shown, and press Enter. This results in the pending line
to be copied after the line you have indicated.
Columns . . . .: 1 71 Edit YOURLIB/SRCFILE
SEU==> __________________________________________________________ SRCMBR
FMT CB
......-A+++B++++++++++++++++++++++++++++++++++++++++++++++++++++++
*************** Beginning of data********************************
0001.00 THIS IS A TEXT DOCUMENT.
0001.01 It illustrates the use of SEU line commands.
0002.00
C Begin First Block.
0004.00 Text for the first block ...
0005.00 End First Block.
0006.00
0007.00 Begin Second Block.
0008.00 Text for second block ...
0009.00 End Second Block.
A010.00
****************** End of data ************************************
The program looks as shown below, after the copy. To move a single line, use the
command M (move) and follow the procedure as explained above for copy.
Deleting a line
To delete a line, type D (delete) in front of it and press <Enter> . The line that was just
copied may be deleted as shown below:
Type A on the last line to move the block to the end of the program.
Block Copy
Enclose the block to be copied within CC commands, and specify the target. The block
copy resembles the block move explained above. Note below, that B is specified as the
target, to copy the block before the indicated line.
Block Delete
To delete a block, enclose it within DD commands and press <Enter> . The block that
was just copied may be deleted as shown:
The source member looks as follows, after our experimentation with the above line
commands:
To get a complete list of commands for SEU place the cursor on the sequence number
list and press the help key.
SEU Commands
SEU commands are entered in the "SEU==>" field at the top of the screen.
FIND
Search for an occurrence of a character string. If the string contains embedded blanks,
apostrophes, or quotation marks, it should be enclosed in quotation marks. Several
direction parameters are available: N (Next), P (Previous), F (First), L (Last), and A (All).
The scope of the search can be specified using search parameters: X (excluded
records) and NX (non-excluded records). The syntax of FIND is FIND string
[N,P,A,F,L] [X,NX] [column parameter]. Examples:
• F XYZ
• F 'hello there'
• F *ERR A find all syntax errors
• F "'XYZ'"
Use the F16 "Repeat Find" key to find the next occurrence of a string.
CHANGE
Find all occurrences of a character string and replace it with another string. The syntax
is CHANGE fstring cstring [N,P,A,F,L] [X,NX] [column parameter]
TOP
Go to the first page of the work screen.
BOTTOM
Go to the last page of the work screen.
SAVE
Save changes and continue editing. SAVE [ [ [ library/ ] file ] member ]
FILE
Save changes and exit from edit session. FILE [ [ [ library/ ] file ] member ]
CANCEL
Cancel session and exit session.
SET
See the IBM SEU manual for more information.
Function Keys in SEU
When a member is being edited, the Edit display supports a diverse set of function keys
that allow you to perform specific tasks.
_____________________________________________________________________________
_
Key Name Function
_____________________________________________________________________________
_
F1 Help Press the help key for details about the display.
F3 Exit End the current task, returns to previous entry
point.
F4 Prompt Provides assistance for the options selected
in the list or a command on a command line.
PDM will fill in the default values.
F5 Refresh Refresh the current display. Rebuilds display and
shows it again.
F10 Cursor Moves the cursor from the data area to the SEU
command line, and from the SEU command line to
the data area.
F11 Previous Record Places the previous record in the prompt.
F13 Change Session Go to the Change Session Defaults Defaults
display.
F14 Find/Change Options Go the Find/Change Options display.
F15 Browse/Copy Options Go the Browse/Copy Options display.
F16 Repeat Find Perform find or repeat current find.
F17 Repeat Change Perform change or repeat current change
function.
F18 DBCS Conversion Perform DBCS conversion.
F19 Left View the info. to the left of the current display.
F20 Right View the info. to the right of the current display.
F23 Select Prompt Go to the Select Prompt display. SEU returns
to the EDIT Session and displays the prompt
after you make a selection.
F24 More keys View the other function keys available for the
current display.
You can use the SEU line command, IP (insert line and prompt), to help you in selecting
a CL command. Also, note that CL programs are "free format" in that components of CL
statements do not have to be placed in particular columns on the screen (some source
types, such as RPG, are "fixed-format"; the IP line command can help enormously in
coding such programs).
A CL program begins with the PGM command, which is optional if the CL program does
not receive any parameters. (Aside: If a CL program has a parameter named &MYVAR,
the PGM statement is coded as: PGM PARM(&MYVAR). The ampersand symbol, "&",
denotes that &MYVAR is a variable. In this case, &MYVAR will be used to hold the
parameter's value. Moreover, the variable &MYVAR has to be declared using the DCL
command.) For more information, the reader is referred to the IBM "CL Programmer's
Guide" or the online education modules: "AS/400 Control Language Programming" in
the "Tutorial Support System" course, and the modules "Creating a Control Language
Program" and "How to Use Error Handling Facilities" in the "Facilities and
Implementation" course.
The second statement declares a CL variable called &OLDCURLIB. This variable will be
used to save the name of the existing current library. The variable will be used to hold a
character string with a maximum length of 10. Note that SEU provides syntax checking
for CL programs. Remove the parameters of DCL so that the statement contains only
"DCL", and press <Enter> . SEU will highlight that statement, indicating that there is a
syntax error. SEU will not let you exit an editing session that has syntax errors unless
you explicitly specify that you want to exit in the exit screen. Put the parameters back on
the DCL statement.
The RTVJOBA command, on the third statement, is used to retrieve the name of the
job's existing current library, saving it in the variable &OLDCURLIB. The reason for this
step will be explained shortly.
The CHGCURLIB command, on the fourth statement, is used to make YOURLIB the
new current library (where "YOURLIB" is any existing library that you have access to).
Notice that we have intentionally introduced an error in this statement. We have
mistakenly prefixed YOURLIB with "&", that is we really want CHGCURLIB
CURLIB(YOURLIB) instead of CHGCURLIB CURLIB(&YOURLIB).
A name with "&" as its prefix denotes that it is a CL variable. This is an error because if
we intended &YOURLIB to be a variable, it must be declared in a DCL statement. Note
that SEU cannot detect this kind of error. This error will be detected during compilation.
The ADDLIBLE command, on the fifth statement, adds the name of the former current
library (which we saved in the variable &OLDCURLIB in the RTVJOBA statement) to the
library list. This step is needed if we want this library to stay on the library list. This is
because when the CHGCURLIB command is executed, the "old" current library will not
be retained on the library list. Hence, the need to use RTVJOBA to save the name of
that library, and to add it back on the library list using ADDLIBLE. The last statement,
ENDPGM, indicates the end of the CL program. Now, exit and save the program as it is
(i.e. with the error).
Compiling a Program
In the "Work with Members using PDM" screen, enter option 14 to compile the member
that contain the CL source program. Option 14, in this case, will invoke the CRTCLPGM
(Create CL Program) command. Option 14 will invoke a different "create program"
command for a different source type (e.g. if the source type is CBL, it will invoke the
CRTCBLPGM command). If you prompt on the option (ie. press <F4> when you use
option 14), you will see the following screen:
Additional Parameters
The "Program" field specifies the name of the *PGM object that will be created if the
compilation is successful. This name defaults to name of the source member. The
"Library" field specifies the library that will contain the *PGM object. The default is the
library that contains the source member. You can change these default values. Unless
you want to rename the *PGM object or put it in another library, accept the defaults.
On pressing <Enter> , you will see a message at the bottom of the screen saying that
the compilation job has been submitted to QBATCH, which is the job queue for batch
jobs. If there are no compilation errors, you will receive a message saying that the job
completed normally. Since there is an error in the above program, a message will return
saying that the job has ended abnormally, meaning there are compilation errors. Press
<Enter>to continue.
Finding Compilation Errors
To find out the cause of the compilation error, type WRKSPLF to see what's in your
output queue. There should be a spooled file with the same name as your source
member (the compiler listing) and a job log (QPJOBLOG). Type 5 against QPJOBLOG
to display it. There should be a message stating that the program was not created
because of compilation error. The message will refer you to the compiler listing of the
program. Press <Enter> to exit this display. Type 5 to display the contents of the
compiler listing of the program. A segment of that listing is presented here:
200- PGM
300- DCL VAR(&OLDCURLIB) TYPE(*CHAR) LEN(10)
400- RTVJOBA CURLIB(&OLDCURLIB)
500- CHGCURLIB CURLIB(&YOURLIB)
* CPD0727 40 Variable '&YOURLIB ' is referred to but not declared.
600- ADDLIBLE LIB(&OLDCURLIB)
700- ENDPGM
* * * * * E N D O F S O U R C E * * * *
*
Cross Reference
Declared Variables
Name Defined Type Length References
&OLDCURLIB 300 *CHAR 10 400 600
* * * * * E N D O F C R O S S R E F E R E N C E
*
5738SS1 V2R1M1 920306 Control Language YOURLIB/TEST
Message Summary
Severity
Total 0-9 10-19 20-29 30-39 40-49 50-59 60-69 70-79 80-89 90-
99
2 1 0 0 0 1 0 0 0 0 0
Program TEST not created in library YOURLIB. Maximum error severity 40.
There are two errors in the listing (errors are marked with "*" in column 1): the first with
a severity of 40 and the second with severity of 0. The second error is only an
information message; it is not the cause of the compilation failure. The meaning of first
error is evident; it is the cause of the failure. You can use the DSPMSGD (Display
Message Description) command to get more information about a compilation error. For
example, to get more details about the error CPD0727 DSPMSGD RANGE(CPD0727)
MSGF(QCPFMSG) where QCPFMSG is the system message file and CPD0727 is the
message ID. Let's go back to the source member and fix the problem.
Using SEU to Find Compilation Errors
You may want to use SEU to view your compiler listing instead of the way discussed
above, especially if the compiler listing is too lengthy to scan by eye. SEU provides
special support for locating compilation errors. To view a spooled file while you are in
SEU, press <F15> (Browse/Copy). Enter 2 in the selection field. Place the cursor on the
"Browse/copy spool file" field and press <F4>. Select the appropriate spool file. On
return to the editing session, you should see a split screen with the member you are
editing on top and the spooled file on the bottom. To find compilation errors, in the
bottom screen type FIND *ERR on the SEU command line (or simply, F *ERR). An
advantage of using SEU for this purpose is that you can see both the source member
and the compiler listing on the same screen, and make the corrections to the source
member on the spot.
Using SEU, edit the source member to remove the ampersand, "&", from YOURLIB.
The program should compile normally after this change. To make the situation more
interesting, let's introduce another type of error. In the ADDLIBLE statement, specify
some library name that you do not own or one that you are not authorized to use. In our
example, we specify a nonexistent library called DOGNAP, that is ADDLIBLE DOGNAP. The
rest of the source remain the same as before (except for removing the ampersand
character). Compile the source member (you will probably be asked if you want to
delete the existing *PGM object. Respond with a "Y"). The program should compile
normally. The *PGM object will be created in the library that contains your source file
unless you specified otherwise.
Running a Program
Use the WRKOBJPDM command to work with the library that contain the *PGM object
that was created. Type 16 against the *PGM object to run/execute it. Alternatively, you
can run the program by using the CALL command (in fact, option 16 invokes the CALL
command). If the library that contains the *PGM object is in your library list, type CALL
TEST on a command line. If the library is not in your library list, you can still run the
program by qualifying it with the library name CALL ALIBRARY/TEST The example
program used here does not take any input parameters. But if you created a program
that requires an input parameter(s), you can pass the parameter value(s) by prompting
on either the option 16 or the CALL command. If your program takes more than one
input parameter, type '+' on the "Parameters" field and press <Enter> . This will bring
another screen that allows you to enter multiple parameters. You can also us pass
parameters using the command line method. For example, CALL MYPROG
PARM(parameter1 parameter2 ...)
Reply . . . ________________________________________________________
F3=Exit F12=Cancel
To find out the cause of the error, place the cursor on the message id (in this case
CPF2110) and press <F1>. You see a screen similar to the one below. The message
text, in this case, indicated clearly what the problem is, i.e. the library DOGNAP was not
found. Sometimes you can obtain additional messages by pressing <F10> to display
messages in the job log.
program. Monitor for the error (MONMSG command) and perform error
recovery within the program. To continue, choose a reply value.
More...
Again, the DSPMSGD ("Display Message Description") command can be used to obtain
more information about the error. For example, DSPMSGD RANGE(CPF2110) MSGF(QCPFMSG)
where QCPFMSG is the system message file and CPF2110 is the message ID.
Press <Enter> to cancel the program. Go back to the source member, fix the error, and
recompile. The next time you run the program, it should run without any problems. Type
DSPLIBL to check whether the library has been added and whether it has been made
the current library.
Creating an Initial Program
An initial program is similar to the AUTOEXEC.BAT file in MS-DOS. It is executed when
the user logs on. The initial program has to reside in your default library (i.e. the library
with the same name as your user profile) and it has to be named INITIALPGM. For
instance, you can make the above CL program your initial program. Rename the source
member to INITIALPGM and recompile it. If you created the source member in a
another library, when you recompile it using the option 14, press < F4>to prompt on it.
Specify your default library as the library where the *PGM object is to be stored.
To see the detail screen as shown below, press <F11>. Note that the owner of
"YOURLIB" has *ALL authority on the object.
Press <F6> to add a user to the list of users authorized to this object. Type in the name
of the user and *USE for the object authority. Press <Enter> to return to the previous
screen. Notice that *USE gives the user *OBJOPR and *READ authorities on
"YOURLIB". (Note: If you want to edit a specific authority, type "X" in the position
relating to that authority to grant authority or a space to delete that authority.)
Next, we need to allow the user access to the file "SRCFILE". Use EDTOBJAUT to edit
the authority on the file "SRCFILE". Type EDTOBJAUT OBJ(YOURLIB/SRCFILE)
OBJTYPE(*FILE) or use the prompt to fill in the parameters. Press <F6> to add the user
to the authorization list with *USE authority. This will allow them to do perform various
operations on "SRCFILE" including copying members from the file. To allow them to
copy the entire file (i.e. "SRCFILE"), *OBJMGT must be granted. To do that, type "X"
under "Mgt" in the detail screen for that user. Note that the object authority changes
from *USE to USER DEF (meaning a customized authority).
Changing Authorities with GRTOBJAUT and RVKOBJAUT
To use GRTOBJAUT and RVKOBJAUT type the command and prompt <F4>. Fill in the
library name, object name, object type along with the user you are granting authorities
and the respective authority being granted. At any time press <F1> for more help.
Additional Parameters
To file type . . . . . . . . . . *FROMFILE_ *FROMFILE, *DATA
VM/MVS class . . . . . . . . . . A A, B, C, D, E, F, G, H, I
Send priority . . . . . . . . . *NORMAL__ *NORMAL, *HIGH
User . . . . . . . . . . . . : RCV_______
User ID/Address . . . . . . : RCV_______ MKTAS400
Type 1 in the "Opt" blank in front of the network file to receive and press <F4>to prompt.
The following screen will show up.
Fill in the "To data base file", "Library", and "To member" blanks with the appropriate
receiving file, library and member names and press <Enter>. Note that the receiving file
must already exist before trying to receive members.
Printing Procedure
When programs on the AS/400 produce output intended to be printed the material does
not go directly to the printer. Instead the output is bundled together with other output in
an object called an "output queue" (*OUTQ). These sub objects are called "spooled
files." To send these spooled files to a printer, first you must work with your output
queue; then, change the attributes of the desired spooled file, specifying the correct
print device name.
There are several ways by which spooled files are generated. Here are some:
• From the WRKMBRPDM display, option 6 in front of the desired member will
generate a spooled file that is your program member.
• Pressing the Print Screen key (<Shift><Print Screen>on the PS/2 running PC-
Support or <Ctrl>p on the ASCII connections) will generate a spooled file of the
current display. Note that if you do a print screen, you will have to press the
<Reset>key to clear the message at the bottom of the screen in order to
continue your session.
• The system automatically generates spooled files in some cases like presenting
job log, information on processed records for a database file and abnormal job
end conditions.
Moving a Spooled File to a Writer
To get a physical copy of a spooled file on your output queue, two facts must be true.
First, the spooled file must be placed on a started writer and second, the spooled file
must have a status of released. To work with your spooled files on your output queue
type WRKSPLF and press <Enter>. This screen allows you to do many things with your
spooled files.
Note: If this is the first time that you are using the WRKSPLF command, you should
change the "assistance level" for this screen. To do this press <F21>and change the
assistance level from "basic" to intermediate". This will gives you more features on the
screen. Try pressing the <F10>or <F11>keys to obtain different views of your spooled
files.
Typing 2 in the option field of spooled file in the WRKSPLF screen will change the
spooled file's attributes. The attributes that you will be interested in are the "Print
device" and "Save file".
By changing the attribute "Print device" from "*OUTQ" to a valid printer (use the
WRKWTR command to find out which printers are available), you will move your
spooled file from your output queue to a printer writer. The printer writer names at MSU
are:
Printer Name Width/Paper Printer Type Location
PRT01 132 Col. 11" Line Printer Morris Hall
VAXPRTS2 132 Col. 11" Line Printer MSU ACC
PS/2 printers 132/80 8.5" Dot Matrix MSU ACC Lab Rooms
If "Save file" is changed from "*NO" to "*YES" the spooled file will not be deleted after
the file has been printed.
Typing 3 in the option field of spooled file in the WRKSPLF screen will keep the spooled
file from printing if placed on a printer writer and change the status to *HLD.
Typing 4 in the option field of spooled file in the WRKSPLF screen will delete the
spooled file from your output queue. Spooled files should be deleted as soon as they
are not needed to reduce clutter in your output queue.
Typing 5 in the option field of spooled file in the WRKSPLF screen will allow you to view
your spooled file.
Typing 6 in the option field of spooled file in the WRKSPLF screen will will release a file
that is held to become available to print and will change its status to *RDY.
If you printed to VAXPRTS2, your printouts can be picked up in the ACC printer area at
any time. VAXPRTS2 is a printer that is connected to VAX1. The printer will never say it
is started although it actually is. Normally you will not be authorized to print to writer
PRT01. This printer is the system printer.
Printing to a PS/2 Printer
To see which PS/2 printers are available for printing from the AS/400, type WRKWTR
("Work with Writers"). The name of the printer is: "PC0" (i.e. "P" + "C" + zero) + the
number of the PS/2 to which the printer is connected + "S2" (e.g. PC0614S2). Make
sure that the printer you want to print to has been started. For the printer to be started,
the PS/2 workstation that is connected to the printer must be signed on to the AS/400.
Also, make sure that the printer is ready for printing. Press <Alt><Esc>on the computer
that is attached to the printer to display the status of the printer; make sure it says
"Ready". If not, select the "stop" option and then select "start". Also make sure the
printer's status is "ONLINE".
Step by Step Printing Example
Type WRKSPLF { or OQ } Press <Enter>.
This will allow you to work with your spooled files.
Use the <Field EXIT>key or <Tab>to move to the desired spool file.
This will move us to the correct spool file option field.
Type 5 in the option field.
This will mark the spool file for displaying.
Press <Enter> .
This will display the spool file.
Press <Enter>.
This will bring you back to the work with spool file screen.
Press 2 <Enter>.
This will permit you to change the spool file attributes.
Type in the name of the printer <Enter>.
This will move the file to the printer writer.
Press the <F5>key.
This will refresh the screen to show you the current status of your spooled files.
If the STS (status) is RDY or WTR the printer will print your spooled file. If the status is HLD
then release it by typing a 6 in the option field of the spooled file and press <Enter>.
Common Problems
Note that the command keys used in this section are those of the PS/2 running PC
Support.
Stopping Infinite Loops/Ending a Previous Request
If you have issued a command and it is taking too long finish it may be an infinite,
endless, loop. To stop your infinite loop:
• Press <Left Ctrl> (this will reset any keyboard errors)
• Press <Alt><Print Screen>(this sequence is call "System Request")
• Type 2. (This is the option on System Request to end a previous request.)
• Press <Enter> . Note: You can also press <Alt><Print Screen>and press
<Enter>to display a menu of system requests, and then select the appropriate
command.
Ending Disconnected Jobs with Infinite Loops
If for some reason you have been disconnect from the system while executing an
infinite loop request the job may continue to execute. This will cause the system to run
very slowly. To end the disconnected job:
• On a command line, type the "Work with Active Jobs" command: WRKACTJOB
and press <Enter> . The locally-defined alias for WRKACTJOB, AJ, can also be
used.
• On the "Work with Active Jobs" display, type option 4 (End) against the job that is
causing the loop and press <F4>to prompt on the option. In the "How to end"
field, type in *IMMED i.e. to end the job immediately.
• Press <Enter>.
Out of Storage Quota Errors
Depending on the specific class that requires use of the AS/400 there is a maximum
storage quota allocated to your user profile. You can see this information by typing:
DSPUSRPRF username. Because OS/400 retains every version of a *PGM object that
results from a compilation, your storage can be used up very quickly. When you have
exceeded (or nearly exceeded) your storage quota and you try to start, for example,
SEU, you may get an error message "Error found on SEU command". To deal with this
problem, you must clear the *PGM objects from library QRPLOBJ. To do this type
WRKOBJPDM QRPLOBJ. You may get an authority problem do to the fact that you do not
own all of the object in that library. The command will clear your objects out regaurdless
of the error.
The Source type for a data file must be specified as PF, this type denotes aPhysical
File. For example, to create a data file called TESTDATA in the source file SRCFILE in
library YOURLIB, fill in the fields as shown:
Start Source Entry Utility (STRSEU)
The Edit display shows up. It is convenient to use the prompt facility for defining the
DDS source. The prompter helps you to supply the source information in the correct
format. Press <F4> to invoke the prompter and <F12>to cancel it.
When the prompter is invoked, the screen looks as shown:
Find . . . _____________________________________________________
TESTDATA
FMT PF
.....A..........T.Name++++++RLen++TDpB......Functions++++++++++++++++++
*************** Beginning of data
*************************************
0001.00
****************** End of data
****************************************
Functions ___________________________
An explanation of the different fields shown above follows: The fields marked with * are
not commonly used, so for normal applications you may conveniently ignore them.
Name_Type
Choose one of the following:
Blank
Leave the field blank to indicate a field name.
R
Type R in column 17 to indicate a record format name.
K
Type K in column 17 to indicate a key field name.
Name
Type a record format, field, or key field name in this position. The maximum length allowed
is 10 characters, beginning in column 19.
Reference (*)
Type R in this field to use the reference function to copy attributes of a previously defined
named field to the field you are now defining.
Length
Type a value to indicate the number of characters in a character field or the number of digits
in a numeric field. For example, for Character type the range is 1-32766, for Packed decimal
the range is 1-31 digits and so on.
Data_Type
Choose one of the following:
A
for character data.
P
for packed decimal data.
S
for zoned decimal data.
B
for zoned binary data.
F
for floating point data.
H
for hexadecimal data.
Decimal_Positions
Type a value from 0 through 31 to indicate the number of decimal positions to the right of the
decimal point within a packed decimal, a zoned decimal, a floating point, or a binary field.
Use (*)
Type B or leave the field blank to indicate a field used for both input and output.
Functions (*)
Type in keyword entries valid for defining physical files in positions 45 through 80 of this
field.
The DDS source for TESTDATA is shown below. RECFMT1 is the record format name.
There are two fields in the data file, FIELD1 and FIELD2. FIELD1 is of character data
type with length 10, and FIELD2 is a packed decimal of length 5 with 2 decimal
positions. The last line of the member declares FIELD1 to be the key field.
FMT PF
.....A..........T.Name++++++RLen++TDpB......Functions++++++++++++++++++
*************** Beginning of data
*************************************
0000.01
0001.00 R RECFMT1
0002.00 FIELD1 10A
0003.00 FIELD2 5P 2
0004.00 K FIELD1
0005.00
****************** End of data
****************************************
Press <F3>and hit <Enter>to save the member TESTDATA. For more details about
exiting SEU refer to the section 'How to exit SEU'.
The member TESTDATA that was just created contains only the definition of the data
file and hence our the next step is to actually create the file. This can be done by
compiling the member we have just created. From the 'Work with members using PDM'
display, position the cursor at member TESTDATA, and choose option 14 (compile). If
the compilation is successful, the file TESTDATA will be created in YOURLIB.
Otherwise, look into your spooled file (WRKSPLF) and identify the problem.
Loading a data file
To load a data file, use the command UPDDTA (Update Data Area). Type UPDDTA on any
command line and press <F4>. The following screen shows up:
Bottom
Supply the values for the data base file to be loaded and the library it is contained in,
and press <Enter>. For example, to populate our file TESTDATA we would fill in the
values as shown:
Design Screens
Since no screen design exists yet, it is necessary to first create one using the "5" option
on the "Design option line". Also, a source file must be provided, and a member
specified. If the member does not yet exist, it will be created. Finally, a record name
must be given. Since each member can have several records, a single screen design
member could contain any number of screens, with each one given a distinct record
name. Once the information is entered, the screen should look like this:
Design Screens
Type choices, press Enter.
The "SOURCE TYPE" field may be left blank. It will default to the proper type for SDA.
These options will start SDA on a screen named SCREEN1 in the member SCRNMBR
of file SRCFILE in library YOURLIB. Pressing <Enter> will bring up the main SDA
display. This is simply a blank "pasteboard" on which you may place text and fields.
Using The Work Screen
Use the Work Screen to design the display you are creating. On the Work Screen you
can add fields and constants, place fields you have selected from a database, move,
copy, shift, and remove fields, and add or remove attributes and colors. You can also
perform additional operations, such as requesting extended field definition.
You can use the following function keys on the Work Screen:
F1=Help
Press <F1> to show the same information as the help key. <F1> is active on all displays but
does not appear in the function key area.
F3=Exit
Press <F3> to have the Design Screens display appear.
F4=Prompt
Press <F4> to have the Work with Fields display appear.
F6=Condition
Press <F6> to have the Condition Work Screen display appear.
F10=Database
Press <F10> to have the Select Data Base Files display appear.
F11=Switch
Press <F11>to display a list of selected database fields on the bottom row of the Work
Screen. Press <F11>to switch back and forth between the list of selected data base fields and
the list of not selected database fields.
F12=Cancel
Press <F12>to save your work and continue to the Design Screens display.
F14=Ruler
Press <F14>to place a vertical and horizontal ruler on the Work Screen where you position
the cursor. The ruler does not interfere with your data. Press <F14>to remove the ruler.
Defining fields on the ruler may cause unpredictable results.
F15=Subfile Prompt
Press <F15>to Display a prompt on the bottom row of the Work Screen that allows you to
change the subfile line (SFLLIN) and subfile page (SFLPAG) sizes that were in effect for the
current record being defined.
F17=Print
Press <F17> to Print the current contents of the Work Screen.
Adding Fields
To add a user-defined field, type + followed by I (input), O (output), or B (both) for
alphabetic fields, or followed by 3 (input), 6 (output), or 9 (both) for numeric fields and
press Enter. To add a floating point field, add a numeric field followed by E (single-
precision) or D (double-precision) and press Enter. You can use uppercase or lowercase
letters. You indicate the length of a field by the number of characters following +, or by
the length specified in brackets after the first character.
The following examples illustrate user-defined fields:
+BBB or +b(3)
Three-character, alphabetic, both (input and output) field.
+66.66 or +6(4,2)
Four-character, numeric, input field with two decimal positions (set by an edit word).
+3.33E or +3(3,2)e
Single-precision, input, floating-point field with three significant digits and two decimal
positions.
+99.999d or +9(5,3)D
Double-precision, both (input and output), floating-point field with five significant digits and
three decimal positions.
Adding Constants
To add a new constant or change an existing constant:
• Type a constant. A blank character ends the constant.
• Type constants with single quotation marks to define separate constants for each
character string (word) that is followed by a blank.
• Surround a character string with single quotation marks to define a single
constant.
• Surround several constants with single quotation marks to redefine them as one
constant.
• Use a double quotation mark to end one constant and start a new constant while
taking up only one position.
• To add a MSGCON (MeSsaGe CONstant) field, type + followed by M. To work
with a MSGCON field, type ? in front of the field. When you press Enter, the
Define Message Constant display appears. Press < F12>to return to the Work
Screen.
• To add system date or time fields, type *DATE or *TIME.
• Use the at sign (@) in pairs to delimit a DBCS (Double Byte Character Set)
constant. SDA will replace each pair with a shift in and a shift out pair when you
press <Enter>. You can then type DBCS data between the delimiters. You
cannot use a DBCS insert key on the Work Screen.
The following examples illustrate constant fields:
'xxx"YYY'
Defines two constant fields.
'xxx YYY zzz'
Combines three constant fields into one field.
+MMM or +(M3)
The Define Message Constant display appears.
Adding Fields from a Data Base File
The fields you select from a database file, appear on the bottom row of the Work
Screen. You move fields from the bottom line to your display by typing & followed by the
field number, if you are in multiple mode, and the column heading position and pressing
Enter. The fields begin in the position where you type &. The following examples
illustrate moving fields to your display:
Symbol
Single Field Multiple Field Field
Mode Mode Meaning
F3=Exit F12=Cancel
These options will compile all the screen records in member SCRNMBR of file
SRCFILE in library YOURLIB to a *FILE object called SCRNFIL in YOURLIB. That file
may then be used by user programs.
It may be advantageous to test screen designs before using them with programs. This
can be accomplished using the "Test Display Files" option from the initial SDA menu.
The screen test program will request the name of a screen and display file (created
using the compilation procedure above,) followed by a prompt screen for values for the
output fields. SDA displays the screen with the values supplied.
Additional Parameters
The above example is from a Pascal source member. However, other languages will
have similar prompt displays.
Placing the *DEBUG and *SOURCE options on the "Compiler options" lines will cause
the compiler to produce a source listing and place it in the output queue and will include
debugging information in the output program. Pressing <Enter>once all options are
entered will submit the compilation. After the member has been compiled (assuming
there are no errors in compilation,) the source listing should be printed and used with
the next steps.
Using the debugger
The process of Debugging essentially consists of four phases:
1. Start the Debugger
2. Add breakpoints
3. Call the program to be debugged and
4. End the Debugger
These phases are discussed in detail below:
Phase 1 (Start the Debugger)
The command to start the debugger is:
===> strdbg YOURLIB/TEST
where TEST is the program in library YOURLIB, that you intend to debug.
Phase 2 (Add Breakpoints)
A Breakpoint is a place in a program where the system stops the processing of that
program and gives control to the display station user or to a specified program. The
command ADDBKP is used to set breakpoints. The simplest form of ADDBKP takes the
following form:
===> addbkp stmt(n1 n2 ... n10) where n1, n2 ... n10 are the statement numbers
where the breakpoint is to occur. You may specify 1 to 10 statement numbers where the
breakpoint should occur. For example, ' addbkp stmt(10 20 30) ' will set the breakpoints
at statements 10, 20 and 30. The program breaks before processing a statement
specified as a breakpoint.
Phase 3 (Calling the Program)
Once the breakpoints are set, the next step is to run the program using the CALL
command.
===> call YOURLIB/TEST
You will notice that the program stops execution when the breakpoint is reached. From
the 'Display Break Point' screen, you can check the values of the program variables as
explained below:
• Press <F10>(command entry) on the 'Display Breakpoint' screen.
• This will take you to the command entry screen. Display the program variables
with DSPPGMVAR command:
===> dsppgmvar VARNAME
where VARNAME is the variable name you intend to display.
• Using the above command, you can check for as many variables as you want to
from the command entry screen. To exit the command entry press <F3>. Control
is transferred back to the breakpoint.
• Press <Enter>to resume execution of the program. The program will stop at the
next breakpoint if any, or will terminate.
Ending the Debugger
Once you are done with debugging, it is very important that you end the Debugger,
before you issue any other command. The command to do it is:
===> enddbg
Reader's Comments
Use this form to tell us what you think about this manual. If you have found errors in it,
or if you want to express your opinion about it (such as organization, subject matter,
appearance) or make suggestions for improvement, this is the form to use.
Be sure to print your name and address below if you would like a reply. After you have
completed this form send it in the campus mail to:
AS/400 Staff
Computer Services
Box 45
Today's Date:
Your Name:
Your Phone No.:
Your Address:
Your Comments:
Version 2.06
Copyright Minnesota State University, Mankato © 1992,1995
Last modified: Fri Feb 18 13:10:17 CST 2000 Jeffrey Hundstad