Google
 

Trailing-Edge - PDP-10 Archives - BB-H506D-SM_1983 - cobol/source/cobola.mac
There are 7 other files named cobola.mac in the archive. Click here to see a list.
; UPD ID= 3528 on 5/7/81 at 10:46 AM by NIXON                           
TITLE	COBOLA FOR COBOL V12B
SUBTTL	COBOL INITIALIZATION		AL BLACKINGTON/CAM



;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1974, 1981 BY DIGITAL EQUIPMENT CORPORATION


	SEARCH	P,UUOSYM
	%%P==:%%P
	DBMS==:DBMS
	DEBUG==:DEBUG
	EBCMP.==:EBCMP.
	MPWCEX==:MPWCEX
	BIS==:BIS
	ONESEG==:ONESEG

	IFE TOPS20,<SEARCH MACTEN>
	IFN TOPS20,<SEARCH MONSYM,MACSYM>

TWOSEG
RELOC	400000
	SALL

DEFINE	TYPE(ADDR),<
	OUTSTR	ADDR
>

;FLAGS USED IN SWITCH SCANNING

FL.LIB==1		;FILE IS A LIBRARY
FL.REW==2		;DEVICE NEEDS REWINDING
IFE TOPS20,<
FL.ZRO==4		;DIRECTORY NEEDS CLEARING
>
;EDIT HISTORY

;V12*****************
;NAME	DATE		COMMENTS
;CLRH	31-MAY-79	[713] DO TMPCOR IN THE RIGHT ADDRESS IF CORE UUO IS NEEDED.
;DMN	19-SEP-78	[556] FIX GETTAB 135 IF FILDAEMON IS TURNED OFF

;V10*****************
;NAME	DATE		COMMENTS
;EHM	2-MAR-78	[530] FIX COMMAND SCANNER TO LOOK FOR NUL FILE 
;			IF USER TYPES   =FILE.
;SSC	28-SEPT-77	ADDED KEYWORDS FOR DBMS-V6: TRANSACTION, VIA, MEMBERS
;SSC	29-JUL-76	ADDED KEYWORD JOURNAL FOR DBMS S. U.
;GPS	12/23/74	ADD KEYWORDS FOR SIMULTAUEOUS UPDATE
;ACK	12-JAN-75	1.  ALTMODE/BACKARROW CODE REMOVAL.
;			2.  "/X" CODE FOR EBCDIC/COMP-3.
;			3.  "/D:SIZE" SWITCH FOR MULTIPLE PERFORMS.
;			4.  ADD KEYWORDS "STANDARD-ASCII" AND "FILE-STATUS".
;SSC	MAR-5-75	PUT 6A EDIT %316 DIRECTLY INTO V10
;********************
; EDIT 344 FIX "DSK NOT DSK MSG IF NO COMMAND FILE.
; EDIT 255 FIX TO ALWAYS ACCEPT LC LETTERS IN COMMAND STRING
; EDIT 144 FIXES DSK IS NOT THE DSK
COBOLA:	PORTAL	START		;COMMANDS FROM TTY
	PORTAL	COMDSK		;COMMANDS FROM DISK
	PORTAL	COBLAR		;RESTART

START:
IFE ONESEG,<
	SKIPN	11		;[144] CHECK RUN-TIME DEVICE
	MOVSI	11,'DSK'	;[144] IF NONE USE DSK
	MOVEM	7,RUNPPN##	;SAVE DEV AND PPN OF RUN COMMAND
	MOVEM	11,RUNDEV##
>

START1:	MOVEI	SW,0		;CLEAR FLAGS

;START A NEW COMPILATION

