/COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. /EDIT 4 9-25-70 .TITLE .SS / OBJECT-TIME SYSTEM SUBROUTINE TO CALCULATE ARRAY ELEMENT ADDRESS / CALLING SEQUENCE... / JMS .SS / .DSA ARRAY /ADDRESS (INDIRECT) OF ARRAY DESCRIPTION / LAC S1 /SUBSCRIPT 1 (I) / LAC S2 /SUBSCRIPT 2 (J) / LAC S3 /SUBSCRIPT 3 (K) / DAC . /STORE ARRAY ELEMENT ADDRESS / .GLOBL .SS,.AD .IFDEF TIME% .GLOBL TIMON,TIMOFF .ENDC .SS CAL 0 .IFDEF TIME% JMS* TIMON .DSA 67 .ENDC LAC* .SS /INLINE .CB ISZ .SS DAC SCALC1 SPA LAC* SCALC1 DAC SCALC5 /SAVE POINTER TAD K00003 DAC SCALC1 /ADDRESS OF ARRAY DESCRIPTOR BLOCK (WD 1) XCT* .SS TAD K00001 / (I-1) DAC SCALC2 LAC* SCALC1 /LOAD WORD 1 RTL /MODE NUMBER INTO LINK RTL /AND BIT 0 SNL!SMA!CML!CMA /SKIP IF L=1 OR BIT 0=1 JMP SCALC3 /MODE NO. = 00 (INTEGER) SNL!SMA!CML /SKP IF L=1 OR BIT 0=1 JMP SCALC3 /MODE NO. =11 (LOGICAL) LAC SCALC2 CLL!RAL!SZL /(I-1)*2, MODE NO.=01(REAL) TAD SCALC2 /(I-1)*3, MODE NO.=10(DOUBLE) DAC SCALC2 /(I-1)*N SCALC3 JMS SCALC9 / (I-1)*N+(J-1)*N*IMAX JMS SCALC9 / (I-1)*N+(J-1)*N*IMAX+(K-1)*N*IMAX*JMAX ISZ .SS /BUMP TO DAC SCALC4 LAC* SCALC5 / ARRAY ELEMENT ADDRESS IS TAD SCALC2 / ARRAY ADDRESS + SUBSCRIPT CALCULATION .IFDEF TIME% JMS* TIMOFF .DSA 67 .ENDC JMP* .SS .EJECT / / SUBROUTINE TO CALCULATE ROW/COLUMN POSITION / CALLING SEQUENCE... / JMS SCALC9 / SCALC9 CAL 0 ISZ SCALC1 LAC* SCALC1 /ALL DIMENSION INFORMATION HAS BEEN ISZ .SS SNA /PROCESSED IF THE DESCRIPTION WORD IS ZERO. JMP SCALC4 XCT* .SS TAD K00001 / (S-1)*D*N JMS* .AD LAC* SCALC1 TAD SCALC2 DAC SCALC2 JMP* SCALC9 K00001 .DSA 777777 SCALC2 .DSA 000000 / SCALC1 .DSA 0 /ADDRESS OF ARRAY DESCRIPTION BLOCK (WD 4) SCALC5 .DSA 0 K00003 .DSA 777775 .END