Date: April 21, 1987
From: Mike Lucich (via tape)
Subject: Sperry/Univac/Unisys Kermit

We here at Ft Leavenworth initially had a rough time reading the KERMIT release
tape on our Unisys (aka Sperry, Univac) 1100 mainframe and send you the
following program in the hope others will find it usefull.

We run both assembler and Pascal versions of KERMIT on our mainframe and have
made several minor changes to accomodate MS-DOS KERMIT Version 2.27 through our
ancient C/SP front end processors.  Fortunately with MSKERMIT version 2.29
these kludges are no longer required (the ability to set handshake to any
character solves our problems nicely).

Please feel free to refer any Unisys users with problems with KERMIT to us, if
we might help them.  Also please return our tape with the latest KERMIT
distribution to the address above.  We thank you!

Mike Lucich
USA ISC DOIM
Unisys Support Team
ATTN: ATZL-GMO-IA
Ft Leavenworth, KS  66027-5700

[Ed. - The COBOL program that reads a file from a Kermit tape (the format
is either EBCDIC OS Standard Label Format V or else ASCII ANSI Label Format D;
it's not clear from the message, most most likely it's the EBCDIC tape, since
this program itself arrived on an EBCDIC tape)... is in KER:UNIVAC.INS, along
with this message.]

@DELETE,C RD$PRINT.
@CAT      RD$PRINT.,///2048
@BRKPT    PRINT$,RD$PRINT.
@hdg      KERMIT RELEASE TAPE READ PROGRAM
@ACOB,SI  TPF$.READ
000100 IDENTIFICATION DIVISION.
000200   PROGRAM-ID.  READ-KERMIT.
000300*  THIS PROGRAM WILL READ A FILE FROM THE KERMIT RELEASE
000400*  TAPE AND WRITE THAT FILE OUT AS AN SDF FILE NAMED
000500*  OUTFILE ON DISK. THE INPUT TAPE SHOULD BE ASSIGNED AS
000600*  INFILE, USING AN ASSIGNMENT STATEMENT SIMILAR TO THE
000700*  FOLLOWING: @ASG,TJ  INFILE.,U9S//////Q,reelno
000800*  IN ADDITION, THE INPUT TAPE SHOULD BE POSITIONED
000900*  AT THE PROPER FILE BEFORE RUNNING THIS PROGRAM.
000901*  THIS MAY BE ACCOMPLISHED VIA:
000902*  @MOVE  INFILE.,n
000903*  Where n=(number of desired file - 1) X 3
000910*  THIS PROGRAM MUST BE COMPILED WITH THE ACOB
000920*  EXTRA OPTION D.
000930*  Furthermore, when this program is executed, the run
000940*  --------------------MUST---------------------------
000950*  have assigned, with name or usename of DFP$, a program
000960*  file which contains an omnibus element named infile
000970*  which was created by the define file processor to
000980*  specify option=a, for 256 character EBCDIC character
000990*  set.  DO YOU BELIEVE IT ?
000995*
001000 ENVIRONMENT DIVISION.
001100  CONFIGURATION SECTION.
001200   SOURCE-COMPUTER. UNIVAC-1100-80.
001300   OBJECT-COMPUTER. UNIVAC-1100-80.
001400  INPUT-OUTPUT SECTION.
001500   FILE-CONTROL.
001600     SELECT INFILE-E  ASSIGN TO UNISERVO INFILE.
001700     SELECT OUTFILE-A ASSIGN TO DISC OUTFILE.
001800 DATA DIVISION.
001900  FILE SECTION.
002000   FD  INFILE-E
002100       LABEL RECORDS ARE STANDARD
002200       RECORDING MODE IS V AN
002300       BLOCK CONTAINS 1 TO 8192 CHARACTERS.
002400   01  INREC-E        PIC X(300).
002500   FD  OUTFILE-A
002600       LABEL RECORDS ARE OMITTED.
002700   01  OUTREC-A       PIC X(300).
002800  WORKING-STORAGE SECTION.
002900   77  INCNT          PIC 9(07) VALUE 0.
003000   77  OUTCNT         PIC 9(07) VALUE 0.
003100   77  PRINT-REC      PIC 9(01) VALUE 0.
003200   01  SPOINTS.
003300     03  FILLER       PIC 1(09) VALUE  90.
003300     03  FILLER       PIC 1(09) VALUE  93.
003400   01  APOINTS.
003500     03  FILLER       PIC 1(09) VALUE  33.
003600   01  SLBRACS.
003700     03  FILLER       PIC 1(09) VALUE 173.
003700     03  FILLER       PIC 1(09) VALUE 213.
003800   01  ALBRACS.
003900     03  FILLER       PIC 1(09) VALUE  91.
004000   01  SRBRACS.
004100     03  FILLER       PIC 1(09) VALUE 189.
004100     03  FILLER       PIC 1(09) VALUE 229.
004200   01  ARBRACS.
004300     03  FILLER       PIC 1(09) VALUE  93.
004400   01  SBARS.
004500     03  FILLER       PIC 1(09) VALUE  79.
004500     03  FILLER       PIC 1(09) VALUE  33.
004600   01  ABARS.
004700     03  FILLER       PIC 1(09) VALUE 124.
005200 PROCEDURE DIVISION.
005300 OPEN-FILES.
005400     OPEN INPUT INFILE-E WITH NO REWIND.
005500     OPEN OUTPUT OUTFILE-A.
005600 READ-FILE.
005700     READ INFILE-E AT END GO TO EOJ.
005800     ADD 1 TO INCNT.
005900     INSPECT INREC-E REPLACING
006000         ALL SPOINTS   BY APOINTS
006100         ALL SLBRACS   BY ALBRACS
006200         ALL SRBRACS   BY ARBRACS
006300         ALL SBARS     BY ABARS.
006400     MOVE INREC-E TO OUTREC-A.
006500     WRITE OUTREC-A.
006600     ADD 1 TO OUTCNT.
006700     MOVE SPACES TO INREC-E OUTREC-A.
006800     GO TO READ-FILE.
006900 EOJ.
007000     CLOSE INFILE-E WITH NO REWIND.
007100     CLOSE OUTFILE-A.
007200     DISPLAY 'RECORDS IN  ' INCNT  UPON PRINTER.
007300     DISPLAY 'RECORDS OUT ' OUTCNT UPON PRINTER.
007400     STOP RUN.
@EOF
@MAP,I    ,SOFTWARE.READ
IN        TPF$.READ
END
@BRKPT    PRINT$
