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

⟦83d80a92f⟧

    Length: 42934 (0xa7b6)
    Notes: pts_type(SC)
    Names: »NYCONV.SC«

Derivation

└─⟦5c22ed822⟧ Bits:30009675 Philips computer tape "600209"
    └─⟦this⟧ »DEN10/NYCONV.SC« 

PTS(SC)

	IDENT	NYCONV NJ-AMT 830225/EV
			BATCH TRANSMISSION 
			82-11-10/EV
			820506/NJ
			UPD 82-02-22/EV
			UPD 81-08-27/EV
			UPD 80-12-12/SHB 
			UPD 80-07-14/JAER
	DDUM	DEDDIV
	PDIV 
	ENTRY	DECONV 


	EXT	DEPOOL 
	EXT	TESTB
	EXT	EMPTYT 
	EXT	DERROR 
	EXT	ATTDEV	ATTACH DEVICE 
	EXT	ATTPRT 
	EXT	DETPRT 
	EXT	MASK 
	EXT	GETFWD 
	EXT	ADJUST 
	EXT	FDIO 
* 
 EXT DCSGON 
 EXT DCSGOF 
 EXT DCSEND 
* 
	EJECT
* 
*       KEYTABLE
* 
CLR	EQU	X'8F'	CLEAR 
CAN	EQU	X'91'	CANCEL
RET	EQU	X'98'	RETURN
ENT	EQU	X'8C'	ENTER 
* 
KEYTAB	KTAB	CLR,CAN,RET,ENT 



* 
* 

STIMO	EQU	X'0B' 
ATTACH	EQU	X'0E'
DETACH	EQU	X'0F'
TRPAR	EQU	X'00' 
	EJECT
*       THIS MODULE TAKE CARES OF THE DIFFERENT CONVERTIONS-
*        -METHODS 
*       ONE OF THEM IS ALREADY PREPAIRED FOR YOUR PRINTOUT).
*       THE OTHER YOU HAVE TO CODE YOURSELVES.
*       FORMAL PARAMETERS: FC     = FUNCTION-CODE (DEVICE-CLASS)
*                                 = 1 DATACOMMUNICATION OUT 
*                                 = 2 DATACOMMUNICATION IN
*                                 = 3 CASETTE OUTPUT
*                                 = 4 PRINTOUT LP/GP
*                                 = 5 DISCFILE
*                                 = 6 FLOPPYDISC FILE 
*                                 = 7 DELETE BATCHES ON USERFILE
*                                 = 8 FREEZE BATCHES ON USER FILE 
*                                 = 9 LISTING LP/GP 
*                          TYPE   = TYPE OF HANDLING
*                                 = 1 OPEN
*                                 = 2 BATCHHEAD-RECORD
*                                 = 3 DATA RECORD 
*                                 = 4 BALANCE RECORD
*                                 = 5 CLOSE 
*                          RETCON = RETURN-CODE 
*                                 = 0 OK
*                                /= 0 ERROR MESSAGE-NUMBER
*                                 =-1 SKIP CURR BATCH, GO TO NEXT 
*                                 =-2 SKIP TO BALANCE 
*                                 =-3 RESTART CURRENT BATCH (CANCEL)
*                                 =-4 ABORT CONVERSION (RETURN) 
*                                 =-5 DELETE THIS BATCH 
*                                  =-6 GET CURRENT RECORD 
*        INPUT VARIABLE:     BIN4 = FC-CODE FOR DEVICE
	EJECT
DECONV	PROC	FC,TYPE,RETCON
	IB	FC,TRANSM,RECEIV,CASSET	JUMP ON DEVICE-CLASS	C
		PRINTA,DISCFD,FLOPPY,DELETE,FREEZE,LISTE
RECEIV
DISCFD
CASSET
ERROR 
	MOVE	RETCON,W4	'FUNCTION NOT ALLOWED?
	B	RETURN 
* 
*        THIS IS THE PRINTOUT FUNCTION
* 
PRINTA
	IB	TYPE,PR100,PR200,PR200	JUMP ON TYPE 0F HANDLING	C 
		PR200,PR500 
	B	ERROR
* 
*        OPEN DEVICE = ATTACH PRINTER 
* 
PR100 
	PERF	ATTDEV,BIN6	ATTACH DEVICE 
	BOK	DECOOK 
	B	RETURN 
	EJECT
* 
* 
*        PRINTOUT OF THE DIFFERENT RECORD TYPES 
* 
PR200 
	EDWRT	DEDSPRT,FCOUNT 
	BNOK	PR298 
	MOVE	DEBINW3,W1
	PRINT	DEDSPRT,DEBINW3,W0 
	BNOK	PR298 
	B	DECOOK 
PR298 
	MOVE	RETCON,=W'35'	OUTPUT DEVICE NOT OP....' 
	B	RETURN	GO AND CLOSE
* 
*       CLOSE DEVICE = DETACH PRINTER 
* 
PR500 
	PERF	DETPRT	DETACH DEVICE
	B	RETURN 
	EJECT
* 
*       THIS ROUTINE DELETE BATCHES ON THE USERFILE 
* 
DELETE
	IB	TYPE,DECOOK,DEL100
	B	DECOOK 
DEL100
	MOVE	RETCON,=W'-5' 
	CBNE	WORK(W8),W0,DEL110	NOT THE WHOLE FILE 
	MOVE	DATE,HEX00	RESET DATE 
DEL110
	B	RETURN 
	EJECT
* 
* THIS ROUTINE FREEZE BATCHES ON USER FILE
* 

FREEZE
	IB	TYPE,FRE100,FRE200,FRE300	OPEN BATCHHEAD DATA	C 
		FRE400,FRE500	BALANCE CLOSE 

* OPEN

FRE100
	B	DECOOK 
FRE200
	B	DECOOK 
FRE300
 B DECOOK 
* BALANCE RECORD
FRE400
	B	DECOOK 
* CLOSE 
FRE500
	B	DECOOK 
	EJECT
* 
*       OK
* 
DECOOK
 MOVE RETCON,W0 
RETURN
 RET
	EJECT
* 
* BATCH TRANSMISSION
* 
TRANSM
	MOVE	BTYPE,TYPE
	IB	TYPE,DC100,DC200,DC300	OPEN,BATCHHEAD,DATA	C
		DC400,DC500	BALANCE,CLOSE 


*     REQLEN     REQUESTED LENGTH 
*     RECLGD     MAX RECORD LENGTH
*     DCBUF      DCBUFFER 
*     REQDC      BUFFER POINTER 
* 
* SEND SOF
* SEND '001'+DATE 
* 

DC100 
	TBT	DCBAB,DC170
 MOVE BIN4,W20
 DSC1 DSDCFD,ATTACH,BIN4 ATTACH DEVICE DC 
 BNOK DCERR 
	PERF	GETBUF	GET 3 CONSECUTIVE BUFFERS
	B	DC110	OK 
	B	DCERR	ERROR
DC110 


