DataMuseum.dk

Presents historical artifacts from the history of:

Philips Data Systems

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Philips Data Systems

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦ce27b05f0⟧

    Length: 20582 (0x5066)
    Notes: pts_type(SC)
    Names: »DENVAL.SC«

Derivation

└─⟦48601905a⟧ Bits:30009668 Philips computer tape "600121"
    └─⟦this⟧ »S:DE/DENVAL.SC« 
└─⟦d2a299635⟧ Bits:30009698 Philips computer tape "600415"
    └─⟦this⟧ »S:DE/DENVAL.SC« 

PTS(SC)

	IDENT	DENVAL	REL 10.0 80-04-11 
			UPD 80-04-29/DALI
			80-04-24/DALI
 DDUM DEDDIV
 PDIV 
 ENTRY DENVAL 
 EXT TESTB TEST FOR A BIT IN A BIN
 EXT DEEDIT 
 EXT MSKOUT 
 EXT GETVAL LOOK FOR VALIDATION-
			STRING FOR CURRENT FIELD 
 EXT DECOMP USER OR STANDARDROUTINE 
			TO VALIDATE CURRENT INPUT
	EXT	EMPTYT	ASSEMBLY SUBROUTINE EMPTYT  - 
			TEST IF DATA ITEM IS EMPTY 
 EXT CLEARB CLEAR A BIT IN A BIN ITEM 
 EXT SETB SET A BIT IN A BIN ITEM 
 EXT DELAST KEY INPUT ON LAST LINE
 EXT DEDISC DISC HANDLING ROUTINE 
 EXT ATTDB ASSEMBLY SUBROUTINE ATTDB -
			ATTACH DESCRIPTORBLOCK 
 EXT ATTWB ASSEMBLY SUBROUTINE ATTWB -
			ATTACH WORKBLOCK 
 EXT DEPOOL POOL HANDLING ROUTINE 
 EXT DEAPPU USER-CODED APPL-HANDLING
 EXT TYPET
 EXT GETIND 
 EXT CMPIND 
 INCLUDE DELITT 
 EJECT
* 
* LOOK IF THERE ARE A VALIDATIONSTRING
* WITHIN THE FORMAT AND EXECUTE IT. 
* 
*                               DOOL1= NOT FLAG 
*                               DOOL2= INSERTION OF RECORD
*                               DOOL3= ENTRY MODE 
*                               DOOL4= GETFLD TO OTHER FIELD
*                                      WITHIN FORMAT EXECUTED 
*                               DOOL5= NO KEYED INPUT 
*                               DOOL6= ABSOLUTE VALUE 
*                               DOOL7= NOT CURRENT ITEM IN DEINPUT
*                               DOOL8= BATCHHEAD FOR NEW BATCH
*                                 BIN11= POOLINDEX
*                                 BIN12= STARTPOSITION
*                                 BIN13= STOPPOSITION 
*                                    BIN14= CONDITIONAL TAB.-FIELD
*                                           (NEXT FIELD)
DENVAL PROC	FC
 MOVE BIN8,W0 
 MOVE BIN3,W0 USED AS POINTER 
			TO ERRORMESSAGE
	CLEAR	BOOL4	F=NO RECORD CHANGE FOUND (R) 
	CLEAR BOOL6	F=NO COND TAB FOUND
	CLEAR	BOOL8	F=NO RECORD CHANGE FOUND (N) 
 CLEAR REWRT UPDFLD=0 
 MOVE DEBINW4,W2
 GETABX BIN8 SAVE CURRENT FIELD.NR
 CBNE DEBINW1,W0,DENV10 KEYINPUTLENGTH = 0
 PERF DEEDIT,W3 PUT FMTITEM INTO DEINPUT
 B DENV20 
DENV10
 TBF DOOL5,DENV30 JUMP IF NOT DUPL
DENV20
 MOVE WORK(W5),W0 INPUTLENGTH = 0 
 B DENV40 
DENV30
 MOVE WORK(W5),DEBINW1 SAVE INPUTLENGTH 
