Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-02 - 43,50231/change.rno
There are 4 other files named change.rno in the archive. Click here to see a list.
\\
.SPACING 1
.NUMBER 0
.TAB STOPS 10,15,20,25,30,35,40,45,50,55,60
.NOFILL
#
.FILL
.SKIP 20
.CENTER
^^CHANGE\\
.SKIP 1
.CENTER
^^CHARACTER SET CONVERTER\\
.SKIP 20
.LEFT MARGIN 35
.INDENT -3
^BY:
.SKIP 1
^DAVID ^RICHARD ^KIARSIS
.SKIP 1
^DATE: ^JUNE 30,1973
.SKIP 1
^UPDATED ^JULY 1982
.SKIP 1
^BY ^PETER ^J.^PLOURD ^I^I
.LEFT MARGIN 0
.TITLE ^^CHANGE\\ -- ^CHARACTER SET CONVERTER
.SUBTITLE          ^INTRODUCTION
.PAGE
.SUBTITLE            ^COMMAND SYNTAX
.CENTER
^^INTRODUCTION\\
.SKIP 1
.PARAGRAPH
^^CHANGE\\ IS A PROGRAM TO AID IN THE CONVERSION OF CHARACTER SETS
FOREIGN TO THE ^^DEC\\SYSTEM-10. ^IT IS CAPABLE OF USING ANY I/O
DEVICE ON THE ^^DEC\\SYSTEM-10, BUT IS MAINLY DESIGNED FOR USERS
WITH MAGNETIC TAPES AND DISKS. ^^CHANGE\\ WILL PERFORM BLOCKING,
DUPLICATION, CHARACTER SET CONVERSION, UNBLOCKING, AND READING AND
WRITING OF TAPE LABELS.
.SKIP 3
1.0	^^RUNNING CHANGE
.FILL
.PARAGRAPH
^^CHANGE\\ MAY BE RUN BY TYPING THE FOLLOWING:
.INDENT 10
.SKIP 1
^R ^^PUB:CHANGE\\
.SKIP 1
^^CHANGE\\ WILL RESPOND WITH THE DATE AND TIME OF DAY.  ^AN ANGLE
BRACKET INDICATES THAT ^^CHANGE\\ IS READY FOR USER INPUT.
.SKIP 1
.INDEX ^^COMMAND SYNTAX\\
.NOFILL
1.1	^^COMMAND SYNTAX\\
.FILL
.PARAGRAPH
^^CHANGE\\ USES THE TRADITIONAL ^^DEC\\SYSTEM-10 COMMAND STRING
FORMAT. ^IT WILL ACCEPT ONE INPUT FILE SPECIFICATION AND ONE
OUTPUT FILE SPECIFICATION SEPARATED BY A BACK ARROW (__) OR EQUAL
SIGN (=), ^EXAMPLE:
.SKIP 1
.INDENT 10
OUTPUT-FILE__INPUT-FILE
.INDENT 10
OUTPUT-FILE=INPUT-FILE
.SKIP 1
^EACH OUTPUT OR INPUT FILE SPECIFICATION CONSISTS OF A DEVICE, FILE
NAME, EXTENSION, AND PROJECT-PROGRAMMER NUMBER. ^THE DEVICE IS
TERMINATED BY A COLON (:), THE FILE NAME BY A PERIOD (.), AND THE
PROJECT-PROGRAMMER NUMBER IS ENCLOSED IN SQUARE BRACKETS ([]). ^EXAMPLE:
.SKIP 1
.INDENT 10
DEVICE:FILENAME.EXTENSION[P,PN]
.INDENT 5
OR
.INDENT 10
^^DSKA:DATA.FIL[123,10]\\
.SKIP 1
^THE COMPLETE FILE SPECIFICATION IS OPTIONAL AND WILL TAKE ON
DEFAULT VALUES IF ANY PART OF IT IS OMITTED. ^FOR EXAMPLE, THE DEVICE
WILL DEFAULT TO GENERIC DISK (DSK:), THE INPUT FILE NAME
TO ^^INPUT\\, THE OUTPUT FILE NAME TO ^^OUTPUT\\, THE EXTENSIONS
TO ^^DAT\\, AND THE PROJECT-PROGRAMMER NUMBERS TO THE CURRENT DISK
AREA.
.SKIP 3
.INDEX ^^SWITCH SPECIFICATIONS\\
.NOFILL
1.1.2	^^SWITCH SPECIFICATIONS\\
.FILL
.PARAGRAPH
^IN ADDITION TO THE FILE SPECIFICATION EACH INPUT OR OUTPUT FILE
SPECIFICATION INCLUDES SWITCHES. ^SWITCHES ARE DESCRIPTIVE IN NATURE,
AND ALLOW ^^CHANGE\\ TO DETERMINE MORE ABOUT THE FILES BEING HANDLED.
^A SWITCH BEGINS WITH A SLASH AND TERMINATES ON THE NEXT SLASH, IF
THE SWITCH TAKES NO ARGUMENT, OR ON A COLON IF THE SWITCH
TAKES AN ARGUMENT. ^NOTE: THE RETURN AND ALTMODE ALSO TERMINATED
SWITCHES AS WELL AS THE INPUT LINE. ^EXAMPLE:
.SKIP 1
.INDENT 10
/^^SWITCH
.INDENT 5
\\OR
.INDENT 10
^^/SWITCH:ARG\\
.SKIP 1
^IF A SWITCH TAKES AN ARGUMENT THE ARGUMENT FOLLOWS THE COLON AS IN
THE SECOND EXAMPLE ABOVE. ^IN ALL CASES SWITCHES MAY BE ABBREVIATED
TO THE NUMBER OF CHARACTERS THAT WILL ALLOW THAT SWITCH TO BE UNIQUE.
.SKIP 3
.INDEX ^^SWITCHES\\
.NOFILL
1.1.3	^^SWITCHES\\
.FILL
.PARAGRAPH
^THE FOLLOWING IS A LIST OF SWITCHES THAT ^^CHANGE\\ WILL ACCEPT.
^IN THE FOLLOWING DESCRIPTIONS "X" REPRESENTS A DECIMAL NUMBER, AND
"ARG" REPRESENTS A KEY WORD THAT MAY BE ABBREVIATED.
.SKIP 2
^^/BUFFERS:\\X
.PARAGRAPH
^DESIGNATES THAT ^^CHANGE\\ SHOULD SET UP X BUFFERS FOR THE DEVICE.
^THIS SWITCH IS USED TO SPEED UP THE I/O PROCESS AT THE EXPENSE OF
CORE. ^THE SIZE OF A BUFFER IS CALCULATED BY THE FOLLOWING FORMULA:
.SKIP 1
.INDENT 3
^^BUFSIZ#=#(RECORD#SIZE*BLOCKING#FACTOR)/BYTES#PER#WORD+1
.SKIP 2
^^/ADVANCE:\\X
.PARAGRAPH
^DESIGNATES THAT ^^CHANGE\\ SHOULD ADVANCE X ^^EOF\\ MARKS BEFORE
PROCESSING A FILE. ^THIS SWITCH HAS MEANING ONLY FOR MAGNETIC TAPES
AND IS IGNORED FOR ALL OTHER DEVICES. ^NOTE THAT IF
A MAGNETIC TAPE HAS LABELS, THERE MAY BE SEVERAL ^^EOF\\ MARKS
PER FILE, DEPENDING ON THE LABEL TYPE.
.SKIP 2
^^/BACKSPACE:\\X
.PARAGRAPH
^THIS SWITCH IS THE OPPOSITE OF THE ADVANCE SWITCH. ^IT TELLS
^^CHANGE\\ TO BACKSPACE THE MAGNETIC TAPE X ^^EOF\\ MARKS AND THEN
FORWARD SPACE ONE ^^EOF\\ MARK IF THE TAPE IS NOT AT LOAD POINT.
^THIS SWITCH IS ONLY USED WITH MAGNETIC TAPES AND IS IGNORED FOR
OTHER DEVICES. ^^CHANGE\\ RESOLVES ^^BACKSPACE\\ AND ^^ADVANCE\\ FOR
THE SAME DEVICE BY SUBTRACTING THE ^^BACKSPACE\\ COUNTER FROM THE
^^ADVANCE\\ COUNTER; IF THE RESULT IS POSITIVE ^^CHANGE\\ MOVES THE
TAPE FORWARD, IF NEGATIVE, ^^CHANGE\\ MOVES THAT TAPE
BACKWARDS.
^^/BLOCK:\\X####^^/BLKSIZE:\\X
.PARAGRAPH
^THIS SWITCH TELLS ^^CHANGE\\ THAT THERE ARE X LOGICAL RECORDS
IN A LOGICAL BLOCK. ^FOR VARIABLE EBCDIC, THIS IS THE MAXIMUM NUMBER
OF RECORDS IN THE BLOCK. ^NOTE ^^IBM\\'S BLOCKING FACTOR IS THE TOTAL
NUMBER OF CHARACTERS IN THE BLOCK.
.SKIP 2
^^/RECORD:\\X####^^/RECSIZE:\\X
.PARAGRAPH
^THIS SWITCH TELLS ^^CHANGE\\ THAT THERE ARE X CHARACTERS IN A
LOGICAL RECORD.
.SKIP 2
^^/DENSITY:\\ARG
.PARAGRAPH
^THIS SWITCH IS USE TO SET THE DENSITY ON MAGNETIC TAPES AND
IS IGNORED FOR OTHER DEVICES. ^THE ARGUMENT IS ONE OF THE FOLLOWING:
200, 556, 800.
.SKIP 2
^^/RETAIN\\
.PARAGRAPH
^THIS SWITCH SAVES THE CURRENT COMMAND STRING FOR LATER EDITING. ^SEE
THE ^^RETAIN\\ COMMAND FOR A COMPLETE DESCRIPTION OF THE ^^RETAIN\\
FUNCTION.
.SKIP 2
^^/RUN\\
.PARAGRAPH
^FOR THIS SWITCH ^^CHANGE\\ PERFORMS A ^^RETAIN\\ COMMAND AND THEN EXECUTES
THE CURRENT COMMAND STRING.  ^SEE THE ^^RUN\\ COMMAND FOR A COMPLETE
DESCRIPTION.
.SKIP 2
^^/HELP:\\ARG
.PARAGRAPH
^^CHANGE\\ PRINTS A LIST OF ITS COMMANDS AND SWITCHES WITH A SHORT
EXPLANATION OF THEIR FUNCTION. ^IF THE ARGUMENT IS PRESENT, ^^CHANGE\\
WILL ATTEMPT TO PRINT THE HELP FILE FOR THAT PROGRAM.
.SKIP 2
^^/LABEL:\\ARG
.PARAGRAPH
^THE ^^LABEL\\ SWITCH INFORMS ^^CHANGE\\ THAT A MAGNETIC TAPE
HAS LABELS OR THAT LABELS SHOULD BE WRITTEN. ^IN ANY CASE
THE ARGUMENT SPECIFIES THE TYPE OF LABEL AS FOLLOWS:
.SKIP 1
.LEFT MARGIN 15
.RIGHT MARGIN 50
.INDENT -10
.INDENT -10
^^NONE\\######^THE MAGNETIC TAPE HAS NO LABELS.
.INDENT -10
^^MINE\\######^THE MAGNETIC TAPE HAS SPECIAL ^^DEC\\SYSTEM-10 LABELS.
.INDENT -10
^^DIGITAL\\###^THE MAGNETIC TAPE HAS ^^DEC\\SYSTEM-10 ^^COBOL\\ LABELS.
.INDENT -10
^^BURROUGHS\\#^THE MAGNETIC TAPE HAS STANDARD ^^BURROUGHS\\ LABELS.
.INDENT -10
^^IBM\\#######^THE MAGNETIC TAPE HAS ^^IBM\\ 360 LABELS.
.INDENT -10
^^GE635\\#####^THE MAGNETIC TAPE HAS ^^GENERAL ELECTRIC\\ 635 LABELS.
.SKIP 1
.RIGHT MARGIN 60
.LEFT MARGIN 0
^LABELS ARE WRITTEN IN THE CHARACTER SET SPECIFIED EXCEPT FOR
^^IBM\\ AND ^^GE635\\ LABELS. ^^IBM\\ LABELS ARE WRITTEN IN ^^BCD\\
FOR 7-TRACK DRIVES AND ^^EBCDIC\\ FOR 9-TRACK DRIVES. ^^GE635\\ LABELS
ARE ALWAYS WRITTEN IN ^^GEBCD\\.
.SKIP 2
^^/MODE:\\ARG
.PARAGRAPH
^^SPECIFIES THE CHARACTER SET MODE FOR THE FILE AS FOLLOWS:
.SKIP 1
.RIGHT MARGIN 50
.LEFT MARGIN 10
.INDENT -8
^^ASCII\\###^FILE CHARACTER SET IS 7-BIT ASCII.
.INDENT -8
^^HPASCII\\#^FILE CHARACTER SET IS 8-BIT ASCII.
.INDENT -8
^^GEASCII\\#^FILE CHARACTER SET IS 9-BIT ASCII.
.INDENT -8
^^IMAGE\\###^FILE IS READ AND WRITTEN AS 36-BIT WORDS.
.INDENT -8
^^SIXBIT\\##^FILE CHARACTER SET IS SIXBIT WITH CONTROL WORDS.
.INDENT -8
^^FIXSIX\\##^FILE CHARACTER SET IS SIXBIT WITH NO CONTROL WORDS.
.INDENT -8
^^BCL\\#####^FILE CHARACTER SET IS BCL.
.INDENT -8
^^BCD\\#####^FILE CHARACTER SET IS BCD.
.INDENT -8
^^GEBCD\\###^FILE CHARACTER SET IS ^^GENERAL ELECTRIC\\ BCD.
.INDENT -8
^^HONBCD\\##^FILE CHARACTER SET IS ^^HONEYWELL\\ BCD.
.INDENT -8
^^EBCDIC\\##^FILE CHARACTER SET IS EBCDIC.
.INDENT -8
^^VEBCDIC\\#^FILE CHARACTER SET IS VARIABLE EBCDIC.
.RIGHT MARGIN 60
.LEFT MARGIN 0
.SKIP 1
^THE END OF THE INPUT RECORD IS DETERMINED BY THE MODE OF THE
INPUT FILE AS DESCRIBED BELOW:
.SKIP 1
.RIGHT MARGIN 50
.LEFT MARGIN 12
.INDENT -10
^^ASCII\\#####^TERMINATED BY A CARRIAGE-RETURN CHARACTER OR RECORD COUNT.
.INDENT -10
^^SIXBIT\\####^DETERMINED BY THE HEADER WORD IN FRONT EACH RECORD.
.INDENT -10
^^FIXSIX\\####^ALWAYS COPIES THE NUMBER OF BYTES SPECIFIED BY THE RECORD SIZE.
.INDENT -10
^^BCL\\#######^ALWAYS COPIES THE NUMBER OF BYTES SPECIFIED BY THE RECORD SIZE.
.INDENT -10
^^BCD\\#######^ALWAYS COPIES THE NUMBER OF BYTES SPECIFIED BY THE RECORD SIZE.
.INDENT -10
^^EBCDIC\\####[FIXED] ^ALWAYS COPIES THE NUMBER OF BYTES SPECIFIED BY THE
RECORD SIZE.
.INDENT -10
^^EBCDIC\\####[VARIABLE] ^DETERMINED BY THE HEADER WORD IN FRONT OF EACH RECORD.
.LEFT MARGIN 0
.RIGHT MARGIN 60
.SKIP 2
^^/PARITY:\\ARG
.PARAGRAPH
^SETS THE PARITY OF A MAGNETIC TAPE FILE, IGNORED FOR OTHER DEVICES.
^THE ARGUMENT IS EITHER ^^ODD\\ OR ^^EVEN\\. ^THE DEFAULT PARITY
IS ^^ODD\\.
.SKIP 2
^^/PASSWORD:\\ARG
.PARAGRAPH
^SETS THE PASSWORD FOR ^^GE635\\ LABELS TO THE ARGUMENT. ^THE ARGUMENT
CAN BE UP TO TWELVE CHARACTERS. ^THIS ARGUMENT IS NEVER CHECKED
IT IS ONLY WRITTEN IN THE OUTPUT LABEL AS SPECIFIED.
.SKIP 2
^^/REEL:\\ARG
.PARAGRAPH
^SETS THE REEL SERIAL NUMBER IN LABELS THAT HAVE THIS FEATURE. ^NOTE
FOR SOME LABELS THE REEL SERIAL NUMBER IS RETAINED WHEN WRITING OVER
A LABEL. ^FOR INSTANCE, FOR ^^BURROUGHS\\ LABELS THE OUTPUT
TAPE IS READ TO RETRIEVE THE SERIAL NUMBER AND THEN A NEW LABEL
IS WRITTEN WITH THIS NUMBER. ^TO OVERRIDE THIS FEATURE THE ^^REEL\\
SWITCH IS GIVEN AND THE OUTPUT TAPE IS NOT READ FIRST (I.E. THE
OUTPUT LABEL IS PURGED).
.SKIP 2
^^/INDUSTRY:\\ARG *
.PARAGRAPH
^THIS SWITCH INITIALIZES THE MAGNETIC TAPE FOR INDUSTRY COMPATIBLE
MODE. ^USUALLY SET FOR ^^EBCDIC\\ AND ^^HPASCII\\ MODES. ^IN THIS MODE
32-BIT WORDS ARE READ OR WRITTEN. ^THE 32-BIT WORD IS BROKEN DOWN
INTO FOUR EIGHT BIT BYTES AND WRITTEN IN FOUR FRAMES ON THE TAPE.
^THE LOW-ORDER 4-BITS ARE NOT USED. ^NOTE THIS MODE IS ONLY USED
FOR 9-TRACK DRIVES AND WILL CAUSE UNEXPECTED RESULTS ON 7-TRACK
DRIVES.
.SKIP 2
^^/SCAN\\ *
.PARAGRAPH
^ON LABELED TAPES, THIS SWITCH FORCES ^^CHANGE\\ TO SKIP DOWN THE TAPE,
IN A FORWARD DIRECTION, UNTIL THE INPUT FILE NAME IS FOUND OR AN
END OF TAPE CONDITION IS DETECTED. ^THIS SWITCH IS USED ONLY FOR LABELED
MAGNETIC TAPES.
.SKIP 2
^^/ERROR\\ *
.PARAGRAPH
^SPECIFIES THAT ^^CHANGE\\ SHOULD ABORT THE CURRENT JOB ON EITHER AN
INPUT OR OUTPUT PARITY ERROR.
.SKIP 2
^^/SPAN\\ *
.PARAGRAPH
^SPECIFIES THAT RECORDS ARE ALLOWED TO CROSS LOGICAL BLOCK
BOUNDARIES. ^THE NORMAL CASE IS THAT A RECORD ALWAYS WILL TERMINATE
ON A LOGICAL BLOCK BOUNDARY EVEN IF A PARTIAL WORD WILL BE WASTED.
.SKIP 2
^^/REWIND:\\ARG *
.PARAGRAPH
^SPECIFIES THAT THE MAGNETIC TAPE SHOULD BE REWOUND. ^THIS SWITCH
IS ONLY USED FOR MAGNETIC TAPES AND IS IGNORED FOR OTHER DEVICES. ^THE
ARGUMENTS ARE AS FOLLOWS:
.SKIP 1
.LEFT MARGIN 10
.RIGHT MARGIN 50
.INDENT -7
^^BEFORE\\#^REWIND BEFORE THE OPERATION.
.INDENT -7
^^AFTER\\##^REWIND AFTER THE OPERATION.
.INDENT -7
^^ALWAYS\\#^REWIND ALWAYS [DEFAULT].
.INDENT -7
^^OMIT\\###^REWIND NEITHER BEFORE OR AFTER.
.SKIP 2
.LEFT MARGIN 0
.RIGHT MARGIN 60
^^/UNLOAD\\ *
.PARAGRAPH
^SPECIFIES THAT THE MAGNETIC TAPE SHOULD BE UNLOADED AFTER
THE OPERATION IS COMPLETED.
.SKIP 2
^^/TELL\\ *
.PARAGRAPH
^SPECIFIES THAT ^^CHANGE\\, DURING A WILD CARD SEARCH, SHOULD TYPE
OUT THE FILE NAMES AS THEY ARE FOUND [DEFAULT].
.SKIP 2
^^/LIST\\ *
.PARAGRAPH
^TELLS ^^CHANGE\\ TO PERFORM A LIST OF THE DEVICES'S DIRECTORY.
^THIS SWITCH IS VALID FOR DISK, ^^DEC\\TAPE, AND MAGNETIC
TAPES. ^NOTE THIS SWITCH WILL ALTER A RETAINED COMMAND AND WILL
TRANSFER NO DATA.
.SKIP 2
^^/HEADER\\ *
.PARAGRAPH
^SPECIFIES THAT HEADERS SHOULD BE PRINTED IF THE OUTPUT DEVICE IS
A LINE PRINTER [DEFAULT].
.SKIP 2
^^/CRLF\\ *
.PARAGRAPH
^SPECIFIES THAT CARRIAGE-RETURN LINE-FEED SEQUENCES ARE INCLUDED IN
^^ASCII, HPASCII\\, AND ^^GEASCII\\ FILES.
.SKIP 2
.PARAGRAPH
^SWITCHES FLAGGED WITH AN ASTERISK (*) CAN BE TURNED OFF OR HAVE THE
OPPOSITE EFFECT NOTED, BY CONCATENATING ^^NO\\ WITH THE SWITCH.
^EXAMPLE:
.SKIP 1
.INDENT 10
^^NOLIST
.INDENT 10
NOCRLF\\
.SKIP 3
.INDEX ^^EXTENDED COMMANDS\\
.NOFILL
1.1.4	^^EXTENDED COMMANDS\\
.FILL
.SKIP 2
^^DATA\\
.PARAGRAPH
^THE ^^DATA\\ COMMAND SPECIFIES A FILE NAME THAT ^^CHANGE\\ SHOULD USE
TO FIND THE CONVERSION TABLES THAT IT NEEDS. ^NOTE THIS COMMAND
IS IGNORED IF A ^^RETAIN\\ COMMAND IS IN EFFECT. ^EXAMPLE
OF USE:
.SKIP 1
.INDENT 10
^^DATA\\=DEV:FILENAME.EXT[P,PN]
.SKIP 1
^THE DATA COMMAND HAS ONLY BEEN TESTED WITH DISK AS THE DEVICE.
.SKIP 2
^^EXIT\\
.PARAGRAPH
^THE ^^EXIT\\ COMMAND INFORMS ^^CHANGE\\ THAT THE USER WANTS TO
RETURN TO MONITOR LEVEL. ^^CHANGE\\ UPON RECEIVING THIS COMMAND WILL
RESET ALL ^I/^O AND RETURN TO THE MONITOR.
.SKIP 2
^^BYE\\
.PARAGRAPH
^THE ^^BYE\\ COMMAND IS SIMILAR TO THE ^^EXIT\\ COMMAND
EXCEPT THAT ^^CHANGE\\ WILL LOGOUT THE USER OFF THE SYSTEM
INSTEAD OF RETURNING THE USER TO MONITOR LEVEL. ^THIS
COMMAND IS EQUIVALENT TO TYPING THE FOLLOWING:
.SKIP 1
.INDENT 10
^^EXIT\\###TYPED TO ^^CHANGE\\
.INDENT 10
^^KJOB/F\\#TYPED TO THE MONITOR
.SKIP 3
.INDEX ^^SPECIAL COMMAND MODES\\
.NOFILL
2.1	^^SPECIAL COMMAND MODES\\
.FILL
.SKIP 2
^^RETAIN\\
.PARAGRAPH
^THIS COMMAND IS USED TO SAVE SUBSEQUENT COMMANDS TYPED TO
^^CHANGE\\. ^IN THIS MODE THE COMMANDS ARE NOT IMMEDIATELY EXECUTED.
^INSTEAD, ^^CHANGE\\ SAVES THE COMMAND LINE AND ALLOWS THE USER TO EDIT
IT. ^TO EDIT THE CURRENT COMMAND STRING, ONCE ^^RETAIN\\ HAS BEEN
TYPED, THE USER NEED ONLY RETYPE THE PART OF THE COMMAND HE WISHES
TO CHANGE. ^ITEMS THAT FOLLOW THE BACK ARROW OR EQUAL SIGN WILL
BE EDITED TO THE INPUT SIDE OF THE COMMAND WHILE THINGS
THAT PRECEDE THE BACK ARROW OR EQUAL SIGN WILL BE EDITED TO THE
OUTPUT SIDE OF THE COMMAND.
.SKIP 2
^^ERASE\\
.PARAGRAPH
^ONCE A COMMAND IS RETAINED THE USER MAY DELETE IT FROM MEMORY
BY TYPING ^^ERASE\\. ^^CHANGE\\ WILL ERASE THE CURRENT COMMAND
AND RETURN TO ITS IMMEDIATE MODE OF INTERPRETATION; THAT IS ^^CHANGE\\
WILL NOW EXECUTE COMMANDS AS THEY ARE TYPED.
.SKIP 2
^^PRINT\\
.PARAGRAPH
^THE PRINT COMMAND IS USED TO EXAMINE A RETAINED COMMAND. ^AS THE USER
IS EDITING THE CURRENT COMMAND IT IS USEFUL TO PRINT IT OUT TO SEE
IF THE EDITS ARE CORRECT. ^TO DO SO THE USER TYPES ^^PRINT\\ AND
^^CHANGE\\ WILL DISPLAY THE CURRENT COMMAND STRING
.SKIP 2
^^RUN\\
.PARAGRAPH
^TO HAVE ^^CHANGE\\ PERFORM A RETAINED COMMAND THE USER TYPES ^^RUN\\.
^^CHANGE\\ WILL THEN EXECUTE THE CURRENT COMMAND AS IF THE USER
HAD TYPED IT DIRECTLY TO ^^CHANGE\\. ^IF THE USER FINDS THAT THE
COMMAND IS INCORRECT HE MAY STOP ^^CHANGE\\ BY TYPING A CONTROL/C.
^^CHANGE\\ WILL RETURN TO COMMAND LEVEL TO ACCEPT ANOTHER COMMAND.
^NOTE A RETAINED COMMAND IS NEVER FORGOTTEN UNTIL THE USER TYPES
^^ERASE\\.
.SKIP 2
^^DIALOG\\
.PARAGRAPH
^THE ^^DIALOG\\ COMMAND ALLOWS THE USER TO CARRY
ON A DIALOG WITH ^^CHANGE\\. ^^CHANGE\\ WILL ASK THE USER QUESTIONS
ABOUT THE INPUT FILE SPECIFICATION AND THE OUTPUT FILE
SPECIFICATION. ^WHEN ^^CHANGE\\ FEELS THAT IT HAS ENOUGH INFORMATION
IT WILL EXECUTE THE COMMAND IT HAS COMPILED. ^NOTE THE COMMAND
IS NOT RETAINED IN THIS MODE AND ANY COMMAND THAT WAS RETAINED
IS ERASED. ^THE ^^DIALOG\\ MODE MAY ALSO BE ENTERED BY TYPING
ONLY AN ALTMODE TO ^^CHANGE\\.
.SKIP 3
.INDEX ^^TAPE FORMATS\\
.NOFILL
3.0	^^TAPE FORMATS\\
.FILL
.PARAGRAPH
^THERE ARE GREAT NUMBER OF DIFFERENT TAPE FORMATS, HOWEVER,
THERE ARE SOME RULES TO USE WHEN HANDLING TAPES FROM CERTAIN
VENDORS. ^^IBM\\ TAPES, THAT ARE RECORDED ON 9-TRACK DRIVES,
USUALLY USE ^^EBCDIC\\ AS THE CHARACTER SET. 9-TRACK ^^IBM EBCDIC\\
TAPES ALWAYS USE INDUSTRY COMPATIBLE MODE. ^THAT IS, THEY ALWAYS
WRITE 32-BIT WORDS ON THE TAPE IN FOUR FRAMES. ^ANOTHER TAPE
FORMAT THAT USES INDUSTRY COMPATIBLE MODE IS ^^HPASCII\\. ^IN ADDITION,
DATA WRITTEN IN THIS MODE USUALLY DOES NOT HAVE RETURN-LINE-FEED SEQUENCES
IN THE TEXT. ^IN OTHER CHARACTER SETS, TRIAL AND ERROR MUST BE
USED TO DETERMINE WHETHER THE TAPE IS WRITTEN IN INDUSTRY
COMPATIBLE MODE.
.PARAGRAPH
^ALTHOUGH SOME COMPUTERS HAVE THE CAPABILITY TO WRITE WORDS
SHORTER THAN 36-BITS (OR 32-BITS IN INDUSTRY MODE), THE
^^DEC\\SYSTEM-10 CAN ONLY READ AND WRITE 36-BIT WORDS.
^THIS CREATES A PROBLEM FOR TAPES WRITTEN ON THE ^^DEC\\SYSTEM-10
AND READ ON ANOTHER VENDORS MACHINE. ^NOTE THAT THE REVERSE IS
NOT TRUE. ^^CHANGE\\ IS WRITTEN TO HANDLE SHORT WORDS IF
THE RECORD SIZE AND BLOCK FACTOR ARE ACCURATE. ^NOTE THIS CAN
BE DETERMINED BY A TRIAL AND ERROR PROCEDURE. ^IF RECORDS SEEM
TO BE CUT SHORT TRY A LARGER RECORD SIZE, OR IF
RECORDS SEEM TO BE COMPLETELY MISSED TRY A BIGGER BLOCKING FACTOR.
^IN ANY CASE, TAPES WRITTEN WITH ^^CHANGE\\ ON THE
^^DEC\\SYSTEM-10, AND READ ON ANOTHER COMPUTER MAY
FIND EXTRA CHARACTERS IN THE RECORD. ^THERE IS NO WAY
AROUND THIS, UNLESS THE PROGRAM THAT READS THE TAPE ON THE
OTHER COMPUTER IS SMART ENOUGH TO HANDLE THIS CONDITION.
.INDEX ^^TAPE DATA STRUCTURES\\
.NOFILL
4.0	^^TAPE DATA STRUCTURES\\
.FILL
.PARAGRAPH
^DEFINITION OF TERMS:
.SKIP 2
^^LOGICAL RECORD\\
.PARAGRAPH
^THE SMALLEST UNIT OF DATA THAT CAN BE PROCESSED BY ^^CHANGE\\. ^IN
^^CHANGE\\ THIS IS ALSO CALLED A RECORD.
.SKIP 2
^^PHYSICAL RECORD\\
.PARAGRAPH
^THE SMALLEST UNIT OF DATA THAT CAN BE PROCESSED BY THE HARDWARE
(E.G. 128 WORDS FOR DISK, 80 COLUMNS FOR THE CARD-READER, THE
DATA BETWEEN RECORD GAPS FOR MAGNETIC TAPE).
.SKIP 2
^^BUFFER\\
.PARAGRAPH
^AN AREA OF CORE MEMORY INTO WHICH THE MONITOR READS, OR FROM WHICH
THE MONITOR WRITES, A PHYSICAL RECORD.
.SKIP 2
^^BLOCKING FACTOR\\
.PARAGRAPH
^THE NUMBER IN THE ^^"/BLOCK:\\X" SWITCH. ^IF THERE IS NO BLOCKING
SWITCH THE BLOCKING FACTOR IS SAID TO BE ZERO.
.SKIP 2
^^LOGICAL BLOCK\\
.PARAGRAPH
^THOSE BUFFERS REQUIRED TO CONTAIN A NUMBER OF CONTIGUOUS RECORDS, THAT
NUMBER BEING THE BLOCKING FACTOR. ^A LOGICAL BLOCK MAY EXTEND OVER
MANY BUFFERS, BUT ALWAYS USES AN INTEGRAL NUMBER OF BUFFERS; ANY
UNUSED PORTION OF THE LAST BUFFER IS WASTED. ^IF THE SMALLEST RECORD OF
A FILE IS MUCH SMALLER THAN THE LARGEST RECORD, THERE COULD BE SEVERAL
WASTED BUFFERS, SINCE THE NUMBER OF BUFFERS REQUIRED IS ALWAYS DETERMINED
BY THE SIZE OF THE LARGEST RECORD MULTIPLIED BY THE NUMBER
OF LOGICAL RECORDS CONTAINED IN THE LOGICAL BLOCK.
.SKIP 2
^^FILE\\
.PARAGRAPH
^AN ORDERED COLLECTION OF CONTIGUOUS LOGICAL RECORDS; THE LARGEST UNIT
OF DATA THAT CAN BE PROCESSED BY ^^CHANGE\\.
.SKIP 1
.PARAGRAPH
^A FILE IS CONSIDERED BLOCKED IF THE BLOCKING FACTOR IS NON-ZERO; IT
IS CONSIDERED UNBLOCKED IF THE BLOCKING FACTOR IS ZERO OR IF THE
^^SPAN\\ SWITCH IS SPECIFIED.
.SKIP 2
^^DATA STRUCTURE\\
.SKIP 2
.NOFILL
^^ASCII	GEASCII	HPASCII\\
.FILL
.PARAGRAPH
^AN ASCII RECORD IS A SET OF CONTIGUOUS CHARACTERS TERMINATED BY
A RETURN-LINE-FEED SEQUENCE. ^WORD BOUNDARIES HAVE NO SIGNIFICANCE,
AND THE LAST CHARACTER OF THE RECORD IS IMMEDIATELY FOLLOWED BY THE
FIRST CHARACTER OF THE NEXT RECORD. ^THE AMOUNT OF BUFFER SPACE
REQUIRED IS THE NUMBER OF CHARACTERS IN THE RECORD PLUS TWO (CR-LF).
^A RECORD TERMINATES WITH THE FIRST ^^EOL\\ CHARACTER OR
A SATISFIED CHARACTER COUNT. ^IF THE RECORD COUNT WAS
SATISFIED BEFORE THE ^^EOL\\ CHARACTER WAS DETECTED, THE
NEXT RECORD STARTS WITH THE NEXT CHARACTER. ^IF THE ^^EOL\\
CHARACTER COMES BEFORE THE RECORD COUNT IS SATISFIED THEN THE RECORD
TERMINATES WITH NO SPACE FILL. ^ASCII NULL CHARACTERS
ARE ALWAYS DISCARDED.
.SKIP 2
.NOFILL
^^HONBCD	BCL	BCD	GEBCD	FIXSIX	EBCDIC\\
.FILL
.PARAGRAPH
^THESE MODES ARE A CONTIGUOUS SET OF CHARACTERS THAT
TERMINATE ONLY ON A RECORD COUNT. ^THEY ARE SIMILAR TO ASCII IN THAT
THEY ARE INDEPENDENT OF WORD BOUNDARIES (E.G. WHEN A RECORD
ENDS THE NEXT STARTS IN THE NEXT CHARACTER POSITION). ^IF A RECORD
ENDS BEFORE THE COUNT HAS EXPIRED THE RECORD IS SPACE FILLED
TO THE CHARACTER COUNT. ^IN NO CASE WILL THE SIZE OF THE RECORD
WRITTEN BE UNEQUAL TO THE RECORD SIZE. ^THE BUFFER SPACE REQUIRED
IS THE NUMBER OF CHARACTERS IN THE RECORD.
.SKIP 2
.NOFILL
^^SIXBIT\\
.FILL
.PARAGRAPH
^A SIXBIT RECORD IS A SET OF CONTIGUOUS WORDS. ^THE FIRST WORD
HAS, IN THE RIGHT HALF, THE NUMBER OF CHARACTERS IN THE RECORD. ^THE
LAST WORD MAY BE PADDED TO ENSURE THAT THE RECORD BOUNDARY
COINCIDES WITH A WORD BOUNDARY. ^THE AMOUNT OF BUFFER SPACE
REQUIRED IS THE NUMBER OF CHARACTERS IN THE RECORD PLUS SIX
CHARACTERS FOR THE CHARACTER COUNT IN THE FIRST WORD PLUS THE NUMBER
OF PADDING CHARACTERS.
.SKIP 2
.NOFILL
^^EBCDIC [VARIABLE]\\
.FILL
.PARAGRAPH
^AN EBCDIC RECORD IS A CONTIGUOUS SET OF CHARACTERS. ^THE FIRST WORD
OF A LOGICAL BLOCK CONTAINS A BLOCK CONTROL WORD IN THE FIRST TWO
BYTES, AND SPACES IN THE NEXT TWO BYTES. ^THIS BLOCK CONTROL WORD
CONTAINS THE NUMBER OF BYTES IN THE BLOCK. ^THE FIRST WORD OF EACH
RECORD IS THE RECORD CONTROL WORD. ^THE RECORD COUNT IS STORED IN THE
FIRST TWO BYTES AND SPACES IN THE SECOND TWO. ^THE RECORD THEN FOLLOWS.
^UNLIKE SIXBIT, THE EBCDIC BLOCK AND RECORD CONTROL WORDS INCLUDE
THE SIZE OF THE CONTROL WORDS. ^THE BUFFER SPACE REQUIRE IS THE
NUMBER OF CHARACTERS IN THE RECORD PLUS FOUR FOR THE RECORD CONTROL WORD,
AND PLUS FOUR FOR
THE BLOCK CONTROL WORD.
.SKIP 2
^^LABELS\\
.PARAGRAPH
^ONLY MAGNETIC TAPES HAVE LABELS WRITTEN OUT WITH THE DATA. ^A
MAG-TAPE FILE MAY HAVE 2 OR MORE LABELS. ^IF THE LABELED
FILE IS A MULTI-REEL-FILE, IT HAS 2 LABELS FOR EACH REEL. ^A
LABELED FILE CONTAINED ENTIRELY ON ONE REEL HAS ONLY TWO
LABELS. ^THE BEGINNING FILE LABEL OCCUPIES THE FIRST BLOCK ON THE TAPE, AND
IS FOLLOWED BY AN ^^EOF\\ MARK. (IF ^^DIGITAL\\ LABELS ARE
USED THIS TAPE MARK IS OMITTED.) ^THE DATA FOLLOWS THIS
TAPE MARK AND IS TERMINATED WITH ANOTHER ^^EOF\\ MARK. ^THE ENDING
FILE LABEL OCCUPIES THE LAST BLOCK OF THE FILE AND IS FOLLOWED BY
ANOTHER ^^EOF\\ MARK.
.SKIP 3
.INDEX ^^CONVERSION TABLES\\
.NOFILL
5.0	^^CONVERSION TABLES\\
.FILL
.PARAGRAPH
^^CHANGE\\ DOES NOT KEEP ALL OF ITS CONVERSION TABLES IN CORE.
^IT READS A DATA FILE, AFTER THE USER HAS SPECIFIED THE INPUT AND
OUTPUT CHARACTER SET, TO RETRIEVE ITS CONVERSION TABLES. ^^CHANGE\\
WILL TRY TO OPEN A FILE CALLED ^^"SYS:CHANGE.DAT"\\ AND IF THAT
FAILS IT WILL TRY ^^"DSK:CHANGE.DAT"\\. ^IF BOTH OF THESE ATTEMPTS
FAIL ^^CHANGE\\ WILL TYPE OUT AN ERROR MESSAGE AN DO NO MORE.
^THE USER CAN ALTERNATELY TELL ^^CHANGE\\ THE NAME OF THE DATA
FILE TO USE. ^TO DO THIS THE USER MUST FIRST ERASE ANY
RETAINED COMMAND THROUGH THE USE OF THE ^^"ERASE"\\
COMMAND. ^THEN HE MAY USE THE ^^"DATA"\\ COMMAND TO SPECIFY
THE FILE WHERE ^^CHANGE\\ IS TO FIND THE CONVERSION
TABLES. ^NOTE THE FORMAT OF THE CONVERSION TABLES IS DEFINED IN
^^CHANGE\\ AT ASSEMBLY TIME AND IS NOT TAKEN FROM THE
DATA FILE.
.PARAGRAPH
^THE CONVERSION TABLES ARE REALLY TWO TABLES IN ONE. ^THAT IS,
EACH TABLE HAS ONE TABLE IN THE LEFT HALF
OF THE WORD AND ONE IN THE RIGHT HALF. ^THE LEFT HALF
TABLE IS THE TABLE THAT CONVERTS TO ASCII, WHILE THE RIGHT HALF
TABLE CONVERTS TO THE OUTPUT CHARACTER SET. ^NOTE THIS MEANS
THAT ^^CHANGE\\ INTERNALLY CONVERTS ALL CHARACTER SETS TO ASCII.
^BECAUSE ^^CHANGE\\ DOES THIS, CHARACTER SETS WITH MORE
THAN 128 CHARACTERS (SUCH AS ^^EBCDIC\\) CANNOT BE FULLY HANDLED,
AND SOME CHARACTERS MAY BE TRANSLATED INCORRECTLY.
^THE MANNER THAT ^^CHANGE\\ ACCESSES THESE TABLES
IS AS FOLLOWS. ^FIRST ^^CHANGE\\ READS FROM THE INPUT FILE AND
EXTRACTS A BYTE OF THE PROPER SIZE. ^IT THEN TAKES THIS BYTE AND
INDEXES BY IT INTO THE INPUT CONVERSION TABLE. ^FROM THE LEFT HALF
OF THE INPUT CONVERSION TABLE ^^CHANGE\\ EXTRACTS AN ASCII
CHARACTER EQUIVALENT TO THE INPUT CHARACTER. ^THEN WITH THE ASCII
CHARACTER ^^CHANGE\\ INDEXES INTO THE OUTPUT CONVERSION TABLE AND
EXTRACTS A CHARACTER FROM THE RIGHT HALF TABLE. ^THIS CHARACTER IS
THEN THE CONVERTED CHARACTER AND IS PASSED TO THE OUTPUT FILE.
^NOTE IF A CHARACTER CAN NOT BE TRANSLATED ^^CHANGE\\ PLACES
A BACK SLASH (_\) IN THAT POSITION OF THE RECORD.
.PARAGRAPH
^THERE IS A PROGRAM CALLED ^^TABLE\\ WHICH GENERATES THE CONVERSION
FILE FOR ^^CHANGE\\. ^^TABLE\\ CONTAINS ALL OF THE CONVERSION TABLES
WHICH ARE MAPPED IN ^^CHANGE\\ WITH ^^IOWD\\ POINTERS.
^THUS TO MODIFY A TABLE, THE USER NEED ONLY TO MODIFY THE PROGRAM
^^TABLE\\. ^TO DO THIS, ^^TABLE\\ MUST BE EDITED, REASSEMBLED, AND
THEN RUN AGAIN.
.SKIP 3
.INDEX ^^EXAMPLES\\
.NOFILL
6.0	^^EXAMPLES\\
.FILL
.PARAGRAPH
^THE FOLLOWING ARE EXAMPLES OF COMMANDS TO ^^CHANGE\\:
.SKIP 1
.PARAGRAPH
^A USER HAS A MAGNETIC-TAPE THAT WAS WRITTEN ON AN ^^IBM\\ 360
SYSTEM. ^HE KNOWS THAT THE TAPE IS A 9-TRACK TAPE WRITTEN IN
^^IBM\\ FIXED EBCDIC AND WANTS TO CONVERT IT TO SIXBIT
FOR A ^^COBOL\\ PROGRAM HE IS WORKING ON. ^IN ADDITION, THE
USER KNOWS THAT THE INPUT TAPE IS BLOCKED 1 AND HAS 80 CHARACTER
RECORDS. ^HE WANTS THE OUTPUT TO BE BLOCKED 20 AND HAVE 120 CHARACTER
RECORDS. ^TO SOLVE THIS PROBLEM THE USER TYPES THE FOLLOWING
COMMAND TO ^^CHANGE\\:
.SKIP 1
.NOFILL
.LEFT MARGIN 5
^^RETAIN
DATA/MODE:SIXBIT/REC:120/BLK:20
__MTA0:IN/MODE:EBCDIC/REC:80/BLK:1/INDUSTRY
PRINT
RUN\\
.LEFT MARGIN 0
.SKIP 1
.FILL
^IN THE ABOVE EXAMPLE ONLY USER INPUT WAS SHOWN. ^HE FIRST RETAINED
THE FOLLOWING COMMANDS AND THEN TYPED IN HIS COMMAND STRING. ^ONCE
HAVING TYPED IN THE COMMAND STRING THE USER HAD ^^CHANGE\\ TYPE IT
BACK TO HIM. ^HAVING DECIDED ALL WAS O.K.#THE USER
HAD ^^CHANGE\\ DO THE COMMAND BY TYPING "^^RUN\\" TO ^^CHANGE\\.
^THE COMPLETE OUTPUT MAY LOOK AS FOLLOWS:
.LEFT MARGIN 5
.NOFILL
.SKIP 1
_.^^R PUB:CHANGE\\
.SKIP 1
^^CHANGE\\ HERE AT 12:21 02/02/73
^^> RETAIN
READY.
.SKIP 1
> DATA/MODE:SIXBIT/REC:120/BLK:20
READY.
.SKIP 1
> __MTA0:IN/MODE:EBCDIC/REC:80/BLK:1/INDUSTRY
READY.
.SKIP 1
> PRINT
.SKIP 1
OUT= DSK:DATA/BLOCK:20/RECORD:120/MODE:SIXBIT
IN=  MTA0:IN/BLOCK:1/RECORD:80/MODE:EBCDIC/INDUST
READY.
.SKIP 1
> RUN\\
.SKIP 2
^^CHANGE\\	12:25	02/02/73
.SKIP 2
12.021 SECS. 1234 I/O UNITS.
17777 OCTAL LOCATIONS USED.
400 REC. 400 BLK. READ.
400 REC. 20 BLK. WRITTEN.
^^READY.\\
.SKIP 1
>
.LEFT MARGIN 0
.FILL
.PARAGRAPH
^ANOTHER USER HAS A SIXBIT FILE THAT HIS ^^COBOL\\ PROGRAM
JUST GENERATED. ^HE WANTS TO CONVERT IT TO ASCII SO THAT
HE MAY EDITED IT. ^TO DO THIS HE TYPES THE FOLLOWING
COMMAND TO ^^CHANGE\\:
.SKIP 1
.LEFT MARGIN 5
^^ABC/MODE:ASCII/RECORD:80__DATA/MODE:SIXBIT\\
.SKIP 1
.LEFT MARGIN 0
^NOTE IN THIS EXAMPLE THE INPUT RECORD SIZE DID NOT NEED TO
BE SPECIFIED BECAUSE ^^CHANGE\\ WILL DETERMINE IT FROM THE DATA.
^IN GENERAL IF THE DEVICE HAS A FIXED BUFFER SIZE AND THE CHARACTER
SET HAS CONTROL WORDS OR OTHER CONTROL FEATURES THAN THE
RECORD SIZE MAY BE OMITTED.
.SUBTITLE          ^INDEX
.PAGE
.CENTER
^^INDEX\\
.SKIP 3
.PRINT INDEX