DC140 
 MOVE BCDI21(W5),=D'0' RECORD COUNT 
 MOVE WORK(W15),W0 LENGTH HEADER
 MOVE WORK(W17),W0 LENGTH RECORD NO 
 MOVE WORK(W19),W0 LENGTH SEQUENCE NO 
 CLEAR BCONT CONTINUATION MARK
	CLEAR	BSUPR
 SET SPLITFL NORMAL SPLIT 
	MOVE	BIN6,=X'0036'	FILE CODE PRINTER 
	PERF	ATTDEV,BIN6	ATTACH DEVICE 
	BNOK	DC335 
	MOVE	STRG10A,HEX00 
	GETTIME	STRG10A
	MOVE	TIME,STRG10A
	EDWRT	DEDSPRT,FDCHDR 
 MOVE BIN4,TSKADR 
 DSC1 DSDCFD,TRPAR,BIN4 PASS DCADR TO DRIVER
 BNOK DCERR 
 MOVE REQLEN,=W'504' DCREQLEN 
 MOVE RECLGD,=D'128' OR =D'080' ??????? 
 MOVE DCBUF,=C' ' 
 MOVE REQDC,W0 BUFFER POINTER 
 EDSUB DCBUF,REQDC,SNDFRM2
	PERF	DCRVOL	READ VOLUME LABEL
	B	DC150	OK 
	B	DCERR	ERR
DC150 
	IB	DEBINW2,DC160,DC180,DC170	CLR,CAN,RET 
* ENT 

DC160 
 PERF DCSGON SIGN ON
	B	DC165	OK 
	B	DCERR	ERROR

DC165 
	B	DECOOK	OK

DC170 
	MOVE	RETCON,=W'-4'	ABORT CONVERSION
	B	DCERRT 

DCERR 
	MOVE	RETCON,=W'53'	OUTP. DEV. NOT OPERABLE 
DCERRT
 DSC1 DSDCFD,TRPAR,W0 
	SET	DCBAB
	B	RETURN 

DC180 
 DSC1 DSDCFD,TRPAR,W0 PASS DCADR 0
	B	RETURN 
	EJECT
* 
* BATCHEAD RECORD 
* 
DC200 
	TBT	DCBAB,DC330
	TBF	BDAFOR,DC300	ANY FORCED FIELDS?
	EDWRT	DEDSPRT,FBATC3	PRINT ERROR REPORT
	SET	DCBAB
	MOVE	RETCON,=W'-1'	GET NEXT BATCH
	B	RETURN 
DC300 
	TBT	DCBAB,DC330
	CBE	TYPE,W4,DC305	PRINTING 
	CBE	TYPE,W2,DC305	PRINTING 
	B	DC308	NO PRINTING
DC305 
* PRINT BATCH HEAD AND BALANCE RECORD 
	MOVE	DEBINW3,W1
	PRINT	DEDSPRT,DEBINW3,W0 
	BNOK	DC335 
DC308 
	MOVE	BIN10,WORK(W13)	GET BUFFER INDEX
	MOVE	BIN9,BIN10	GET BPOOL INDEX
	ADD	BIN9,W1
	MOVE	BIN8,W0	RESET FIELD NUMBER
 TBT DCBAB,DC330 ABORTION 
DC310 
	MOVE BIN4,W0 
DC311 
	PERF CONV,BIN4,FC
	B	DECOOK	ALL DONE
	B	DC340	WRITE BLOCKS 
	B	DC315	CUMP FIELD EMPTHY
	B	DC320	BCD FIELD OVERFLOW 
	B	DC320	EDIT BUFFER OVERFLOW 
DC315 
	MOVE	RETCON,W5 
	B	DCERRT 

DC320 
	MOVE	RETCON,=W'54'	EDIT ERROR
	B	DCERRT 
* 
* 
DC330 
 MOVE RETCON,=W'-4' ABORT 
 B RETURN 
* 
* 
DC335 
 MOVE RETCON,=W'35' 
 B RETURN 
* 
* WRITE BLOCKS
* 

DC340 
	PERF	DCWRIT,FC,TYPE,RETCON 
	B	DC310	OK 
	B	DC360	ERROR
	B	DC360	EOE
	MOVE BIN4,W1	CONTINUE IN SAME BUFFER 
	B	DC311
DC360 
*????????    ERROR, SEND TERMINATE ???????
 B DCERR
	EJECT
DC400 
*      BALANCE FORMAT 
	B	DC300
DC500 
	TBT	DCBAB,DC560	ABORT
 PERF DCSGOF
 B DC510
 B DCERR
DC510 
	MOVE	STRG10A,HEX00 
	GETTIME	STRG10A
	MOVE	TIME,STRG10A
	EDWRT	DEDSPRT,FDCEND 
DC550 
	CLEAR	DCBAB
 DSC1 DSDCFD,TRPAR,W0 PASS DCADR 0
	MOVE	BIN4,W0 
	DSC1	DSDCFD,DETACH,BIN4
	PERF	DETPRT
* RELEAS BUFFERS
	PERF	DEPOOL,W6,BIN10,BIN4,STRG10A
	B	DECOOK 
DC560 
	MOVE	STRG10A,HEX00 
	GETTIME	STRG10A
	MOVE	TIME,STRG10A
	EDWRT	DEDSPRT,FDCERR 
	B	DC550

 EJECT
* 
* LISTING 
* 
LISTE 
 MOVE BTYPE,TYPE
 IB TYPE,LS100,LS200,LS300, OPEN,BATCHHEAD,DATA,	C
		LS400,LS500	BALANCE,CLOSE 

LS100 
 TBT LSBAB,LS170
	PERF	GETBUF	GET 3 CONSECUTIVE BUFFERS
  B LS110 OK
 B LSERR ERROR
LS110 
 MOVE BCDI21(W5),=D'0' RECORD COUNT 
 MOVE WORK(W15),W0 LENGTH HEADER
 MOVE WORK(W17),W0 LENGTH RECORD NO 
 MOVE WORK(W19),W0 LENGTH SEQUENCE NO 
 CLEAR BCONT CONTINUATION MARK
	CLEAR	BSUPR
 CLEAR SPLITFL NNO SPLIT
 CLEAR FIRSTFL INITIATE FIRST RECORD
	PERF	ATTDEV,BIN6	ATTACH DEVICE 
 BNOK LSERR 
	MOVE	STRG10A,HEX00 
	GETTIME	STRG10A
	MOVE	TIME,STRG10A
 EDWRT DEDSPRT,FLSHDR 
 MOVE RECLGD,=D'112'
* ENT 
 B DECOOK OK

LS170 
	MOVE	RETCON,=W'-4'	ABORT CONVERSION
 B LSERRT 
LSERR 
 MOVE RETCON,=W'35' OUTPUT DEV NOT OPERABLE 
LSERRT
 SET LSBAB
 B RETURN 
* 
* BATCHEAD RECORD 
* 
LS200 
 TBT LSBAB,LS170
 TBF BDAFOR,LS250 ANY FORCED FIELDS?
	EDWRT	DEDSPRT,FBATC3	PRINT ERROR REPORT
 SET LSBAB
	MOVE	RETCON,=W'-1'	GET NEXT BATCH
	B	RETURN 
LS250			BATCHHEAD OR BALANCE
 TBT LSBAB,LS170
 MOVE DEBINW3,W1
 PRINT DEDSPRT,DEBINW3,W0 
 BNOK LSERR 
* CONVERT HEADER TO SET CONVERSION INDICATIONS
LS220 
  MOVE BIN10,WORK(W13) GET BUFFER INDEX 
 MOVE BIN9,BIN10 GET BPOOL INDEX
 ADD BIN9,W1
 MOVE BIN8,W0 RESET FIELD NO
 MOVE BIN4,W0 
