PROGRAM SORT LOGICAL*1 NBYTE(2), DEF(700,32), DBYTE LOGICAL SORTED EQUIVALENCE ( N, NBYTE ) C OPEN( UNIT=1, NAME='ORIENT.DEF', TYPE='OLD', READONLY ) DO 1000 I=1,700 READ(1,10,END=1100) N, ( DEF(I,J), J=1,30 ) 10 FORMAT(I8,2X,30A1) DEF(I,31) = NBYTE(1) DEF(I,32) = NBYTE(2) 1000 CONTINUE 1100 NWORDS = I - 1 WRITE(5,*) 'NWORDS =',NWORDS CLOSE( UNIT=1 ) C C - SORT DEFINITIONS. DO 2000 IS=7,1,-1 I = 1 NSORT = NWORDS SORTED = .TRUE. C C - SWITCH VALUES. 100 IF( DEF(I+1,IS) .GE. DEF(I,IS) ) GO TO 200 DO 3000 J=1,32 DBYTE = DEF(I,J) DEF(I,J) = DEF(I+1,J) 3000 DEF(I+1,J) = DBYTE LAST = I SORTED = .FALSE. C 200 I = I+1 IF( I .LT. NSORT ) GO TO 100 IF( SORTED ) GO TO 2000 I = 1 NSORT = LAST SORTED = .TRUE. GO TO 100 2000 CONTINUE C OPEN( UNIT=2, NAME='ORIENT.DEF' ) DO 4000 I=1,NWORDS NBYTE(1) = DEF(I,31) NBYTE(2) = DEF(I,32) 4000 WRITE(2,10) N, ( DEF(I,J), J=1,30 ) C STOP END