Você está na página 1de 65

Introduction to IBM i

CL Programming

1
Copyright 2009 by Janson Industries
Objectives

Explain general programming
concepts

Explain CL’s strengths and
weaknesses as a programming
language

Show how to create a CL program

Explain what a compilation report is
and how to use it to find program
errors
2
Copyright 2009 by Janson Industries
Creating CL Programs
Library

CRTMBR
Programmer PF-SRC
*PGM
CLP
CL
Compile
Commands
LPEX CRTMBR
SEU CLP

3
Copyright 2009 by Janson Industries
Programs

Programs are comprised of many
programming language instructions

Instructions are written on lines or
statements.

Each statement/line in a member is
assigned a statement/line number.

CL commands (instructions) can
span many lines
4
Copyright 2009 by Janson Industries
Program Processing

Programs can execute instructions
3 ways

The default method is sequential,
I.e. in statement number order

Execution can also be conditional
and iterative.

5
Copyright 2009 by Janson Industries
CL Command Syntax

The format for a CL Command is:
COMMAND PARAMETER PARAMETER ….

There is at least one space between
the:
 Command
 First parameter
 Each succeeding parameter

Commands are continued from one
line to another by placing a plus sign
after the command or a parameter
6
Copyright 2009 by Janson Industries
CL Command Syntax

The + must be preceded by at least a
space if the continuation is between:
 A command and a parameter
 Two parameters
COMMAND +
PARAMETER PARAMETER
COMMAND+
PARAMETER PARAMETER
COMMAND PARAMETER PARAMETER +
PARAMETER PARAMETER +
PARAMETER
COMMAND PARAMETER PARAMETER+
PARAMETER PARAMETER
7
Copyright 2009 by Janson Industries
Continuing a CL Command

The + is not preceded by space(s) if the
continuation is in the middle of the:
 Command word
 Parameter keyword
COMM+
AND PARAMETER PARMETER
COMMAND PARAMETER PARA+
METER
COMM +
AND PARAMETER PARMETER
COMMAND PARAMETER PARA +
METER
8
Copyright 2009 by Janson Industries
Continuing a CL Command

If a parameter value(s) allows
spaces, then the + is preceded by
space(s)
GRTOBJAUT OBJ(YOURLIBXX/CLSRC) OBJTYPE(*FILE) +

USER(INTRO35) AUT(*OBJALTER *OBJEXIST +


*OBJMGT *OBJOPR *OBJREF *ADD)

SNDMSG MSG('The rain in Spain falls manely on the +


lions.') TOUSR(INTRO99)
9
Copyright 2009 by Janson Industries
Continuing a CL Command

If the continuation is in the middle of
a value, no spaces precede the +

GRTOBJAUT OBJ(YOURLIBXX/CLSRC) OBJTYPE(*FILE) +

USER(INTRO35) AUT(*OBJALTER *OB+


JEXIST *OBJMGT *OBJOPR *OBJREF *ADD)

GRTOBJAUT OBJ(YOURLIBXX/CLSRC) OBJTYPE(*FILE) +

USER(INTRO35) AUT(*OBJALTER *OB +


JEXIST *OBJMGT *OBJOPR *OBJREF *ADD)
10
Copyright 2009 by Janson Industries
CL Programs

Begin with a PGM command and end
with an ENDPGM command

Comments (non-executable text) may
precede the PGM statement

Comments begin with a forward slash
& an asterisk and end with an asterisk
& a forward slash

/* This is an example of a comment. */


11
Copyright 2009 by Janson Industries
Programs

Programs read and write data

Data can come from storage, the OS,
or the person who calls the program

Programs can write data to storage, a
printer or a workstation

Operating
Data Program Data Printout
System

Data
Data User
Storage
12
Copyright 2009 by Janson Industries
User Supplied Program Data

You can supply data when calling the
program as follows:
CALL pgm1 (‘chardata’ numeric ‘chardata’….)

To receive the data, the program must
have a PARM keyword in the PGM
statement.

The PARM keyword identifies the
program variables that will hold the data

PGM PARM(&CUSTNAME &ORDAMT)


13
Copyright 2009 by Janson Industries
User Supplied Program Data

The parameters specified on the call
must match the parameters specified in
the PARM keyword
CALL pgm1 (‘Walmart’ 275)

PGM PARM(&CUSTNAME &ORDAMT)



If they don’t match:
CALL pgm1 (275)
The program will not be run and you will
get the following message:
Parameters passed on CALL do not match those required.
14
Copyright 2009 by Janson Industries
Program Variables

Programs store input and output in
program variables

Just like a data base field, a program
variable has a:
 Name
 Length
 Data type

Program variables exist for as long
as the program is running
15
Copyright 2009 by Janson Industries
CL Program Variables

Are defined with a DCL (declare)
command

A CL program variable name must:
 Begin with an ampersand (&)
 Has a max length of 11
 Cannot contain spaces

DCL statements must be at the
beginning of the program following the
PGM statement
000100 PGM PARM(&CUSTNAME &ORDAMT)
000200 DCL VAR(&CUSTNAME) TYPE(*CHAR) LEN(15)

000300 DCL VAR(&ORDAMT) TYPE(*DEC) LEN(9 16


2) 2009 by Janson Industries
Copyright
Retrieving Data from IBM i

RTVSYSVAL - retrieves and stores system
parameter values in program variables:
 Date
 Time
 System Default Printer
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&CURTIME)