LS210 
 PERF CONV,BIN4,FC
 B DECOOK ALL DONE
 B LS210 NOT ALL DONE 
 B LS315 COMP FIELD EMPTY 
 B LS320 BCD FIELD OVERFLOW 
 B LS320 EDIT BUFFER OVERFLOW 
 B DECOOK 


LS300 
 TBT FDBAB,LS170
	MOVE	BIN10,WORK(W13)	GET BUFFER INDEX
	MOVE	BIN9,BIN10	GET BPOOL INDEX
	ADD	BIN9,W1
	MOVE	BIN8,W0	RESET FIELD NUMBER
LS310 
 MOVE BIN4,W0 
LS311 
 PERF CONV,BIN4,FC
 B DECOOK ALL DONE
 B LS340 WRITE BLOCKS 
 B LS315 CUMP FIELD EMPTY 
 B LS320 BCD FIELD OVERFLOW 
 B LS320 EDIT BUFFER OVERFLOW 
LS315 
 MOVE RETCON,W5 
 B LSERRT 
LS320 
 MOVE RETCON,=W'54' 
 B LSERRT 

* WRITE BLOCKS

LS340 
 PERF LSWRIT,FC,TYPE,RETCON 
 B LS310 OK 
 B LS310 DUMMY
 B LS310 DUMMY
 MOVE BIN4,W1 CONTINUE IN SAME BUFFER 
 B LS311


LS400 
* BALANCE FORMAT
 B LS250

LS500 
 MOVE BIN10,WORK(W13) GET BUFFER INDEX
 TBT FDBAB,LS560 ABORT
 B LS570
LS550 
 CLEAR LSBAB
 MOVE BIN4,W0 
	PERF	DETPRT
* RELEAS BUFFERS
	PERF	DEPOOL,W6,BIN10,BIN4,STRG10A
	B	DECOOK 
LS560 
	MOVE	STRG10A,HEX00 
	GETTIME	STRG10A
	MOVE	TIME,STRG10A
 EDWRT DEDSPRT,FLSERR 
 B LS550
LS570 
	MOVE	STRG10A,HEX00 
	GETTIME	STRG10A
	MOVE	TIME,STRG10A
 EDWRT DEDSPRT,FLSEND 
 B LS550
	EJECT
* 
* FLOPPY DUMPING
* 

FLOPPY
	MOVE	BTYPE,TYPE
	IB	TYPE,FD100,FD200,FD300	OPEN,BATCHHEAD,DATA	C
		FD400,FD500	BALANCE,CLOSE 


* 
* SEND SOF
* SEND '001'+DATE 
* 

FD100 
	TBT	FDBAB,FD170
	PERF	GETBUF	GET 3 CONSECUTIVE BUFFERS
	B	FD110	OK 
	B	FDERR	ERROR
FD110 
	MOVE	CWFD,W7	HDR RECORD
	MOVE	REQFD,=W'128' 
	CALL	FDIO,DSFD,X'A1',BPOOL(BIN10),REQFD,CWFD	OPEN
	MOVE	BIN4,W20
	DSC1	DSFD,ATTACH,BIN4	ATTACH DEVICE  FD
	BNOK	FDERR 
	PERF	FDLOAD
	B	FD140	OK 
	B	FDERR	ERROR


FD140 
 MOVE BCDI21(W5),=D'0' RECORD COUNT 
 MOVE WORK(W15),W0 LENGTH HEADER
 MOVE WORK(W17),W0 LENGTH RECORD NO 
 MOVE WORK(W19),W0 LENGTH SEQUENCE NO 
 CLEAR BCONT CONTINUATION MARK
	CLEAR	BSUPR
 SET SPLITFL NORMAL SPLIT 
	MOVE	BIN6,=X'0036'	FILE CODE PRINTER 
	PERF	ATTDEV,BIN6	ATTACH DEVICE 
	BNOK	FDERR 
	MOVE	STRG10A,HEX00 
	GETTIME	STRG10A
	MOVE	TIME,STRG10A
	EDWRT	DEDSPRT,FFDHDR 
	PERF	FDRVOL	READ VOLUME LABEL
	B	FD150	OK 
	B	FDERR	ERR
FD150 
	IB	DEBINW2,FD160,FD180,FD170	CLR,CAN,RET 
* ENT 

FD160 
	MOVE	STR8A,STR8B	SAVE FILE NAME
	MOVE	FDCNT,W1	RESET FD COUNTER 
	PERF	FDWVOL	WRITE VOLUME LABEL 
	B	FD165	OK 
	B	FDERR	ERROR

FD165 
	B	DECOOK	OK

FD170 
	MOVE	RETCON,=W'-4'	ABORT CONVERSION
	B	FDERRT 

FDERR 
	MOVE	RETCON,=W'35'	OUTP. DEV. NOT OPERABLE 
FDERRT
	SET	FDBAB
	B	RETURN 

FD180 
	MOVE	CWFD,W7 
	MOVE	REQFD,=W'128' 
	CALL	FDIO,DSFD,X'B8',BPOOL(BIN10),REQFD,CWFD	*UNLOAD HDR1
	MOVE	RETCON,=W'55'	CHANGE FD 
	B	RETURN 
	EJECT
* 
* BATCHEAD RECORD 
* 
FD200 
	TBT	FDBAB,FD170
	TBF	BDAFOR,FD300	ANY FORCED FIELDS?
	EDWRT	DEDSPRT,FBATC3	PRINT ERROR REPORT
	SET	FDBAB
	MOVE	RETCON,=W'-1'	GET NEXT BATCH
	B	RETURN 
FD300 
	TBT	FDBAB,FD170
	TBT	FDEOF,FDEOF10
	CBE	TYPE,W4,FD305	PRINTING 
	CBE	TYPE,W2,FD305	PRINTING 
	B	FD308	NO PRINTING
FD305 
* PRINT BATCH HEAD AND BALANCE RECORD 
	MOVE	DEBINW3,W1
	PRINT	DEDSPRT,DEBINW3,W0 
	BNOK	FDERR 
FD308 
	MOVE	BIN10,WORK(W13)	GET BUFFER INDEX
	MOVE	BIN9,BIN10	GET BPOOL INDEX
	ADD	BIN9,W1
	MOVE	BIN8,W0	RESET FIELD NUMBER
FD310 
	MOVE BIN4,W0 
FD311 
	PERF CONV,BIN4,FC
	B	DECOOK	ALL DONE
	B	FD340	WRITE BLOCKS 
	B	FD315	CUMP FIELD EMPTHY
	B	FD320	BCD FIELD OVERFLOW 
	B	FD320	EDIT BUFFER OVERFLOW 
FD315 
	MOVE	RETCON,W5 
	B	FDERRT 

FD320 
	MOVE	RETCON,=W'54'	EDIT ERROR
	B	FDERRT 
* 
* WRITE BLOCKS
* 

FD340 
	PERF	FDWRIT,FC,TYPE,RETCON 
	B	FD310	OK 
	B	FD360	ERROR
	B	FDEOF05	EOE
	MOVE BIN4,W1	CONTINUE IN SAME BUFFER 
	B	FD311
FD350 
	PERF	FDLOAD
	B	FD370	OK 
	B	FD360	ERROR
FD360 
	MOVE	REQFD,=W'128' 
	MOVE	CWFD,W7 
	CALL	FDIO,DSFD,X'B8',BPOOL(BIN10),REQFD,CWFD	UNLOAD