DENV40
 MOVE BIN4,DEBINW1 SAVE INPUTLENGTH 
 MOVE STATSH,DEINPUT SAVE KEYED INPUT 
 IB FC,DENV50	DEACCU	C
		DENV50	DEGENE 
 GETCTL 0,DEBINW3 GET APPL-VALUE;DENTER 
 CBE DEBINW3,W0,DENV50 NO APPL-VALUE
 PERF DEAPPU USERCODED APPL-HANDLING
 IB DEBINW3,DENV45	UPDFLD = 1	C 
		UPDR40	SET CURSOR	C 
		DENV42	ERROR PRINTOUT 
 B DENV50 UPDFLD = 0
DENV42			ERROR PRINTOUT 
 MOVE BIN3,W0 
 B UPDR40 
DENV45			UPDFLD = 1 
 SET REWRT
DENV50
 MOVE DEBINW3,BIN8 SAVE TAB.INDEX 
 EJECT
* 
* EXECUTE VALIDATION
* 
UPDV0A
 ADD BIN13,BIN12
 B UPDV01 
UPDV00
 MOVE DEINPUT,STATSH RESTORE KEYED INPUT
 MOVE DEBINW1,BIN4 RESTOR INPUTLENGTH 
UPDV01
	MOVE	STR64A,='M/=><DGRN' 
 MOVE BIN5,W0 
 MATCH STR64A,BIN5,W9,BPOOL(BIN11),BIN12,W1 
 BOK UPDV16 
 CLEAR DOOL7
 BNZ DECOMT NOT OKEY
	MOVE	STR64A,='ASUFFFX' 
 MOVE BIN9,W0 
 MATCH STR64A,BIN9,W7,BPOOL(BIN11),BIN12,W1 
	BNOK	DECOOK
 SET DOOL7 NOT CURRENT FIELD VALIDATION 
 ADD BIN12,W1 
	CBE	BIN9,W6,UPDV05	JUMP IF X 
 XCOPY BIN8,W1,W1,BPOOL(BIN11),BIN12
 ADD BIN12,W1 
UPDV05
	CLEAR ALPHA	F=ALPHATEST
 CBE BIN8,W0,UPDV04 
	PERF	DEEDIT,BIN9 
 B UPDV06 
UPDV04
 MOVE BIN8,DEBINW3 CURRENT TABINDEX 
UPDV06
	IB	BIN9,UPDV01,UPDV01,UPDV07,	1=S,2=U,3=F	C
		UPDV07,UPDV07,UPDV09	6=X
	B	UPDV09	0=A 
UPDV07
	CALL	TYPET,BIN7,X.PSEU1,X.PSEU2,X.WB10,BIN8
	CBE	BIN7,W3,UPDV01	JUMP IF ALPHA STRG
UPDV09
	SET	ALPHA	T=BCD-NUM
 B UPDV01 
UPDV16
 IB BIN5,UPDV20,UPDV30,UPDV30,UPDV30,UPDV25		C
		UPDGOT,UPDFOR,UPDFON
UPDE00			HHANDLE ERRORCODE
 ADD BIN12,W1 
 XCOPY DEBINW4,W1,W1,BPOOL(BIN11),BIN12 
 MOVE BIN3,BIN12 SAVE INDEX TO ERR.MESS 
 XCOPY BIN3,W0,W1,BIN11,W1 SAVE POOLINDEX 
 CBL DEBINW4,W128,UPDE10
 MOVE BIN9,=X'3F' 
 CALL MSKOUT,BIN9,DEBINW4 
 ADD BIN12,BIN9 
UPDE10
 ADD BIN12,W1 
 CBL BIN12,BIN13,UPDV01 
 B DECERR JUMP IF END OF VALSTRING
UPDV20			/
 SET DOOL1 NOT-FLAG 
 B UPDE10 
* 
UPDV25			D;DUPLICATE
 ADD BIN12,W1 
 SET DOOL4
 BNZ DECERR 
 XCOPY BIN8,W1,W1,BPOOL(BIN11),BIN12
 GETFLD 0,BIN8,BIN9 
 MOVE WORK(W6),BIN11
 MOVE WORK(W7),BIN12
 MOVE WORK(W8),BIN13
 CALL GETVAL,BPOOL(W1),BIN11,BIN12,BIN13
 BNOK DECERR
 B UPDV0A 
* 
UPDV30			=EQUAL;>GREATER;<LESS; 
 SUB BIN5,W2
 ADD BIN12,W1 
 MOVE BIN6,W0 START IN VALSTR 
	MOVE	STR64A,='+-*:'
 MOVE BCDI21(W1),=D'0'
 MATCH STR64A,BIN6,W4,BPOOL(BIN11),BIN12,W1 
 BOK UPDV35 
 MOVE BIN6,W0 IF ARITHMETIC SIGN IS 
 B UPDV37 OMITTED + IS ASSUMED
