Create CL Program (CRTCLPGM)

Where allowed to run: All environments (*ALL)
Threadsafe: No
Parameters
Examples
Error messages

The Create CL Program (CRTCLPGM) command creates a Control Language (CL) program from the specified CL source program.

Restrictions: The amount of auxiliary storage occupied by a compiled program varies with the number of commands in the program, the kinds of functions performed by the commands (for example: display, create, add, and call), and the kinds of parameter values specified (variables versus constants). Some combinations of these factors can cause the system internal size limits for the program to be exceeded (an unlikely occurrence). When the limits are exceeded, the program must be rewritten, usually as multiple programs instead of one program.

Top

Parameters

Keyword Description Choices Notes
PGM Program Qualified object name Required, Positional 1
Qualifier 1: Program Name
Qualifier 2: Library Name, *CURLIB
SRCFILE Source file Qualified object name Optional, Positional 2
Qualifier 1: Source file Name, QCLSRC
Qualifier 2: Library Name, *LIBL, *CURLIB
SRCMBR Source member Name, *PGM Optional, Positional 3
TEXT Text 'description' Character value, *SRCMBRTXT, *BLANK Optional
OPTION Source listing options Values (up to 6 repetitions): *SOURCE, *NOSOURCE, *SRC, *NOSRC, *XREF, *NOXREF, *GEN, *NOGEN, *SECLVL, *NOSECLVL, *SRCDBG, *NOSRCDBG, *LSTDBG, *NOLSTDBG Optional, Positional 4
GENOPT Generation options Values (up to 3 repetitions): *NOLIST, *LIST, *NOXREF, *XREF, *NOPATCH, *PATCH Optional, Positional 5
USRPRF User profile *USER, *OWNER Optional
LOG Log commands *JOB, *YES, *NO Optional
ALWRTVSRC Allow RTVCLSRC *YES, *NO Optional
REPLACE Replace program *YES, *NO Optional
TGTRLS Target release Simple name, *CURRENT, *PRV Optional
AUT Authority Name, *LIBCRTAUT, *CHANGE, *ALL, *USE, *EXCLUDE Optional
SRTSEQ Sort sequence Single values: *HEX, *JOB, *JOBRUN, *LANGIDUNQ, *LANGIDSHR
Other values: Qualified object name
Optional
Qualifier 1: Sort sequence Name
Qualifier 2: Library Name, *LIBL, *CURLIB
LANGID Language ID Character value, *JOBRUN, *JOB Optional
Top

Program (PGM)

Specifies the program to be created.

This is a required parameter.

Qualifier 1: Program

name
Specify the name of the program to be created.

Qualifier 2: Library

*CURLIB
The program is stored in the current library for the job. If no current library entry exists in the library list, QGPL is used.
name
Specify the library where the program is to be stored.
Top

Source file (SRCFILE)

Specifies the source file that contains the CL source member to be compiled.

Qualifier 1: Source file

QCLSRC
The source file named QCLSRC, that contains the CL source member to be compiled, is used.
name
Specify the name of the source file that contains the CL source member to be compiled. The source file can be a database file, a device file, or an inline data file.

Qualifier 2: Library

*LIBL
All libraries in the library list for the current thread are searched until the first match is found.
*CURLIB
The current library for the thread is used to locate the source file. If no library is specified as the current library for the thread, the QGPL library is used.
name
Specify the name of the library to be searched.
Top

Source member (SRCMBR)

Specifies the name of the source member (of the source file) that contains the CL source program to be compiled.

*PGM
The job name is the same as the program name specified for the Program (PGM) parameter.
name
If the member name is not the same as the name of the program to be created, specify the name of the member that contains the CL source program.
Top

Text 'description' (TEXT)

Specifies the text that briefly describes the object.

*SRCMBRTXT
The text is taken from the source file member used to create the CL program.
*BLANK
No text is specified.
character-value
Specify no more than 50 characters of text, enclosed in apostrophes.
Top

Source listing options (OPTION)

Specifies the types of output listings created when this command is processed, and if a program is created when this command is processed. Multiple option values can be specified in any order on this parameter. If neither or both of the values in each group are specified, the underlined value will be used.

Note: The underlined values for this parameter are similar to, but not actually default values, and therefore, cannot be changed with the Change Command Default (CHGCMDDFT) command.

Source Listing Option

*SRC or *SOURCE
The compiler creates a listing of the source input used to compile the program.
*NOSRC or *NOSOURCE
A complete compiler source listing is not created; only compiler errors are listed.

Cross Reference Option

*XREF
The compiler creates a cross-reference listing of references to variables or labels in the source. If *NOSOURCE is specified, *NOXREF is always assumed.
*NOXREF
No cross-reference listing of references to variables and data items in the source is created.

Program Creation Option

*GEN
The compiler creates a program and places it in the appropriate library.
*NOGEN
No program is created. The compiler is to syntax check the source and (if *SOURCE or *SRC option is specified) produce a source listing.

Second-Level Message Text Option

