ibmi-brunch-learn

Announcement

Collapse
No announcement yet.

The RPG compiler V7R3M0 TR8 is not backwards compatiple with V7R3M0 TR6

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • The RPG compiler V7R3M0 TR8 is not backwards compatiple with V7R3M0 TR6

    Today one of my programs crashed with an error referencing to the QRNXUTIL program.

    I have made a minor change in the source ( removing some statements ).
    Compiled it and after testing it was put into production.

    Test is done on one machine and production on another.

    Then I was called. The job was in MSGW.
    The message told me that the RPG program referenced to entries in QRNXUTIL that didn't exist.

    What????

    Long history short.
    I found out that there were put some PTFs on the test machine so the RPG compiler and RPG runtime was
    upgraded to TR8. This was not done yet on the production machine. But there were 8 more entries in QRNXUTIL
    on the test machine than on the production machine. One of the entries referred to TIMESTAMP which has been
    changed in TR8 ( %timestamp() ).
    And %timestamp() was used in the program.....

    So the RPG compiler V7R3M0 TR8 is not backwards compatiple with V7R3M0 TR6 ( and perhaps TR7 ).

    The quick fix was to compile the program to target release V7R3M2.
    This solved the problem.

    So you have to be alert to this situation.



  • #2
    See https://www.ibm.com/support/pages/node/6127845 there is an environment variable that can be set at compile time to maintain the old behaviour - it may fix your problem.

    Comment


    • #3
      I don't think this would solve the problem.

      I found out that the PTFs
      ILE RPG compiler: SI73190
      ILE RPG runtime: SI73189
      were installed this weekend on the test machine.

      They were not installed yet on the production machine.

      On the test machine the serviceprogram QRNXUTIL has x'53' entries while
      QRNXUTIL only had x'4B' entries on the production machine.

      And the entry x'53' represented TIMESTAMP.
      So when the program compiled with the TR8 compiler tried to refer to an entry
      in QRNXUTIL that doesn't exist then the exception error happens.

      Comment


      • #4
        I understand that. But note that the environment variable is used at _compile_ time. In other words it will produce a different result and (I suspect) cause a different point in QRNXUTIL - the "old" one.

        This thread highlighted the problem https://archive.midrange.com/rpg400-.../msg00403.html This thread is broken so you may have to search for the environment variable name or "new toys" to get all the posts.

        Barbara Morris was the one who provided the environment variable response as the cure.

        Comment


        • #5
          The thread describes the problem.
          But I haven't heard about it before and was very surprised when it happened.

          Anyway thank you for your response.

          Comment

          Working...
          X