UPDV35
 ADD BIN12,W1 INCREASE POINTER
UPDV37
 MOVE BIN9,W0 
	MOVE	STR64A,='L!ASUFTCXE'
	MATCH	STR64A,BIN9,W10,BPOOL(BIN11),BIN12,W1
 BOK UPDV50 
 MOVE BIN9,W10 STRING-COMPARISION 
 B UPDV60 
UPDV50
 ADD BIN12,W1 ADJUST POINTER
	CBNL	BIN9,W8,UPDV65
UPDV60
 XCOPY BIN8,W1,W1,BPOOL(BIN11),BIN12 GET INDEX
 ADD BIN12,W1 ADJUST POINTER
UPDV65
 IB BIN9,UPDABS,UPDACC,UPDSYS,UPDUSE,UPDFLD,UPDSET,UPDCOD		C
		UPDVSI,UPDEMP,UPDNUM
UPDLEN			HANDLE LENGTH
 CMP DEBINW1,BIN8 
 B DECO05 
* 
UPDABS
 SET DOOL6
 B UPDE10 
* 
UPDACC			HANDLE ACCUMULATOR 
 CALL CMPIND,BIN8,ACK(W1) 
 BNOK DECERR OUT OF RANGE 
 MOVE BCDI21(W2),ACK(BIN8)
 B UPDN50 
 EJECT
* 
UPDSYS			HANDLE SYSTEMVARIABEL
UPDUSE			AND USERVAIABLES 
* 
 SUB BIN9,W3
	CLEAR	DOOL7
	BNZ	UPDS01	JUMP IF CURR FIELD
 TSTCTL 0 LOOK IF ALPHA 
 BZ UPDS30 JUMP IF BCD
	B	UPDS03 
UPDS01
	TBT	ALPHA,UPDS30	JUMP IF BCD-NUM 
UPDS03
 IB BIN9,UPDS05 
 CALL GETIND,SYSV(W1),BIN15,BIN10 
 B UPDS10 
UPDS05
 CALL GETIND,USEV(W1),BIN15,BIN10	ITEM,LENGTH,DIM 
UPDS10
 CMP BIN10,BIN8 CMP DIMENSION 
 BL DECERR VARIABLE NOT EXIST 
 MOVE BIN10,W0
 IB BIN9,UPDS15 
 MATCH DEINPUT,BIN10,BIN15,SYSV(BIN8),W0,BIN15
 B UPDS20 
UPDS15
 MATCH DEINPUT,BIN10,BIN15,USEV(BIN8),W0,BIN15
UPDS20
 BOK DECEGL 
 B DECNOT 
UPDS30
 IB BIN9,UPDS50 
 CALL CMPIND,BIN8,SYSV(W1)
 BNOK DECERR OUT OF RANGE 
 MOVE BCDI21(W2),SYSV(BIN8) 
 B UPDN50 
UPDS50
 CALL CMPIND,BIN8,USEV(W1)
 BNOK DECERR OUT OF RANGE 
 MOVE BCDI21(W2),USEV(BIN8) 
 B UPDN50 
 EJECT
* 
UPDFLD			HANDLE FIELD WITHIN FORMAT 
* 
 CBNE BIN8,W0,UPDF10 CURRENT FIELD
 MOVE BIN8,DEBINW3 CURRENT FIELNUMBER 
UPDF10
 CALL TYPET,BIN10,X.PSEU1,X.PSEU2,X.WB10,BIN8 
 CBNE BIN10,W3,UPDF40 JUMP IF NOT ALPHA 
 GETCTL 1,BIN10 GET MAXL
 SET DOOL4
 MOVE BIN7,W0 
	CON	X.MATCH,X.PSEU1,X.PSEU2
 CON X.WB10,BIN8
	CON	BIN7,BIN10,HEX00,W0,W1 
	CMP	DEBINW1,BIN7 
	BNE	DECNOT	INVALID LENGTH
 MOVE BIN10,W0
 CON X.MATCH,DEINPUT,BIN10,DEBINW1
 CON X.PSEU1,X.PSEU2
 CON X.WB10,BIN8,W0,DEBINW1 
 BOK DECEGL 
 B DECNOT 
