C A SHELL SORTING PROG. FOR PTDOS-FORTRAN INTEGER U,V,C,M C ANY ITEM MAY BE INTEGER AS ABOVE; C DOLLAR ITEMS WOULD BE REAL, NORMALLY. DIMENSION U(100),V(100),C(100),O(100),P(100) C C THIS READ SETS # OF ENTRIES ACCEPT 'ENTER NUMBER OF VALUES : ',N C READ ELEMENTS INTO ARRAYS C U=ITEM1, V=ITEM2, C=ITEM3, O=ITEM4, P=ITEM5 DO 10 K=1,N ACCEPT 'ENTER U,V,C,O,P: ',U(K),V(K),C(K),O(K),P(K) 10 CONTINUE C C THE SORT STARTS HERE M= N 110 M=M/2 IF (M .EQ. 0) GOTO 50 J=1 K=N-M 140 I=J 150 L=I+M C THE NEXT LINE SETS THE KEY ITEM C ANY ITEM MAY BE THE KEY. THE REST FOLLOW CORRECTLY. C ITEMS MAY BE DELETED OR ADDED. JUST FOLLOW FORM BELOW. IF (U(I) .LE. U(L)) GOTO 210 C SWAP ITEM1 TEMP =U(I) U(I)=U(L) U(L)=TEMP C SWAP ITEM2 TEMP=V(I) V(I)=V(L) V(L)=TEMP C SWAP ITEM3 TEMP=C(I) C(I)=C(L) C(L)=TEMP C SWAP ITEM4 TEMP=O(I) O(I)=O(L) O(L)=TEMP C SWAP ITEM5 TEMP=P(I) P(I)=P(L) P(L)=TEMP I=I-M IF (I .LT. 1) GOTO 210 GOTO 150 210 J=J+1 IF (J .GT. K) GOTO 110 GOTO 140 C END SORT C C CREATE-SUB. HERE C 50 CALL CREATE ('OBJFILE,'I',$4C0) CALL OPEN (2,'OBJFILE') C WRITE BEGINS HERE C 105 FORMAT (5X,'OBJFILE NAME') 106 FORMAT ('SEC. HEAD') 107 FORMAT (' ') 108 FORMAT ('ITEM1 - ITEM2 - ITEM3 - ITEM4 - * ITEM5') DO 80 I=1,N WRITE (2,70) U(I),V(I),C(I),O(I),P(I) 80 CONTINUE 70 FORMAT (I5,4X,I5,5X,I2,7X,F5.2,6X,F5.2) CALL CLOSE (2) C OPEN THE PRINTER. OR OMIT AND WRITE TO MONITOR CALL OPEN (3,'BPRNT') WRITE (3,105) WRITE (3,106) WRITE (3,107) WRITE (3,108) CALL OPEN (2,'OBJFILE') DO 100 I=1,N READ (2,70) U(I),V(I),C(I),O(I),P(I) 100 CONTINUE DO 20 I=1,N WRITE (3,70) U(I),V(I),C(I),O(I),P(I) 20 CONTINUE CALL CLOSE (2) CALL CLOSE (3) END