C ================================================== C PUNCH C OUTPUTS ONE LINE IN 'S' FORMAT. C PARAMETERS C I1 ) C I2 ) THREE INTEGER*4 VALUES TO BE PUNCHED C I3 ) AS 2 CHARACTER HEX STRINGS C C ================================================== SUBROUTINE PUNCH (I1,I2,I3) COMMON /HOUSE/ PAGE, BUFF, J, LINENO, LLNO, APC, PASS BYTE BUFF(80),OUTBUF(14) INTEGER*2 LINENO,PASS,PAGE INTEGER*4 CSUM,APC,I1,I2,I3,ICNT IF (PASS.NE.2) RETURN DO 10 I=1,16 10 OUTBUF(I)=32 20 CALL HEX (OUTBUF,3,APC/256) CALL HEX (OUTBUF,5,JMOD(APC,256) ) IF (I1.NE.-1) CALL HEX (OUTBUF,7,I1 ) IF (I2.NE.-1) CALL HEX (OUTBUF,9,I2 ) IF (I3.NE.-1) CALL HEX (OUTBUF,11,I3 ) CSUM=APC/256+JMOD(APC,256)+I1+I2+I3 IF (I2.EQ.-1) CSUM=CSUM+1 IF (I3.EQ.-1) CSUM=CSUM+1 CSUM=255-JMOD(CSUM,256) CALL HEX (OUTBUF,13,JMOD(CSUM,256) ) IF (I2.EQ.-1) CALL HEX (OUTBUF,9,JMOD(CSUM,256) ) IF (I2.NE.-1 .AND. I3.EQ.-1) CALL HEX (OUTBUF,11,JMOD(CSUM,256)) ICNT=6 IF (I3.EQ.-1) ICNT=5 IF (I2.EQ.-1) ICNT=4 CALL HEX (OUTBUF,1,ICNT) WRITE (3,1010) OUTBUF 1010 FORMAT (' S1',14A1) RETURN END