UPDF40			NUMERIC
 CON X.MOVE,BCDI21(W2),X.PSEU1,X.PSEU2
 CON X.WB10,BIN8
 B UPDN50 
* 
 EJECT
UPDSET			HANDLE VALUESET
 CMP BIN5,W0
 BNZ DECERR 
	MOVE	VSEIND,W0	VALUE-SET INDEX:=0
 MOVE BCD3A,BIN8
 MOVE BIN9,W0 LOOK IF ELEMENTNUMBER 
	MOVE	STR1A,=':'
 MATCH STR1A,BIN9,W1,BPOOL(BIN11),BIN12,W1
 BOK UPDSET05 
 MOVE BIN9,W0 
 MOVE ELMNO,W1
 B UPDSET07 
UPDSET05
 ADD BIN12,W1 
 XCOPY BIN9,W1,W1,BPOOL(BIN11),BIN12
 ADD BIN12,W1 
 MOVE ELMNO,BIN9
UPDSET07
 MOVE TABLE,BCD3A 
 MOVE STR1A,=C'T' 
 DLETE TABLE,W0,W2
 INSRT TABLE,W2,W1,HEX00,W0 
 INSRT TABLE,W0,W1,STR1A,W0 
UPDSET10
 PERF DEDISC,W24 GET VALUSET
 BOK UPDSET20 
 CBE PINDTB,W0,UPDSET18 
UPDSET15
 PERF DEPOOL,W6,PINDTB,BIN10,STRG10A
UPDSET18
 CMP W0,W1
 B DECO05 
UPDSET20
	MOVE	BIN15,W0	WORK:=0
	CALL	ATTWB,BPOOL(PINDTB),W8,W11
	CALL	ATTDB,BPOOL(PINDTB),W0,W11
 XCOPY BIN16,W1,W1,RPOOL(PINDTB),W17
	XCOPY	BIN15,W1,W1,RPOOL(PINDTB),W18	STORE ENDINDEX OF POOL 
 SUB ELMNO,BIN16
 ADD ELMNO,W1 
	TBT	DOOL7,UPDSET24	JUMP IF NOT CURR FIELD
 TSTCTL 0 LOOK IF ALPHA 
 BZ UPDSET30 JUMP IF BCD
	B	UPDSET26 
UPDSET24
	TBT	ALPHA,UPDSET30	JUMP IF BCD-NUM 
UPDSET26
 XCOPY BIN8,W1,W1,BPOOL(PINDTB),W1
UPDSET28
 PERF DEEDIT,W4 
 MOVE BIN6,W0 
 MATCH DEINPUT,BIN6,BIN8,STATSH,W0,BIN8 
 BOK UPDSET40 
 CBNE BIN9,W0,UPDSET15
	ADD	ELMNO,W1	NEXT ELEMENT
	ADD	BIN16,W1	INCREMENT STARTINDEX OF POOL
	CMP	BIN16,BIN15	JUMP ALL EL. OF POOL COMPARED
	BG	DECN10	JUMP IF GRAETER
 B UPDSET28 
UPDSET30
 MOVE BCDI21(W2),FDVBCD(ELMNO)
 B UPDN50 
UPDSET40
	MOVE	VSEIND,BIN16	INDEX OF CURR BUFF 
 PERF DEPOOL,W6,PINDTB,BIN10,STRG10A
 CMP W0,W0 CONDITION ZERO 
 B DECO05 
* 
UPDCOD
 PERF DECOMP,BIN8 
 B DECO05 
* 
UPDEMP
 CALL EMPTYT,DEINPUT
 BP DECEGL
 B DECNOT 
* 
*       OPERAND IS VALUE-SET ELEMENT INDEX
* 
UPDVSI
	MOVE	BCDI21(W2),VSEIND	LOAD VALUE SET ELINDEX
	B	UPDN50 
 EJECT
* 
UPDGOT			GO TO VALIDATION (G) 
	CLEAR	BOOL4	F=NO RECORD CHANGE FOUND (R) 
	CLEAR	BOOL8	F=NO RECORD CHANGE FOUND (N) 
	ADD	BIN12,W1	ADJUST POINTER
	SET	BOOL6	T=COND TAB FOUND (G) 
	XCOPY	BIN14,W1,W1,BPOOL(BIN11),BIN12	*JE 
	ADD	BIN12,W1	ADJUST BUFFERPOINTER
	B	UPDV00 