FD365 
	MOVE	DEBINW4,=W'55'	CHANGE FLOPPYDISK
	PERF	DERROR,KEYTAB 
	IB	DEBINW2,FD350,FD360,FD170	CLR,CAN,RET 
	B	FD350	ENT
FD370 
	PERF	FDRVOL	READ VOLUME LABEL
	B	FD375	OK 
	B	FD360	ERROR
FD375 
	IB	DEBINW2,FD380,FD360,FD170	CLR,CAN,RET 
* ENT 

FD380 
	PERF	FDWVOL	WRITE VOLUME LABEL 
	B	FD382	OK 
	B	FD360	ERROE

FD382 
	TBF	FDEOF,FD340	NOT EOF
	MOVE	RETCON,=W'-6'	GET CURRENT RECORD
	B	RETURN 

FDEOF05 
	SET	FDEOF	INDICATE EOF 
	MOVE	WORK(W14),BIN8	SAVE FIELD NO
	B	FD360

FDEOF10 
	CLEAR	FDEOF
	MOVE	BIN10,WORK(W13)	GET BUFFER INDEX
	MOVE	BIN9,BIN10	GET BPOOL INDEX
	ADD	BIN9,W1
	MOVE	BIN8,WORK(W14)	GET FIELD NO 
	MOVE	REQFD,=W'128' 
	MOVE	CWFD,W0 
	CALL	FDIO,DSFD,X'06',BPOOL(BIN10),REQFD,CWFD	WRITE BLOCKS
	B	FD340
	EJECT
FD400 
*      BALANCE FORMAT 
	B	FD300
FD500 
	TBT	FDBAB,FD560	ABORT
FD505 
***PERF FDWRIT
	B	FD570	OK 
	B	FDERR	ERR
	B	FD510	EOE
FD510 
	MOVE	REQFD,=W'128' 
	MOVE	CWFD,W7 
	CALL	FDIO,DSFD,X'B8',BPOOL(BIN10),REQFD,CWFD	UNLOAD
FD515 
	MOVE	DEBINW4,=W'55'	CHANGE FLOPPYDISK
	PERF	DERROR,KEYTAB 
	IB	DEBINW2,FD520,FD510,FD170	CLR,CAN,RET 
FD520 
	PERF	FDLOAD
	B	FD525	OK 
	B	FD510	ERROR
FD525 
	PERF	FDRVOL	READ VOLUME LABEL
	B	FD530	OK 
	B	FD510	ERROR
FD530 
	IB	DEBINW2,FD535,FD510,FD170	CLR,CAN,RET 
* ENT 
FD535 
	PERF	FDWVOL	WRITE VOLUME LABEL 
	B	FD540	OK 
	B	FD510	ERROR
FD540 
	MOVE	REQFD,=W'128' 
	MOVE	CWFD,W0 
	CALL	FDIO,DSFD,X'06',BPOOL(BIN10),REQFD,CWFD	WRITE BLOCKS
	B	FD505
FD550 
	WAIT	DSFD
	CLEAR	FDBAB
	MOVE	CWFD,W7	HDR SECTOR
	MOVE	REQFD,=W'128' 
	CALL	FDIO,DSFD,X'B8',BPOOL(BIN10),REQFD,CWFD	UNLOAD
	CLEAR	FDEOF	RESET EOF
	MOVE	CWFD,W7 
	MOVE	REQFD,=W'128' 
	CALL	FDIO,DSFD,X'A2',BPOOL(BIN10),REQFD,CWFD	CLOSE 
	MOVE	BIN4,W0 
	DSC1	DSFD,DETACH,BIN4
	PERF	DETPRT
* RELEAS BUFFERS
	PERF	DEPOOL,W6,BIN10,BIN4,STRG10A
	B	DECOOK 
FD560 
	MOVE	STRG10A,HEX00 
	GETTIME	STRG10A
	MOVE	TIME,STRG10A
	EDWRT	DEDSPRT,FFDERR 
	B	FD550

FD570 
	MOVE	STRG10A,HEX00 
	GETTIME	STRG10A
	MOVE	TIME,STRG10A
	EDWRT	DEDSPRT,FFDEND 
	B	FD550
	PEND 
	EJECT
* 
* GETBUF GET TWO CONSECUTIVE BUFFERS
* 
* BUFFER INDEX IN WORK(W13) 
* 

GETBUF	PROC 
	MOVE	BIN10,W3	TOTAL NUMBER OF BUFFERS
	MOVE	BIN4,W3	NO. OF COSECUTIVE BUFFERS 
	PERF	DEPOOL,W2,BIN10,BIN4,STRG10A	GET 3 COSECUTIVE BUFFERS 
	BNOK	GETBU2	NO BUFFERS AVAIBLE 
	MOVE	WORK(W13),BIN10	SAVE BUFFER INDEX 
	MOVE	BIN9,BIN10	LOAD WORKING BUFFER INDEX
	ADD	BIN9,W1	INDEX EDIT BUFFER
	MOVE	BPOOL(BIN10),=X'00'	RESET TRANSMIT BUFFER 
	RET
GETBU2
	RET	2
	PEND 
	EJECT
* 
*  FDRVOL READ VOLUME LABEL AND DISPLAY 
* 
FDRVOL	PROC 
	MOVE	REQFD,=W'128' 
	MOVE	BIN13,BIN10	GET BUFFER INDEX
	ADD	BIN13,W2	ADJUST FOR READ BUFFER
	MOVE	CWFD,W7 
	CALL	FDIO,DSFD,X'91',BPOOL(BIN13),REQFD,CWFD	READ (HDR1) 
	XSTAT	DSFD,BIN4
	MOVE	BIN7,=X'086F' 
	CALL	MASK,BIN4,BIN7
	BNOK	FDRV02
	MOVE	BIN7,=W'66' 
	XCOPY	STR6A,W0,W6,BPOOL(BIN13),BIN7	EXPIRATION DATE
	XCOPY	STR8A,W0,W8,BPOOL(BIN13),W5	GET FILE NAME
	MOVE	BIN7,W22	GET RECORD LENGTH
	XCOPY	STR6B,W1,W5,BPOOL(BIN13),BIN7
	MOVE	RECLGD,STR6B
	MOVE	BIN7,=W'45' 
	XCOPY	STR2A,W0,W2,BPOOL(BIN13),BIN7	GET FD NUMBER
	ATTFMT	FCAS02
	SET	DEPROMPT 
	DISPLAY	0,W1,W0
	THOME
	MOVE	DEBINW3,W1	REQUESTED LENGTH 
	NKI	.NE,DEDSDYKB,STR1A,KEYTAB,DEBINW3,DEBINW2
	RET
FDRV02
	RET	2
	PEND 
	EJECT
* 
*  FDWVOL WRITE VOLUME LABEL
* 


