From MidrangeWiki
Revision as of 11:44, 5 April 2016 by DaveLClarkI (talk | contribs) (ILE/CL Built-in Functions)
Jump to: navigation, search

CLP is an acronym for Control Language Program.

Much of what we find in CLP programs are IBM Commands. [1] Also see CLP Coding Rules and Category:Commands.

As with many other languages, there are multiple versions in popular usage, such as CLP/400 and ILE-CLP.

In some realities, this is comparable to software that is the "glue" connecting higher level language programs like RPG; data base files and their over-rides; screen and print "files" and their over-rides; and other objects with Menus ... typically when we take a menu option, we are launching a CLP program.

CLP Unique Commands

Some 400 commands can ONLY be executed from within a CLP program, not from Command Line. In other programming languages, these might be called OP CODES.

Special characters

Some characters have special meaning in CL:

Symbol Meaning
|| *CAT
|> *BCAT
|< *TCAT
= *EQ
> *GT
< *LT
>= *GE
<= *LE
¬= *NE
¬> *NG
¬< *NL
& *AND
| *OR
¬ *NOT

Ref: CL Programming, Expressions in CL commands

ILE/CL Built-in Functions

Like RPG, CLP also supports many built-in functions. These would typically be used in CHGVAR and/or IF statements to manipulate variable data before its subsequent use. Initially, CLP offered the following built-in functions.

Function Use
 %BINary Convert signed decimal data to or from binary character format.
 %SubSTring Extract or set a subset of another character string.
 %SWITCH Evaluate one or more of the eight job switches and return a Boolean result.

Pointer use

As of V5R4, CL allows the use of pointers. There were some problems with uninitialised pointers, and PTFs were issued. As of 15 Feb 2008, 5722-SS1:

  • SI28620
  • SI28196
  • SI27953

These are immediate PTFs, but you will need to re-compile any CL programs using pointers in order to get the issues fixed.

One can't compare a pointer to *NULL, but a clever idea is to create an unused pointer (which will be set to *NULL if the above PTFs are applied) and compare to that. Here is a snippet from Tom L. for a CL program that performs getenv from a thread on RPG400-L.

dcl &pNull *ptr  /* Auto-initialized to *null */
if ( &pEnvVar *eq &pNull )  do

Note: As of V6R1 of the operating system, complete *NULL support was added to ILE CL encompassing the DCL, IF, and CHGVAR statements.



This category has only the following subcategory.