* 
UPDFOR			CHANGE FORMAT VALIDATION (R) 
	MOVE	DEBINW4,W4
	CLEAR	BOOL8	F=NO RECORD CHANGE FOUND (N) 
	SET	BOOL4	T=COND FORM CH FOUND (R) 
 B UPDFO2 
* 
UPDFON			CHANGE FORMAT VALIDATION (N) 
	MOVE	DEBINW4,W3	(N)
	CLEAR	BOOL4	F=NO RECORD CHANGE FOUND (R) 
	SET	BOOL8	T=COND FORM CHANGE FOUND (N) 
UPDFO2
	CLEAR BOOL6	F=NO COND TAB FOUND
	ADD	BIN12,W1	ADUST BUFFER POINTER
	MOVE	BIN16,W0	WORK:=0
	XCOPY	BIN16,W1,W1,BPOOL(BIN11),BIN12	LOAD NUMB OF CHARS
	SUB	BIN16,W128	ADJUST LIT.-INDICATOR 
	ADD	BIN12,W1	ADJUST BUFFER POINTER 
 MOVE STSAVE(DEBINW4),HEX00 
	XCOPY	STSAVE(DEBINW4),W0,BIN16,BPOOL(BIN11),BIN12
	ADD	BIN12,BIN16	ADJUST FOR NUMB OF CHARS 
	B	UPDV00	GO ON 
 EJECT
* 
UPDNUM
 MOVE BIN9,=X'3F' 
 CALL MSKOUT,BIN9,BIN8
 MOVE STR1A,='?'
 MOVE BIN10,BIN12 SAVE CURRENT POINTER
 MATCH BPOOL(BIN11),BIN10,DEBINW1,STR1A,W0,W1 
 BNOK UPDN06 JUMP IF NO '?':S 
 MOVE BIN8,W0 COUNTER NUMB OF MATCHES 
	MOVE	BIN10,DEBINW1	LOAD EFF. INPUT LENGTH
	MATCH	DEINPUT,BIN10,W1,HEX00,W0,W1 
	BOK	UPDN01	JUMP IF NO SIGN 
	MOVE	BIN8,W1	ADJUST FOR SIGN 
UPDN01
 ADD BIN9,BIN12 
UPDN00
 MOVE BIN10,BIN8
 MATCH DEINPUT,BIN10,W1,BPOOL(BIN11),BIN12,W1 
 BNOK UPDN04 NOT OK MAYBE '?' 
UPDN02
 ADD BIN8,W1 INCREMENT COUNTER
 CBE BIN8,DEBINW1,UPDN30 ALL CHARS MATCHED
 ADD BIN12,W1 ADJUST POINTER
 B UPDN00 GO ON MATCH 
UPDN04
 MOVE BIN10,BIN12 LOAD MATCH POINT
 MATCH BPOOL(BIN11),BIN10,W1,STR1A,W0,W1
 BOK UPDN02 GO ON '?' FOUND 
 B UPDN30 
UPDN06
	CLEAR	DOOL7	 
	BNZ	UPDN10	JUMP IF NOT CURR FIELD
 TSTCTL 0 LOOK IF ALPHA 
 BZ UPDN40 JUMP IF NUMERIC
 CBE DEBINW1,BIN9,UPDN20
 ADD BIN12,BIN9 ADJUST POINTER IN FVAL
 B DECNOT 
UPDN10
	TBT	ALPHA,UPDN40	JUMP IF BCD-NUM 
UPDN20
 MOVE BIN10,W0
 ADD BIN9,BIN12 
 MATCH DEINPUT,BIN10,DEBINW1,BPOOL(BIN11),BIN12,DEBINW1 
UPDN30
 MOVE BIN12,BIN9
 BOK DECEGL 
 B DECNOT 
UPDN40			NUMERIC
 MOVE STR64A,HEX00
 COPY STR64A,W0,BIN9,BPOOL(BIN11),BIN12 
 MOVE BCDI21(W2),STR64A 
 ADD BIN12,BIN9 
UPDN50
 CLEAR DOOL6
 BZ UPDN55
 CALL CLEARB,BCDI21(W2),W1
 CALL SETB,BCDI21(W2),W2
UPDN55
 IB BIN6,UPDN60,UPDN70,UPDN80 
 ADD BCDI21(W1),BCDI21(W2)
 B UPDN90 
