|
|
Line 1: |
Line 1: |
− | {{AN}} is an acronym for {{bu|C|ontrol}} {{bu|L|anguage}} {{bu|P|rogram}}.
| + | #REDIRECT [[Category:CLP]] |
− | | |
− | Much of what we find in CLP programs are IBM Commands. [http://wiki.midrange.com/index.php/Category:Commands] 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 [[:Category:Commands | commands]] can ONLY be executed from within a CLP program, not from [[Command Line]]. In other programming languages, these might be called OP CODES.
| |
− | * [[PGM]] (Program)
| |
− | * [[ENDPGM]]
| |
− | * [[DCL]] (Declare Variable)
| |
− | * [[IF]]
| |
− | * [[ELSE]]
| |
− | * [[DO]]
| |
− | * [[ENDDO]]
| |
− | * [[GOTO]]
| |
− | * [[MONMSG]]
| |
− | | |
− | == Special characters ==
| |
− | Some characters have special meaning in CL:
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | ! Symbol !! Meaning
| |
− | |-
| |
− | | align="center"|<nowiki>||</nowiki> || *CAT
| |
− | |-
| |
− | | align="center"|<nowiki>|></nowiki> || *BCAT
| |
− | |-
| |
− | | align="center"|<nowiki>|<</nowiki> || *TCAT
| |
− | |-
| |
− | | align="center"|<nowiki>=</nowiki> || *EQ
| |
− | |-
| |
− | | align="center"|<nowiki>></nowiki> || *GT
| |
− | |-
| |
− | | align="center"|<nowiki><</nowiki> || *LT
| |
− | |-
| |
− | | align="center"|<nowiki>>=</nowiki> || *GE
| |
− | |-
| |
− | | align="center"|<nowiki><=</nowiki> || *LE
| |
− | |-
| |
− | | align="center"|<nowiki>¬=</nowiki> || *NE
| |
− | |-
| |
− | | align="center"|<nowiki>¬></nowiki> || *NG
| |
− | |-
| |
− | | align="center"|<nowiki>¬<</nowiki> || *NL
| |
− | |-
| |
− | | align="center"|<nowiki>&</nowiki> || *AND
| |
− | |-
| |
− | | align="center"|<nowiki>|</nowiki> || *OR
| |
− | |-
| |
− | | align="center"|<nowiki>¬</nowiki> || *NOT
| |
− | |}
| |
− | | |
− | Ref: CL Programming, Expressionsin CL commands
| |
− | | |
− | == 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 [http://code.midrange.com/1509e4633a.html getenv] from a thread on [http://archive.midrange.com/rpg400-l/200802/msg00248.html RPG400-L].
| |
− | | |
− | dcl &pNull *ptr /* Auto-initialized to *null */
| |
− | if ( &pEnvVar *eq &pNull ) do
| |
− | | |
− | ==Categories==
| |
− | [[Category:Programming languages]]
| |
− | [[Category:CLP|*]] | |