C     ALGORITHM 607, COLLECTED ALGORITHMS FROM ACM.
C     ALGORITHM APPEARED IN ACM-TRANS. MATH. SOFTWARE, VOL.9, NO. 4,
C     DEC., 1983, P. 427-440.
     THIS ACM-CALGO ALGORITHM 607 CONTAINS 18 LOGICAL FILES.  THESE
18 LOGICAL FILES ARE CONTAINED IN ONE PHYSICAL FILE CONSISTING
OF RECORDS OF 80 8-BIT ASCII CHARACTERS, GROUPED INTO BLOCKS
OF 36 RECORDS (2880 CHARACTERS).  EACH LOGICAL FILE AFTER THE
FIRST BEGINS WITH A RECORD CONSISTING OF THE STRING
"=TES FILE=N" WHERE THE QUOTATION MARKS ARE NOT PART OF THE
RECORD, AND N IS A DECIMAL NUMBER FROM 2 TO 18 INCLUSIVE.  BY
RECOGNIZING THIS RECORD, YOUR TEXT EDITOR, OR A TRIVIAL PROGRAM
(NOT PROVIDED HERE) SHOULD BE ABLE TO EXTRACT THE DESIRED
LOGICAL FILE FROM THE PHYSICAL FILE.
     IN ADDTION, A TAPE CONTAINING THE TES, IN THE FORMAT
ACCEPTED AND PRODUCED BY THE TES, IS DISTRIBUTED WITH ALGORITHM
607.  THIS TAPE HAS PHYSICAL BLOCK SIZES OF 180, 3600,...,3600
8-BIT CHARACTERS.  THE RECORDING FORMAT OF THIS TAPE IS DESCRIBED
MORE FULLY IN CHAPTER 2 OF THE DOCUMENT PROVIDED HERE AS LOGICAL
FILE 18 OF THE ALGORITHM DESCRIPTION.  BOTH TAPES (AS DISTRIBUTED)
ARE UNLABELLED AND ARE RECORDED AT 1600 BPI.
THE FILES CONTAIN:
   1:   THIS DESCRIPTION, PREPARED 830826. (README)
   2:   IBM SYSTEM/370 VERSION OF TES (ibm_370)
   3:   CDC 6600/7600 VERSION OF TES  (cdc_76)
   4:   UNIVAC 1100 VERSION OF TES    (univac)
   5:   DEC VAX USING VMS VERSION OF TES  (decvms)
   6:   HELP FILE FOR DEC VAX USING VMS VERSION (decvms.txt)
   7:   DEC VAX USING UNIX VERSION OF TES, FORTRAN SUBPROGRAMS (decunx_f)
   8:   DEC VAX USING UNIX VERSION OF TES, C PROGRAMS (decunx_c)
   9:   DEC PDP10 USING TOPS 10 OR TOPS 20, FORTRAN SUBPROGRAMS (pdptop_f)
   10:  DEC PDP10 USING TOPS 10 OR TOPS 20, MACRO 10 SUBPROGRAMS (pdptop_m)
   11:  DEC PDP11 USING RSX11M/V1 VERSION OF TES, FORTRAN SUBPROGRAMS
   (pdprsx_f)
   12:  DEC PDP11 USING RSX11M/V1 VERSION OF TES, MACRO11 SUBPROGRAMS
   (pdprsx_m)
   13:  DEC PDP11 USING RSX11M/V1 TASK BUILD AND OVERLAY INSTRUCTIONS
   (pdprsx_o)
   14:  DATA GENERAL MV/8000 VERSION OF TES (dgenmv)
   15:  SPERRY UNIVAC V70 VERSION OF TES. (suv70)
   16:  TEXT EXCHANGE SYSTEM USER'S GUIDE (userg.txt)
   17:  TEXT EXCHANGE SYSTEM DESCRIPTION OF SYSTEM DEPENDENT VARIANTS
   (The above two files appear as one on the published version.)
   18:  TEXT EXCHANGE SYSTEM PROGRAM DESCRIPTIONS (prgdes.txt)
     THE LAST THREE OF THE ABOVE ARE PRINT FILES WITH FORTRAN STANDARD
 VERTICAL SPACING IN COLUMN 1.  A PERIOD IS PRINTED IN COLUMN 2 ON TWO
 LINES NEAR THE TOP AND BOTTOM OF EACH PAGE.  IF YOU PRINT AT 6 LINES
 PER INCH ON PAPER THAT IS 11 INCHES LONG, AND CUT THROUGH THESE
 PERIODS AND 8.5 INCHES TO THE RIGHT, THE PAGES WILL BE 8.5 X 11 INCHES
 AND THE TEXT WILL HAVE ADEQUATE MARGINS.
     IF YOU HAVE ANY PROBLEMS CALL VAN SNYDER AT 213/354-6271 OR
 DICK HANSON AT 505/844-1715.
     THE DEC PDP11 AND SPERRY UNIVAC V70 VERSIONS OF TES ARE NOT OF THE
 SAME QUALITY AS THE OTHER VERSIONS; THE AUTHORS NO LONGER HAVE ACCESS
 TO THESE MACHINES.  USE THEM AT YOUR OWN RISK.  THEY MAY REQUIRE SOME
 WORK TO BE USABLE.
     ANY VERSION OF THE TES FOR MACHINES NOT ON THE ABOVE LIST CAN BE
 SENT TO SNYDER. CALL SNYDER AT THE ABOVE NUMBER FOR MORE DETAILS.
     THE SPERRY UNIVAC V70 VORTEX OPERATING SYSTEM EXPECTS ASCII
 CHARACTERS TO HAVE THE HIGH-ORDER BIT SET.  THE HIGH-ORDER BIT IS NOT
 SET IN FILE 15.  AFTER UNBLOCKING FILE 15 WITH IOUTIL, RUN THE FOLLOWING
 PROGRAM ON THE OUTPUT TEXT:
 /JOB,HIGHBIT
 /MEM,6
 /FORT,M,L,B
 C     READ AN ASCII TAPE AND INSERT THE HIGH ORDER BIT IN
 C     EVERY BYTE.  DISCARD COMPLETELY BLANK RECORDS WHEN
 C     WRITING THE OUTPUT TAPE.
 C     ONE CARD IS READ USING FORMAT (2I5) TO DEFINE THE
 C     INPUT AND OUTPUT TAPE UNIT NUMBERS.
       INTEGER BLANKS,BUF(40),INTAPE,OUTAPE,SIGNS
       DATA BLANKS /2H  /, SIGNS /Z8080/
 C
       READ (2,10) INTAPE,OUTAPE
 10    FORMAT (2I5)
 20    READ (INTAPE,30,END=50) BUF
 30    FORMAT (40A2)
       J=0
       DO 40 I = 1, 40
       BUF(I)=BUF(I).OR.SIGNS
 40    IF (BUF(I).NE.BLANKS) J=1
       IF (J.NE.0) WRITE (OUTAPE,30) BUF
       GO TO 20
 50    END FILE OUTAPE
       STOP
       END
 /EXEC
    30   31
 /FINI