RTVJOBA - retrieves and stores job
information in program variables:
 Job name
 User running job
 Output queue
RTVJOBA USER(&USERID)
17
Copyright 2009 by Janson Industries
Sending Data to a User

SNDUSRMSG - sends a message to the person
running the program or a specified users message
queue

SNDUSRMSG MSG('I''ll be back')

SNDUSRMSG MSG(&CUSTNAME) MSGTYPE(*INFO) +



You can build complex messages combining static
TOUSR(INTRO99)
text and program variables by using string functions

18
Copyright 2009 by Janson Industries
String Functions

Concatenation - joins two strings together
 *CAT
 *TCAT - eliminates trailing spaces
 *BCAT - one trailing space between strings

SNDUSRMSG MSG('I''ll be back at ’ *CAT &CURTIME)


SNDUSRMSG MSG('I''ll be back at ’ *TCAT &CURTIME)
SNDUSRMSG MSG('I''ll be back at ’ *BCAT &CURTIME)

Results in:

I'll be back at 14:09:08


I'll be back at14:09:08
I'll be back at 14:09:08
19
Copyright 2009 by Janson Industries
String Functions

Substring - identifies a subset of a string
 %SST(string start-location size)

When used with a CHGVAR command,
new strings can be created.
CHGVAR VAR(&NOSECTIME) VALUE(%SST(&CURTIME 1 5)
SNDUSRMSG MSG('I''ll be back at ’ *BCAT &NOSECTIME)

Results in:
I'll be back at 14:09

20
Copyright 2009 by Janson Industries
CL Program
000100 START: PGM PARM(&LIBNAME &FILENAME &MEMNAME &MEMTYPE)
000200
000300 /* Create info is supplied and the variables defined*/

000400
000500 DCL VAR(&FILENAME) TYPE(*CHAR) LEN(10)

000600 DCL VAR(&MEMNAME) TYPE(*CHAR) LEN(10)

000700 DCL VAR(&LIBNAME) TYPE(*CHAR) LEN(10)

000800 DCL VAR(&MEMTYPE) TYPE(*CHAR) LEN(3)


000900
001000 /* The member is created */
001100
001200 CRTMBR: STRSEU SRCFILE(&LIBNAME/&FILENAME) +
001300 SRCMBR(&MEMNAME) +
001400 TYPE(&MEMTYPE)
001500
001600 /* Message to confirm member creation is sent */
001700 21
Copyright
001800 2009 by Janson Industries
SNDUSRMSG MSG('IT''S DONE, PAPPY!')
Compilations
Library

CRTMBR
PF-SRC *PGM
CLP sg
MSGQ
n M
e t io
p l
m
Co
CRTMBR Compilation
CLP Compile Report

22
Copyright 2009 by Janson Industries
RDi Unsuccessful Compilations
Library

CRTMBR EVFEVENT
PF-SRC *PGM *FILE
CLP PF-DTA

CRTMBR CRTMBR
CLP Compile Error Msgs ___

23
Copyright 2009 by Janson Industries
RDi Unsuccessful Compilations

The EVFEVENT member will be
displayed in Error List


Error msgs displayed in Commands log

24
Copyright 2009 by Janson Industries
Verifying in RDi

Does everything compiling does
except create the object


Why bother?

To compile you must be able to
communicate to the IPS

Verifying doesn't require
communicating to the IPS

Verifying faster than compiling

No verifier for CL programs!!

25
Copyright 2009 by Janson Industries
26
Copyright 2009 by Janson Industries
Compilation Reports

In a spool file with the same
name as member


Can be viewed
 Using Navigator's Viewer
 WRKSPLF

27
Copyright 2009 by Janson Industries
Display spool files and double click the spool file

28
Copyright 2009 by Janson Industries
29
Copyright 2009 by Janson Industries
WRKSPLF
Work with All Spooled Files

Type options, press Enter.


1=Send 2=Change 3=Hold 4=Delete 5=Display 6=Release 7=Messages
8=Attributes 9=Work with printing status

Device or Total Cur


Opt File User Queue User Data Sts Pages Page Copy
TESTPGM USFL1AD001 PRT01 RDY 4 1
TESTPGM USFL1AD001 PRT01 RDY 4 1
QPJOBLOG USFL1AD001 QEZJOBLOG TESTPGM RDY 1 1
TESTPGM USFL1AD001 PRT01 RDY 4 1
QPJOBLOG USFL1AD001 QEZJOBLOG TESTPGM RDY 1 1
5 TESTPGM USFL1AD001 PRT01 RDY 4 1
QPJOBLOG USFL1AD001 QEZJOBLOG QDFTJOBD RDY 1 1

Bottom
Parameters for options 1, 2, 3 or command
===>
F3=Exit F10=View 4 F11=View 2 F12=Cancel F22=Printers F24=More keys

30
Copyright 2009 by Janson Industries
Compilation Reports

General Information


Source Code Listing


Cross reference table


Error message summary

31
Copyright 2009 by Janson Industries
General information area
Display Spooled File
File . . . . . : COMPILEEX Page/Line 1/1
Control . . . . . ________ Columns 1 - 78
Find . . . . . . ______________________________
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+...
5763SS1 V6R1M0 100517 Control Language GRA
Program . . . . . . . . . . . . . . . . . . . : COMPILEEX
Library . . . . . . . . . . . . . . . . . . : GRADES
Source file . . . . . . . . . . . . . . . . . : GRADES
Library . . . . . . . . . . . . . . . . . . : GRADES
Source member name . . . . . . . . . . . . . : COMPILEEX 10/30/09 17:06:
Source printing options . . . . . . . . . . . : *SOURCE *XREF *GEN *NOSE
Program generation options . . . . . . . . . : *NOLIST *NOXREF *NOPATCH
User profile . . . . . . . . . . . . . . . . : *USER
Program logging . . . . . . . . . . . . . . . : *JOB
Allow RTVCLSRC command . . . . . . . . . . . : *YES
Replace program . . . . . . . . . . . . . . . : *YES
Target release . . . . . . . . . . . . . . . : V6R2M0
Authority . . . . . . . . . . . . . . . . . . : *LIBCRTAUT
Sort sequence . . . . . . . . . . . . . . . . : *HEX
Language identifier . . . . . . . . . . . . . : *JOBRUN

32
Copyright 2009 by Janson Industries
Searching the report

Control field commands provide quick
movement through the spool file

P+5 Move forward 5 pages


P-5 Move backwards 5 pages
P5 Move to page 5
+5 Move forward 5 lines
-5 Move backwards 5 lines
W+5 Move to the right 5 columns
W-5 Move to the left 5 columns
W5 Move to the fifth column
B or *BOT Move to the end of the spool file
T or *TOP Move to the beginning of the spool file

33
Copyright 2009 by Janson Industries
Find Area

Allows you to search for a character
string within the compilation report

Case sensitive

To find a string:
 Enter the text in the find area
 Press F16

To find other occurrences of the
string continue to press F16

34
Copyright 2009 by Janson Industries
Source Code Listing

Displays source code

Error messages placed after incorrect statements

Control Language Source


SEQNBR *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+...
100- DCL VAR(&JOB) TYPE(*CHAR) LEN(7)
* CPD0740 10 PGM command missing.
200- DCL VAR(&USR) TYPE(*CHAR) LEN(10)
300- RTVJOBA JOB(&JOB)
* CPD0784 30 Variable &JOB for parameter JOB must be *CHAR, minimum length 10
400- RTVJOBA USER(&USER)
* CPD0727 40 Variable '&USER ' is referred to but not declared.
500- SNDUSRMSG MSG('The job number is' *cat &job *cat +
600 'and the user is ' *cat &user *cat +
700 '.') TOUSR(&USER)
* CPD0727 40 Variable '&USER ' is referred to but not declared.
* CPD0727 40 Variable '&USER ' is referred to but not declared.
800- GOTO CMDLBL(END)
* CPD0725 10 End of source file reached without ENDPGM command.
* * * * * E N D O F S O U R C E * * * *
35
Copyright 2009 by Janson Industries
Error messages

Comprised of three parts:
 Error code
 Error message
 Severity level

CPD0740 10 PGM command missing.

36
Copyright 2009 by Janson Industries
Cross Reference table

For every variable and label, the statement
numbers that reference each are displayed

Errors messages listed here also

5763SS1 V6R1M0 090517 Control Language GRA


Cross Reference
Declared Variables
Name Defined Type Length References
&JOB 100 *CHAR 7 300 500
&USR 200 *CHAR 10
* CPD0726 10 Variable '&USR ' declared but not referred to.
Defined Labels
Label Defined References
END ****** 800
* CPD0715 30 Label 'END ' does not exist.
* * * * * E N D O F C R O S S R E F E R E N C E
37
Copyright 2009 by Janson Industries
Error Message Summary

Error message total

Subtotals by severity level

Successful or not message

Max severity

Message Summary
Severity
Total 0-9 10-19 20-29 30-39 40-49 50-59 60-69 70-79 80-89 90
8 0 3 0 2 3 0 0 0 0
Program COMPILEEX not created in library GRADES. Maximum error severity 40.
* * * * * E N D O F M E S S A G E S U M

Severity 20 errors (and higher) stop the compile


38
Copyright 2009 by Janson Industries
Run Time Errors

Source code that compiles can still
have fail when run

Why?
 Non-syntax errors
 Endless loop
 User input errors
 Missing resources
 A required library or file does not exist

If there is a run time error, the system
generates at least one message
 Often many messages 39
Copyright 2009 by Janson Industries
JOBLOG

What message(s) are displayed and
where depends on the interface

However, all messages are written to
the JOBLOG

How to see the JOBLOG depends on
the interface being used

40
Copyright 2009 by Janson Industries
5250 Run Time Errors

The system generated message will be
displayed at the bottom of the screen
Programming Development Manager (PDM)

Select one of the following:

1. Work with libraries


2. Work with objects
3. Work with members

9. Work with user-defined options

+ means there's more to the message


Selection or command
===> call library99/testpgm parm("library98")___________________________________

_______________________________________________________________________________
F3=Exit F4=Prompt F9=Retrieve F10=Command entry
F12=Cancel F18=Change defaults
Parameters passed on CALL do not match those required. +41
Copyright 2009 by Janson Industries
5250 Run Time Errors

Click on message and press Page Down to
display more of the message text
Programming Development Manager (PDM)

Select one of the following:

1. Work with libraries


2. Work with objects
3. Work with members

9. Work with user-defined options

Selection or command
===> call library99/testpgm parm("library98")___________________________________

_______________________________________________________________________________
F3=Exit F4=Prompt F9=Retrieve F10=Command entry
F12=Cancel F18=Change defaults
Error found on CALL command. 42
Copyright 2009 by Janson Industries
5250 Run Time Errors

For more info about the problem:
 Move the cursor to the message
 Press F1
 Additional Message Information will
be displayed for the message


Additional Message Information will
display
 The original message
 Reasons for the error
 Step to correct the error
43
Copyright 2009 by Janson Industries
5250 Run Time Errors
Additional Message Information

Message ID . . . . . . : CPD0172
Date sent . . . . . . : 05/15/09 Time sent . . . . . . : 10:41:52

Message . . . . : Parameters passed on CALL do not match those required.

Cause . . . . . : The parameters passed on the CALL command do not match the
parameters required by program TESTPGM in library LIBRARY99. Correct program
not found or correct parameters not passed. The number of parameters or the
type of parameters passed on the CALL command must match those expected by
the program called.
Recovery . . . : If correct program not found, change or specify the
library name on the command or in a library list. Change the CALL command
and then try the command again.

Bottom
Press Enter to continue.

F1=Help F3=Exit F6=Print F9=Display message details


F10=Display messages in job log F12=Cancel F21=Select assistance level
44
Copyright 2009 by Janson Industries
JOBLOG

Most of the time, Additional Message
Information will be enough to understand
the problem

If not, all messages need to be checked.
 Not just the one displayed by the system


Display the JOBLOG by
 Pressing F10 at the Additional Message
Information screen
 Or issue the DSPJOBLOG command then
F10 and Page Up
45
Copyright 2009 by Janson Industries
JOBLOG
Display All Messages
System:
Job . . : QPADEV0004 User . . : USFL1AD001 Number . . . : 098011

4>> call library99/testpgm parm("library98")


Parameters passed on CALL do not match those required.
Error found on CALL command.
Parameters passed on CALL do not match those required.
Error found on CALL command.

Bottom
Press Enter to continue.

F3=Exit F5=Refresh F12=Cancel F17=Top F18=Bottom

46
Copyright 2009 by Janson Industries
RDi Run Time Errors

The Commands log will display:
 The original command
 All the JOBLOG messages
 Additional message info for the messages

47
Copyright 2009 by Janson Industries
Run Time Errors

As mentioned, some run time errors are
not the result of incorrect programming:
 Incorrect user input
 Lack of authority
 No data

The program should not end when
these types of errors occur

The program should check for these
conditions and provide user friendly
messages
48
Copyright 2009 by Janson Industries
Monitoring for Messages

MONMSG - allows the program, NOT
the OS, to handle specified message(s)

The CL command in the EXEC keyword
is executed when the error occurs

If MONMSG placed right after DCL’s:
 EXEC performed regardless of the
program statement causing the error

If MONMSG follows a command:
 EXEC performed only if the preceding
command caused the specified error
49
Copyright 2009 by Janson Industries
Monitoring for Messages

CPF9810 - library does not exist
MONMSG MSGID(CPF9810) EXEC(CRTLIB &LIBNAME)

CPF9812 - file does not exist
MONMSG MSGID(CPF9812) EXEC(CALLSUBR SUBR(NOFILE))

The above MONMSG invokes an error
handling subroutine called NOFILE
MONMSG MSGID(CPF9812)

No EXEC keyword means the error will
be ignored
50
Copyright 2009 by Janson Industries
Defining a Subroutine

SUBR/ENDSUBR commands surround
the subroutine code

SUBR keyword in SUBR commands
assigns a name

000100 START: PGM PARM(&LIBNAME &FILENAME &MEMNAME &MEMTYPE)


000200
000300 CALLSUBR SUBR(NOFILE)

000400
: :
020500 SUBR SUBR(NOFILE)
020600 /* Subroutine executable statements */

020700 /* Subroutine executable statements */


51
020800
Copyright 2009 by Janson Industries
ENDSUBR
Defining a Subroutine

Subroutines defined at end of code

Will only be executed when called
 Not executed as sequential statements

After the subroutine executes, control
returns to next sequential statement after
the CALLSUBR command (line 400)
000100 START: PGM PARM(&LIBNAME &FILENAME &MEMNAME &MEMTYPE)
000200
000300 CALLSUBR SUBR(NOFILE)

000400
: :
020500 SUBR SUBR(NOFILE)
020600 /* Subroutine executable statements */

020700 /* Subroutine executable statements */ 52


020800
Copyright 2009 by Janson Industries ENDSUBR
Error Handling Routines

Can further investigate the cause of
the problem


Perform complex functions to solve
the problem


Allow the user to select a course of
action from program defined options

53
Copyright 2009 by Janson Industries
Message Replies

Messages can be sent that require
a reply


The reply can be stored in a
program variable


The reply value can be the basis for
conditional statement execution

54
Copyright 2009 by Janson Industries
Message Replies

MSGRPY - Identifies the program
variable to hold the reply

VALUES - Defines the valid values that
can be entered as a reply

IF condition - if true, the statement(s)
following THEN will be performed
MONMSG MSGID(CPF9810) EXEC(SNDUSRMSG MSG('THE LIBRARY +
SPECIFIED DOES NOT EXIST. TO CREATE THE LIBRARY, REPLY +
WITH A "Y". TO END THE PROGRAM, REPLY WITH A "N".') +
MSGRPY(&REPLY) VALUES(Y N))
IF COND(&REPLY *EQ N) THEN(GOTO END)
IF COND(&REPLY *EQ Y) THEN(CRTLIB &LIBNAME)
55
Copyright 2009 by Janson Industries
Creating CL Commands

Creating a CL command entails
identifying a program and prompt screen
to be called when the command is
issued.

So, a program and prompt screen must
be created before creating a command

CL command objects have type = *CMD

A prompt screen makes it easier for a
user to supply data to a program

56
Copyright 2009 by Janson Industries
Creating a CL Command
Programmer specifies:
Name of new command
Library Prompt screen member
Program to run for command

NEWCMD PGMTORUN
PF-SRC *PGM
*CMD
CLP

PRMPTSCR CRTCMD NEWCMD


CMD PRMPTSCR
PGMTORUN
RDi
CL commands Programmer
SEU
57
Copyright 2009 by Janson Industries
Prompt Screen

The prompt screen for the following
program must have 4 data entry fields
000100 START: PGM PARM(&LIBNAME &FILENAME &MEMNAME &MEMTYPE)
000200
000300 DCL VAR(&FILENAME) TYPE(*CHAR) LEN(10)

000400 DCL VAR(&MEMNAME) TYPE(*CHAR) LEN(10)

000500 DCL VAR(&LIBNAME) TYPE(*CHAR) LEN(10)

000600 DCL VAR(&MEMTYPE) TYPE(*CHAR) LEN(3)


000700
000800 CRTMBR: STRSEU SRCFILE(&LIBNAME/&FILENAME) +
000900 SRCMBR(&MEMNAME) +
001000 TYPE(&MEMTYPE)
001100
001100 SNDUSRMSG MSG('IT''S DONE, PAPPY!')
58
001300
Copyright 2009 by Janson Industries
Prompt Screen Example
CREATE MEMBER (CRTMBR)

Type choices, press Enter.

LIBRARY . . . . . . . . . . . . YOURLIB NAME

SOURCE FILE . . . . . . . . . . ___________ NAME

SOURCE MEMBER . . . . . . . . . ___________ NAME

MEMBER TYPE . . . . . . . . . . ___ CLP RPG PF CBL LF

59
Copyright 2009 by Janson Industries
Prompt Screens

Special CL commands to define
prompt screens


CMD - only required command. The
keyword PROMPT defines the screen
title


PARM - used to define an entry

60
Copyright 2009 by Janson Industries
PARM command

PARM keywords used to define a field:
 KWD - defines the fields keyword
 TYPE - type of data the field will accept
 LEN - length of field
 CHOICE - text that will appear to the right
of the field regarding value choices
 PROMPT - text that will appear to the left
of the field, describes the field
 DFT - defines a default value for the field
 VALUES/RSTD - identifies the only valid
values for the field 61
Copyright 2009 by Janson Industries
Prompt Screen Source Example
CMD PROMPT('CREATE MEMBER')
PARM KWD(LIB) TYPE(*CHAR) LEN(11) +
CHOICE('NAME') +
PROMPT('LIBRARY') DFT(YOURLIB)
PARM KWD(FILE) TYPE(*CHAR) LEN(11) +

CHOICE('NAME') +
PROMPT('SOURCE FILE')
PARM KWD(MBR) TYPE(*CHAR) LEN(11) +

CHOICE('NAME') +
PROMPT('SOURCE MEMBER')
PARM KWD(TYPE) TYPE(*CHAR) LEN(3) +
62
Copyright 2009 by Janson Industries CHOICE('CLP RPG PF CBL LF') +
Prompt Screen Example
CMD PROMPT('CREATE MEMBER')

CREATE MEMBER (CRTMBR)

Type choices, press Enter.

LIBRARY . . . . . . . . . . . . YOURLIB NAME

SOURCE FILE . . . . . . . . . . ___________ NAME

PARM
SOURCEKWD(TYPE)
MEMBER . . . TYPE(*CHAR)
. . . . . . LEN(3) NAME
___________ +
CHOICE('CLP RPG
MEMBER TYPE . . . . . . . . . . ___
PF CBLCLPLF') +
RPG PF CBL LF
PROMPT('MEMBER TYPE')
63
Copyright 2009 by Janson Industries
Creating the command - CRTCMD
Create Command (CRTCMD)

Type choices, press Enter.

Command . . . . . . . . . . . . > CRTMBR Name

Library . . . . . . . . . . . > YOURLIBXX Name, *CURLIB

Program to process command . . . > CRTMBR Name, *REXX

Library . . . . . . . . . . . > YOURLIBXX Name, *LIBL, *CURLIB


Command to be created
Source file . . . . . . . . . . QCMDSRC Name
Program that will be called
Library . . . . . Prompt screen
. . . . . . > to display (source
YOURLIBXX definition)
Name, *LIBL, *CURLIB

Source member . . . . . . . . . CRTMBR Name, *CMD 64


Copyright 2009 by Janson Industries
Points to Remember

CL commands can be “grouped”
into programs

Compilation reports are used to
diagnose compile errors

The JOBLOG helps diagnose run
time errors

Users can create their own CL
commands and prompt screens
65
Copyright 2009 by Janson Industries

Você também pode gostar