FDWVOL	PROC 
	MOVE	BIN7,=W'66' 
	MOVE	BIN13,BIN10	GET BUFFER INDEX
	ADD	BIN13,W2	ADJUST FOR READ BUFFER
	EDSUB	BPOOL(BIN13),BIN7,FRMVOL2	DATE 
	MOVE	BIN7,W5 
	EDSUB	BPOOL(BIN13),BIN7,FRMVOL1	VOLUME NAME
	MOVE	BIN7,=W'45' 
	EDSUB	BPOOL(BIN13),BIN7,FRMVOL3	FD NUMBER
	MOVE	REQFD,=W'128'	REQUESTED LENGTH
	MOVE	CWFD,W7 
	CALL	FDIO,DSFD,X'95',BPOOL(BIN13),REQFD,CWFD	WRITE (HDR1)
	XSTAT	DSFD,BIN4
	MOVE	BIN7,=X'024F' 
	CALL	MASK,BIN4,BIN7

	BNOK	FDWVO2
	ADD	FDCNT,=D'1'	UPDATE FD NUMBER 
	MOVE	CWFD,=W'26'	HDR RECORD
	MOVE	REQFD,=W'128'	REQUESTED LENGTH
	CALL	FDIO,DSFD,X'B1',BPOOL(BIN13),REQFD,CWFD	REWIND
	RET
FDWVO2
	RET	2
	PEND 
 EJECT
* 
* LSWRIT WRITE BLOCKS 
* 

LSWRIT PROC	FC,TYPE,RETCON
 PERF BAWRIT,FC,TYPE,RETCON 
 RET
 RET 2
 RET 4
 RET 6
 PEND 
	EJECT
* 
*  FDWRIT WRITE BLOCKS
* 


FDWRIT	PROC FC,TYPE,RETCON
FDWR00
	WAIT	DSFD
	XSTAT	DSFD,BIN4
	CALL	TESTB,BIN4,W2	EOE 
	BZ	FDWR10
	RET	4	END OF EXTENT
FDWR10
	MOVE	BIN7,=X'024F' 
	CALL	MASK,BIN4,BIN7
	BERR	FDWR20
	IB	BTYPE,FDWROP,FDWRHD,FDWRDATA,FDWRBAL,FDWRCL 
FDWROP
FDWRCL
	B	FDWR20 
FDWRHD			BATCH HEADER 
	MOVE	BPOOL(BIN10),=X'00'	INITIATE OUTPUT BUFFER
	MOVE	BIN4,RECLGD 
	XCOPY	BPOOL(BIN10),W0,BIN4,BPOOL(BIN9),W0
 PERF FDSEND
 RET
 RET 2
FDWRBAL 
 MOVE BPOOL(BIN10),=X'00' INITIATE OUTPUT BUFFER
 EDIT BPOOL(BIN9),FFD999
 MOVE BIN4,RECLGD 
 XCOPY BPOOL(BIN10),W0,BIN4,BPOOL(BIN9),W0
 PERF FDSEND
 RET
* 
FDWRDATA
 PERF BAWRIT,FC,TYPE,RETCON 
 RET
FDWR20
 RET 2
 RET 4
 RET 6
 B FDWR00 REPEAT
	PEND 
	EJECT
* 
*  FDLOAD LOAD FD PROCEDURE 
* 


FDLOAD	PROC 
	MOVE	CWFD,W7	HDR RECORD
	MOVE	REQFD,=W'128' 
	CALL	FDIO,DSFD,X'B7',BPOOL(BIN10),REQFD,CWFD	LOAD
	XSTAT	DSFD,BIN4
	CALL	TESTB,BIN4,W5	IBM 
	BZ	FDLOA2
	MOVE	BIN7,=X'000F' 
	CALL	MASK,BIN4,BIN7
	BNOK	FDLOA2
	RET
FDLOA2
	MOVE	CWFD,W7	HDR RECORD
	MOVE	REQFD,=W'128' 
	CALL	FDIO,DSFD,X'B8',BPOOL(BIN10),REQFD,CWFD	UNLOAD
	RET	2
	PEND 
	EJECT
* 
* DCRVOL  DISPLAY 
* 
DCRVOL	PROC 
 ATTFMT SNDFRM
	SET	DEPROMPT 
	DISPLAY	0,W1,W0
	THOME
	MOVE	DEBINW3,W1	REQUESTED LENGTH 
	NKI	.NE,DEDSDYKB,STR1A,KEYTAB,DEBINW3,DEBINW2
	RET
DCRV02
	RET	2
	PEND 
 EJECT
* 
* BAWRIT WRITE BLOCKS 
* 

BAWRIT PROC FC,TYPE,RETCON
BAWR00
* BIN16   NO OF CHARS TO SEND 
* BIN4    AVAILABLE SPACE IN OUTPUT BUFFER
* DEBIN3  LENGTH OF HEADER
* BIN15   ACTUAL LENGTH OF INPUT DATA USED
 CMP BIN16,W0 
 BE BAWRRET NODATA=NOWRITE
 MOVE BIN4,RECLGD SET RECORD LENGTH 
 ADD BCDI21(W5),=D'1' ADD 1 TO RECORD NO
 ADD BCDI21(W4),=D'1' ADD 1 TO SEQUENCE NO
 CBE BCDI21(W4),=D'1',BAWR50
*  NOT FIRST TIME (SEQUENCE NO > 1) 
*  COPY HEADER PART, LENGTH IN WORK(W15)
 SUB BIN4,WORK(W15) MAKE ROOM FOR HEADER
 MOVE DEBIN3,WORK(W15) START POINT
 B BAWR55 
BAWR50
*  FIRST OUTPUT RECORD FOR THIS INPUT RECORD
 MOVE DEBIN3,W0 START POINT 
* 
BAWR55
 CBL BIN16,BIN4,BAWR58 ROOM FOR EVERYTING?
			NO ROOM
 TBT SPLITFL,BAWR57 NORMAL SPLIT
			FIND PRECEDING & 
 MOVE DEBIN1,BIN4 START AT END OF RECORD
 MOVE STR2A,=C'&&' LOOK FOR & 
BAWR56
 SUB DEBIN1,W1
 CBNG DEBIN1,W0,BAWR57 NO & 
 MOVE DEBIN2,DEBIN1 
 MATCH BPOOL(BIN9),DEBIN2,W1,STR2A,W0,W1
 BNOK BAWR56 NOT FOUND
 MOVE BIN15,DEBIN2
 B BAWR59 
*NORMAL SPLIT 
BAWR57
 MOVE BIN15,BIN4
 B BAWR59 
* NO OF CHARS, FIT IN AVAILABLE ROOM
BAWR58
 MOVE BIN15,BIN16 SEND ALL CHARS
* 
BAWR59
 XCOPY BPOOL(BIN10),DEBIN3,BIN15,BPOOL(BIN9),W0 COPY FIRST
* MOVE BLANKS INTO REMAINING PART OF OUTPUT BUFFER
* BIN4 = NO OF CHARS IN OUTPUT BUFFER 
 MOVE BIN4,BIN15
 ADD BIN4,DEBIN3 ADD HEADER 
* 
 MOVE DEBIN1,RECLGD 
 SUB DEBIN1,BIN4 NO OF BLANKS 
 XCOPY BPOOL(BIN10),BIN4,DEBIN1,BPOOL(BIN9),BIN16 MOVE BLANKS 
* 
BAWR60
*  INSERT RECORD NO - BCDI21(W5)
 CBE WORK(W17),W0,BAWR70 SKIP IF LENGTH ZERO
 MOVE STRG10A,BCDI21(W5) CONVERT RECORD NO
 MOVE DEBIN1,W10 LENGTH FIELD 
 SUB DEBIN1,WORK(W17) FIND START OF NO
 XCOPY BPOOL(BIN10),WORK(W16),WORK(W17),STRG10A,DEBIN1
