I am working on some REALLY old code. Some of the code has dates back in 1967! The oldest date found is 5/9/67.

This code is still running daily. That's as good as 50 years later. The only reason we are touching the code is because we are migrating this application from z/VSE to z/OS.

I don't know the original operating system, but I expect it was DOS/360. But, it could have been an early OS/360.

Anyway, I am seeing some code that am interested to know about, historically.

For instance, it appears that USING could not support multiple registers. I see this code sequence in the 'start' macro:

         USING *,3         ESTABLISH REG 3
         USING *+4095,4    AND REG 4
         USING *+2*4095,5  AND REG 5 AS BASE REGS

Also, it appears that R15 was not standardized to have the programs entry address because they used:

&NAME    BALR  3,0         INITALIZE REG 3
         LA    3,0(3)
         BCTR  3,0
         BCTR  3,0
         LA    4,4095(3)         AND REG 4
         LA    5,4095(4)       AND REG 5

(FYI: The above code snippets were contiguous.)

Also, when they needed to call a subroutine, it appears they did not yet have =A(xxx) constants, because they had to manually adjust the address:

         L     15,=V(UPSI)   LOAD REG 15 WITH UPSI ROUTINE ADDRESS
         AR    15,3  ADD RELOCATION FACTIR FROM REG 3
         BAL   14,4(15)   BRANCH TO UPSI RETURN IN REG 14



--
Tony Thigpen

Reply via email to