60 PL/I OPTIMIZING COMPILER t4T- l Aii:rhiOCL Lirli OPTIONS(MAIN); SO.UR.CE LISTING STMT LEV NT 1 0 MPSRAND: PROCEDURE OPTiTOP',('*, 1iJ); 2 1 0 r.LiJ:(i.,:.(500);, '. .:- i ); 3 1 0 DECLARE(COLUMNS(1500),RHS(500); i/UJ.ACTELi(30)VARiF'IIG; 4 1 o0 D I'-L.(L" L 'i ii A.'T '. J '/V t. i i '; 5 1 0 E-'CLAFLE(1. I],. h iF E'; 6 1 0 DECLAi 0(. ,h;il .C,:.r,.J i: h i- .. :. ); 7 1 0 DrECTrld (,, 'I,-",. .,;O' ;l" i i ,...' l I .fti ,VARiINJG; 8 1 0 DECLARE(POSITION,END POSITION;' '.:riD 9 1 0 DECIAL '.(C, )'I'- P'.'.' I ,. \' T- 7 10 1 0 DECLArE';F. i ) .CHARACTER(5)VARYING; 11 1 0 DECLARE (SYSPNCH) OUTPUT; 12 1 0 DROPBLANKS: PROCEDURE; 13 2 0 DO WHILE (SUBSTR(7'.AlI,lil 1)[In,) = ''); 14 L2 1 POSITION = POSITION + 1; 15 2 1 END; 16 2 0 iL. POSITION = -..:. 17 2 0 END; 18 1 0 PULLFIELD:PROCEDURE(TEST I'Fr.): ii LIur i'C1ijARACTER(6)VARYING); 19 2 0 DECIArE( TEST_ ClIAR)CHARACTER( 1) 20 2 0 D CL,\ii.( .';,LIl'.'i ..'i.i...'; (6)VARYING; 21 2 0 DO WHILE (SUBSTR(CAMD,END POSITION,1) = TEST CHAR); 22 2 1 END POSITION = END POSITION + 1; 23 2 1 END; 24 2 0 VALUE = I-.: li'('c.-. POSITION,END POSITION POSITION); 25 2 0 END POSITION = CND POSITION + 1; 26 2 0 POSITION = END POSITION; 27 2 0 RETURN(VALUE); 28 2 0 END; 29 1 0 SETQFLAG:PROCEDURE; 30 2 0 POSITION 16; 31 2 0 CALL I',"-L!.,..- , 32 2 0 IF (,lI.l 'i,(CAi-. ,,-. 1- 'Tli ,1)= 'Q') THEN QFLAG = 'TRUE'; 33 2 0 ELSE IF :.;.!. '[I (.-'r r.,,POSITION+2,1) = 'A') THEN QFLAG = 'FALSE'; 34 2 O ELSE PUT LIST ('ERROR ON TABLE CARD'); 35 2 0 END; 36 1 0 REVERSE COEF SIGN:PROCEDURE; 37' 2 0 IF'SUBSTR(COEF',1 ..I = '-' THEN COEF = 'I i.ii- Fc')lI ,2); 38 2 0 ELSE IF SUBSTR(COEF,1,1) = '+' THEN COEF = '-'IISUBSTR(COEF,2); 39 2 0 ELSE COEF '-' JISUBSTH(COEF,1); 4l0 2 0 END; 41 0 DECIMAL POINT':PROCEDURE; 42 2 0 DECLA- F (LEN)FIXED; 43 2 0 DECLARE (DECIMAL TEST) CHARACTER (5) VA!iYIIIG; 44 2 0 DECLAE (I,J) .i-r-:L.; 45 2 0 DECIMAL TEST = 'FALSE'; 46 2 0 LEN = LE5GTH(COEF); 47 2 0 DO I = I to LEN; 48 2 1 IF SUBSTR(COEF,I,1) = '.' THEN ir:Cu.l;-I.._ TEST = 'TRUE'; 49 2 1 IIm, 50 2 0 IF DECIMAL TEST = 'FALSE' THEN DO; 51 2 1 J 1; 52 2 1 DO WHILE (SUBSTR(COEF,J,1) '= '); Figure 12.--Source listing for tPSRAND documentation.