* 
BAWR70
*  INSERT SEQUENCE NO  -  BCDI21(W4)
 CBE WORK(W19),W0,BAWR80 SKIPIF LENGTH ZERO 
 MOVE STRG10A,BCDI21(W4) CONVERT SEQUENCE NO
 MOVE DEBIN1,W10 LENGTH FIELD 
 SUB DEBIN1,WORK(W19) FIELD START OF NO 
 XCOPY BPOOL(BIN10),WORK(W18),WORK(W19),STRG10A,DEBIN1
* 
BAWR80
* HANDLE END OF RECORD
 CBG BIN16,BIN15,BAWR100 NO ROOM, CONT
* INSERT EOR
* 
 CBE FC,W6,BAWR85 FD
 CBE FC,W1,BAWR85 DC
 B BAWRSEND 
BAWR85
 MOVE STR2A,=X'7F' EOR CHAR 
	XCOPY	BPOOL(BIN10),BIN4,W1,STR2A,W1 INSERT EOR 
 ADD BIN4,W1
* FLOPPY DISK 
 B BAWRSEND 
* 
BAWR100 
* 
 IB FC,		C
		DCWR105,	SEND BATCH	C 
		BAWR105,	DUMMY	C
		BAWR105,	DUMMY	C
		BAWR105,	DUMMY	C
		BAWR105,	DUMMY	C
		FDWR105,	FLOPPY CONVERSION	C
		BAWR105,	DUMMY	C
		BAWR105,	DUMMY	C
		LSWR105	LISTING 
 B BAWR105
DCWR105 
 PERF DCSEND,FC,TYPE,RETCON 
 B BAWR105
* 
FDWR105 
*  CHECK IF CONTINUATION CHAR NEEDED
 TBF BCONT,FDWR150
*  CONTINUATION 
 MOVE DEBIN1,RECLGD 
 CBNE BIN4,DEBIN1,FDWR140 
 SUB BIN4,W1
 SUB BIN15,W1 
FDWR140 
	MOVE STR2A,=X'21' CONTINUATION MARK
	XCOPY	BPOOL(BIN10),BIN4,W1,STR2A,W1
FDWR150 
 PERF FDSEND
 B BAWR105
* 
LSWR105 
 PERF LSSEND
 B BAWR105
* 
BAWR105 
 MOVE CWFD,W0 
	DELETE BPOOL(BIN9),CWFD,BIN15 DELETE WHAT IS SEND
 SUB BIN16,BIN15
 MOVE BIN13,BIN16 
 CMP VSEIND,W1
 BE BAWR110 WRITE RESET OF BUFFER 
 RET 6
* 
BAWR110			REPEAT
 IB FC,		C
		BAWR111,	SEND BATCH	C 
		BAWR111,	DUMMY	C
		BAWR111,	DUMMY	C
		BAWR111,	DUMMY	C
		BAWR111,	DUMMY	C
		BAWR112,	FD	C 
		BAWR111,	DUMMY	C
		BAWR111,	DUMMY	C
		BAWR111	LISTE 
* 
BAWR111			REPEAT INSIDE 
 B BAWR00 
* 
BAWR112			REPEAT OUTSIDE
 RET 8
* 
* 
* 
BAWRSEND
* 
 IB FC,		C
		DCWR205,	SEND BATCH	C 
		BAWR205,	DUMMY	C
		BAWR205,	DUMMY	C
		BAWR205,	DUMMY	C
		BAWR205,	DUMMY	C
		FDWR205,	FLOPPY CONVERSION	C
		BAWR205,	DUMMY	C
		BAWR205,	DUMMY	C
		LSWR205	LISTING 
 B BAWR205
DCWR205 
 PERF DCSEND,FC,TYPE,RETCON 
 B BAWR205
 B BAWRERR
* 
FDWR205 
 PERF FDSEND
 B BAWR205
 B BAWRERR
* 
LSWR205 
 PERF LSSEND
 B BAWR205
 B BAWRERR
* 
BAWR205 
BAWRRET 
 RET
BAWRERR 
 RET 2
 PEND 
 EJECT
LSSEND PROC 
 INSRT BPOOL(BIN10),W0,W2,INSERT,W0 
 MOVE DEBIN1,RECLGD 
 ADD DEBIN1,W2
 WRITE DEDSPRT,BPOOL(BIN10),DEBIN1
 DLETE BPOOL(BIN10),W0,W2 
 RET
 PEND 
 EJECT
FDSEND PROC 
	MOVE	REQFD,=W'128' 
	MOVE CWFD,W0 
	CALL FDIO,DSFD,X'06',BPOOL(BIN10),REQFD,CWFD 
 RET
 PEND 
	EJECT
* 
*  DCWRIT WRITE BLOCKS
* 


DCWRIT	PROC FC,TYPE,RETCON
* 
DCWR00
 CBNE TYPE,W4,DCWR010 
 MOVE BIN4,W0 
 EDSUB BPOOL(BIN10),BIN4,FDC999 
 PERF DCSEND,FC,TYPE,RETCON 
 RET
 RET 2
DCWR010 
 MOVE BIN4,=W'600'
 DSC1 .NW,DSDCFD,STIMO,BIN4 
* 
 PERF BAWRIT,FC,TYPE,RETCON 
 RET
DCWRERR 
 RET 2
 RET 4
 RET 6
 B DCWR00 REPEAT
	PEND 
	EJECT
* 
*  CONVERSI0N OF DATA ENTRY RECORDS TO BPOOL BUFFER 
*  RET   =RECORD CONVERTED
*  RET 2 =TRANSMIT
*  RET 4 =CUMPULSORY FIELD EMPTHY 
*  RET 6 =BCD-FIELD OVERFLOW
*  RET 8 =EDIT BUFFER OVERFLOW
* 
*  APPL =     FIELD INTO BUFFER 
*  APPL =  1  FIELD INTO BUFFER, TRANSMIT BLOCK 
*  APPL =  2  NO TRANSMIT FIELD 
*  APPL =  3  SUPPRESS LEADING ZEROES (IF HEADER:SETR GENEREL)
*  APPL =  4  LENGTH OF FIELD=MAXL (IF HEADER: SET GENERAL) 
*           LISTE: ALWAYS SET 
*  FOLLOWING APPL ONLY USED IN BATCHHEADER
*  APPL = 13  EOR-CHAR AS END OF EACH RECORD
*           LISTE: ALWAYS CLEAR 
*  APPL = 14  CONT-CHAR IN END OF EACH DATA RECORD WHICH IS CONTINUED 
*              LISTE: ALWAYS CLEAR
*  APPL = 15  INSERT BACHNAME IN THIS FIELD 
*  APPL = 16  FIELDS (STARTING WITH &) ARE NOT SPLIT
*              LSTE: ALWAYS CLEAR 
* 
*  APPL = 1XXX   XXX=LENGTH OF RECORD HEADER
*  APPL = 2XXX   THIS FIELD IS THE RECORD NUMBER FIELD
*  APPL = 3XXX   THIS FIELD IS THE CONTINUATION SEQUENCE NUMBER FIELD 
* 
*  BIN4 = WORK ITEM 
*  BIN7 = MAX LENGTH
*  BIN8 = FIELD NUMBER
*  BIN9 = INDEX TO EDIT BUFFER
*  BIN13= DELETE START POINTER
*  BIN16= EDIT POINTER
* 
*  BIN15 = NO OF CHAR INSERTED IN OUTPUT RECORD 
*  STRG10A = WORK STRING FOR DATE/TIME/CONVERTED BCD
*  WORK(W15) = LENGTH OF HEADER 
*  WORK(W16) = RECORD NUMBER POSITION 
*  WORK(W17) = RECORD NUMBER LENGTH 
*  WORK(W18) = CONTINUATION SEQUENCE POSITION 
*  WORD(W19) = CONTINUATION SEQUENCE LENGTH 
*  BCDI21(W4) = CONTINUATION SEQUENCE NUMBER
*  BCDI21(W5) = RECORD NUMBER 
* 
CONV PROC CONT,FC 
	CBG CONT,W0,CON100 