UPDN60 SUB BCDI21(W1),BCDI21(W2)
 B UPDN90 
UPDN70 MUL BCDI21(W1),BCDI21(W2)
 B UPDN90 
UPDN80 DIV BCDI21(W1),BCDI21(W2)
UPDN90 MOVE BIN6,W0 
 CBNL BIN12,BIN13,UPDN95 JUMP IF END OF 
			VALIDATION STRING
	MOVE	STR64A,='+-*:'
 MATCH STR64A,BIN6,W4,BPOOL(BIN11),BIN12,W1 
 BOK UPDV35 JUMP IF ARITHMETIC SIGN 
UPDN95
 MOVE BCDI21(W2),DEINPUT
 CMP BCDI21(W2),BCDI21(W1)
DECO05
 IB BIN5,DECO10,DECO20 JUMP ON COMPARE-SIGN-INDEX 
 BZ DECEGL =
 B DECNOT /=
DECO10
 BEOF DECEGL >
 B DECNOT />
DECO20
 BERR DECEGL <
			/< 
DECNOT CLEAR DOOL1
 BNZ DECOOK VALID 
 CBE PINDTB,W0,DECONO JUMP IF NOT SET 
 CMP BIN9,W0 LOOK IF ALL ELEMENTS 
 BNZ UPDSET15 JUMP IF NOT 
 ADD ELMNO,W1 NEXT ELEMENT
	ADD	BIN16,W1	INCREMENT STARTINDEX OF POOL
	CBG	BIN16,BIN15,DECN10	JUMP  ALL EL. OF POOL COMPARED
	MOVE	BCDI21(W1),FDVBCD(ELMNO)	NEXT ELEMENT VALUE 
	B	UPDN95	GO ON NEXT COMPARE
DECN10
	XCOPY	BIN15,W0,W2,RPOOL(PINDTB),W13	FETCH LINK FORWARD 
	CMP	BIN15,W0	JUMP IF WHOLE TABLE VALIDATED 
	BE	UPDSET15	JUMP IF EQUAL
	MOVE	ELMNO,BIN16	LOAD SAERCH ELEMENT NEXT SEGM.
	PERF	DEPOOL,W6,PINDTB,BIN10,STRG10A	RELEASE
	B	UPDSET10	GO ON READ NEXT SEGMENT 
DECEGL CLEAR DOOL1
 BZ DECOTK VALID
	EJECT
DECONO
 MOVE BIN10,W21	V OR
	TBT	BOOL6,DECOMT	JUMP IF COND TAB FOUND
	TBT	BOOL8,DECOMT	JUMP IF RECORD CH FOUND 
	TBT	BOOL4,DECOMT	JUMP IF RECORD CH FOUND 
	SET	DOOLB	ITEM NOT VALID 
 B DECOMT 
	EJECT
DECOTK
	CBE	PINDTB,W0,DECOOK	JUMP IF EOF VALUE-SET/NO VSET 
	MOVE	VSEIND,BIN16	INDEX OF CURR BUFF 
DECOOK
 MOVE BIN10,W20 & 
	CLEAR	DOOLB	ITEM VALID 
DECOMT
	CLEAR	DOOL7
 CBE PINDTB,W0,DECO33 
 PERF DEPOOL,W6,PINDTB,BIN10,STRG10A
DECO33 CBNL BIN12,BIN13,DECEND
 MOVE BIN9,W0 
	MOVE	BIN16,=W'29'
 MATCH VALSTR,BIN9,BIN16,BPOOL(BIN11),BIN12,W1
 BOK DECO40 
DECO35
 XCOPY BIN8,W1,W1,BPOOL(BIN11),BIN12
 CALL TESTB,BIN8,W8 
 BZ DECO38
 MOVE BIN9,=X'3F' 
 CALL MSKOUT,BIN9,BIN8
 ADD BIN12,BIN9 
DECO38
 ADD BIN12,W1 
 B DECOMT 
DECO39			';' FOUND
 CBNE BIN10,W20,DECO37 NOT = &
 PERF DENVCO CONDITIONAL BOOL SETTING 
