\\ .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 .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 USER WITH MAGNETIC TAPES AND DISKS. ^^CHANGE\\ WILL PERFORM BLOCKING, DUPLICATION, CHARACTER SET CONVERSION, UNBLOCKING, AND READING AND WRITING OF TAPE LABELS. .SKIP 3 .INDEX ^^COMMAND SYNTAX\\ .NOFILL 1.1 ^^COMMMAND 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 BRAKETS ([]). ^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. .PAGE ^^/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 DRICES. ^^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 TWELEVE 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 INITAILIZES 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 ^^MAKE\\ .PARAGRAPH ^THE ^^MAKE\\ COMMAND DIRECTS ^^CHANGE\\ TO CALL ON THE PROGRAM CALLED ^^TABLE\\ TO CREATE THE CONVERSION TABLE FILE. ^TO DO THIS ^^CHANGE\\ WILL ISSUE A RUN UUO ON ^^TABLE\\ AT ITS ^^CCL\\ ENTRY POINT. ^UPON RECEIVING THIS TYPE OF ENTRY ^^TABLE\\ WILL CREATE THE FILE ^^"DSK:CHANGE.DAT\\" IN THE USER'S DISK AREA. ^^TABLE\\ WILL THEN RERUN ^^CHANGE\\ GIVING IT A ^^CCL\\ ENTRY. NOTE WHEN THIS COMMAND IS GIVEN ANY RETAINED COMMAND WILL BE LOST. ^THIS COMMAND ASSUMES THAT ^^TABLE\\ IS EITHER IN ^^SYS\\ OR IN THE USER'S DISK AREA. .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 2 ^^HELP\\ .PARAGRAPH ^THE FUNCTION OF THIS COMMAND IS SIMILAR TO THE ^^HELP\\ SWITCH. ^THIS COMMAND WILL TYPE OUT ^^CHANGE\\'S HELP MESSAGE TO THE USER. ^IT DOES NOT TAKE ARGUMENTS AS DOES THE ^^HELP\\ SWITCH. .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 COMMMAND. ^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.1 ^^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 CHRACTER 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 COMPATABLE 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 COMPATABLE 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. .PAGE .INDEX ^^TAPE DATA STRUCTURES\\ .NOFILL 4.1 ^^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 CHARCATERS 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 BOUDARIES (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.1 ^^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 ALTERNATLY 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, CHRACTER 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, REASSEMLBED, AND THEN RUN AGAIN. .SKIP 3 .INDEX ^^TABLE PROGRAM\\ .NOFILL 6.1 ^^TABLE PROGRAM\\ .FILL .PARAGRAPH ^^TABLE\\ IS A SIMPLE MINDED PROGRAM THAT IS USED ONLY TO GENERATE FILES FOR ^^CHANGE\\. ^WHEN IT IS RUN ^^TABLE\\ WILL TYPE OUT "^FILE: ". ^IF THE USER RESPONDS WITH A RETURN ^^TABLE\\ WILL TRY TO CREATE A FILE CALLED ^^"SYS:CHANGE.DAT"\\. ^ALTERNATLY THE USER MAY SPECIFY A FILE NAME AND A PPN AND ^^TABLE\ WILL CREATE THE FILE IN THE DISK AREA SPECIFIED. .PARAGRAPH ^^TABLE\\ HAS ONLY ONE SWITCH, AND IT IS USED TO RUN ^^CHANGE\\ WHEN THE DATA FILE HAS BEEN CREATED. ^THE SWITCH IS "/^R" AND MUST FOLLOW THE DATA FILE'S NAME. .SKIP 3 .INDEX ^^EXAMPLES\\ .NOFILL 7.1 ^^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:EDCDIC/REC:80/BLK:1/INDUTRY 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 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