PL/I Oirinit'I. COMPI' STMr LEV NT 102 1 0 103 2 0 10o 2 0 105 2 0 I'' 2 0 107 2 1 108 2 1 109 2 1 110 2 0 11 2 0 112 2 0 113 1 0 114 2 0 115 2 0 116 2 0 117 2 0 118 2 0 119 2 1 120 2 1 121 2 1 122 2 2 2 3 2 4 2 41 2 4 2 4 2 4 2 3 2 3 2 2 2 1 2 1 2 1 1 0 2 0 2 0 2 0 2 0 2 1 2 1 2 1 2 0 2 0 2 0 fiOl.d.'J.: PhC CET.i r OPTIONS(MAIN); WRITE ROWS SECTION:PROCEDURE; DELCLrA.; j ) 'IXED; PUT SKIP LIST (' ':.l'); PUT FILE (-'i,';il'CH SKIP EDIT ('ROWS') (A); DO I=1 TO I, PUT SKIP LPIT ()i-u.(I)) (X(ii),A(7)); PUT FILE (SYSPNCII) SKIP EDIT (ROWS(I)) (X(11),A(7)); PUT F.I:ji LIST ('END'); PUT FILE (SYSPNCH)' SKIP EDIT ('END') (A); END; SORTCOLUMNS:PROCEDURE; DFC Jli, 1 I, i.(K f ) ) .'IXF D; DECLl.Ji. r (11 1 J 1, i )Ciil".!,,ct "30)VARYING; DECLARE(TEMPI)CIIARACTER( 30)VARYING; Kl 1; DO WHILE (Kl < NC); CURRENT = SUBSTR(COLUMNS(K1),1,6); START = K1 + 1; DO K2 = START TO NC; IF (SUBSTR(.'li-'l(K.?),1,6) = CURRENT) THEN jr0; IF (K2 > START) THEN DO; Kl = KI + 1; TEMP = '.:'Li!IJ.-( :2); COLUMNS(K2) = COLUMNS(K1); C.,L.l'IJni '-v) = TEMP; END; ELSE K1 K1 + 1; END; END; K1 = K1 + 1; END; END; WRITE j:,'jL; LI i : CTIO N:PROCEDURE; i['i U. ii IXED; PUT SKIP LIST ('MATRIX'); PUT FILE (SYSPNCH) SKIP 1l IT ('MATRIX') (A); DO I=1 TO NC; PUT SKIP EDIT (COLUMNS(I)) (X(6),A(24)); PUT FILE (SYSPNCll) SKIP EDIT (COLUMNS(I)) END; PUT SKIP LIST ('END'); PUT FILE (SYSPNCH) SKIP EDIT ('END') (A); END; (X(6),A(24)) WRITE RHS SECTION:PROCEDURE; DrECLA 1i I)ILr, PUT SKIP LIST ('RHS'); PUT FILE (SYSPNCH) SKIP ITF, ('EHS') (A); DO I = 1 TO NR; PUT SKIP EDIT (RIIS(I)) ((llI,A(18)); PUT FILE (SYSPNCH) SKIP EDIT (RHS(I)) (X(12),A(i8)); END; PUT SKIP LIST ('END'); PUT FILE (SYSPNCH) SKIP EDIT ('END') (A); END; Figure 12.--Source listing for MPSRAND documentation--continued. ILER