Difference between revisions of "Free Form Calcs"
From MidrangeWiki
m |
m (→Limitations) |
||
Line 14: | Line 14: | ||
* End the free form calculation area by putting '/end-free' starting in column 7 on the last line. | * End the free form calculation area by putting '/end-free' starting in column 7 on the last line. | ||
=Limitations= | =Limitations= | ||
+ | certain opcodes have not been implemented in free form RPG. Many have been replaced with corresponding [[RPG Built In Functions | built in functions]]. | ||
+ | |||
+ | These include ... | ||
+ | * Move operations (it is debatable as to the wisdom of not supporting these operations) | ||
+ | ** MOVE | ||
+ | ** MOVEL | ||
+ | ** MOVEA | ||
+ | ** MHHZO | ||
+ | ** MHLZO | ||
+ | ** MLHZO | ||
+ | ** MLLZO | ||
+ | * Arithmetic operations (use free form evaluations or corresponding built in function) | ||
+ | ** ADD | ||
+ | ** SUB | ||
+ | ** DIV | ||
+ | ** MULT | ||
+ | ** MVR | ||
+ | ** XFOOT (use [[%XFOOT]]) | ||
+ | * Comparison (use free form comparisons) | ||
+ | ** COMP | ||
+ | ** IFxx | ||
+ | ** WHENxx | ||
+ | * Flow control | ||
+ | ** DO | ||
+ | ** GOTO | ||
+ | * Parameters (use [[prototyped calls]]) | ||
+ | ** PARM | ||
+ | ** PLIST | ||
+ | * Other | ||
+ | ** TESTB | ||
+ | ** TESTN | ||
+ | ** TESTZ | ||
+ | ** XLATE (use [[%XLATE]]) | ||
=Example= | =Example= |
Revision as of 21:18, 20 December 2006
One of the major new features of RPG 4, introduced in V5R1, is free form calculation specifications.
Contents
Features
- Removes the column restrictions on calculations.
- Can be interspersed with standard, fixed form, calcs
Usage
Using free form calculations is quite easy.
- To start a section of free form calculations, simply put '/free' starting in column 7.
- On the next line start your free form calculations.
- Each line must end with a semi-colon ";".
- Calculations can span multiple lines.
- End the free form calculation area by putting '/end-free' starting in column 7 on the last line.
Limitations
certain opcodes have not been implemented in free form RPG. Many have been replaced with corresponding built in functions.
These include ...
- Move operations (it is debatable as to the wisdom of not supporting these operations)
- MOVE
- MOVEL
- MOVEA
- MHHZO
- MHLZO
- MLHZO
- MLLZO
- Arithmetic operations (use free form evaluations or corresponding built in function)
- ADD
- SUB
- DIV
- MULT
- MVR
- XFOOT (use %XFOOT)
- Comparison (use free form comparisons)
- COMP
- IFxx
- WHENxx
- Flow control
- DO
- GOTO
- Parameters (use prototyped calls)
- PARM
- PLIST
- Other
- TESTB
- TESTN
- TESTZ
- XLATE (use %XLATE)
Example
C if PCFRS = '*ALL' C eval #CFRSF = *BLANK C eval #CFRSH = *BLANK C else C eval #CFRSF = i_CF_Const(PCFRS) C eval #CFRSH = #CFRSF C endif /free if (pMOLS = '*ALL'); eval #MOLSF = *blank; eval #MOLSH = *blank; else; eval #MOLSF = pMOLS; eval #MOLSH = pMOLS; endif; /end-free C C#RTNS IFNE '*EXITPGM' C C#RTNS ANDNE '*RETURN'