*NOSECLVL
No second-level message text will be printed.
*SECLVL
Second-level text will be printed, along with first-level text, for compiler errors.

Source-Level Debug Option

*NOSRCDBG
Source-level debug information is not generated. Source-level error information will not be generated unless *LSTDBG is specified.
*SRCDBG
The compiler generates source-level error and debug information for use with CoOperative Development Environment/400 (CODE/400). Source-level or listing-level debugging information is also necessary if you want to use the source-level debug function of the system debugger (STRDBG OPMSRC(*YES)) to debug OPM programs. An event file is created even if the compiler completes the process without error.

Listing-Level Debug Option

*NOLSTDBG
A listing view or listing-level debugging information is not generated. Source-level error information will not be created unless *SRCDBG is specified.
*LSTDBG
The compiler generates a listing view, source-level error information, and listing-level debugging information for use with CoOperative Development Environment/400 (CODE/400). Source-level or listing-level debugging information is also necessary if you want to use the source-level debug function of the system debugger (STRDBG OPMSRC(*YES)) to debug OPM programs.
Top

Generation options (GENOPT)

Specifies the program generation options to be used. These values are ignored if OPTION(*NOGEN) is specified. Multiple option values can be specified in any order on this parameter. If neither or both of the values in each group are specified, the underlined value will be used.

Note: The underlined values for this parameter are similar to, but not actually default values, and therefore, cannot be changed with the Change Command Default (CHGCMDDFT) command.

IRP/MI Listing Option

*NOLIST
No listing of the intermediate representation of the program (IRP) is created.
*LIST
A listing of the intermediate representation of the program (IRP), including the generated machine interface (MI) instructions, is created.

IRP/MI Cross-Reference Option

*NOXREF
No cross-reference listing of variable and data item references in the intermediate representation of the program is created.
*XREF
A cross-reference listing of variable and data item references in the intermediate representation of the program is created.

Program Patch Area Option

*NOPATCH
No space is to be reserved in the compiled program for a program patch area.
*PATCH
Space is reserved in the compiled CL program for a program patch area.
Top

User profile (USRPRF)

Specifies whether the authority checking done while this program is running should include only the user who is running the program (*USER) or both the user who is running the program and the program owner (*OWNER). The profiles of the program user or both the program user and the program owner are used to control which objects can be used by the program, including the authority the program has for each object. Only the program owner or a user with QSECOFR authority can change the user profile attribute.

Note: This parameter is ignored if REPLACE(*YES) is specified.

*USER
The program runs under the user profile of the program's user.
*OWNER
The user profiles of both the program's owner and the program's user are used when the program is processed. The collective sets of object authority in both user profiles are used to find and access objects during program processing. Authority from the owning user profile's group profile is not included in the authority for the running program.
Top

Log commands (LOG)

Specifies the logging options for a created CL program. *YES or *NO specified here takes precedence over any value specified in the Change Job (CHGJOB) command.

*JOB
Logging of commands in a running CL program depends on the status of the job's logging flag (see the LOGCLPGM parameter of the Change Job (CHGJOB) command).
*YES
Commands are logged in all cases.
*NO
Commands are not logged.
Top

Allow RTVCLSRC (ALWRTVSRC)

Specifies whether source for the CL program is saved with the program. Source that is saved can be retrieved later by using the Retrieve CL Source (RTVCLSRC) command.

*YES
Source for the CL program is saved with the program.
*NO
Source for the CL program is not saved with the program.
Top

Replace program (REPLACE)

Specifies, if a program by the same name already exists in the specified library, whether the existing program is replaced.

Notes:

  1. If a running CL program is recompiled with *YES specified for the REPLACE parameter, message queue errors may occur in the running CL program.
  2. Specifying *YES for this parameter will cause the values of the User profile (USRPRF) parameter and Authority (AUT) parameter to be ignored. The existing program is used as the source of authority, and the user profile attribute is copied from the existing program to the new program. Use the Change Program (CHGPGM) command to change the user profile and the Grant Object Authority (GRTOBJAUT) or Revoke Object Authority (RVKOBJAUT) commands to change the authority for the program.
*YES
Replace the existing program by moving it to the QRPLOBJ library.
*NO
Do not replace an existing program by the same name in the specified library.
Top

Target release (TGTRLS)

Specifies the release of the operating system on which you intend to use the object being created.

When specifying the target-release value, the format VxRxMx is used to specify the release, where Vx is the version, Rx is the release, and Mx is the modification level. For example, V5R3M0 is version 5, release 3, modification 0.

Valid values depend on the current version, release, and modification level of the operating system, and they change with each new release. You can press F4 while prompting this command parameter to see a list of valid target release values.

*CURRENT
The object is to be used on the release of the operating system currently running on your system. The object can also be used on a system with any subsequent release of the operating system installed.
*PRV
The object is to be used on the previous release with modification level 0 of the operating system. The object can also be used on a system with any subsequent release of the operating system installed.
character-value
Specify the release in the format VxRxMx. The object can be used on a system with the specified release or with any subsequent release of the operating system installed.
Top

