Sample Program: Using an Array

*
* ARRAY EXAMPLE
*
*   INT ARR[12];
*   FOR (I = 0 ; I < 12 ; I++)
*      ARR[I] = 2 * I;
*   FOR (I = 0 ; I < 12 ; I++)
*      COUT << ARR[I] << ENDL;
*
*
ARRAYEX  START
         STM   14,12,12(13)
         BALR  12,0
         USING *,12
         OPEN  ARRFILE,OUTPUT
*
* FIRST LOOP: ARR[I] = 2I
*
         SR    2,2               USE R2 FOR I (LOOP COUNTER)
         LA    3,ARR             USE R3 FOR INDEX REG
         LA    5,12              R5 = 12 (LOOP LIMIT)
STORE    LR    4,2               R4 = I
         AR    4,2               R4 = I * 2
         ST    4,0(3)            ARR[I] = I * 2
         LA    3,4(3)            MOVE INDEX REG TO NEXT ARRAY ELEMENT
         LA    2,1(2)            I = I + 1
         CR    2,5               IF (I < 12)
         BL    STORE                LOOP AGAIN
*
* SECOND LOOP: COUT << ARR[I] << ENDL
*
         SR    2,2               USE R2 FOR I AGAIN
         LA    3,ARR             SET UP INDEX REG AGAIN
PRINT    L     4,0(3)            R4 = ARR[I]
         CVD   4,ARRPACK         CONVERT ARR[I] TO DEC
         UNPK  ARROUT,ARRPACK    CONVERT ARR[I] TO EBCDIC
         OI    ARROUT+2,X'F0'    FIX SIGN OF ARR[I]
         PUT   ARRFILE,OUTREC    PRINT ARR[I]
         LA    3,4(3)            MOVE INDEX REG TO NEXT ARRAY ELEMENT
         LA    2,1(2)            I = I + 1
         CR    2,5               CHECK IF AT END OF ARRAY
         BL    PRINT             IF NOT, PRINT AGAIN
*
         CLOSE ARRFILE
         LM    14,12,12(13)
         BR    14
*
ARRFILE  DCB   LRECL=4,RECFM=F,MACRF=P,DDNAME=ARROUT
*
*  OUTPUT RECORD
*
OUTREC   DS    0CL4
         DC    CL3' '
ARROUT   DS    CL3
*
ARR      DS    12F
ARRPACK  DS    D
         END


Email Me | Office Hours | My Home Page | Department Home | MCC Home Page

© Copyright Emmi Schatz 2003