CON090
	MOVE	BPOOL(BIN9),=X'20'
 MOVE BCDI21(W4),=D'0' RESET SEQUENCE NO
	MOVE	BIN13,W0	RESET DELETE POINTER 
	MOVE	BIN16,BIN13	LOAD EDIT POINTER 
CON100
	CLEAR FSUPR
 TBF BSUPR,CON105 
 SET FSUPR
CON105
	ADD	BIN8,W1	UPDATE FIELD NUMBER
	CALL	GETFWD,BIN7,2,BIN8,BIN4 
	CALL	ADJUST,BIN7 
	BOK	CON130 
	BN	CONRET	ALL FIELD DONE 
	B	CONER1	COMPULSORY FIELD EMPTHY 
CON130
	GETCTL	0,VSEIND	GET APPL 
* 
 CBL VSEIND,=W'1000',CON131 NORMAL APPL VALUE 
 CBL VSEIND,=W'2000',APL1000 HANDLE RECORD HEADER 
 CBL VSEIND,=W'3000',APL2000 HANDLE RECORD NO 
 CBL VSEIND,=W'4000',APL3000 HANDLE SEQUENCE NO 
 MOVE VSEIND,W2 CLEAR ERROR APPL
 B CON131 
* 
*  HANDLE RECORD HEADER:
*  APPL=1000, WHERE XXX=LENGTH OF RECORD HEADER 
APL1000 
 SUB VSEIND,=W'1000'
 MOVE WORK(W15),VSEIND WORK(W15) = LENGTH OF HEADER 
 SET FIRSTFL FIRST TIME 
 B CON100 
* 
*  HANDLE POSITION AND LENGTH OF RECORD NO
APL2000 
 MOVE WORK(W16),BIN16 SET START POS OF RECORD NO
 GETCTL 1,BIN7 GET MAXL OF FIELD
 MOVE WORK(W17),BIN7 SET LENGTH OF RECORD NO
 SUB VSEIND,=W'2000' ADJUST APPL VALUE
 B CON131 FURTHER HANDLING
* 
*  HANDLE POSITION AND LENGTH OF SEQUENCE NO
APL3000 
 MOVE WORK(W18),BIN16 SET START POSITION OF SEQUENCE NO 
 GETCTL 1,BIN7 GET MAXL OF FIELD
 MOVE WORK(W19),BIN7 SET LENGTH OF SEQUENCE NO
 SUB VSEIND,=W'3000' ADJUST APPL VALUE
 B CON131 FURTHER HANDLING
* 
* 
CON131
* 
	CBNE	BTYPE,W3,CON150 
*     DATA RECORD 
 IB VSEIND,CON132,CON100,CON135,CON140
CON132
 B CON190 
* 
CON135
*  SUPPRESS LEADING ZEROES
 SET FSUPR
 B CON190 
* 
CON140
*  NO SUPPRESSION 
 CLEAR FSUPR
 B CON190 
* 
* 
CON150
*  IN HEADER, SET GENERAL CONDITIONS
 IB VSEIND,CON152,CON100,CON155,CON160,CON152,		C 
		CON152,CON152,CON152,CON152,CON152,		C
		CON152,CON152,CON165,CON170,CON175,CON180 
CON152
 B CON190 
* 
CON155
*   GENERAL SUPPRESS LEADING ZEROES 
 SET BSUPR
 B CON100 
* 
CON160
*  GENERAL NO SUPPRESSION 
 CBE W9,FC,CON100 LISTE: ALWAYS SET 
	CLEAR BSUPR
 B CON100 
* 
CON165
* EOR CHARACTER 
 B CON100 
* 
CON170
* CONTINUATION CHARACTER
 CBE W9,FC,CON100 LISTE: ALWAYS CLEAR 
 SET BCONT INDICATE CONT. CHAR NEEDED 
 B CON100 
* 
CON175
*  INSERT BATCH NAME
 MOVE BIN7,W6 
 MOVE BIN4,W188 
 SUB BIN4,BIN7 LENGTH FIELD 
 SUB BIN4,BIN16 
 EDSUB BPOOL(BIN9),BIN16,FMTBATCH INSERT BATCHNAME
 B CON260 
* 
CON180
* FIELDS (STARTING WITH &) ARE NOT SPLIT
 CLEAR SPLITFL NOT NORMAL SPLIT 
 B CON100 
* 
* 

CON190
 CBE W9,FC,CON195 LISTE: ALL FIELDS INCLUDED
 TBF FSUPR,CON195 
 CALL EMPTYT,:FMTITEM TEST IF EMPTY 
 BNZ CON280 EMPTY, IGNORE FIELD 
CON195
	GETCTL	1,BIN7	GET MAXL 
	TSTCTL	0	TEST - ALPHA
	BZ	CON200	BCD

* ALPHA 

	MOVE	BIN4,W188	GET EDIT BUFFER LENGTH
	SUB	BIN4,BIN7	ADJUST WITH MAX LENGTH 
	SUB	BIN4,BIN16	ADJUST WITH EDIT POINTER
	BN	CONER3
	EDSUB	BPOOL(BIN9),BIN16,FRMALP 
	B	CON260 

	EJECT
* BCD 

CON200
	CBG	BIN7,W21,CONER2	BCD-OVERFLOW 
	MOVE	BIN4,W188	GET EDIT BUFFER LENGTH
	SUB	BIN4,BIN7	ADJUST WITH MAX LENGTH 
	SUB	BIN4,BIN16	ADJUST WITH EDIT POINTER
	BN	CONER3
	GETCTL	3,BIN4	GET SCHK 
	CALL	TESTB,BIN4,W15	SIGN 
	BZ	CON220	NO 
 TBF FSUPR,CON210 
 CBE W9,FC,CON205 
 EDSUB BPOOL(BIN9),BIN16,FRMTCS 
 MOVE BIN13,BIN16 
 B CON280 
CON205			IF LISTE 
 EDSUB BPOOL(BIN9),BIN16,FRMZCS EDIT 21 DIGITS
 B CON215 
CON210
 EDSUB BPOOL(BIN9),BIN16,FRMBCS EDIT 21 DIGITS
CON215
 MOVE BIN4,W22 SET PICTURE LENGTH 
 ADD BIN7,W1 ADJUST POINTER FOR SIGN
 B CON250 
CON220
 TBF FSUPR,CON230 
 CBE W9,FC,CON225 
 EDSUB BPOOL(BIN9),BIN16,FRMTCD 
 MOVE BIN13,BIN16 
 B CON280 
CON225			IF LISTE 
 EDSUB BPOOL(BIN9),BIN16,FRMZCD 
 B CON235 
CON230
 EDSUB BPOOL(BIN9),BIN16,FRMBCD 