COBLAR:	TSWF	FDSKC		;INPUT COMMAND FROM TTY?
	JRST	COBLAS		;NO

	CALLI	$RESET		;YES

	OPEN	COM,[.IOASL	;GET TTY FOR COMMAND CHANNEL
		SIXBIT /TTY/
		XWD 0,COMBH##]
	HALT	.-1		;NO TTY?

	INBUF	COM,2		;GET 2 COMMAND BUFFERS
	SETZM	SAVJFF		;IF RESTART, FORCE SAVING JOBFF

COBLAS:
	SETZM	SUBPRG##	;ASSUME MAIN PROGRAM UNTIL FURTHER NOTICE
	SETZM	SLASHJ##	;CLR /J SWITCH
IFN TOPS20,<
	SWON	FREENT		;ASSUME 2 SEG CODE IF TOPS-20
>
	SKIPN	TA,SAVJFF	;SAVE JOBFF IF IT WASN'T DONE ALREADY
	MOVE	TA,.JBFF
	MOVEM	TA,SAVJFF
	MOVEM	TA,.JBFF	;RESTORE JOBFF

	; ZERO ALL OF FREE CORE
	CAMG	TA,.JBREL
	SETZM	(TA)
	AOS	TA
	HRL	TA,.JBFF
	HRRZ	TB,.JBREL
	CAMLE	TB,.JBFF
	BLT	TA,(TB)

IFE ONESEG,<
	MOVE	TA,RUNDEV	;IS RUN DEVICE REALLY A DISK?
	DEVCHR	TA,
	TXNN	TA,DV.DSK
	JRST	NOTDSK		;NO--ERROR
> ;END IFE ONESEG
;SET UP IMPURE AREA.
;GET RID OF LEADING CARRIAGE-RETURNS IN COMMAND STRING.

	SETFAZ	A;

	TSWF	FDSKC		;[266] DSK INPUT FOR COMMANDS
	JRST	COBAST		;[266] YES SKIP THIS
	PUSHJ	PP,TTYON##	;[266] TURN ON TTY IF USER TYPED CONT O

	TYPE	[ASCIZ/
*/]
COBAST:				;[266] NEW LABEL
	PUSHJ	PP,SETIMP	;SET UP IMPURE AREA
	PUSHJ	PP,GETDT	;SET UP DATE, TIME AND DEFAULT PATH
	PUSHJ	PP,GETVER	;SET UP VERSION NUMBER

	JRST	TESTCR

TYPEST:	TSWT	FDSKC;
	TYPE	[ASCIZ/
*/]

TESTCR:	PUSHJ	PP,COMKAR	;GET FIRST CHARACTER FROM COMMAND
	TSWF	FECOM;		;END OF COMMAND FILE?
	CALLI	$EXIT		;YES--QUIT
	JUMPE	CH,TYPEST	;NO--NULL?
	CAIN	CH,$CR		;NO--CARRIAGE-RETURN?
	JRST	TYPEST		;YES--LOOP


	SWON	FCOMCH;		;NO--SET "REGET CHARACTER"
	SWON	FTERA		;SET 'WE ARE TYPING ERRORS'
	SETZM	CREFSW##	;CLEAR '/C'
;SET UP BINARY DEVICE

SETBIN:	MOVEI	DA,BINDEV##
	PUSHJ	PP,GETFIL	;GET FIRST FILE
	HLLZS	DEVEXT(DA)	;[530] CLEAR .(DOT) SEEN FLAG IF SET


	TSWF	FDSKC		;INPUT FROM TTY?
IFN ANS68,<
	TYPE	[ASCIZ/COBOL:	/];NO
>
IFN ANS74,<
	TYPE	[ASCIZ/CBL74:	/]; NO
>

	CAIE	CH,"-"		;IS IT "NULL FILE"?
	JRST	SETBNB		;NO
	SETZM	BINDEV		;YES
	PUSHJ	PP,COMKAR
	CAIE	CH,","
	CAIN	CH,"="
	JRST	SETLST
	JRST	TUMANY

SETBNA:	MOVSI	TA,'DSK'	;USE DEVICE "DSK"
	MOVEM	TA,BINDEV
	JRST	SETLST

SETBNB:	JUMPE	TA,SETBNA
	TXNE	TA,DV.M14	;BINARY LEGAL?
	TXNN	TA,DV.OUT	;YES--OUTPUT DEVICE?
	JRST	BADBIN		;NO--ERROR
;SET UP LISTING DEVICE

SETLST:	CAIN	CH,"="		;ANY FILE THERE?
	JRST	SETLSA		;NO

	CAIN	CH,$CR		;END OF STRING?
	JRST	NOSRC		;YES--ERROR

	MOVEI	DA,LSTDEV##
	PUSHJ	PP,GETFIL	;GET SECOND FILE
	HLLZS	DEVEXT(DA)	;[530] CLEAR .(DOT) SEEN FLAG IF SET

	CAIE	CH,"-"		;IS IT A "NULL FILE"?
	JRST	SETLSB		;NO

	SWON	FNOLST		;YES
	PUSHJ	PP,COMKAR
	CAIE	CH,"="
	JRST	TUMANY

SETLSA:	MOVSI	TA,'DSK'	;NO DEVICE--USE "DSK"
	MOVEM	TA,LSTDEV	;SET LIST DEVICE
	JRST	SETSRC		;IT MUST BE LEGAL

SETLSB:	JUMPE	TA,SETLSA
	TXNN	TA,DV.OUT	;OUTPUT DEVICE?
	JRST	BADOUT		;NO--ERROR
;SET UP SOURCE DEVICE

SETSRC:	CAIN	CH,$CR		;END OF STRING?
	JRST	NOSRC		;YES--ERROR
	CAIE	CH,"="		;ANY MORE OUTPUT FILES?
	JRST	TUMANY		;YES--ERROR


	PUSHJ	PP,SCNCOM	;SCAN ALL SOURCE FILES
	PUSHJ	PP,STINFL##	;SET UP FIRST SOURCE FILE
	TSWTZ	FHELP		;/H?
	JRST	SETSR1		;NO
HELP:
IFN ANS68,<
 IFE FT68274,<
	MOVE	1,[SIXBIT "COBOL"]	;YES, PRINT COBOL.HLP
 >
 IFN FT68274,<
	MOVE	1,[SIXBIT "68274"]
 >
>
IFN ANS74,<
	MOVE	1,[SIXBIT "CBL74"]	;YES, PRINT COBOL.HLP
>
	PUSHJ	PP,.HELPR##
	JRST	BADC2		;IGNORE ALL ELSE IN COMMAND STRING

SETSR1:	SKIPN	SRCDEV##	;ANY FILE THERE?
	JRST	NOSRC		;NO--ERROR

;FILE NAMES HAVE BEEN READ--FINALIZE

	MOVE	TA,SRCDEV+1
	SKIPN	LSTDEV+1	;ANY LIST FILE-NAME?
	MOVEM	TA,LSTDEV+1	;NO--JAM SOURCE NAME
	SKIPN	BINDEV+1	;ANY BINARY FILE-NAME?
	MOVEM	TA,BINDEV+1	;NO--JAM SOURCE NAME

IFE FT68274,<
	MOVSI	TA,'REL'
>
IFN FT68274,<
	MOVSI	TA,'CVT'	;USE DEFAULT CONVERTED EXTENSION
>
	SKIPN	BINDEV+2	;ANY BINARY EXTENSION?
	MOVEM	TA,BINDEV+2	;NO--USE "REL"

	MOVSI	TA,'LST'
	SKIPN	LSTDEV+2	;ANY LISTING EXTENSION?
	MOVEM	TA,LSTDEV+2	;NO--USE "LST"

	SKIPE	LIBSWS##	;ANY LIBRARY?
	JRST	INITB		;YES

	MOVE	TA,[LIBSET,,LIBDEV##]	;NO--TRY "DSK:LIBARY.LIB"
	BLT	TA,LIBDEV+3
	SETZM	LIBPP##
	MOVEI	DA,LIBDEV
	MOVEI	I1,.IOASC
	MOVEI	I3,DEVBH##(DA)
	MOVEI	DC,LIB
	PUSHJ	PP,OPENIT##

	HRRZ	TA,.JBFF
	MOVEM	TA,LIBBUF##
	INBUF	LIB,1

	LOOKUP	LIB,I1
	  SETZM	LIBDEV
;INITIALIZE BINARY DEVICE

INITB:
IFE FT68274,<
	MOVEI	I1,.IOBIN
>
IFN FT68274,<
	MOVEI	I1,.IOASC	;ITS THE CONVERTED SOURCE FILE
>
	MOVEI	DA,BINDEV
	MOVEI	DC,BIN
	SKIPN	BINDEV		;ANY BINARY FILE?
	JRST	INITL		;NO

	PUSHJ	PP,OPNOUT
IFN FT68274,<
	MOVE	TA,.JBFF
	MOVEM	TA,BINBUF##
	OUTBUF	BIN,2
>
	MOVE	TA,BINSWS##	;REWIND?
	TRNE	TA,FL.REW
	MTREW.	BIN,
IFE TOPS20,<
	TRNE	TA,FL.ZRO	;CLEAR DIRECTORY?
	UTPCLR	BIN,
>
	SETOM	BINBLK##

;INITIALIZE LISTING DEVICE

INITL:	MOVEI	I1,.IOASC
	MOVEI	DA,LSTDEV
	MOVEI	DC,LST
	TSWF	FNOLST;		;ANY LISTING DEVICE?
	JRST	INITS		;NO

	MOVE	TA,LSTDEV	;YES--TTY?
	DEVCHR	TA,
	TXNE	TA,DV.AVL
	TXNN	TA,DV.TTU
	JRST	INITL1		;NO
	TXNN	TA,DV.MTA	;TEST FOR NUL:
	SWON	FLTTY;		;YES

INITL1:	PUSHJ	PP,OPNOUT
	MOVE	TA,.JBFF
	MOVEM	TA,LSTBUF##
	OUTBUF	LST,2
	MOVE	TA,LSTSWS##	;REWIND?
	TRNE	TA,FL.REW
	MTREW.	LST,
IFE TOPS20,<
	TRNE	TA,FL.ZRO	;CLEAR DIRECTORY?
	UTPCLR	LST,
>
	SETOM	LSTBLK##
;INITIALIZE SCRATCH FILES

INITS:	TSWF	FNOLST		;IF NO LISTING,
	SETZM	CREFSW		;  CLEAR '/C'

	PJOB	TC,		;GET JOB NUMBER INTO LH OF TA, DECIMAL
	MOVEI	TD,3
	IDIVI	TC,^D10
	ADDI	TB,"0"-40
	LSHC	TB,-6
	SOJG	TD,.-3

	MOVE	TB,DEVXWD
OPNSCR:	MOVE	DA,DEVTAB(TB)
	MOVSI	TC,'DSK'	;SCRATCH DEVICE
	MOVEM	TC,DEVDEV##(DA)
	HLR	TA,DEVTAB(TB)	;CREATE FILE NAME
	MOVEM	TA,DEVFIL##(DA)
	MOVSI	TC,'TMP'	;SCRATCH FILES EXTENSION
	MOVEM	TC,DEVEXT##(DA)
	MOVEI	DC,FSC(TB)	;SET CHANNEL NUMBER

	CAIE	DC,CRF		;IF THIS IS
	JRST	OPNSC0		;  CREF FILE
	SKIPN	CREFSW		;  AND THERE IS NO '/C',
	JRST	OPNSC1		;  DON'T OPEN THE CREF FILE

OPNSC0:	MOVEI	I3,DEVBHI##(DA)
	HRLI	I3,3(I3)
	MOVEI	I4,0

	MOVEI	I1,.IOBIN	;USUALLY BINARY MODE
	CAIN	DC,CPY		;CPYFIL?
	MOVEI	I1,.IOASC	;YES--ASCII MODE
	CAIE	DC,NAM		;NAMFIL
	CAIN	DC,LIT		;  OR LITFIL?
	MOVEI	I1,.IODMP	;YES--DUMP MODE
	PUSHJ	PP,OPNTMP
	SETOM	DEVBLK##(DA)	;SET BLOCK COUNT TO -1

	CAIE	DC,LIT		;"LIT"?
	CAIN	DC,AS3		;"AS3"?
	JRST	OPNSC1		;YES--NO BUFFER NOW
	CAIN	DC,NAM		;LIKEWISE FOR
	JRST	OPNSC1		;  NAMFIL

	HRRZ	I0,.JBFF	;NO--SET BUFFER ADDRESS
	MOVEM	I0,DEVBUF##(DA)

	MOVE	I0,OUTBOP##
	DPB	DC,I0CHAN##
	XCT	I0		;DO AN OUTBUF

OPNSC1:	AOBJN	TB,OPNSCR

	MOVE	TA,SRCBUF##	;AS3FIL OVERLAYS SRCFIL
	MOVEM	TA,AS3BUF##
IFE FT68274,<
	MOVE	TA,GENBUF##	;BINFIL OVERLAYS GENFIL
	MOVEM	TA,BINBUF##
>
;SET UP LISTING IF WE ARE DEBUGGING

IFN DEBUG,<
	PUSHJ	PP,HDROUT##
	>


;SET UP ALL WORK AREAS EXCEPT NAMTAB

SETWRK:	HRRZ	TA,.JBFF
	MOVEM	TA,FREESP##
	MOVE	TA,WRKXWD

STWRK1:	MOVE	TB,(TA)
	MOVE	TC,TB
	HRR	TC,FREESP
	MOVEM	TC,(TB)
	MOVEM	TC,1(TB)
	HLRE	TC,TB
	MOVMS	TC
	ADDI	TC,1
	ADDB	TC,FREESP

STWRK3:	CAMG	TC,TOPLOC##
	JRST	STWRK2
	PUSHJ	PP,ADDCOR##
	MOVE	TC,FREESP
	JRST	STWRK3

STWRK2:	AOBJN	TA,STWRK1
	JRST	SETNAM
;SET UP INITIAL ENTRIES IN NAMTAB.
;ENTER AT "SETNAM".


	PUSHJ	PP,ADDCOR	;GRAB ANOTHER 1K OF CORE
SETNAM:	MOVE	TA,TOPLOC	;ROOM FOR
	SUBI	TA,1+NAMPSZ##	;  NAMTAB
	SUB	TA,NTSIZE##	;  + NM1TAB
	SUB	TA,NTSIZE	;  + NM2TAB?
	CAMGE	TA,FREESP
	JRST	SETNAM-1	;NO--GRAB ROOM

	MOVE	TE,[XWD NTSIZE,SIZTAB##]
	MOVNI	TD,NTNSIZ##
	BLT	TE,SIZTAB-1(TD)

	MOVE	TE,NTSIZE
	MOVEM	TE,NM12SZ##
	MOVE	TE,[XWD NTNSIZ,SIZTAB]
	MOVEM	TE,NSZPTR##

	HRLI	TA,TC
	MOVEM	TA,NM1LOC##
	MOVSI	TE,(TA)
	HRRI	TE,1(TA)
	SETOM	(TA)
	ADD	TA,NM12SZ
	BLT	TE,-1(TA)

	MOVEM	TA,NM2LOC##
	MOVSI	TE,(TA)
	HRRI	TE,1(TA)
	SETZM	(TA)
	ADD	TA,NM12SZ
	BLT	TE,-1(TA)

	HRLI	TA,-1+NAMNSZ##
	MOVEM	TA,NAMLOC##
	MOVEM	TA,NAMNXT##

	MOVEI	LN,NAMDAT	;BEGINNING OF TABLE IN "RESVWD"
;SET UP NAMTAB (CONT'D)

SETN1:	SETZM	NAMWRD##	;CLEAR NAMWRD
	MOVE	TB,[XWD NAMWRD,NAMWRD+1]
	BLT	TB,NAMWRD+4

	HLRZ	TB,(LN)		;GET <SIZE OF ENTRY> + 1
	MOVEI	TC,NAMWRD	;SET UP <XWD 1(LN),NAMWRD>
	HRLI	TC,1(LN)
	BLT	TC,NAMWRD-2(TB)	;MOVE ENTRY TO NAMWRD

	PUSHJ	PP,TRYNAM##	;SEE IF IT IS THERE
	  JRST	SETN2		;NO--OK
	JRST	DBLNAM		;YES--ERROR

SETN2:	PUSHJ	PP,BLDNAM##	;CREATE AN ENTRY IN NAMTAB
	HRLZ	TB,(LN)
	TLO	TB,NAMRSV/1B17
	MOVEM	TB,(TA)

	HLRZ	TA,(LN)		;STEP TO NEXT NAMDAT ENTRY
	ADD	LN,TA
	SKIPE	(LN)		;DONE?
	JRST	SETN1		;NO--LOOP

	HRRZ	TA,NM1LOC	;YES--RESET LEFT HALF OF FREESP
	SUB	TA,FREESP
	HRLM	TA,FREESP
;SET UP INITIAL ENTRIES IN EXTAB

SETEXT:	SETZM	NAMWRD+1	;CLEAR NAMWRD'S LAST 4 LOCS
	MOVE	TA,[XWD NAMWRD+1,NAMWRD+2]
	BLT	TA,NAMWRD+4

	MOVS	TE,EXTLOC	;CLEAR EXTAB
	HRR	TE,EXTLOC+3
	SUBI	TE,1
	PUSHJ	PP,CLRSOM

	MOVE	LN,EXTPTR##	;GET TABLE POINTER

SETEX1:	MOVE	TB,[POINT 6,NAMWRD]
	MOVE	TA,[POINT 6,(LN)]

SETX1A:	ILDB	CH,TA
	CAIN	CH,'.'
	MOVEI	CH,';'
	IDPB	CH,TB
	TLNE	TA,770000
	JRST	SETX1A

	PUSHJ	PP,TRYNAM
	  JRST	SETEX2
	JRST	DBLNAM		;YES--ERROR

SETEX2:	PUSHJ	PP,BLDNAM	;NO--ADD IT TO NAMTAB
SETEX3:	MOVE	TB,EXTNXT##
	AOBJP	TB,SETEX4	;ROOM FOR FIRST WORD?
	TLO	TA,500000	;YES--PUT NAMTAB CHAIN IN EXTAB
	HLLZM	TA,(TB)
	HRRZI	TD,(TB)		;SET UP EXTAB LINK
	HRRZ	TE,EXTLOC
	SUBI	TD,(TE)
	IORI	TD,<CD.EXT>B20
	AOBJP	TB,SETEX4	;ROOM FOR SECOND WORD?
	SETZM	(TB)		;YES--CLEAR IT

	MOVEM	TB,EXTNXT	;YES--RESTORE EXTNXT

	AOBJN	LN,SETEX1	;ANY MORE ENTRIES?
	JRST	FINISH		;NO

SETEX4:	PUSH	PP,TA		;EXPAND EXTAB
	PUSHJ	PP,XPNEXT##
	POP	PP,TA
	JRST	SETEX3
;FINISH UP PHASE A

FINISH:	HLLZS	SW		;CLEAR RH OF SWITCHES
	PUSHJ	PP,GETFCH##	;SET UP SRCFIL
	SWON	FREGCH;
	SETZM	WASERC##	;LAST WORD WAS NOT 'SEARCH', OBVIOUSLY

	MOVEI	TA,"."		;SET "DECIMAL POINT IS PERIOD"
	MOVEM	TA,DCPNT.##
	MOVEI	TA,","
	MOVEM	TA,COMA.##

	MOVEI	TA,100
	MOVEM	TA,GENWRD##

IFN DEBUG,<TSWC FOBJEC>
	TSWF	FNOLST		;IF NO LISTING,
	SWOFF	FOBJEC!FMAP	;  THEN NO MAPS NOR ASSEMBLY LISTING

	TSWF	FNOLST		;IF NO LISTING,
	SETZM	LSTDEV		;  CLEAR DEVICE NAME
	TSWF	FLTTY		;IF LISTING ON TTY,
	SWOFF	FTERA		;  WE DON'T TYPE ERRORS TWICE

	ENDFAZ	A;
;SCAN REMAINDER OF SOURCE FILES IN COMMAND STRING

SCNCOM:	MOVSI	DA,'DSK'
	MOVEM	DA,LASTDV##
	MOVEI	DA,IOSRCS##	;SET SRCEND## & DA
	MOVEM	DA,SRCEND##

SCNCM1:	TSWF	FESRC		;ANY MORE SOURCE FILES?
	JRST	SCNCM5		;NO

	PUSHJ	PP,GETFIL	;YES--GET NEXT ONE
	JUMPN	TA,SCNCM3	;JUMP IF DEVICE FOUND

	SKIPN	DEVFIL(DA)	;NO DEVICE--ANY FILE?
	SKIPE	DEVEXT(DA)
	JRST	SCNCM2		;YES
	MOVE	TB,DEVSW##(DA)	;NO--IS THIS A LIBRARY?
	TRNN	TB,FL.LIB
	JRST	SCNCM6		;NO--ERROR

SCNCM2:	MOVE	TA,LASTDV
	MOVEM	TA,DEVDEV(DA)
	DEVCHR	TA,

SCNCM3:	PUSHJ	PP,CHEKIN	;CHECK VALIDITY OF FILE

	ADDI	DA,DEVSIZ	;KICK UP TO NEXT ENTRY
	MOVEM	DA,SRCEND
	CAIE	DA,SRCEND	;TABLES FULL?
	JRST	SCNCM1		;NO--LOOP

	TSWT	FESRC		;YES--ANY MORE SOURCES?
	JRST	NOROOM		;YES--ERROR

SCNCM5:	MOVEI	TA,IOSRCS	;RESET SRCEND
	MOVEM	TA,SRCEND

	POPJ	PP,

SCNCM6:	CAIN	CH,$CR		;END OF LINE?
	CAIE	DA,IOSRCS	;YES--ANY SOURCE FILES?
	JRST	SCNCM2		;YES
	JRST	NOSRC		;NO--ERROR
;OPEN UP OUTPUT DEVICE
;ENTER WITH DA POINTING TO A FILE ENTRY SET UP BY GETFIL.

OPNOUT:	MOVSI	I3,DEVBH(DA)	;ENTRY FOR BIN, LST
	PUSHJ	PP,OPENIT	;OPEN AND SET UP ENTER
	JRST	OPNTM1

OPNTMP:	PUSHJ	PP,OPENIT	;OPEN AND SET UP ENTER

	CAIN	DC,LIT		;DON'T ENTER IF
	POPJ	PP,		;  LITFIL

	MOVSI	I3,(100B8)	;SET NO PROTECTION, SO WE CAN ALWAYS
				; READ AND DELETE THIS FILE
OPNTM1:	MOVE	I0,ENTROP##	;CREATE AN ENTER
	DPB	DC,I0CHAN
	XCT	I0		;ENTER
	  JRST	NOENTR		;CANNOT
	POPJ	PP,


;CHECK VALIDITY OF SOURCE FILE.
;ENTER WITH CHARACTERISTICS IN TA.

CHEKIN:	TXNN	TA,DV.IN	;INPUT DEVICE?
	JRST	NOTIN		;NO--ERROR

	TXNE	TA,DV.DIR	;DIRECTORY DEVICE?
	SKIPE	DEVFIL(DA)	;YES--ANY FILE NAME?
	SKIPA	TB,DEVSW(DA)	;YES, LIBRARY FILE?
	JRST	NOFILE		;NO--ERROR
	TRNE	TB,FL.LIB
	TXNE	TA,DV.DSK	;YES--IS IT DSK?
	POPJ	PP,		;YES
	JRST	BADLIB		;NO--ERROR
;SET UP TO GET COMMANDS FROM DISK

COMDSK:
IFE ONESEG,<
	MOVEM	7,RUNPPN	;SAVE DEV AND PPN OF RUN COMMAND
	MOVEM	11,RUNDEV
>

	MOVX	SW,FDSKC	;CLEAR FLAGS--SET "COMMANDS FROM DISK"
	CALLI	$RESET

	MOVSI	TA,'COB'		;SET UP FIRST
	MOVEM	TA,COMBH+1		;  WORD FOR TMPCOR UUO
	MOVE	TA,.JBFF		;CHECK IF THERE IS ENOUGH CORE
	ADDI	TA,200-1
	CAMG	TA,.JBREL##		;ENOUGH FREE SPACE?
	JRST	COREOK			;YES
	MOVE	TB,TA
	CORE	TB,			;GET MORE CORE
	  JRST	NOTNUF			;NOT ENOUGH
;[713]	MOVEM	TA,.JBFF		;RESET JBFF
COREOK:	MOVE	TA,.JBFF		;SET UP
	SUBI	TA,1			;  SECOND
	HRLI	TA,-200			;  WORD
	MOVEM	TA,COMBH+2		;  FOR TMPCOR UUO

	MOVE	TA,[XWD 1,COMBH+1]	;GET FILE IN
	TMPCOR	TA,			;  CORE
	  JRST	CMDSK5			;WAS NONE--TRY DISK

	MOVE	TB,.JBFF		;SET UP
	HRLI	TB,(POINT 7,0)		;  BYTE-POINTER TO
	MOVEM	TB,COMBH+1		;  COMMAND
	ADDM	TA,.JBFF		;UPDATE JOBFF WITH SIZE OF INPUT
	IMULI	TA,5			;CALCULATE
	ADDI	TA,1			;  NUMBER OF CHARACTERS + 1
	MOVEM	TA,COMBH+2		;STASH THAT
	SETZM	COMBH			;CLEAR COMBH TO INDICATE "TMPCOR"
	JRST	CMDSK9			;RETURN

CMDSK5:	OPEN	COM,[.IOASC
		SIXBIT /DSK/
		XWD 0,COMBH]
	  JRST	START1		; [344] NO DSK -- USE TTY
	MOVEI	I1,'COB'	;SET UP LOOKUP PARAMETERS
	MOVSI	I2,'TMP'
	SETZB	I3,I4
	HLRZM	I2,COMEXT##

	PJOB	TC,		;PUT IN JOB NUMBER
	MOVEI	I0,3
	IDIVI	TC,^D10
	ADDI	TB,'0'
	LSHC	TB,-6
	SOJG	I0,.-3
	HLL	I1,TA

	INBUF	COM,1		;GET A SINGLE BUFFER
	LOOKUP	COM,I1		;LOOKUP "JJJCOB.TMP"
	  JRST	START1		; [344] NOT FOUND -- USE TTY.
CMDSK9:	MOVE	TE,.JBFF##
	MOVEM	TE,SAVJFF##
	JRST	COBLAS
;SET UP IMPURE AREA

SETIMP:
IFE ONESEG,<
	MOVE	TA,[XWD %WEDID,WEDIED##]	;MOVE "GETSEG" ROUTINE TO LOW-SEGMENT
 IFN DEBUG,<
	BLT	TA,-1+DDTSTP##			;DON'T OVERWRITE BREAKPOINT THAT MIGHT BE AT DDTSTP
 >
 IFE DEBUG,<
	BLT	TA,GETEND##
>>

IFE ONESEG,<
	MOVE	TA,RUNPPN	;GETSEG WILL USE DEV AND PPN
	MOVEM	TA,GETFNM+4	;  OF RUN COMMAND
	MOVE	TA,RUNDEV
	MOVEM	TA,GETFNM##
	HRROI	TA,.GTRDV
	GETTAB	TA,		;GET DEVICE
	  JRST	SETI2		;PRE 6.03
	JUMPE	TA,SETI2	;[556] NOT IMPLEMENTED
	MOVEM	TA,GETFNM	;SAVE ACTUAL DEVICE
	HRROI	TA,.GTRDI
	GETTAB	TA,		;GET DIRECTORY
	  JRST	SETI2
	MOVEM	TA,GETFNM+4	;SAVE ACTUAL PPN
	HRROI	TA,.GTRS0
	GETTAB	TA,		;GET SFD #1
	  JRST	SETI2		;PRE 6.04
	JUMPE	TA,SETI2	;NO SFD
	MOVEM	TA,GETPTH+.PTSFD	;SAVE SFD
	MOVEI	TA,GETPTH##	;GET POINTER
	EXCH	TA,GETFNM+4	;SWAP WITH PPN
	MOVEM	TA,GETPTH+.PTPPN	;SAVE PPN
	HRROI	TA,.GTRS1
	GETTAB	TA,		;NEXT SFD
	  JRST	SETI2
	MOVEM	TA,GETPTH+.PTSFD+1
	JUMPE	TA,SETI2	;ALL DONE
	HRROI	TA,.GTRS2
	GETTAB	TA,		;NEXT SFD
	  JRST	SETI2
	MOVEM	TA,GETPTH++.PTSFD+2
	JUMPE	TA,SETI2	;ALL DONE
	HRROI	TA,.GTRS3
	GETTAB	TA,		;NEXT SFD
	  JRST	SETI2
	MOVEM	TA,GETPTH+.PTSFD+3
	JUMPE	TA,SETI2	;ALL DONE
	HRROI	TA,.GTRS4
	GETTAB	TA,		;NEXT SFD
	  JRST	SETI2
	MOVEM	TA,GETPTH+.PTSFD+4
	SETZM	GETPTH+.PTSFD+5	;TERMINATE WITH ZERO
SETI2:>
	MOVE	TB,[XWD FSTCLR##,FSTCLR+1]
	SETZM	FSTCLR
	BLT	TB,LSTCLR##	;CLEAR ALL LOWSEG LOCS
	MOVE	TE,[SETI3,,RVBLT##]
	BLT	TE,RVBLT+2	;SETUP REVERSE BLT
	HLRZ	TE,.JBSA##	;GET INITIAL .JBFF
	ADDI	TE,WRKSIZ##	; SET SIZE FOR THE SMALLEST PROGRAM TO USE
	IORI	TE,777		;ROUND UP TO NEAREST PAGE
	JRST	SETCOR##

SETI3:	POP	TE,0(TE)	;STANDARD POP REVERSE BLT CODE
	JUMPL	TE,RVBLT	;I.E. JUMPL TE,.-1
	POPJ	PP,
;CLEAR SOME CORE
;ENTER WITH FIRST ADDRESS IN LH OF "TE", LAST ADDRESS IN RH OF "TE"

CLRSOM:	HLRZ	TD,TE
	SETZM	(TD)
	HLL	TD,TE
	ADDI	TD,1
	BLT	TD,(TE)
	POPJ	PP,

;GET CURRENT DATE AND TIME

GETDT:	DATE	TC,		;GET DATE
	IDIVI	TC,^D31		;TB_(DAY-1)
	PUSHJ	PP,DECONV	;CONVERT TO TWO DECIMAL DIGITS
	DPB	TB,[POINT 14,STDATE,13]

	IDIVI	TC,^D12		;TB_(MONTH-1)
	MOVE	TB,MOTABL(TB)
	LSHC	TB,-16
	IORM	TB,STDATE##
	LSHC	TB,-1
	MOVEM	TA,STDATE+1

	MOVEI	TB,^D63(TC)	;TB_(YEAR-1)
	CAIL	TB,^D100-1	;CK FOR YEAR 2000+
	SUBI	TB,^D100	;IF SO, CHANGE TO 00+
	PUSHJ	PP,DECONV
	DPB	TB,[POINT 14,STDATE+1,27]
	CALLI	TC,$TIME	;GET TIME
	IDIVI	TC,^D1000*^D60	;CONVERT TO MINUTES
	IDIVI	TC,^D60		;TB_MINUTES, TC_HOURS
	PUSHJ	PP,DECONV+1
	LSH	TB,1
	IOR	TB,[ASCII "  :"]
	MOVEM	TB,STTIME##

	MOVE	TB,TC
	PUSHJ	PP,DECONV+1
	DPB	TB,[POINT 14,STTIME,13]
IFE TOPS20,<
	SETOM	MYPATH##	;MY JOB,,GET PATH FUNCTION
	MOVE	TA,[11,,MYPATH]
	PATH.	TA,		;GET DEFAULT PATH
	  SETZM	MYPPN##		;FAILED
>
IFN TOPS20,<
	GETPPN	TA,		;GET LOGGED-IN PPN
	  JFCL			;JUST INCASE JACCT ON
	MOVEM	TA,MYPPN##	;STORE IT
>
	POPJ	PP,


;CONVERT A NUMBER TO DECIMAL

DECONV:	ADDI	TB,1		;ADD 1 TO IT
	IDIVI	TB,^D10		;TA_UNITS, TB_TENS
	LSH	TB,7
	ADDI	TB,14060(TA)	;CONVERT TO ASCII
	POPJ	PP,
;SET UP VERSION NUMBER

GETVER:	SETZM	VERZUN##
	SETZM	VERZUN+1
	SETZM	VERZUN+2

	MOVE	TC,[POINT 6,VERZUN]

	LDB	TE,[POINT 9,.JBVER,11]	;GET VERSION NUMBER
	SKIPE	TE		;IF NON-ZERO,
	PUSHJ	PP,GTVER8	;  PRINT IT

	LDB	TE,[POINT 6,.JBVER,17] ;GET MINOR VERSION NUMBER
	JUMPE	TE,GTVER4	;IF ZERO, NO LETTER
	CAIG	TE,^D26		;IF LESS THAN 27,
	SOJA	TE,GTVER3	;  IT IS SINGLE LETTER
	MOVEI	CH,'A'		;IT IS DOUBLE LETTER
	MOVEI	TE,-1(TE)
GTVER1:	SUBI	TE,^D26
	CAILE	TE,^D25
	AOJA	CH,GTVER1
GTVER2:	IDPB	CH,TC
GTVER3:	ADDI	TE,'A'
	IDPB	TE,TC

GTVER4:	HRRZ	TE,.JBVER##	;GET PATCH NUMBER
	JUMPE	TE,GTVER5	;IF ZERO, DON'T PRINT IT
	MOVEI	CH,'('
	IDPB	CH,TC
	PUSHJ	PP,GTVER8
	MOVEI	CH,')'
	IDPB	CH,TC

GTVER5:	LDB	TE,[POINT 3,.JBVER,2] ;GET EDITOR
	JUMPE	TE,CPOPJ##	;IF PDP-10 DEVELOPMENT, DON'T PRINT IT
	MOVEI	CH,'-'
	IDPB	CH,TC

GTVER8:	LDB	TD,[POINT 3,TE,35]
	HRLM	TD,(PP)
	LSH	TE,-3
	SKIPE	TE
	PUSHJ	PP,GTVER8

	HLRZ	TE,(PP)
	ADDI	TE,'0'
	IDPB	TE,TC
	POPJ	PP,
;GET IN "DEV:FILE.EXT[PROJ,PROG]/X"

GETFIL:	MOVEI	TA,1(DA)
	HRLI	TA,(DA)
	SETZM	(DA)
	BLT	TA,-1+DEVSIZ##(DA)

	TSWFZ	FCOMWD;		;DEVICE WAITING?
	JRST	GETFL6		;YES

GETFL1:	PUSHJ	PP,GETSIX	;NO--GET ONE
	CAIN	CH,":"		;":"?
	JRST	GETFL7		;YES

GETFL2:	CAIE	CH,"="		;"="?
	CAIN	CH,","		;","?
	JRST	GTFL4A		;YES

	CAIN	CH,"."		;"."?
	JRST	GETFL5		;YES

	CAIN	CH,"["		;"["?
	JRST	GETFL8		;YES

	CAIN	CH,$CR		;END OF COMMAND?
	JRST	GETFL4		;YES

	CAIN	CH,"/"		;SWITCH?
	JRST	GETFL9		;

	CAIN	CH,"-"
	JRST	GTFL8H

	CAIN	CH,"("
	JRST	GTFL13

	CAIN	CH,"@"
	JRST	GTFL12

	CAIN	CH,"!"
	JRST	GTFL14

	CAIE	CH," "		;SPACE?
	JRST	BADKAR		;NO--BAD CHARACTER

	PUSHJ	PP,COMKAR	;YES--GET NEXT CHARACTER

GTFL2A:	CAIN	CH," "		;ANOTHER SPACE?
	JRST	.-2		;YES--LOOP

	CAIG	CH,"Z"		;NO--LETTER?
	CAIGE	CH,"A"
	SKIPA			;NO
	JRST	GETFL3		;TREAT IT LIKE COMMA

	CAIG	CH,"9"		;NOT LETTER--DIGIT?
	CAIGE	CH,"0"
	JRST	GETFL2		;NO--TRY PUNCTUATION
GETFL3:	MOVEI	CH,","		;LETTER OR DIGIT--TREAT LIKE COMMA
	SWON	FCOMCH;		;SET "REGET CHARACTER"
	JRST	GTFL4A
;STASH FILE-NAME AND LEAVE

GETFL4:	SWON	FESRC;		;END OF COMMAND STRING

GTFL4A:	PUSHJ	PP,GTFL4B
	SKIPN	TA,DEVDEV(DA)	;ANY DEVICE?
	POPJ	PP,		;NO--RETURN

	DEVCHR	TA,		;YES--GET CHARACTERISTICS
	JUMPE	TA,NOTDEV	;IS IT A LEGAL DEVICE?
	POPJ	PP,

GTFL4B:	JUMPE	TA,CPOPJ
	SKIPE	DEVFIL(DA)
	JRST	BADSTR
	MOVEM	TA,DEVFIL(DA)
	POPJ	PP,

;DOT--STASH FILE-NAME, GET EXTENSION

GETFL5:	SKIPE	DEVEXT(DA)
	JRST	BADSTR
	PUSHJ	PP,GTFL4B
	PUSHJ	PP,GETSIX
	HLLZM	TA,DEVEXT(DA)
	AOS	DEVEXT(DA)	;[530] TURN ON .(DOT) SEEN FLAG 
	MOVEI	TA,0
	JRST	GETFL2

;GET PREVIOUS DEVICE

GETFL6:	SKIPA	TA,LASTDV	;GET PREVIOUS DEVICE

;COLON--STASH DEVICE NAME

GETFL7:	MOVEM	TA,LASTDV	;STASH AS LAST DEVICE

	SKIPE	DEVDEV(DA)	;IS THERE ONE ALREADY?
	JRST	GTFL7A
	MOVEM	TA,DEVDEV(DA)	;NO--STASH IN DEVICE ENTRY
	JRST	GETFL1

GTFL7A:	SWON	FCOMWD;		;YES--SET "REGET WORD"
	POPJ	PP,
;BRACKET--GET PROJ,PROG

GETFL8:	PUSHJ	PP,GTFL4B
	PUSHJ	PP,GETNUM	;GET PROJ
	  JRST	[CAIN	CH,"-"		;HYPHEN?
		JRST	[SETZB	TA,DEVPP(DA)	;YES, MEANS DEFAULT
			PUSHJ	PP,COMKAR	;GET NEXT
			JRST	GTFL8A]		;CHECK END
		CAIE	CH,","		;COMMA?
		JRST	BADPPN		;ERROR
		HLRZ	TA,MYPPN	;GET DEFAULT
		JRST	.+1]
	CAIE	CH,","		;COMMA SEPERATOR?
	JRST	BADPPN		;NO--ERROR

	MOVSM	TA,DEVPP##(DA)	;YES--STASH

	PUSHJ	PP,GETNUM	;GET PROG
	  JRST	[CAIE	CH,","		;COMMA?
		CAIN	CH,"]"		;OR END?
		SKIPA	TA,MYPPN	;GET DEFAULT
		JRST	BADPPN		;ERROR
		JRST	.+1]
	HRRM	TA,DEVPP(DA)	;STASH
IFE TOPS20,<
	CAIE	CH,","		;SFD'S TO FOLLOW?
	JRST	GTFL8A		;NO
	MOVEI	TA,DEVPTH##(DA)	;GET PATH POINTER
	EXCH	TA,DEVPP(DA)	;SWAP WITH PPN
	MOVEM	TA,DEVDIR##(DA)	;AND PUT IN PATH BLOCK
	PUSH	PP,DA
	HRLI	DA,-5		;FORM AOBJN POINTER
GTFL8B:	PUSHJ	PP,GETSIX	;YES, GET IT
	MOVEM	TA,DEVSFD##(DA)
	CAIN	CH,","		;MORE?
	AOBJN	DA,GTFL8B	;YES
	POP	PP,DA
>
GTFL8A:	CAIE	CH,"]"		;"]"?
	JRST	BADPPN		;NO--ERROR
	JRST	GETFL1


;HYPHEN -- IT SHOULD BE ALONE

GTFL8H:	JUMPN	TA,BADKAR
	SKIPN	DEVDEV(DA)
	SKIPE	DEVFIL(DA)
	JRST	BADKAR

	SKIPN	DEVPP(DA)
	SKIPE	DEVEXT(DA)
	JRST	BADKAR

	POPJ	PP,
;SWITCH	(/ TYPE)

GETFL9:	PUSHJ	PP,GTFL4B
	PUSHJ	PP,COMKAR
	PUSHJ	PP,SWICH

GTFL10:	MOVEI	TA,0
	SKIPE	DEVDEV(DA)
	JRST	GTFL11

	SKIPN	DEVFIL(DA)	;IS THERE ANY FILE?
	SKIPE	DEVEXT(DA)
	SKIPA
	JRST	GETFL1		;NO--LOOP

GTFL11:	PUSHJ	PP,COMKAR	;YES--GET NEXT CHARACTER
	JRST	GTFL2A
;"@" SEEN -- SET UP INDIRECT COMMAND FILE

GTFL12:	PUSHJ	PP,GTFL4B	;STASH FILE NAME
	SKIPN	DEVDEV(DA)	;ANY ENTRY?
	SKIPE	DEVFIL(DA)
	JRST	GTF12A		;YES
	SKIPN	DEVPP(DA)	;NOT YET--TRY SOME MORE
	SKIPE	DEVEXT(DA)
	JRST	GTF12A		;YES

	PUSHJ	PP,GETFIL	;NO--SCAN SOME MORE
	HLLZS	DEVEXT(DA)	;[530] CLEAR .(DOT) SEEN FLAG IF SET
	JRST	GTF12B

GTF12A:	PUSHJ	PP,COMKAR

GTF12B:	CAIE	CH,$CR
	JRST	BADSTR

	CALLI	$RESET

	SKIPN	I2,DEVDEV(DA)
	MOVSI	I2,'DSK'
	MOVEI	I1,.IOASC
	MOVEI	I3,COMBH
	OPEN	COM,I1
	  JRST	NOCOMD

	SKIPE	I1,DEVFIL(DA)
	JRST	GTF12D
	MOVEI	I2,3
	PJOB	I3,
	IDIVI	I3,^D10
	MOVEI	I0,'0'(I4)
	LSHC	I0,-6
	SOJG	I2,.-3
	HRRI	I1,'COB'

GTF12D:	HLLZ	I2,DEVEXT(DA)

GTF12E:	MOVEI	I3,0
	MOVE	I4,DEVPP(DA)
	JUMPE	I2,GTF12H
GTF12F:	LOOKUP	COM,I1
	  JRST	NOCOMF

GTF12G:	HLRZM	I2,COMEXT
	INBUF	COM,1
	MOVE	TE,.JBFF
	MOVEM	TE,SAVJFF
	MOVSI	SW,FDSKC/1000000
	PUSHJ	PP,GETFIL	;[530]
	HLLZS	DEVEXT(DA)	;[530] CLEAR .(DOT) SEEN FLAG IF SET
	POPJ	PP,		;[530]

GTF12H:	MOVSI	I2,'CCL'
	LOOKUP	COM,I1
	  TDZA	I2,I2
	JRST	GTF12G
	MOVE	I4,DEVPP(DA)
	JRST	GTF12F
;SWITCH [( TYPE]

GTFL13:	PUSHJ	PP,GTFL4B
	PUSHJ	PP,COMKAR

GTF13A:	PUSHJ	PP,SWICH
	PUSHJ	PP,COMKAR
	CAIE	CH,")"
	JRST	GTF13A
	JRST	GTFL10


;"!" SEEN -- CALL CUSP

GTFL14:	SKIPN	TE,DEVDEV(DA)	;GET USER DEVICE
	MOVSI	TE,'SYS'	;DEFAULT TO SYS
	SKIPN	TD,DEVFIL(DA)	;FILE
	MOVE	TD,TA		;IT HAS'NT BEEN STORED YET
	HLLZ	TC,DEVEXT(DA)	;EXTENSION
	SETZB	TB,PP		;CLEAR PROT/DATE AND CORE ARG
	MOVE	TA,DEVPP(DA)	;PPN
	MOVE	CH,[XWD 1,TE]
	RUN	CH,
	  HALT	.+1

	TYPE	[ASCIZ /?CBLRUR RUN UUO returned to COBOL: Monitor error
/]
	CALLI	$EXIT

;DETERMINE TYPE OF SWITCH

SWICH:	CAIL	CH,"A"		;RANGE CHECK SWITCH
	CAILE	CH,"Z"
	JRST	BADCSW		;NOT IN RANGE
	XCT	SWTAB-"A"(CH)	;SET SWITCH
	POPJ	PP,
SWTAB:
	SWON	FOBJEC;		;A - TURN ON "/A"
IFN ANS74,<
	SETOM	DEBSW##		;B - GENERATE DEBUG CODE
>
IFN ANS68,<
	JRST	BADCSW
>
	SETOM	CREFSW		;C - SET '/C'
	JRST	SWICHD		;D - SET /D:nnnnnn 
	SWON	FFATAL;		;E - TURN ON "/E"
IFN DEBUG,<
	JRST	SWICHF		;F -
>
IFE DEBUG,<
	JRST	BADCSW
>
	JRST	BADCSW		;G -
	SWON	FHELP		;H - TURN ON /H
	JRST	SWICHI		;I - DO NOT GENERATE START ADDRESS
	JRST	SWICHJ		;J - GENERATE START ADDRESS NO MATTER WHAT
IFN DEBUG,<
	JRST	SWICHK		;K -
>
IFE DEBUG,<
	JRST	BADCSW
>
	JRST	SWICHL		;L -
	SWON	FMAP;		;M - TURN ON "/M"
	SWOFF	FTERA		;N - TURN OFF 'WE'R TYPING ERRORS'
	SETOM	OPTSW##		;O - SET /O - OPTIMIZATION REQUIRED
	SETOM	PRODSW##	;P - SET '/P' - PRODUCTION MODE REQUIRED
	JRST	SWICHQ		;Q - SET '/Q' - QUICK MODE (NO ERROR CHECKING + /P + /O)

	JRST	SWICHR		;R - TURN ON "/R"
	SWON	FSEQ;		;S - TURN ON "/S"
IFN DEBUG,<
	JRST	SWICHT		;T - TRACE
>
IFE DEBUG,<
	JRST	BADCSW
>
	JRST	SWICHU		;U - TURN OFF "/R"
	JRST	BADCSW		;V -
	JRST	SWICHW		;W -
	JRST	SWICHX		;X - DEFAULT THINGS TO EBCDIC INSTEAD OF SIXBIT.
IFN ANS68,<
	JRST	BADCSW		;Y -
>
IFN ANS74,<
	JRST	SWICHY		;Y - SET FIPS FLAGGER LEVEL
>
IFN TOPS20,<
	JRST	BADCSW		;Z -
>
IFE TOPS20,<
	JRST	SWICHZ		;Z -
>
SWICHI:	SKIPE	SLASHJ		;IF WE HAVE ALREADY SEEN /J
	JRST	BADIJ		;GIVE ERROR MESSAGE
	SETOM	SUBPRG		;DO NOT GENERATE START ADDRESS
	POPJ	PP,

SWICHJ:	SKIPE	SUBPRG		;IF WE HAVE ALREADY SEEN /I
	JRST	BADIJ		;GIVE ERROR MESSAGE
	SETOM	SLASHJ		;GENERATE START ADDRESS NO MATTER WHAT
	POPJ	PP,

BADIJ:	MOVEI	TB,[ASCIZ \?Switches /I and /J are mutually exclusive.\]
	JRST	BADCOM

SWICHR:	SKIPGE	SEENRU##	;IF WE HAVE ALREADY SEEN /U
	JRST	BADRU		;GIVE ERROR MESSAGE
IFE TOPS20,<
	SWON	FREENT		;R - TURN ON "/R"
>
IFN TOPS20,<
	SETOM	RENSW##		;R - SET FLAG FOR COBOLG, LEAVE FREENT ON
>
	AOS	SEENRU		;SET FLAG +1
	POPJ	PP,

SWICHU:	SKIPLE	SEENRU		;IF WE HAVE ALREADY SEEN /R
	JRST	BADRU		;GIVE ERROR MESSAGE
	SWOFF	FREENT		;U - TURN OFF "/R"
	SETOM	SEENRU		;SET FLAG -1
	POPJ	PP,


BADRU:	MOVEI	TB,[ASCIZ \?Switches /R and /U are mutually exclusive.\]
	JRST	BADCOM

SWICHL:	MOVEI	TA,FL.LIB	;SET "L" FLAG IN TABLE
	JRST	SWZWL

SWICHQ:	SETOM	OPTSW		;/O
	SETOM	PRODSW		;/P
	SETOM	QUIKSW##	;/Q
	POPJ	PP,

IFE TOPS20,<
SWICHZ:	MOVEI	TA,FL.ZRO	;SET "Z" FLAG IN TABLE
	JRST	SWZWL
>

SWICHW:	MOVEI	TA,FL.REW	;SET "W" FLAG IN TABLE

SWZWL:	IORM	TA,DEVSW(DA)
	POPJ	PP,

SWICHX:
IFN EBCMP.,<
	HRROI	TA,%US.EB	;DISPLAY-9
	MOVEM	TA,DEFDSP##	;SET DEFAULT MODE
	POPJ	PP,
>
IFE EBCMP.,<
	MOVEI	TB,[ASCIZ -?/X is not allowed, for an EBCDIC/COMP-3 compiler
reassemble the compiler and OTS with EBCMP.==1-]
	JRST	BADCOM
>

IFE MPWCEX,<
SWICHD:	MOVEI	TB,	[ASCIZ -?/D is not allowed, for multiple PERFORMs with a common exit
reassemble the compiler and OTS with MPWCEX==1-]
	JRST		BADCOM
>
IFN MPWCEX,<
SWICHD:	PUSHJ	PP,	COMKAR		;GET THE NEXT CHAR.
	CAIE	CH,	":"		;IF IT'S NOT ":"
	JRST		SWCHD3		; IT'S AN ERROR.
	MOVEI	TA,	6		;SET THE MAXIMUM NUMBER OF
	MOVEM	TA,	OJPPSZ+1	; DIGITS ALLOWED.
	PUSHJ	PP,	COMKAR		;GET THE FIRST ONE.
	CAIG	CH,	"7"		;IS IT OCTAL?
	CAIGE	CH,	"0"
	JRST		SWCHD2		;NO, ERROR.

SWCHD1:	MOVE	TA,	OJPPSZ##	;GET THE OLD SIZE.
	LSH	TA,	3		;MULTIPLY IT BY 8.
	ADDI	TA,	-"0"(CH)	;ADD IN THIS DIGIT.
	MOVEM	TA,	OJPPSZ		;SAVE IT.
	SOSG		OJPPSZ+1	;CAN THERE BE MORE?
	POPJ	PP,			;NO, RETURN.
	PUSHJ	PP,	COMKAR		;GET THE NEXT CHAR.
	CAIG	CH,	"7"		;OCTAL DIGIT?
	CAIGE	CH,	"0"
	JRST		SWCHD4		;NO, GO SEE WHAT IT IS.
	JRST		SWCHD1		;GO ADD IT IN.

;COME HERE IF THE FIRST CHAR IN THE VALUE FIELD IS NOT AN OCTAL DIGIT.

SWCHD2:	PUSHJ	PP,	SWCHD5		;GO SEE WHAT IT IS.
	SKIPA	TB,	[Z	[ASCIZ	-?Missing value in /D switch.-]]
SWCD2A:	MOVEI	TB,	[ASCIZ -?Bad value in /D switch.-]
	JRST		BADCOM

SWCHD3:	MOVEI	TB,	[ASCIZ -?Missing ":" in /D:nnnnnn switch.-]
	JRST		BADCOM

;COME HERE IF WE FIND A NON OCTAL DIGIT.

SWCHD4:	PUSHJ	PP,	SWCHD5		;GO SEE WHAT IT IS.
SWCHRC:	  SWONS		FCOMCH		;REMEMBER TO REGET THE CHAR.
	JRST		SWCD2A		;BAD VALUE.
	POPJ	PP,			;RETURN.

SWCHD5:	AOS		(PP)
	CAIE	CH,	","
	CAIN	CH,	"="
	SOS		(PP)
	CAIE	CH,	$CR
	CAIN	CH,	"/"
	SOS		(PP)
	POPJ	PP,
>
IFN ANS74,<
SWICHY:	SETZM	FLGSW##		;START OFF CLEAN
	PUSHJ	PP,COMKAR	;GET NEXT CHAR.
	CAIE	CH,":"		;MUST BE COLON
	JRST	SWCHYE		;IF NOT ITS AN ERROR
	PUSHJ	PP,COMKAR	;GET THE FIRST CHAR.
	CAIN	CH,"-"		;MINUS IS SPECIAL
	JRST	[PUSHJ	PP,SWCHYA	;YES, GET THE SWITCH MASK
		MOVE	CH,FLGSW	;GET THE MASK
		TRNE	CH,%LV.L	;NOW TURN ON ALL INCLUDED FIPS FLAGS
		TROA	CH,%LV.LI	;LOW IMPLIES LOW-INTERMEDIATE ETC
		TRNE	CH,%LV.LI
		TROA	CH,%LV.HI
		TRNE	CH,%LV.HI
		TRO	CH,%LV.H
		SETCAM	CH,FLGSW	;COMPLIMENT IT
		POPJ	PP,]
	PUSHJ	PP,SWCHYB	;NO, GET THE MASK
	MOVE	CH,FLGSW	;GET THE MASK
	TRNE	CH,%LV.H	;NOW TURN ON ALL INCLUDED FIPS FLAGS
	TROA	CH,%LV.HI	;HIGH IMPLIES HIGH-INTERMEDIATE ETC
	TRNE	CH,%LV.HI
	TRO	CH,%LV.LI
	TRO	CH,%LV.L	;ALWAYS TURN ON LOW-LEVEL
	MOVEM	CH,FLGSW	;PUT FLAGS BACK
	POPJ	PP,

SWCHYA:	PUSHJ	PP,COMKAR	;GET THE CHAR.
SWCHYB:	CAIG	CH,"9"		;IS IT A DIGIT?
	CAIGE	CH,"0"		;...
	JRST	SWCHYC		;NO
	XCT	[JRST	SWCHYE		;0 - ILLEGAL
		MOVEI	CH,%LV.L	;1 - LOW
		MOVEI	CH,%LV.LI	;2 - LOW-INTERMEDIATE
		MOVEI	CH,%LV.HI	;3 - HIGH-INTERMEDIATE
		MOVEI	CH,%LV.H	;4 - HIGH
		JRST	SWCHYE		;5 - ERROR
		MOVEI	CH,%LV.68	;6 - COBOL-68
		JRST	SWCHYE		;7 - ERROR
		MOVEI	CH,%LV.8	;8 - COBOL-8x
		JRST	SWCHYE		;9 - ERROR
		]-"0"(CH)
SWCHYD:	IORM	CH,FLGSW	;STORE NEW MASK BITS
	JRST	SWCHYA		;LOOP

SWCHYC:	CAIG	CH,"Z"		;IS IT A LETTER?
	CAIGE	CH,"A"		;...
	JRST	SWCHRC		;NO
	CAIN	CH,"D"		;DBMS?
	MOVSI	CH,%LV.DB	;YES
	CAIN	CH,"I"		;IBM  COMPATIBILITY?
	MOVSI	CH,%LV.IB	;YES
	CAIN	CH,"N"		;NON-STANDARD EXTENSION?
	MOVSI	CH,%LV.NS	;YES
	CAIN	CH,"R"		;REPORT WRITER?
	MOVSI	CH,%LV.RP	;YES
	CAIN	CH,"V"		;VAX-COBOL?
	MOVSI	CH,%LV.VX	;YES
	TRNE	CH,-1		;DID WE FIND SOMETHING?
	JRST	SWCHYE		;NO
	MOVS	CH,CH
	JRST	SWCHYD		;YES

SWCHYE:	MOVEI	TB,[ASCIZ /?Bad Y switch/]
	JRST	BADCOM
>
IFN DEBUG,<
;TO HANDLE "T" SWITCHES WHEN DEBUGGING

SWICHT:	PUSHJ	PP,COMKAR
	CAIN	CH,":"		;IF ITS A COLON
	PUSHJ	PP,COMKAR	;EAT IT UP
	MOVEI	TA,0
	CAIN	CH,"A"		;TEST FOR ALL
	MOVEI	TA,TRACEI!TRACEE!TRACED!TRACEP
	CAIN	CH,"I"
	HRRZI	TA,TRACEI##
	CAIN	CH,"E"
	HRRZI	TA,TRACEE##
	CAIN	CH,"D"
	HRRZI	TA,TRACED##
	CAIN	CH,"P"
	HRRZI	TA,TRACEP##

	IORM	TA,CORESW##
	JUMPE	TA,SWCHTE	;ERROR
	SETOM	TRACFL##	;INIT ALLOW SYNTAX SCAN TRACING
	PUSHJ	PP,COMKAR	;GET NEXT CHARACTER
	CAIE	CH,":"		;RANGE TO FOLLOW?
	JRST	SWCHRC		;NO
	PUSHJ	PP,GETDEC	;GET FIRST LINE NUMBER
	MOVEM	TA,TRCLN1##	;STORE FIRST
	PUSHJ	PP,COMKAR	;GET HYPHEN
	CAIE	CH,"-"
	JRST	SWCHTE		;NO!
	PUSHJ	PP,GETDEC	;GET SECOND LINE NUMBER
	MOVEM	TA,TRCLN2##	;STORE IT
	POPJ	PP,		;RETURN

SWCHTE:	MOVEI	TB,[ASCIZ /?Bad T switch/]
	JRST	BADCOM

;PICK UP AN DECIMAL NUMBER

GETDEC:	MOVEI	TA,0		;CLEAR THE SUM
	PUSHJ	PP,COMKAR	;GET FIRST CHARACTER
	CAIN	CH," "		;SPACE?
	JRST	.-2		;YES--IGNORE IT

GETDC1:	CAIG	CH,"9"		;DECIMAL DIGIT?
	CAIGE	CH,"0"
	JRST	SWCHRC		;NO
	IMULI	TA,^D10		;YES--ADD TO SUM
	ADDI	TA,-"0"(CH)
	PUSHJ	PP,COMKAR	;GET NEXT DIGIT
	JRST	GETDC1		;LOOP
;TO HANDLE "K" SWITCH WHEN DEBUGGING

SWICHK:	PUSHJ	PP,COMKAR
	CAIN	CH,":"		;IF ITS A COLON
	PUSHJ	PP,COMKAR	;EAT IT UP
	CAIG	CH,"G"
	CAIGE	CH,"A"
	JRST	SWCHKA

	HRLZI	TA,%KILLA##
SWCHKB:	LSH	TA,-"A"(CH)
	IORM	TA,CORESW
	POPJ	PP,

SWCHKA:	MOVEI	TB,[ASCIZ /?Bad K switch/]
	JRST	BADCOM

;TO HANDLE "F" SWITCH WHEN DEBUGGING

SWICHF:	PUSHJ	PP,COMKAR
	CAIN	CH,":"		;IF ITS A COLON
	PUSHJ	PP,COMKAR	;EAT IT UP
	CAIG	CH,"G"
	CAIGE	CH,"A"
	JRST	SWCHFA

	HRLZI	TA,%KILFA##
	JRST	SWCHKB

SWCHFA:	MOVEI	TB,[ASCIZ /?Bad F switch/]
	JRST	BADCOM
>
;PICK UP A SIXBIT WORD FROM COMMAND STRING

GETSIX:	MOVEI	TA,0
	MOVE	TB,[POINT 6,TA]

GETSX1:	PUSHJ	PP,COMKAR	;NO--GET NEXT
GETSX2:	CAIG	CH,"Z"		;LETTER?
	CAIGE	CH,"A"
	JRST	GETSX4		;NO
GETSX3:	TLNN	TB,770000
	JRST	BADNAM

	SUBI	CH,40		;YES--STASH IT
	IDPB	CH,TB
	JRST	GETSX1

GETSX4:	CAIG	CH,"9"		;NOT LETTER--DIGIT?
	CAIGE	CH,"0"
	POPJ	PP,		;NO--RETURN
	JRST	GETSX3		;YES--STASH IT


;PICK UP AN OCTAL NUMBER

GETNUM:	MOVEI	TA,0		;CLEAR THE SUM
	PUSHJ	PP,COMKAR	;GET FIRST CHARACTER
	CAIN	CH," "		;SPACE?
	JRST	.-2		;YES--IGNORE IT
	CAIE	CH,","		;COMMA?
	CAIN	CH,"-"		;OR HYPHEN?
	POPJ	PP,		;YES, THEY ARE SPECIAL
	CAIN	CH,"]"		;SO IS ]
	POPJ	PP,		;IF FIRST

GETNM1:	CAIG	CH,"7"		;OCTAL DIGIT?
	CAIGE	CH,"0"
	JRST	GETNM2		;NO

	LSH	TA,3		;YES--ADD TO SUM
	IORI	TA,-"0"(CH)

	TLNE	TA,-1		;SUM > 777777?
	JRST	BADPPN		;YES--ERROR

	PUSHJ	PP,COMKAR	;NO--GET NEXT DIGIT
	JRST	GETNM1		;LOOP

GETNM2:	JUMPE	TA,BADPPN	;SUM = 0?
	AOS	(PP)		;SKIP RETURN IF OK
	POPJ	PP,		;NO--RETURN
;GET A CHARACTER FROM COMMAND STRING

COMKAR:	TSWFZ	FCOMCH;		;REGET SAME CHARACTER?
	JRST	COMKR6		;YES

COMKR0:	SOSG	COMBH+2		;GET CHARACTER FROM DISK OR TMPCOR
	JRST	COMKR2
COMKR1:	ILDB	CH,COMBH+1

	JUMPE	CH,COMKAR	;IGNORE NULLS

	CAIN	CH,$CR		;IGNORE CARRIAGE-RETURNS
	JRST	COMKAR

COMKRA:	CAIG	CH,"z"		;[255] BETWEEN LC Z AND LC A?
	CAIGE	CH,"a"
	CAIA			;NOT LC
	SUBI	CH,40		;YES, CONVERT TO UC

	CAIN	CH,$CZ		;END-FILE?
	JRST	COMKR9		;YES

	CAIE	CH,$LF
	CAIN	CH,$FF
	JRST	COMK99

	CAIN	CH,$ALT		;TREAT ALTMODE AS EOL
	JRST	COMK99

	POPJ	PP,
;GET NEXT BUFFER FULL OF COMMANDS

COMKR2:	SKIPN	COMBH		;FROM TMPCOR?
	JRST	COMK2B		;YES--NO MORE

	IN	COM,		;GET NEXT BUFFER
	  JRST	COMKR1		;NO ERRORS--RETURN

	GETSTS	COM,CH		;ERROR--GET DEVICE STATUS
	TXNE	CH,IO.ERR	;ANY ERROR FLAGS UP?
	JRST	COMKR8		;YES--WE LOSE

	CLOSE	COM,		;CLOSE COMMAND FILE

	MOVE	CH,COMEXT	;IS EXTENSION
	CAIE	CH,'TMP'	;  "TMP"?
	JRST	COMK2A		;NO--DON'T DELETE

	MOVEI	CH,0		;DELETE
	RENAME	COM,CH		;  COMMAND
	  JFCL			;  FILE
COMK2A:	RELEASE	COM,		;RELEASE IT
	JRST	COMKR3

;GET RID OF TMPCOR AREA

COMK2B:	MOVSI	CH,'COB'
	MOVEM	CH,COMBH+1
	MOVS	CH,.JBSA
	SUBI	CH,1
	HRLI	CH,-200
	MOVEM	CH,COMBH+2

	MOVE	CH,[XWD 2,COMBH+1]
	TMPCOR	CH,
	  JFCL

;END OF COMMAND FILE

COMKR3:	SWON	FECOM		;TURN ON "END OF COMMAND"
COMKR4:	MOVEI	CH,$CR		;RETURN A CARRIAGE-RETURN
	POPJ	PP,
;REGET SAME CHARACTER

COMKR6:	LDB	CH,COMBH+1	;FROM DISK OR TMPCOR
	JRST	COMKRA		; GO CHECK FOR LC [255]


;READ ERROR--WE LOSE

COMKR8:	TYPE	[ASCIZ/?CBLTEC Transmission error on command file/]
	CALLI	$EXIT


;AN EOF WAS SEEN

COMKR9:	PUSHJ	PP,COMK99
	JRST	COMKR3


;TYPE OUT <C.R.>, <L.F.> IF INPUT FROM TTY

COMK99:	TSWT	FDSKC;
	TYPE	CRLF
	JRST	COMKR4

CRLF:	ASCIZ/
/
;ERROR ROUTINES

IFE ONESEG,<
;"DSK" IS NOT A DISK

NOTDSK:	TYPE	[ASCIZ/?CBLDND "DSK" is not a disk
/]
	CALLI	$EXIT
>

;TOO MANY OUTPUT FILES

TUMANY:	MOVEI	TB,[ASCIZ /?CBLICC Improper COBOL command/]
	JRST	BADCOM

;BINARY DEVICE CANNOT DO BINARY

BADBIN:	MOVEI	TB,[ASCIZ/: cannot write in binary/]
	JRST	TYPEIT

;OUTPUT DEVICE CANNOT DO OUTPUT

BADOUT:	MOVEI	TB,[ASCIZ/: cannot do output/]
	JRST	TYPEIT

;SOURCE FILE IS NOT AN INPUT DEVICE

NOTIN:	MOVEI	TB,[ASCIZ/: cannot do input/]

TYPEIT:	MOVEI	CH,"?"
	OUTCHR	CH
	MOVE	TA,DEVDEV(DA)
	PUSHJ	PP,SIXOUT##
	JRST	BADCOM
;ERROR ROUTINES (CONT'D)

;SOMETHING STRANGE ABOUT STRING
BADSTR:	MOVEI	TB,[ASCIZ/?CBLICC improper COBOL command/]
	JRST	BADCOM

;COMMAND DEVICE UNAVAILABLE
NOCOMD:	MOVEI	TB,[ASCIZ/?CBLCDA Indirect command device unavailable/]
	JRST	BADCOM

;COMMAND FILE CANNOT BE FOUND
NOCOMF:	MOVEI	TB,[ASCIZ/?CBLCFC Cannot find command file/]
	JRST	BADCOM

;NAME TOO LONG

BADNAM:	MOVEI	TB,[ASCIZ/?CBLNM6 Name of more than six characters/]
	JRST	BADCOM

;BAD PROJECT-PROGRAMMER NUMBER
BADPPN:	MOVEI	TB,[ASCIZ/?CBLIPP Improper project-programmer number/]
	JRST	BADCOM

;IMPROPER CHARACTER IN STRING
BADKAR:	MOVEI	TB,[ASCIZ/?CBLICC Improper character in command/]
	JRST	BADCOM

;BAD SWITCH
BADCSW:	MOVEI	TB,"?"
	OUTCHR	TB
	OUTCHR	CH
	MOVEI	TB,[ASCIZ/ is not a legal switch/]
	JRST	BADCOM

;ERRORS WHILE INITIALIZING THE DEVICE

;NOT A LEGAL DEVICE
NOTDEV:	MOVEI	TB,[ASCIZ/: is not a legal device/]

	MOVEI	CH,"?"
	OUTCHR	CH
	MOVE	TA,DEVDEV(DA)
	PUSHJ	PP,SIXOUT
	JRST	BADCOM
;ERROR ROUTINES  (CONT'D).

;NO FILE FOR DIRECTORY DEVICE
NOFILE:	TYPE	[ASCIZ/?CBLNFN No file name for /]
	JRST	BADC0

;TOO MANY SOURCE FILES
NOROOM:	MOVEI	TB,[ASCIZ/?CBLTMS Too many source files/]
	JRST	BADCOM

;NO SOURCE FILES AT ALL
NOSRC:	TSWFZ	FHELP		;IS /H ON?
	JRST	HELP		;YES, OK
	MOVEI	TB,[ASCIZ/?CBLNSF No source files specified/]

;TYPE OUT MESSAGE AND RESTART COMPILATION

BADCOM:: TYPE	<(TB)>
BADC0:	TYPE	CRLF

BADC1:	TSWF	FESRC!FECOM	;END OF COMMAND STRING?
	JRST	BADC2		;YES
	PUSHJ	PP,COMKAR	;NO--GET CHARACTER
	CAIE	CH,$CR		;CARRIAGE-RETURN?
	JRST	BADC1		;NO--LOOP

BADC2:	TSWT	FDSKC		;COMMANDS FROM TTY?
	JRST	START1		; [344] YES
	AND	SW,[EXP FDSKC]	;NO--CLEAR ALL SWITCHES EXCEPT FDSKC
	JRST	COBLAS
;ERROR ROUTINES  (CONT'D).
;LIBRARY DEVICE IMPROPER
BADLIB:	MOVEI	TB,[ASCIZ/?CBLMBD Library device must be DSK/]
	JRST	BADCOM


;DOUBLE NAMTAB ENTRY

DBLNAM:	TYPE	[ASCIZ/?COBOLA: NAMTAB entry duplicated
/]
	JRST	KILL##

;CANNOT ENTER A FILE

NOENTR:	TYPE	[ASCIZ/?CBLCEF Cannot ENTER /]
	JRST	ERATYP##


;NOT ENOUGH CORE TO CONTINUE COMPILATION
NOTNUF:	TYPE	[ASCIZ/?CBLNEC Not enough core to continue compilation
/]
	JRST	RESTRT##
;THIS ROUTINE IS MOVED TO THE LOW-SEGMENT
;NOTE, IMPURE MUST BE CHANGED TO MATCH ANY CHANGES TO THESE DEFINITIONS

IFE ONESEG,<

%WEDID:	JRST	@WEDIED+1	;GO TO "KILL" ROUTINE
	Z

%CANT:	TYPE	<WEDIED+%CANT+2-%WEDID>
	CALLI	$EXIT
	ASCIZ	/?CBLCNR Cannot restart/

%GETLD:	MOVEM	17,SAVEAC##+17	;SAVE
	MOVEI	17,SAVEAC	;  ALL
	BLT	17,SAVEAC+16	;  AC'S
	MOVEI	1,WEDIED+%CANT-%WEDID	;SET UP "REENTR" TO GO TO ERROR
	HRRM	1,.JBREN##
	HRRM	1,.JBSA
	MOVSI	1,1		;THROW AWAY
	CORE	1,		;  THE HI-SEGMENT
	  JRST	4,WEDIED+.-%WEDID	;COULDN'T--MONITOR PROBLEM
	MOVEI	1,GETFNM	;CALL
	GETSEG	1,		;  GETSEG
	  JRST	4,WEDIED+.-%WEDID	;ERROR
	MOVSI	17,SAVEAC	;RESTORE AC'S
	BLT	17,16
IFN DEBUG,<SETZM	.JBSYM##>

%DDTST:	JRST	COBEXO##	;GO TO HI-SEGMENT
>;END ONESEG CONDITIONAL
;TABLE OF SCRATCH DEVICES
;LH IS NAME OF A FILE, IN SIXBIT
;RH IS THE ADDRESS OF AN ENTRY TO CONTAIN DEVICE NAME, ETC.

DEVTAB:	XWD	'NAM',NAMDEV##
	XWD	'ERA',ERADEV##
	XWD	'GEN',GENDEV##
	XWD	'CPY',CPYDEV##
	XWD	'AS1',AS1DEV##
	XWD	'AS2',AS2DEV##
	XWD	'AS3',AS3DEV##
	XWD	'LIT',LITDEV##
	XWD	'CRF',CRFDEV##
DEVXWD:	XWD	DEVTAB-.,0

;DEFAULT FOR LIBRARY FILE

LIBSET:	SIXBIT "DSK"
	SIXBIT "LIBARY"
	SIXBIT "LIB"
	Z

;TABLE OF MONTHS

MOTABL:	ASCII "-Jan-"
	ASCII "-Feb-"
	ASCII "-Mar-"
	ASCII "-Apr-"
	ASCII "-May-"
	ASCII "-Jun-"
	ASCII "-Jul-"
	ASCII "-Aug-"
	ASCII "-Sep-"
	ASCII "-Oct-"
	ASCII "-Nov-"
	ASCII "-Dec-"

;TABLE OF WORK TABLES

	DEFINE TABSET (A,B,C,E,F,G,H),<
	IFDIF <NAM>,<A>,<IFN ^D'B,<
	XWD -^D'B-1,A'LOC
	EXTERNAL A'LOC
	>>>


	XALL

WRKTAB:	TABLES
WRKXWD:	XWD	WRKTAB-.,WRKTAB
SUBTTL TABLE OF RESERVED WORDS

;VERBS

;001 ACCEPT				020 MOVE
;002 ADD				021 MULTIPLY
;003 ALTER				022 NOTE
;004 CLOSE				023 OPEN
;005 COMPUTE				024 PERFORM
;006 COPY 				025 READ
;007 DISPLAY				026 RELEASE
;010 DIVIDE				027 RETURN
;011 ELSE 				030 SEARCH
;012					031 SEEK
;013 ENTER				032 SET,SETS
;014 EXAMINE				033 SORT
;015 EXIT 				034 STOP
;016 GO					035 SUBTRACT
;017 IF					036 USE
;					037 WRITE

;040 INITIATE
;041 GENERATE
;042 TERMINATE
;043 DELETE
;044 REWRITE
;045 STORE
;046 INSERT
;047 MODIFY
;050 GET
;051 REMOVE
;052 FIND
;053 RECEIVE
;054 SEND
;055 DISABLE
;056 ENABLE

;060 STRING
;061 UNSTRING

;062 RETAIN
;063 FREE

;064 METER--JSYS
;WORDS USED ONLY BY ID & ED SCANS

;100 [%316]ACCESS TO 267		126 PROGRAM-ID
;101 ACTUAL				127 RANDOM
;102 ALTERNATE				130 REMARKS
;103 <EMPTY>				131 RERUN
;104 ASSIGN				132 RESERVE
;105 AUTHOR				133 SAME
;106 CONFIGURATION			134 SECURITY
;107 <EMPTY>				135 SEGMENT-LIMIT
;110 DATE-COMPILED			136 SELECT
;111 ENVIRONMENT			137 SEQUENTIAL
;					140 SIGN
;112 FILE-CONTROL 			141 SOURCE-COMPUTER
;113 FILE-LIMIT,FILE-LIMITS		142 SPECIAL-NAMES
;114 I-O-CONTROL			143 FILE-STATUS 
;115 INSTALLATION 			144 TAPE
;116 MEMORY				145 WORDS
;117 MODULES				146 <EMPTY>
;120 MULTIPLE				147 COMMA
;121 OBJECT-COMPUTER			150 DECIMAL-POINT
;122					151 MODE
;123 OPTIONAL				152 RELATIVE
;124 POSITION				153 DEFERRED
;125 PROCESSING				154 CHANNEL
;					155 STANDARD-ASCII
;					156 PDP-6
;					157 PDP-10, DECSYSTEM-10
;					160 RECORDING
;					161 DENSITY
;					162 PARITY
;					163 ASCII
;					164 SIXBIT
;					165 BINARY
;					166 DECSYSTEM-20 
;					167 ODD
;					170 EVEN
;					171 BYTE
;					172 METER--ING
;WORDS WHICH CAN GO AWAY AFTER DD SCAN

;201 ALPHANUMERIC 			222 LIMIT[S] 
;202 BLANK				223 LEFT
;203 BLOCK				224 OCCURS
;204 COMP,COMPUTATIONAL			225 OMITTED
;205 COMP-1,COMPUTATIONAL-1		226 PIC,PICTURE
;206 CONTAINS				227 RD 
;207 COMP-3,COMPUTATIONAL-3		230 REDEFINES
;210 DATE-WRITTEN 			231 RENAMES
;211 DATABASE-KEY
;212 DISPLAY-6				232 RIGHT
;213 DISPLAY-7				233 SD
;214 FD					234 COMP-2,COMPUTATIONAL-2 
;215 DISPLAY-9				235 SYNC,SYNCHRONIZED
;216 IDENTIFICATION,ID			236 USAGE
;217 INDEX				237 VALUE,VALUES
;220 INDEXED
;221 JUST,JUSTIFIED

;240 WORKING-STORAGE			260 CONTROL[S]
;241 CHARACTERS [74] TO 642		261 COMPILE
;242 USER-AREA				262 FINAL
;243 LINKAGE				263 FOOTING
;244 SUB-SCHEMA				264 GROUP
;245 SCHEMA				265 HEADING
;246 INVOKE				266 INDICATE
;247 TYPE				267 ACCESS 

;250 RH					270 NUMBER
;251 PH					271 <EMPTY>
;252 CH					272 PLUS
;253 DE,DETAIL				273 REPORT[S]
;254 CF					274 RESET
;255 PF					275 SOURCE
;256 RF					276 SUM
;257 COLUMN				277 CODE
;WORDS USED BY ALL PHASES

;300 ADVANCING				341 LEADING
;301 AFTER				342 LESS,"<"
;302 CONSOLE
;303 ALPHABETIC				343 LINE,LINES
;304 AND				344 LOCK
;305 ARE (SEE IS) 			345 NEGATIVE
;305 IS (SEE ARE) 			346 NEXT
;306 ASCENDING				347 NO
;307 AT					350 NOT
;310 BEFORE				351 NUMERIC
;311 BEGINNING				352 ON
;312 BY					353 OR
;313 COBOL				354 OUTPUT
;314 CORR,CORRESPONDING			355 POSITIVE
;315 DECLARATIVES 			356 PROCEED
;316 DEPENDING				357 RECORD,RECORDS
;317 DESCENDING				360 REEL (SEE UNIT)
;320 DOWN 				360 UNIT (SEE REEL)
;321 ENDING				361 REPLACING
;322 EQUAL,EQUALS,"="			362 REVERSED
;323 ERROR				363 REWIND
;324 EVERY				364 ROUNDED
;325 FILE 				365 RUN
;326 FIRST				366 SECTION
;327 FOR				367 SENTENCE
;330 FROM 				370 TALLYING
;331 GIVING				371 THAN
;332 GREATER,">"			372 THRU,THROUGH
;333 INPUT-OUTPUT,I-O			373 TIMES
;334 IN (SEE OF)			374 TO
;334 OF (SEE IN)			375 UNTIL
;335 INPUT				376 UP
;336 INTO 				377 UPON
;337 INVALID
;340 KEY,KEYS


;400 USING				405 DIVISION
;401 VARYING				406 END
;402 WHEN				407 STANDARD
;403 WITH				410 LABEL
;404 SIZE				411 PROCEDURE, PROCEDURES
;					412 OFF
;					413 REMAINDER
;					414 MACRO
;					415 FORTRAN-IV
;					416 SWITCH
;					417 REPORTING
;					420 TRACE
;					421 FILLER
;422 CALL				;502 SEGMENT
;423 FORTRAN				;503 ESI
;424 CANCEL				;504 EMI
;425 ENTRY				;505 EGI
;426 GOBACK				;506 EPI
;427 PROGRAM				;507 TERMINAL
;430 OVERFLOW				;510 PAGE

;431 ANY				;511 DATA
;432 EMPTY				;512 DELIMITED
;433 MEMBER,MEMBERS			;513 DELIMITER
;434 OWNER				;514 VERB
;435 AREA				;515 OTHERS
;436 CURRENCY				;516 ALLOWING
;437 SUPPRESS				;517 NONE
;440 UPDATE				;520 UNAVAILABLE
;441 ONLY				;521 READ-REWRITE
;442 SELECTIVE				;522 READ-WRITE
;443 RUN-UNIT				;523 FREED
;444 STATUS				;524 RETAINED
;445 CURRENT				;525 POSITIONING
;446 PRIOR				;526 JOURNAL
;447 LAST				;527 CHECK
;450 DUPLICATE, DUPLICATES		;530 SEQUENCE
;451 WITHIN				;531 TRANSACTION
;452 PRIVACY				;532 VIA
;453 USAGE-MODE
;454 RETRIEVAL
;455 PROTECTED
;456 EXCLUSIVE
;457 COMMUNICATION
;460 CD
;461 INITIAL
;462 SYMBOLIC, NOMINAL
;463 QUEUE
;464 SUB-QUEUE-1
;465 SUB-QUEUE-2
;466 SUB-QUEUE-3
;467 MESSAGE
;470 DATE
;471 TIME
;472 TEXT
;473 LENGTH
;474 COUNT
;475 DEPTH
;476 DESTINATION
;477 TABLE
;500 CLASS
;501 POINTER
;502 COMPILER-BREAK-IN-PHASE
;ANS-74 RESERVED WORDS

;600 ALSO
;601 BOTTOM
;602 CLOCK-UNITS
;603 CODE-SET
;604 COLLATING
;605 DAY
;615 DEBUGGING
;616 DYNAMIC
;617 EOP, END-OF-PAGE
;620 EXCEPTION
;621 EXTEND
;622 INSPECT
;623 LINAGE
;624 LINAGE-COUNTER
;625 RMS
;626 MERGE
;627 NATIVE
;630 ORGANIZATION
;631 CHECKPOINT
;632 PRINTING
;633 REFERENCES
;634 SEPARATE
;635
;636 SORT-MERGE
;637 STANDARD-1
;640 START
;641 TRAILING
;642 CHARACTER, CHARACTERS
;643 EBCDIC
;700 HIGH-VALUE,HIGH-VALUES		704 TALLY
;701 LOW-VALUE,LOW-VALUES		705 ZERO,ZEROS,ZEROES
;702 QUOTE,QUOTES			706 ALL
;703 SPACE,SPACES			707 TODAY

;765 ,					772 +
;766 ;					773 -
;767 (					774 /
;770 )					775 *
;771 .					776 **

;777 END OF SOURCE
	DEFINE PUTVAL (C,D), <Z==.
		XWD X'D,C>

	DEFINE SETVAL (E), <
		.XCREF X'E
		X'E==.-Z>

	DEFINE NTVAL (A,B), <
		XLIST
		PUTVAL A,\I
		SIXBIT "'B' "
		SETVAL \I
		I==I+1
		LIST
		>

	DEFINE PURGIT (E), <
	PURGE	X'E
	>

	SALL
	.XCREF	I,Z
	I==0

NAMDAT:	NTVAL ACCEP.,ACCEPT
	NTVAL ACCES.,ACCESS
IFN ANS68,<NTVAL ACTUA.,ACTUAL>
	NTVAL ADD.,ADD
	NTVAL ADVAN.,ADVANCING
	NTVAL AFTER.,AFTER
	NTVAL ALL.,ALL
	NTVAL ALLOW.,ALLOWING
	NTVAL ALPHB.,ALPHABETIC
IFN ANS74,<NTVAL ALSO.,ALSO>
	NTVAL ALTER.,ALTER
	NTVAL ALTRN.,ALTERNATE
	NTVAL AND.,AND
	NTVAL ANY.,ANY
	NTVAL ARE.,ARE
	NTVAL AREA.,AREA
	NTVAL AREA.,AREAS
	NTVAL ASCND.,ASCENDING
	NTVAL ASCII.,ASCII
	NTVAL ASSGN.,ASSIGN
	NTVAL AT.,AT
	NTVAL AUTHR.,AUTHOR
	NTVAL BEFOR.,BEFORE
IFN ANS68,<NTVAL BEGIN.,BEGINNING>
	NTVAL BINRY.,BINARY
	NTVAL BLANK.,BLANK
	NTVAL BLOCK.,BLOCK
IFN ANS74,<NTVAL BOTTO.,BOTTOM>
	NTVAL BY.,BY
	NTVAL BYTE.,BYTE
	NTVAL CALL.,CALL
	NTVAL CAN.,CANCEL
IFN MCS!TCS!ANS74,<NTVAL CD.,CD>
	NTVAL CF.,CF
	NTVAL CH.,CH
	NTVAL CHANN.,CHANNEL
IFN ANS74,<NTVAL CHARA.,CHARACTER>
	NTVAL CHARA.,CHARACTERS
	NTVAL CHECK.,CHECK
	NTVAL CHKPT.,CHECKPOINT
IFN MCS!TCS,<NTVAL CLASS.,CLASS>
;IFN ANS74,<NTVAL CLCKU.,CLOCK:UNITS>
	NTVAL CLOSE.,CLOSE
	NTVAL COBOL.,COBOL
	NTVAL CODE.,CODE
IFN ANS74,<NTVAL CDSET.,CODE:SET>
IFN ANS74,<NTVAL COLLA.,COLLATING>
	NTVAL COL.,COLUMN
	NTVAL COMMA,COMMA
	NTVAL COMM.,COMMUNICATION
	NTVAL COMP.,COMP
	NTVAL COMP1.,COMP:1
;IFN ANS74,<NTVAL COMP2.,COMP:2>
	NTVAL COMP3.,COMP:3
IFN DBMS,<NTVAL COMPIL.,COMPILE>
IFN DEBUG,<NTVAL COMPB.,COMPILER:BREAK:IN:PHASE>
	NTVAL COMP.,COMPUTATIONAL
	NTVAL COMP1.,COMPUTATIONAL:1
;IFN ANS74,<NTVAL COMP2.,COMPUTATIONAL:2>
	NTVAL COMP3.,COMPUTATIONAL:3
	NTVAL COMPU.,COMPUTE
	NTVAL CONFG.,CONFIGURATION
	NTVAL CONSL.,CONSOLE
	NTVAL CONTA.,CONTAINS
	NTVAL CONTR.,CONTROL
	NTVAL CONTR.,CONTROLS
	NTVAL COPY.,COPY
	NTVAL CORR.,CORR
	NTVAL CORR.,CORRESPONDING
	NTVAL COUNT.,COUNT
	NTVAL CURR.,CURRENCY
IFN DBMS,<NTVAL CURNT.,CURRENT>
	NTVAL DATA.,DATA
	NTVAL DBKEY.,DATABASE:KEY
	NTVAL DBKEY.,DBKEY
IFN MCS!TCS!ANS74,<NTVAL DATE..,DATE>
	NTVAL DATEC.,DATE:COMPILED
	NTVAL DATEW.,DATE:WRITTEN
IFN ANS74,<NTVAL DAY..,DAY>
	NTVAL DE.,DE
IFN ANS74,<NTVAL DEBUG.,DEBUGGING>
	NTVAL DECPN.,DECIMAL:POINT
	NTVAL DECLA.,DECLARATIVES
	NTVAL PDP10.,DECSYSTEM10
	NTVAL PDP10.,DECSYSTEM:10
	NTVAL DEC20.,DECSYSTEM:20
	NTVAL DEFER.,DEFERRED
	NTVAL DELET.,DELETE
	NTVAL DLIMD.,DELIMITED
	NTVAL DLIMR.,DELIMITER
	NTVAL DENSIT,DENSITY
	NTVAL DEPEN.,DEPENDING
IFN ANS68,<IFN MCS!TCS,<NTVAL DEPTH.,DEPTH>>	;OBSOLETE
	NTVAL DESCN.,DESCENDING
IFN MCS!TCS,<NTVAL DEST.,DESTINATION>
	NTVAL DE.,DETAIL
	NTVAL DISAB.,DISABLE
	NTVAL DISPL.,DISPLAY
	NTVAL DSPL6.,DISPLAY:6
	NTVAL DSPL7.,DISPLAY:7
	NTVAL DSPL9.,DISPLAY:9
	NTVAL DIVID.,DIVIDE
	NTVAL DIVIS.,DIVISION
	NTVAL DOWN.,DOWN
IFN DBMS,<NTVAL DUPL.,DUP
	NTVAL DUPL.,DUPLICATE>
IFN ANS74,<NTVAL DUPL.,DUPLICATES>
IFN ANS74,<NTVAL DYNAM.,DYNAMIC>
IFN ANS74,<NTVAL EBCDC.,EBCDIC>
IFN MCS!TCS,<NTVAL EGI.,EGI>
	NTVAL ELSE.,ELSE
IFN MCS!TCS,<NTVAL EMI.,EMI>
IFN DBMS,<NTVAL EMPTY.,EMPTY>
	NTVAL ENABL.,ENABLE
	NTVAL END.,END
IFN ANS74,<NTVAL EOP.,END:OF:PAGE>
IFN ANS68,<NTVAL ENDIN.,ENDING>
	NTVAL ENTER.,ENTER
	NTVAL ENTRY.,ENTRY
	NTVAL ENVIR.,ENVIRONMENT
IFN ANS74,<NTVAL EOP.,EOP>
IFN MCS!TCS,<IFE TOPS20,<NTVAL EPI.,EPI>>
	NTVAL EQUAL.,EQUAL
	NTVAL EQUAL.,EQUALS
	NTVAL ERROR.,ERROR
IFN MCS!TCS,<NTVAL ESI.,ESI>
	NTVAL EVEN.,EVEN
	NTVAL EVERY.,EVERY
IFN ANS68,<NTVAL EXAMI.,EXAMINE>
IFN DBMS,<NTVAL EXCL.,EXCLUSIVE
	NTVAL EXCL.,EXCL>
IFN ANS74,<NTVAL EXCEP.,EXCEPTION>
	NTVAL EXIT.,EXIT
	NTVAL EXTEN.,EXTEND
	NTVAL FD.,FD
	NTVAL FILE.,FILE
	NTVAL FILEC.,FILE:CONTROL
IFN ANS68,<NTVAL FILEL.,FILE:LIMIT>
IFN ANS68,<NTVAL FILEL.,FILE:LIMITS>
	NTVAL FILST.,FILE:STATUS
	NTVAL FILLE.,FILLER
	NTVAL FINAL.,FINAL
	NTVAL FIND.,FIND
	NTVAL FIRST.,FIRST
	NTVAL FOOT.,FOOTING
	NTVAL FOR.,FOR
	NTVAL F10.,FORTRAN
IFN ANS68,<NTVAL FORTR.,FORTRAN:IV>
	NTVAL FREE.,FREE
	NTVAL FREED.,FREED
	NTVAL FROM.,FROM
	NTVAL GEN.,GENERATE
	NTVAL GET.,GET
	NTVAL GIVIN.,GIVING
	NTVAL GO.,GO
IFN ANS68,<NTVAL GOBAK.,GOBACK>
	NTVAL GREAT.,GREATER
	NTVAL GROUP.,GROUP
	NTVAL HEADG.,HEADING
	NTVAL HIVAL.,HIGH:VALUE
	NTVAL HIVAL.,HIGH:VALUES
	NTVAL IO.,I:O
	NTVAL IOCON.,I:O:CONTROL
	NTVAL ID.,ID
	NTVAL ID.,IDENTIFICATION
	NTVAL IF.,IF
	NTVAL IN.,IN
	NTVAL INDEX.,INDEX
	NTVAL INDXD.,INDEXED
	NTVAL INDIC.,INDICATE
IFN MCS!TCS!ANS74,<NTVAL INITL.,INITIAL>
	NTVAL INIT.,INITIATE
	NTVAL INPUT.,INPUT
	NTVAL IO.,INPUT:OUTPUT
	NTVAL INSRT.,INSERT
IFN ANS74,<NTVAL INSPC.,INSPECT>
	NTVAL INSTA.,INSTALLATION
	NTVAL INTO.,INTO
	NTVAL INVAL.,INVALID
	NTVAL INVOK.,INVOKE
	NTVAL IS.,IS
IFN DBMS,<NTVAL JOURN.,JOURNAL>
	NTVAL JUST.,JUST
	NTVAL JUST.,JUSTIFIED
	NTVAL KEY,KEY
	NTVAL KEY,KEYS;;	;ALLOW PLURAL FORM FOR READABILITY
	NTVAL LABEL.,LABEL
	NTVAL LAST.,LAST
	NTVAL LEAD.,LEADING
	NTVAL LEFT.,LEFT
IFN MCS!TCS!ANS74,<NTVAL LNGTH.,LENGTH>
	NTVAL LESS.,LESS
	NTVAL LIM.,LIMIT
	NTVAL LIM.,LIMITS
IFN ANS74,<NTVAL LINAG.,LINAGE>
IFN ANS74,<NTVAL LNGCO.,LINAGE:COUNTER>
	NTVAL LINE.,LINE
	NTVAL LINE.,LINES
	NTVAL LINKG.,LINKAGE
	NTVAL LOCK.,LOCK
	NTVAL LOVAL.,LOW:VALUE
	NTVAL LOVAL.,LOW:VALUES
	NTVAL MACRO.,MACRO
	NTVAL MEMOR.,MEMORY
IFN DBMS,<NTVAL MEMBR.,MEMBER>
IFN DBMS,<NTVAL MEMBR.,MEMBERS>
IFN CSTATS,<NTVAL METNG.,METER::ING>
IFN CSTATS,<NTVAL METJS.,METER::JSYS>
	NTVAL MERG.,MERGE
IFN MCS!TCS!ANS74,<NTVAL MSG.,MESSAGE>
	NTVAL MODE.,MODE
	NTVAL MODIF.,MODIFY
	NTVAL MODUL.,MODULES
	NTVAL MOVE.,MOVE
	NTVAL MULTP.,MULTIPLE
	NTVAL MULTI.,MULTIPLY
IFN ANS74,<NTVAL NATIV.,NATIVE>
	NTVAL NEGAT.,NEGATIVE
	NTVAL NEXT.,NEXT
	NTVAL NO.,NO
IFN ANS68,<NTVAL SYMBL.,NOMINAL>
	NTVAL NONE.,NONE
	NTVAL NOT.,NOT
IFN ANS68,<NTVAL NOTE.,NOTE>
	NTVAL NUMBR.,NUMBER
	NTVAL NUMER.,NUMERIC
	NTVAL OBJEC.,OBJECT:COMPUTER
	NTVAL OCCUR.,OCCURS
	NTVAL ODD.,ODD
	NTVAL OF.,OF
	NTVAL OFF.,OFF
	NTVAL OMITT.,OMITTED
	NTVAL ON.,ON
IFN DBMS,<NTVAL ONLY.,ONLY>
	NTVAL OPEN.,OPEN
	NTVAL OPTIO.,OPT
	NTVAL OPTIO.,OPTIONAL
	NTVAL OR.,OR
IFN ANS74,<NTVAL ORGAN.,ORGANIZATION>
	NTVAL OTHER.,OTHERS
	NTVAL OUTPU.,OUTPUT
	NTVAL OVRFL.,OVERFLOW
IFN DBMS,<NTVAL OWNER.,OWNER>
	NTVAL PAGE.,PAGE
	NTVAL PARIT.,PARITY
	NTVAL PDP10.,PDP:10
	NTVAL PERFO.,PERFORM
	NTVAL PF.,PF
	NTVAL PH.,PH
	NTVAL PIC.,PIC
	NTVAL PIC.,PICTURE
	NTVAL PLS.,PLUS
	NTVAL PNTR.,POINTER
	NTVAL PSTN.,POSITION
	NTVAL PSTNG.,POSITIONING
	NTVAL PSTV.,POSITIVE
IFN ANS74,<NTVAL PRINT.,PRINTING>
IFN DBMS,<NTVAL PRIOR.,PRIOR>
IFN DBMS,<NTVAL PRVCY.,PRIVACY>
	NTVAL PROC.,PROCEDURE
IFN ANS74,<NTVAL PROC.,PROCEDURES>
	NTVAL PROCE.,PROCEED
IFN ANS68,<NTVAL PRCSS.,PROCESSING>
	NTVAL PGM.,PROGRAM
	NTVAL PGMID.,PROGRAM:ID
IFN DBMS,<NTVAL PROT.,PROTECTED
	NTVAL PROT.,PROT>
IFN MCS!TCS,<NTVAL QUEUE.,QUEUE>
	NTVAL QUOTE.,QUOTE
	NTVAL QUOTE.,QUOTES
	NTVAL RAND.,RANDOM
	NTVAL RD.,RD
	NTVAL READ.,READ
	NTVAL READR.,READ:REWRITE
	NTVAL READW.,READ:WRITE
	NTVAL RECEV.,RECEIVE
	NTVAL REC.,RECORD
	NTVAL RECRDG,RECORDING
	NTVAL REC.,RECORDS
	NTVAL REDEF.,REDEFINES
	NTVAL REEL.,REEL
IFN ANS74,<NTVAL REFER.,REFERENCES>
	NTVAL RELAT.,RELATIVE
	NTVAL RELEA.,RELEASE
	NTVAL REMAI.,REMAINDER
IFN ANS68,<NTVAL REMAR.,REMARKS>
	NTVAL REMOV.,REMOVE
IFN ANS74,<NTVAL REMOV.,REMOVAL>
	NTVAL RENAM.,RENAMES
	NTVAL REPLA.,REPLACING
	NTVAL REPOR.,REPORT
	NTVAL REPOR.,REPORTS
	NTVAL REPTG.,REPORTING
	NTVAL RERUN.,RERUN
	NTVAL RESER.,RESERVE
	NTVAL RESET.,RESET
	NTVAL RETAI.,RETAIN
	NTVAL RETAD.,RETAINED
IFN DBMS,<NTVAL RETR.,RETRIEVAL
	NTVAL RETR.,RETR>
	NTVAL RETUR.,RETURN
	NTVAL REVER.,REVERSED
	NTVAL REWIN.,REWIND
	NTVAL REWRT.,REWRITE
	NTVAL RF.,RF
	NTVAL RH.,RH
	NTVAL RIGHT.,RIGHT
IFN ANS74,<NTVAL RMS.,RMS>
	NTVAL ROUND.,ROUNDED
	NTVAL RUN.,RUN
IFN DBMS,<NTVAL RNUNT.,RUN:UNIT>
	NTVAL SAME.,SAME
	NTVAL SCHEM.,SCHEMA
	NTVAL SD.,SD
	NTVAL SEARC.,SEARCH
	NTVAL SECT.,SECTION
	NTVAL SECUR.,SECURITY
IFN ANS68,<NTVAL SEEK.,SEEK>
IFN MCS!TCS,<NTVAL SGMNT.,SEGMENT>
	NTVAL SEGME.,SEGMENT:LIMIT
	NTVAL SELEC.,SELECT
	NTVAL SEND.,SEND
IFN DBMS,<NTVAL SELTV.,SELECTIVE>
	NTVAL SENT.,SENTENCE
IFN ANS74,<NTVAL SEPER.,SEPARATE>
	NTVAL SEQCE.,SEQUENCE
	NTVAL SEQU.,SEQUENTIAL
	NTVAL SET.,SET
IFN DBMS,<NTVAL SET.,SETS>
	NTVAL SIGN.,SIGN
	NTVAL SIXBT.,SIXBIT
	NTVAL SIZE.,SIZE
	NTVAL SORT.,SORT
IFN ANS74,<NTVAL SRTMG.,SORT:MERGE>
	NTVAL SOUR.,SOURCE
	NTVAL SOURC.,SOURCE:COMPUTER
	NTVAL SPACE.,SPACE
	NTVAL SPACE.,SPACES
	NTVAL SPECI.,SPECIAL:NAMES
	NTVAL STAND.,STANDARD
IFN ANS74,<NTVAL STND1.,STANDARD:1>
	NTVAL STDAS.,STANDARD:ASCII
IFN ANS74,<NTVAL START.,START>
	NTVAL STATU.,STATUS
	NTVAL STOP,STOP
	NTVAL STORE.,STORE
	NTVAL STRIN.,STRING
IFN DBMS,<NTVAL SBSCH.,SUB:SCHEMA>
IFN MCS!TCS,<NTVAL SUBQ1.,SUB:QUEUE:1
	NTVAL SUBQ2.,SUB:QUEUE:2
	NTVAL SUBQ3.,SUB:QUEUE:3>
	NTVAL SUBTR.,SUBTRACT
	NTVAL SUM.,SUM
IFN DBMS!<ANS74&RPW>,<NTVAL SUPPR.,SUPPRESS>
	NTVAL SWTCH.,SWITCH
	NTVAL SYMBL.,SYMBOLIC
	NTVAL SYNCH.,SYNC
	NTVAL SYNCH.,SYNCHRONIZED
IFN MCS!TCS,<NTVAL TABLE.,TABLE>
IFN ANS68,<NTVAL TALLY,TALLY>
	NTVAL TLYNG.,TALLYING
	NTVAL TAPE.,TAPE
IFN MCS!TCS,<NTVAL TERML.,TERMINAL>
	NTVAL TERM.,TERMINATE
IFN MCS!TCS,<NTVAL TEXT.,TEXT>
	NTVAL THAN.,THAN
	NTVAL THRU.,THROUGH
	NTVAL THRU.,THRU
IFN MCS!TCS!ANS74,<NTVAL TIME..,TIME>
	NTVAL TIMES.,TIMES
	NTVAL TO.,TO
IFN ANS68,<NTVAL TODAY,TODAY>
IFN ANS74,<NTVAL TOP.,TOP>
	NTVAL TRAC.,TRACE
IFN ANS74,<NTVAL TRAIL.,TRAILING>
	NTVAL TRANS.,TRANSACTION
	NTVAL TYPE.,TYPE
	NTVAL UNAVA.,UNAVAILABLE
	NTVAL UNIT.,UNIT
	NTVAL UNSTR.,UNSTRING
	NTVAL UNTIL.,UNTIL
	NTVAL UP.,UP
IFN DBMS,<NTVAL UPDAT.,UPDATE
	NTVAL UPDAT.,UPDATES>
	NTVAL UPON.,UPON
	NTVAL USAGE.,USAGE
IFN DBMS,<NTVAL USGMD.,USAGE:MODE>
	NTVAL USE.,USE
	NTVAL PPN.,USER:NUMBER
	NTVAL USING.,USING
	NTVAL VALUE.,VALUE
	NTVAL VALUE.,VALUES
	NTVAL VARYI.,VARYING
	NTVAL VERB.,VERB
IFN DBMS,<NTVAL VIA.,VIA>
	NTVAL WHEN.,WHEN
	NTVAL WITH.,WITH
IFN DBMS,<NTVAL WITHN.,WITHIN>
	NTVAL WORDS.,WORDS
	NTVAL WORKI.,WORKING:STORAGE
	NTVAL WRITE.,WRITE
	NTVAL ZERO.,ZERO
	NTVAL ZERO.,ZEROES
	NTVAL ZERO.,ZEROS
	0

IF2,<	I==0
REPEAT 1000,<PURGIT \I
	I==I+1>
	PURGE I,Z
>
	END	COBOLA