VC_USING Examples

LANSA for i

VC_USING Examples

Some correct examples of VC_USING commands follow.

Example 1: Accumulate real fields TOT01 -> TOT05 into virtual field TOTAL:

    C*

    C* VC_USING FIELDS(TOT01 TOT02 TOT03 TOT04 TOT05 TOTAL)

    C*

    C                     Z-ADDTOT01     TOTAL

    C                     ADD  TOT02     TOTAL

    C                     ADD  TOT03     TOTAL

    C                     ADD  TOT04     TOTAL

    C                     ADD  TOT05     TOTAL

Some points to note about this example are:

  • The VC_USING command details all fields in the code section that come from the file definition. The command is included into the source code as a comment so as not to upset the RPG syntax checker when editing and begins in column 9.
  • None of the fields are declared (i.e. type and length specified). LANSA automatically declares all real and virtual file fields in a data structure.

If this example virtual field code section was actually compiled into the file I/O module it would look something like this:

  * FIELD REPLACEMENT VALUES USED FOR THIS SECTION OF USER CODE

  *

  *  Field name as     Field name as in   Internal field name

  *in file definition  user RPG code      used as replacement

  *------------------  ----------------   ------------------

  *     TOT01              TOT01              @F0001

  *     TOT02              TOT02              @F0002

  *     TOT03              TOT03              @F0003

  *     TOT04              TOT04              @F0004

  *     TOT05              TOT05              @F0005

  *     TOTAL              TOTAL              @F0006

  *

 C                     Z-ADD@F0001    @F0006

 C                     ADD  @F0002    @F0006

 C                     ADD  @F0003    @F0006

 C                     ADD  @F0004    @F0006

 C                     ADD  @F0005    @F0006

Note how the VC_USING command has been replaced by a series of comments that detail exactly what effect it has on the following code. Also note how all fields listed in the VC_USING command have been replaced by their "internal" names in the actual code section.

Example 2: Accumulate real fields TOT01 -> TOT05 into virtual field FULLTOTAL:

   C*

   C* VC_USING FIELDS(TOT01 TOT02 TOT03 

   C*                 TOT04 TOT05 (FULLTOTAL FFFFFF))

   C*

   C                     Z-ADDTOT01     FFFFFF

   C                     ADD  TOT02     FFFFFF

   C                     ADD  TOT03     FFFFFF

   C                     ADD  TOT04     FFFFFF

   C                     ADD  TOT05     FFFFFF

Some points to note about this example are:

  • The VC_USING command has been continued over 2 source lines by use of the "+" continuation character. In addition, it indicates that file field "FULLTOTAL" is actually referenced by name "FFFFFF" in the following code. This was done because field name FULLTOTAL is more than 6 characters long.
  • The name FFFFFF has been used in place of name FULLTOTAL in all RPG code lines.

If this example virtual field code section was actually compiled into the file I/O module it would look something like this

  FIELD REPLACEMENT VALUES USED FOR THIS SECTION OF USER CODE

  *

  *  Field name as     Field name as in   Internal field name

  *in file definition  user RPG code      used as replacement

  *------------------  ----------------   -------------------

  *       TOT01              TOT01              @F0001

  *       TOT02              TOT02              @F0002

  *       TOT03              TOT03              @F0003

  *       TOT04              TOT04              @F0004

  *       TOT05              TOT05              @F0005

  *       FULLTOTAL          FFFFFF             @F0006

  *

 C                     Z-ADD@F0001    @F0006

 C                     ADD  @F0002    @F0006

 C                     ADD  @F0003    @F0006

 C                     ADD  @F0004    @F0006

 C                     ADD  @F0005    @F0006

Again the VC_USING command has been replaced by a series of comments that detail exactly what effect it has had on the following code. Also note how all fields listed in the VC_USING command have been replaced by their "internal" names, particularly the name "FFFFFF".