Authority (AUT)

Specifies the authority you are granting to the users who do not have specific authority for the object, who are not on the authorization list, and whose user group has no specific authority for the object.

*LIBCRTAUT
The system determines the authority for the object by using the value specified for the Create authority (CRTAUT) parameter on the Create Library (CRTLIB) command for the library containing the object to be created. If the value specified for the CRTAUT parameter is changed, the new value will not affect any existing objects.
*CHANGE
The user can perform all operations on the object except those limited to the owner or controlled by object existence (*OBJEXIST) and object management (*OBJMGT) authorities. The user can change and perform basic functions on the object. *CHANGE authority provides object operational (*OBJOPR) authority and all data authority. If the object is an authorization list, the user cannot add, change, or remove users.
*ALL
The user can perform all operations except those limited to the owner or controlled by authorization list management (*AUTLMGT) authority. The user can control the object's existence, specify the security for the object, change the object, and perform basic functions on the object. The user also can change ownership of the object.
*USE
The user can perform basic operations on the object, such as running a program or reading a file. The user cannot change the object. Use (*USE) authority provides object operational (*OBJOPR), read (*READ), and execute (*EXECUTE) authorities.
*EXCLUDE
The user cannot access the object.
name
Specify the name of an authorization list to be used for authority to the object. Users included in the authorization list are granted authority to the object as specified in the list. The authorization list must exist when the object is created.

Note: This parameter is ignored when REPLACE(*YES) is specified.

Top

Sort sequence (SRTSEQ)

Specifies the sort sequence table to be used for string comparisons for this CL program. The sort sequence value is used with the language identifier and the coded character set identifier of the job to determine the sort sequence table to use.

Single values

*HEX
A sort sequence table is not used. The hexadecimal values of the characters are used to determine the sort sequence.
*JOB
The sort sequence used is the SRTSEQ associated with the job when the CL program is created.
*JOBRUN
The sort sequence used is the SRTSEQ associated with the job when the CL program is run.
*LANGIDUNQ
The sort sequence table uses a unique weight for each character, and is the unique-weight sort table for the language specified for the LANGID parameter.
*LANGIDSHR
The sort sequence table uses the same weight for multiple characters, and is the shared-weight sort sequence table associated with the language specified for the LANGID parameter.

Qualifier 1: Sort sequence

name
Specify the name of the sort sequence table to be used with this CL program.

Qualifier 2: Library

*LIBL
All libraries in the library list for the current thread are searched until the first match is found.
*CURLIB
The current library for the thread is searched. If no library is specified as the current library for the thread, the QGPL library is searched.
name
Specify the name of the library to be searched.
Top

Language ID (LANGID)

Specifies the language identifier to be used when SRTSEQ(*LANGIDUNQ) or SRTSEQ(*LANGIDSHR) is specified.

*JOBRUN
The language ID used is the LANGID associated with the job when the CL program is run.
*JOB
The language ID used is the LANGID associated with the job when the CL program is created.
language-ID
Specify the language identifier to be used by the job.
Top

Examples

Example 1: Creating a Program to be Run by Any System User

CRTCLPGM   PAYROLL TEXT('Payroll Program')

This command calls the CL compiler to create a program named PAYROLL. The CL procedure source is in the default source file QCLSRC in the member PAYROLL. A compiler listing is created. The program is processed under the program user's user profile and can be run by any system user.

Example 2: Creating a Program to be Run by an Authorized User

CRTCLPGM   PGM(PARTS)  SRCFILE(MYLIB/PARTDATA)  AUT(*EXCLUDE)
           TEXT('This program displays all parts data')

This command creates a CL program named PARTS and stores it in the current library. The source for the program is in the PARTS member of the source file PARTDATA in the library MYLIB. A compiler listing is created. This program can be processed under the profile of the user that is running the program, who could be the owner or another user to which the owner has granted specific authorization by name in the Grant Object Authority (GRTOBJAUT) command.

Example 3: Creating a Program to be Run on a Previous Release System

CRTCLPGM   PGM(MYPGM)  SRCFILE(MYLIB/MYDATA)  TGTRLS(*PRV)

This command creates a CL program that can be saved for a previous release system, restored on that system, and run on that system.

Top

Error messages

*ESCAPE Messages

CPF0C33
Target release &1 not valid.
CPF0C35
Target release &1 is not a supported release.
CPF0801
Program &1 not created.
CPF0804
Built-in function operands not valid. Reason code &1.
CPF0807
File containing compiler printout not opened.
CPF0808
Error in compiler-created code.
CPF0814
Licensed Program 5722-SS1 Option 9 not installed.
CPF0815
CL program &1 in &2 cannot be created for previous release.
CPF0816
%SWITCH mask &1 not valid.
CPF0849
Space addressing violation.
CPF3202
File &1 in library &2 in use.
CPF3203
Cannot allocate object for file &1 in &2.
CPF3224
Not authorized to perform operation on file &1.
EVF3140
The program's debug information was not created.
Top