Free Format Alternatives to MOVE

Q. I’ve been trying to convert a series of RPG IV programs to free format, but I’ve been very frustrated, because free format doesn’t support the MOVE operation. I don’t want to switch back and forth between fixed format and free format (the result is ugly). What can I do? Is there an easy alternative?

A. There are a number of alternatives to the MOVE-related operation codes, and therein lies the challenge in converting to free format. Which option you’ll use depends upon the data types and sizes of the source field and the target field. Here’s a table to get you started:

Source Field Target Field Alternative Coding
Character Character Use EVAL/EVALR, with or without %SUBST.
Character Numeric Use %DEC, %INT, %UNS functions (V5R2).
Character Date Use %DATE, %TIME, %TIMESTAMP functions.
Numeric Character Use %EDITC function with X edit code, with or without %SUBST function.
Numeric Numeric Use simple EVAL.
Numeric Date Use %DATE, %TIME, %TIMESTAMP functions.
Date Character Use %CHAR function.
Date Numeric Use %DEC, %INT, %UNS functions, with %CHAR function (V5R2).
Date Date Use simple EVAL.

To replace MOVEA, at V5R3, you can use the %SUBARR function. For example:

 /Free   %Subarr(Arrayname:50:5) = '10101';  /End-free