CON235
 MOVE BIN4,W21 SET PICUTR LENGTH
CON250
	SUB	BIN4,BIN7	SET DELETE LENGTH
	DELETE	BPOOL(BIN9),BIN13,BIN4	DELETE ADDED ZEROES
CON260
	ADD	BIN13,BIN7	ADJUST DELETE/EDIT POINTER
	MOVE	BIN16,BIN13	LOAD EDIT POINTER 
CON280
 CBNE W9,FC,CON290
 EDSUB BPOOL(BIN9),BIN16,FRMFILL LISTE: INSERT FILLER 
 TBF FIRSTFL,CON285 NOT FIRST HEADER
 CBNE BTYPE,W3,CON285 NOT NORMAL TRANS
 CBL BIN16,WORK(W15),CON283 
 CLEAR FIRSTFL OUT OF FIRST HEADER
CON283			IN FIRST HEADER
 ADD WORK(W15),W1 
CON285
 MOVE BIN13,BIN16 
CON290
	CBE	VSEIND,W1,CONTRM	APPL =1 TRANSM
 MOVE BIN4,RECLGD 
 CBG BIN16,BIN4,CONTRM
	B	CON100 
	EJECT

CONRET	RET		ALL DONE
CONTRM	RET	2	WRITE/TRANSMIT BLOCK 
CONER1	RET	4	CUMPULSORY FIELD EMPTHY
CONER2	RET	6	BCD FIELD OVERFLOW 
CONER3	RET	8	EDIT BUFFER OVERFLOW 
	PEND 
	EJECT
* 
* FORMATS 
* 
FRMFILL FRMT
 FILLR ' ',1
 FMEND

FCOUNT FRMT 
	FTEXT	' 1' 
	FEOR		NEW PAGE 
 FILLR ' ',2
 FILLR '*',10 
 FTEXT 'NUMMER: ' 
 FMEL '9999',NUMBER 
 FEOR 
 FILLR ' ',2
	FEOR 
 FMEND

FRMVOL1	FRMT
 FCOPY STR8A
	FMEND

FRMVOL2	FRMT
	FMEL	'999999',DATE 
	FMEND

FRMVOL3	FRMT
	FMEL	'99',FDCNT
	FMEND

FBATC3	FRMT 
	FLINK	FBATCH 
	FTEXT	'EJ GODKENDT'
	FEOR 
	FMEND

FBATCH	FRMT 
	FNL
	FEOR 
	FNL
	FTEXT	'JOBNAME: '
	FCOPY	JOBNAME
	FILLR	' ',4
	FTEXT	'BATCHNAME: '
	FCOPY	BATCH
	FILLR	' ',4
	FMEND

FMTBATCH FRMT 
 FCOPY BATCH
 FMEND

FFDHDR	FRMT 
	FNL
	FEOR 
	FNL
 FCOPY ='FLOPPY DISC SKRIVNING' 
	FLINK	HDR
	FMEND

FFDEND	FRMT 
	FNL
	FEOR 
	FNL
 FCOPY ='FLOPPY DISC SKRIVNING' 
	FCOPY	=' KLAR' 
	FLINK	HDR
	FEOR 
	FNL
	FMEND

FFDERR	FRMT 
	FNL
	FEOR 
	FNL
 FCOPY ='FLOPPY DISC SKRIVNING' 
	FCOPY	=' AFBRYDES' 
	FLINK	HDR
	FEOR 
	FNL
	FMEND

FLSHDR FRMT 
 FNL
 FEOR 
 FNL
 FCOPY ='LISTNING'
 FLINK HDR
 FMEND

FLSEND FRMT 
 FNL
 FEOR 
 FNL
 FCOPY ='LISTNING'
 FCOPY =' KLAR' 
 FLINK HDR
 FEOR 
 FNL
 FMEND

FLSERR FRMT 
 FNL
 FEOR 
 FNL
 FCOPY ='LISTNING'
 FCOPY =' AFBRYDES' 
 FLINK HDR
 FEOR 
 FNL
 FMEND

HDR	FRMT
	FILLR	' ',4
	FTEXT	'DATO:  '
	FMEL	'99-99-99',DATE 
	FILLR	' ',4
	FTEXT	'TID: '
	FMEL	'99-99-99',TIME 
	FEOR 
	FNL
 FTEXT 'IND: '
 FMEL '99999',NUMBER
 FTEXT '  UD: ' 
 FMEL '99999',BCDI21(W5)
 FEOR 
 FNL
	FMEND

FCAS02	FRMT 
	FSL
	FCOPY	=C'DEVICE' 
	FILLR	':',1
	FINP	9 
	FCOPY	STSAVE(W3) 
	FTAB	20
	FCOPY	=C'FILE' 
	FILLR	'-',1
	FCOPY	=C'NAME' 
	FILLR	':',1
	FINP	32
 FCOPY STR8B
	FNL
	FCOPY	=C'EXPIRATION DATE:' 
	FINP	32
	FCOPY	STR6A
	FNL
	FCOPY	=C'OLD DATA SET IDENTIFIER:' 
	FINP	32
	FCOPY	STR8A
	FNL
	FCOPY	=C'OLD VOLUME SEQUENCE NO:'
	FINP	32
	FCOPY	STR2A
	FNL
	FKI	1
	FCOPY	HEX00
	FMEND

FFD999	FRMT 
 FTEXT =C'SLUTD'
 FMEL '99999',BCDI21(W5)
	FILLR	' ',60 
	FILLR	' ',62 
	FMEND

FRMALP	FRMT 
	FCOPY	:FMTITEM 
	FMEND

FRMTCD FRMT 
 FMEL 'TTTTTTTTTTTTTTTTTTTT9',:FMTITEM
 FMEND

FRMTCS FRMT 
 FMEL 'TTTTTTTTTTTTTTTTTTTT9-',:FMTITEM 
 FMEND

FRMZCD FRMT 
 FMEL 'ZZZZZZZZZZZZZZZZZZZZ9',:FMTITEM
 FMEND

FRMZCS FRMT 
 FMEL 'ZZZZZZZZZZZZZZZZZZZZ9-',:FMTITEM 
 FMEND

FRMBCD	FRMT 
	FMEL	'999999999999999999999',:FMTITEM
	FMEND

FRMBCS	FRMT 
	FMEL	'999999999999999999999-',:FMTITEM 
	FMEND
SNDFRM FRMT 
 FSL
 FCOPY =C'DATATRANSMISSION' 
 FILLR '?',1
 FNL
 FNL
 FMEND
* 
SNDFRM2 FRMT
 FILLR ' ',2
 FCOPY =X'272020' 
 FMEND
* 
FDC999 FRMT 
 FTEXT =C'SLUTD'
 FMEL '99999',BCDI21(W5)
 FMEND
* 
FDCHDR FRMT 
 FNL
 FEOR 
 FNL
 FCOPY =C'BATCH TRANSMISSION' 
 FLINK HDR
 FMEND
* 
FDCEND FRMT 
 FNL
 FEOR 
 FNL
 FCOPY ='BATCH TRANSMISSION'
 FCOPY =C' KLAR'
 FLINK HDR
 FMEND
* 
FDCERR FRMT 
 FNL
 FEOR 
 FNL
 FCOPY ='BATCH TRANSMISSION'
 FCOPY =' AFBRYDES' 
 FLINK HDR
 FEOR 
 FNL
 FMEND
* 
* 

	END

Full view