DECO37
 ADD BIN12,W1 
 CBNL BIN12,BIN13,DECEND END OF STRING
 MOVE BIN9,W0 
 MOVE STR6B,=C'DGRN'
 MATCH STR6B,BIN9,W4,BPOOL(BIN11),BIN12,W1
 BNOK DECERR
 TBT DOOLB,DECEND 
 IB BIN9,UPDGOT,UPDFOR,UPDFON 
 B UPDV25 
	EJECT
DECO40
 IB BIN9,DECO41,DECO41,DECO41,DECO41,DECO41		C
		DECO42		C 
		DECO41		C 
		DECO42,DECO42,DECO42		C 
		DECO42,DECO42,DECO42		C 
		DECO41,DECO41,DECO41		C 
		DECO41,DECO41	17-18	C 
		DECO39	19=;	C 
		DECO43,DECO43,	20-21	C
		DECO41,DECO41,DECO41,	22-24	C 
		DECO42,DECO46,DECO46,	25-27	C 
		DECO41
 ADD BIN12,W1 MESSAGE 
 B DECO35 
DECO43
 CBNE BIN9,BIN10,DECO44 
 ADD BIN12,W1 ADJUST POINTER
 B UPDV00 
DECO44
 CBE BIN10,W20,DEC050 
DECO41
 ADD BIN12,W1 
 B DECOMT 
DECO42
 ADD BIN12,W2 
 B DECOMT 
	EJECT
DECO46			CONDITIONAL FORMAT CH
	ADD	BIN12,W1	ADUST BUFFER POINTER
	MOVE	BIN16,W0	WORK:=0
	XCOPY	BIN16,W1,W1,BPOOL(BIN11),BIN12	LOAD NUMB OF CHARS
	SUB	BIN16,W128	ADJUST LIT.-INDICATOR 
	ADD	BIN12,W1	ADJUST BUFFER POINTER 
	ADD	BIN12,BIN16	ADJUST FOR NUMB OF CHARS 
 B DECOMT 
DEC050
 PERF DENVCO CONDITIONAL BOOL SETTING 
	B	DECOMT 
	EJECT
DECERR
 SET DOOLB
 MOVE DEBINW4,W2 UNDEFINED ERROR
 MOVE BIN10,W0
DECEND CLEAR DOOL4
 BZ DECE10
*            RESTORE POINTERS TO VAL-STRING 
 MOVE BIN11,WORK(W6)
 MOVE BIN12,WORK(W7)
 MOVE BIN13,WORK(W8)
 ADD BIN12,W1 
 GETFLD 0,DEBINW3,BIN9 GET INIT. FIELD
UPDRET
DECE10
 TBF DOOLB,DECE20 
 CBE DEBINW4,W2,DECE30
DECE20
 CBE BIN10,W20,DEC050 '&' 
DECE30
	MOVE	DEINPUT,STATSH	RESTORE KEYED IN VALUE 
 MOVE DEBINW3,NUMBER CURRENT REC.NUMBER 
 CBE DEBINW3,W0,UPDR05 NOT BATCHHEAD
 CBG DEBINW3,BDPOIN(W2),UPDR10 JUMP IF
			ENTRY OF NEW RECORD
 CLEAR BOOL3 CHANGE FORMAT (R)
 TBT DOOL2,UPDR10 JUMP IF INSERT
UPDR05
			CLEAR BOOLS FOR FORMAT 
 CLEAR BOOL7 CHANGE IN CORRECTION 
			OR IF BATCHEAD=N 
UPDR10
 MOVE BIN11,W0
 XCOPY BIN11,W1,W1,BIN3,W0
 XCOPY BIN3,W0,W1,W0,W0 
UPDR20
 CLEAR REWRT UPDFLD = 1?
 BNZ UPDR30 YES!
 MOVE DEBINW3,W0
 B UPDR40 
UPDR30
 MOVE DEBINW3,W1
UPDR40
 RET
 PEND 
DENVCO PROC 
	MOVE	BIN10,W0
	TBT	BOOL6,DECOFG	JUMP IF COND TAB
	TBT	BOOL8,DECOFN	JUMP IF RECORD CH FOUND 
	TBT	BOOL4,DECOFR	JUMP IF RECORD CHANGE FOUND 
 RET
DECOFG
	SET	BOOL5	T=VALID COND TAB 
 RET
DECOFN
	SET	BOOL7	T=VALID RECORD CHANGE (N)
 RET
DECOFR
	SET	BOOL3	T=VALID RECORD CHANGE (R)
 RET
 PEND 
 END

Full view