Trailing-Edge
-
PDP-10 Archives
-
BB-R775B-BM
-
documentation/jtserv.cbl
There are 22 other files named jtserv.cbl in the archive. Click here to see a list.
IDENTIFICATION DIVISION.
PROGRAM-ID.
JTSERV.
AUTHOR.
DIGITAL EQUIPMENT CORPORATION.
COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1982, 1983.
This software is furnished under a license and may be used and
copied only in accordance with the terms of such license and
with the inclusion of the above copyright notice. This
software or any other copies thereof may not be provided or
otherwise made available to any other person. No title to and
ownership of the software is hereby transferred.
The information in this software is subject to change without
notice and should not be construed as a commitment by Digital
Equipment Corporation.
Digital assumes no responsibility for the use or reliability
of its software on equipment which is not supplied by Digital.
This program is a portion of the DIL Load Test sample
application. It is the server program, which is accessed from
the remote programs: JTTERM.CBL on the 20 and JTTERM.COB on
the VAX.
INSTALLATION.
DEC-MARLBOROUGH.
DATE-WRITTEN.
JUNE 24, 1982.
* Facility: DIL-SAMPLE
*
* Edit History:
*
* new_version (1, 0)
*
* Edit (%O'1', '29-Oct-82', 'Sandy Clemens')
* %( Clean up DIL sample application and place in library.
* Files: JTSERV.CBL (NEW), JTTERM.CBL (NEW), IDXINI.CBL (NEW),
* JTTERM.VAX-COB (NEW), JTVRPT.CBL (NEW), PROCES.MAC (NEW) )%
*
* Edit (%O'2', '06-DEC-82', 'Sandy Clemens')
* %( Put correct status code handling into all sample application
* programs. Add the use of VMS system service calls to vax
* program. General clean up.
* Files: JTSERV.CBL (NEW), JTTERM.CBL (NEW), JTTERM.VAX-COB (NEW),
* JTVRPT.CBL (NEW) )%
*
* Edit (%O'3', '04-Jan-83', 'Sandy Clemens')
* %( Add SYS: to the interface files COPY statement for the 10/20
* programs. Add SYS$LIBRARY for the VAX program.
* Files: JTSERV.CBL, JTTERM.CBL, JTTERM.VAX-COB,
* JTVRPT.CBL )%
*
* Edit (%O'4', '06-Jan-83', 'Sandy Clemens')
* %( Fix code bug in server that caused update information to
* disappear. File: JTSERV.CBL )%
*
* Edit (%O'6', '20-Jan-83', 'Sandy Clemens')
* %( Add copyright notice for 1983. Files: DSHST.TXT, IDXINI.CBL,
* JTSERV.CBL, JTTERM.CBL, JTTERM.VAX-COB, JTVRPT.CBL, PROCES.MAC )%
*
* Edit (%O'7', '24-Jan-83', 'Sandy Clemens')
* %( Add liability waiver to copyright notice. Files: DSHST.TXT,
* IDXINI.CBL, JTSERV.CBL, JTTERM.CBL, JTTERM.VAX-COB, JTVRPT.CBL,
* PROCES.MAC )%
*
* Edit (%O'10', '25-Jan-83', 'Sandy Clemens')
* %( Standardize "Author" entry. Files: DSHST.TXT, IDXINI.CBL,
* JTSERV.CBL, JTTERM.CBL, JTTERM.VAX-COB, JTVRPT.CBL )%
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.
DECSYSTEM-20.
OBJECT-COMPUTER.
DECSYSTEM-20.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT DUMMY ASSIGN TO DSK
ORGANIZATION IS RMS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS DUMMY-REC.
SELECT JT-FIL ASSIGN TO DSK
ORGANIZATION IS RMS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS JT-BADGE-NUM.
DATA DIVISION.
FILE SECTION.
FD DUMMY LABEL RECORDS ARE STANDARD
VALUE OF IDENTIFICATION IS "DUMMY FIL".
01 DUMMY-REC PIC X.
FD JT-FIL LABEL RECORDS ARE STANDARD
VALUE OF IDENTIFICATION IS "JOBTICRMS".
01 JT-REC.
05 JT-NAME PIC X(30).
05 JT-BADGE-NUM PIC 9(7).
05 JT-COST-CENTER PIC X(4).
05 JT-WK-END-DATE PIC 9(6).
05 JT-TOTAL-HRS COMP-1.
05 JT-DETAIL-LINES OCCURS 10.
10 JT-ACTIV-CD PIC X(4).
10 JT-PL-NUM PIC X(4).
10 JT-DIS-NUM PIC 9(5) COMP.
10 JT-MFG-NUM PIC 9(5) COMP.
10 JT-HOURS COMP-1.
10 JT-OP-CD PIC X(4).
WORKING-STORAGE SECTION.
***** message records *********************************************************
*01 MESSAGE-REC PIC X(6).
*01 MESSAGE-STUFF REDEFINES MESSAGE-REC.
01 MESSAGE-STUFF.
05 MESSAGE-DATA PIC S9(10) COMP.
***** badge-or-close-request records ******************************************
***** from the vax
01 BDGORCLS-REC.
05 BDGORCLS-WORD PIC S9(10) COMP OCCURS 3.
***** from the 20
01 BADGE-REC.
05 REQTYP1 PIC S9(10) COMP.
05 BADGE-NUM PIC S9(7).
05 FILLER PIC X(5).
***** data-or-stop-update records ********************************************
***** from the vax
01 REMOTE-DATA-REC.
05 REMOTE-DATA-WORD PIC S9(10) COMP OCCURS 65.
***** from the 20
01 DATA-RECORD.
05 REQTYP2 PIC S9(10) COMP.
05 WS-JOB-TICKET.
10 WS-NAME PIC X(30).
10 WS-COST-CENTER PIC X(4).
10 WS-WK-END-DATE PIC 9(6).
10 WS-TOTAL-HRS COMP-1.
10 WS-COUNT PIC S9(10) COMP.
10 WS-DETAIL-LINES OCCURS 10.
15 WS-ACTIV-CD PIC X(4).
15 WS-PL-NUM PIC X(4).
15 WS-DIS-NUM PIC 9(5) COMP.
15 WS-MFG-NUM PIC 9(5) COMP.
15 WS-HOURS COMP-1.
15 WS-OP-CD PIC X(4).
***** table of link status names **********************************************
01 NETWORK-LINK-STATUS-TABLE.
05 NETLN-ENTRY OCCURS 4 TO 6 DEPENDING ON SUB2 INDEXED BY NETIDX.
10 LINK-SYS-ORIG PIC S9(10) COMP.
* system or origin of remote program, 1=DEC10/DEC20, 2=Vax
10 NETLN PIC S9(10) COMP.
* network logical name assigned by dit routine NFOPP.
10 LINK-STATE PIC S9(10) COMP.
* link state (see net-link-status below) used to keep track of
* what each link is doing, so that more than one link can be
* serviced at a time.
10 LINK-BADGE-NUM PIC S9(7).
* keep track of which badge number this link is interested in
***** table of link information ***********************************************
01 NET-LINK-STATUS.
* link-state (above contains the relative state of a network
* link at any given time. A list of possible link states and
* their names is given below in the net-link-status table.
05 UNOP PIC S9(10) COMP VALUE 0.
* link is unopened, code is 0
05 O-PASS PIC S9(10) COMP VALUE 1.
* link is passive open, code is 1
05 A-BDGORCLS PIC S9(10) COMP VALUE 2.
* link is active open and awaiting either a disconnect request
* or another badge number, code is 2
05 A-ABORDAT PIC S9(10) COMP VALUE 3.
* link is active open and awaiting either the remaining data or
* a request to quit and not update the record, code is 3
05 A-WAIT PIC S9(10) COMP VALUE 4.
* link is active open and waiting for data to be processed by
* the server, code is 4
05 A-UNKN PIC S9(10) COMP VALUE 5.
* link is active open and an unknown event has occured!, code is 5
05 P-UNKN PIC S9(10) COMP VALUE 6.
* link is passive open and an unknown event has occured!, code is 6
05 A-ID PIC S9(10) COMP VALUE 7.
* link is active open and waiting to be sent the id record
***** table of message values sent between server and remote ******************
01 MESSAGE-DATA-VALUES.
* This table lists the possible values that can be moved into
* the message-data field which is used to send messages between
* the server and the remote programs. All of the programs use
* these values as their message codes or status returns.
05 B-EXIST PIC S9(10) COMP VALUE 0.
* badge number presently exits in ISAM file
05 B-NOTEXIST PIC S9(10) COMP VALUE 1.
* badge number presently does no exist in ISAM file.
05 REQ-ERROR PIC S9(10) COMP VALUE 2.
* error in request type, not recognized by server
05 UPDA-OK PIC S9(10) COMP VALUE 3.
* update finished allright.
05 UPDA-ERR PIC S9(10) COMP VALUE 4.
* error in update, update aborted
05 UPDA-ABORT PIC S9(10) COMP VALUE 5.
* the update was aborted (as requested, hopefully!)
***** dil call return code parameters *****************************************
01 DILINI-PARAMETERS.
05 DIL-INIT-STATUS PIC S9(9) COMP.
05 DIL-STATUS PIC S9(9) COMP.
05 DIL-SEVERITY PIC S9(9) COMP.
05 DIL-MESSAGE PIC S9(9) COMP.
01 RET-NETLN PIC S9(10) COMP.
***** dil interface files *****************************************************
01 COPY-INTER-FILES.
COPY DIL OF "SYS:DIL.LIB".
COPY DIT OF "SYS:DIL.LIB".
COPY DIX OF "SYS:DIL.LIB".
***** DCR call parameters*****************************************************
01 FFDS.
05 RQ1-SRC-DSCR PIC S9(10) COMP OCCURS 3.
05 RQ1-DST-DSCR PIC S9(10) COMP OCCURS 3.
05 RQ2-SRC-DSCR PIC S9(10) COMP OCCURS 3.
05 RQ2-DST-DSCR PIC S9(10) COMP OCCURS 3.
05 BDG-SRC-DSCR PIC S9(10) COMP OCCURS 3.
05 BDG-DST-DSCR PIC S9(10) COMP OCCURS 3.
05 NAM-SRC-DSCR PIC S9(10) COMP OCCURS 3.
05 NAM-DST-DSCR PIC S9(10) COMP OCCURS 3.
05 CC-SRC-DSCR PIC S9(10) COMP OCCURS 3.
05 CC-DST-DSCR PIC S9(10) COMP OCCURS 3.
05 WK-SRC-DSCR PIC S9(10) COMP OCCURS 3.
05 WK-DST-DSCR PIC S9(10) COMP OCCURS 3.
05 TOT-SRC-DSCR PIC S9(10) COMP OCCURS 3.
05 TOT-DST-DSCR PIC S9(10) COMP OCCURS 3.
05 CNT-SRC-DSCR PIC S9(10) COMP OCCURS 3.
05 CNT-DST-DSCR PIC S9(10) COMP OCCURS 3.
05 DETAIL-LINE-FLD-FFDS OCCURS 10.
10 ACT-SRC-DSCR PIC S9(10) COMP OCCURS 3.
10 ACT-DST-DSCR PIC S9(10) COMP OCCURS 3.
10 PLN-SRC-DSCR PIC S9(10) COMP OCCURS 3.
10 PLN-DST-DSCR PIC S9(10) COMP OCCURS 3.
10 DIS-SRC-DSCR PIC S9(10) COMP OCCURS 3.
10 DIS-DST-DSCR PIC S9(10) COMP OCCURS 3.
10 MNF-SRC-DSCR PIC S9(10) COMP OCCURS 3.
10 MNF-DST-DSCR PIC S9(10) COMP OCCURS 3.
10 HRS-SRC-DSCR PIC S9(10) COMP OCCURS 3.
10 HRS-DST-DSCR PIC S9(10) COMP OCCURS 3.
10 OPC-SRC-DSCR PIC S9(10) COMP OCCURS 3.
10 OPC-DST-DSCR PIC S9(10) COMP OCCURS 3.
01 BYTE-SIZES.
05 BYTSZ6 PIC S9(10) COMP VALUE 6.
05 BYTSZ8 PIC S9(10) COMP VALUE 8.
05 BYTSZ36 PIC S9(10) COMP VALUE 36.
01 SRC-BYO PIC S9(10) COMP.
01 DST-BYO PIC S9(10) COMP.
01 SRC-BIO PIC S9(10) COMP VALUE 0.
01 DST-BIO PIC S9(10) COMP VALUE 0.
***** dit call parameters *****************************************************
01 OBJID PIC X(16) VALUE "135" USAGE IS DISPLAY-7.
01 DESCR PIC X(16) VALUE SPACES USAGE IS DISPLAY-7.
01 TASKNAME PIC X(16) VALUE SPACES USAGE IS DISPLAY-7.
01 NUMOPCHAR PIC S9(10) COMP VALUE 0.
01 OPCHAR PIC X(16) VALUE SPACES USAGE IS DISPLAY-7.
01 MSG-BYTSIZ PIC S9(10) COMP.
01 MSGLEN PIC S9(10) COMP.
01 SYNCH-DISCONN PIC S9(10) COMP VALUE 0.
01 USER-ABORT-DISCONN PIC S9(10) COMP VALUE 9.
01 DISCONN-TYPE PIC S9(10) COMP.
01 WHEEL-CHK PIC S9(10) COMP.
***** flags, subscripts, ******************************************************
01 BDG-FLAG PIC S9(10) COMP.
01 BIT-REMAINDER PIC S9(10) COMP.
77 SUB PIC S9(5) COMP.
77 SUB2 PIC S9(5) COMP.
77 DL-SUB PIC S9(5) COMP.
*******************************************************************************
PROCEDURE DIVISION.
*******************************************************************************
THE-TOP SECTION.
SET-STUFF-UP.
* open a dummy file to fool RMS into working!
OPEN OUTPUT DUMMY.
CLOSE DUMMY.
PERFORM SET-UP.
MAIN-STUFF.
PERFORM KEEP-LINKS-OPEN.
PERFORM WAIT-FOR-NETWORK-EVENT.
PERFORM WHAT-HAPPENED.
* done with event, go back and wait for the next event to occur
GO TO MAIN-STUFF.
*******************************************************************************
SET-UP SECTION.
*******************************************************************************
CHECK-FOR-WHEEL.
* if the process does not have wheel enabled then it can not
* open more than 4 network links... so check to see if wheel is
* enabled and then set sub2 which is the number of links to open
* (four for non-wheel and six for wheel).
ENTER MACRO PROCES USING WHEEL-CHK.
IF WHEEL-CHK = 1 SET SUB2 TO 6
ELSE IF WHEEL-CHK = 0 SET SUB2 TO 4
ELSE DISPLAY "%Invalid return from wheel check subroutine. "
DISPLAY " Process halted"
STOP RUN.
SET-UP-DILINI.
* set up dilini in order to have it intercept the status returns
* for each of the various calls to dil routines
ENTER MACRO DILINI USING DIL-INIT-STATUS, DIL-STATUS,
DIL-MESSAGE, DIL-SEVERITY.
IF DIL-INIT-STATUS NOT = 1
DISPLAY "%Invalid return from DILINI call. Process halted."
STOP RUN.
SET-UP-FFDS.
* if data comes from a vax, it will have to be converted to
* Tops-20 format... make the field descriptors to facilitate
* the conversions
PERFORM MAKE-FFDS THRU MFFDS-EXIT.
*******************************************************************************
MAIN SECTION.
*******************************************************************************
KEEP-LINKS-OPEN.
* keep links open for connections from remote users
PERFORM CHECK-ON-LINKS THRU CHECK-EXIT
VARYING NETIDX FROM 1 BY 1 UNTIL NETIDX > SUB2.
CHECK-ON-LINKS.
* this paragraph is called from the Main Section and is used to
* keep checking on the state of all the links. if any of the
* links is unopened, then reopen it
IF LINK-STATE(NETIDX) = UNOP PERFORM OPEN-ONE-PASSIVE-LINK THRU OPEN-EXIT.
CHECK-EXIT.
OPEN-ONE-PASSIVE-LINK.
* this paragraph is called from the Check-On-Links paragraph of
* the Main Section. if it is discovered that a link is closed
* at any time then come to this paragraph and open that link
* back up.
ENTER MACRO NFOPP USING NETLN(NETIDX), OBJID, DESCR, TASKNAME, DIT-WAIT-NO.
CHECK-NFOPP-STATUS.
IF DIL-SEVERITY = STS-K-SUCCESS
DISPLAY " => Link " NETIDX " is open."
MOVE O-PASS TO LINK-STATE(NETIDX)
ELSE
PERFORM DIT-STAT-CHECK.
OPEN-EXIT.
WAIT-FOR-NETWORK-EVENT.
* use dit routine nfgnd to get information on asynchronous
* network events, wait for any network event to occur
MOVE -1 TO RET-NETLN.
ENTER MACRO NFGND USING RET-NETLN, DIT-WAIT-YES.
WHAT-HAPPENED.
* when a network event occurs, analyze the status return code
* from nfgnd to find out what happened, then perform the
* appropriate function
IF DIL-MESSAGE = DIT-C-DATAEVENT
PERFORM WHICH-LINK THRU WHICH-EXIT VARYING SUB FROM 1 BY 1
UNTIL SUB > SUB2
PERFORM PROCESS-DATA-EVENT THRU PD-EXIT
ELSE
IF DIL-MESSAGE = DIT-C-CONNECTEVENT
PERFORM WHICH-LINK THRU WHICH-EXIT VARYING SUB FROM 1 BY 1
UNTIL SUB > SUB2
PERFORM PROCESS-CONNECT THRU PC-EXIT
ELSE
IF DIL-MESSAGE = DIT-C-ABREJEVENT
PERFORM WHICH-LINK THRU WHICH-EXIT VARYING SUB FROM 1 BY 1
UNTIL SUB > SUB2
DISPLAY "?DIT$_ABREJEVENT:NFGND Link " NETIDX " aborted/rejected."
DISPLAY "Link " NETIDX " will be closed..."
MOVE USER-ABORT-DISCONN TO DISCONN-TYPE
PERFORM CLOSE-LINK THRU CL-EXIT
ELSE
IF DIL-SEVERITY = STS-K-SUCCESS
* this should not occur since we are 'waiting' in the call to nfgnd
DISPLAY "STS-K-SUCCESS:NFGND No event occured. Wait... "
ELSE
PERFORM DIT-STAT-CHECK.
*******************************************************************************
PROCESS-CONNECT SECTION.
*******************************************************************************
* when a connect event has occured the Main Section calls this
* section to process the connect (accept a link from a remote
* task)
ENTER MACRO NFACC USING NETLN(NETIDX), DIT-LTYPE-BINARY, NUMOPCHAR, OPCHAR.
IF DIL-SEVERITY = STS-K-SUCCESS
display " Link " netidx " is active."
MOVE A-ID TO LINK-STATE(NETIDX)
ELSE
PERFORM DIT-STAT-CHECK.
PC-EXIT.
*******************************************************************************
PROCESS-DATA-EVENT SECTION.
*******************************************************************************
* When a data event has occured the Main Section calls this
* section to process that event. Since there are a number of
* different possible data events, first decide which type of
* data event has occured. The Link-State field holds a value
* which indicates the type of event that is to be expected for
* the specified link at any given time. Therefore use the
* Link-State value to check which type of data event to process
* now.
IF LINK-STATE(NETIDX) = A-ID
PERFORM RECEIVE-ID-REC THRU R-ID-EXIT
ELSE
IF LINK-STATE(NETIDX) = A-BDGORCLS
PERFORM PROCESS-BDGORCLS THRU BDGORCLS-EXIT
ELSE IF LINK-STATE(NETIDX) = A-ABORDAT
PERFORM PROCESS-ABORDAT THRU ABORDAT-EXIT.
PD-EXIT.
*******************************************************************************
RECEIVE-ID-REC SECTION.
*******************************************************************************
RECEIVE-ID.
* receive a record (in DEC-20 format) from the remote program
* which will identify the remote system of origin as either VAX
* or 10/20.
MOVE 36 TO MSG-BYTSIZ.
MOVE 1 TO MSGLEN.
ENTER MACRO NFRCV USING NETLN(NETIDX), MSG-BYTSIZ, MSGLEN, MESSAGE-DATA,
DIT-MSG-MSG, DIT-WAIT-YES.
IF DIL-SEVERITY = STS-K-SUCCESS
DISPLAY " NFRCV:INFO data receive was ok!"
ELSE
PERFORM DIT-STAT-CHECK.
* determine whether the remote system is a vax (code = 2) or a
* 10/20 (code = 1)
CHECK-SYSTEM-OF-ORIGIN.
IF MESSAGE-DATA = DIX-SYS-10-20 OR
MESSAGE-DATA = DIX-SYS-VAX
MOVE MESSAGE-DATA TO LINK-SYS-ORIG(NETIDX)
MOVE A-BDGORCLS TO LINK-STATE(NETIDX)
ELSE
DISPLAY " "
DISPLAY "%ERROR IN REMOTE SYSTEM CODE. PROCESS HALTED"
STOP RUN.
R-ID-EXIT.
*******************************************************************************
PROCESS-BDGORCLS SECTION.
*******************************************************************************
RECEIVE-BADGE-REC.
* receive a record in the remote system's native format which
* contains either a badge number to be processed or a request to
* disconnect the link because the remote task is through
IF LINK-SYS-ORIG(NETIDX) = DIX-SYS-10-20
PERFORM RECEIVE-10-20-BDG
ELSE
PERFORM RECEIVE-VAX-BDG.
CHECK-REQUEST-TYPE.
* If reqtyp1 = 0 then process badge number. If reqtyp1 = 1 then
* the remote program is requesting a disconnect. If processing
* of badge-num is requested, then save the badge-num in the
* Network-Link-Status-Table for further use. If disconnect is
* requested then close the link.
IF REQTYP1 = 0 MOVE BADGE-NUM TO LINK-BADGE-NUM(NETIDX)
ELSE IF REQTYP1 = 1 MOVE 0 TO LINK-BADGE-NUM(NETIDX)
MOVE SYNCH-DISCONN TO DISCONN-TYPE
PERFORM CLOSE-LINK THRU CL-EXIT
GO TO BDGORCLS-EXIT
ELSE DISPLAY " "
DISPLAY "%Error in request from remote process. Process halted."
STOP RUN.
CHECK-BADGE-NUMBER.
* search jt-fil for the record that corresponds to badge-num
OPEN INPUT-OUTPUT JT-FIL.
MOVE BADGE-NUM TO JT-BADGE-NUM.
READ JT-FIL KEY IS JT-BADGE-NUM
* if key was valid:
INVALID KEY MOVE B-NOTEXIST TO MESSAGE-DATA
DISPLAY "INFO-JTSERV:B-NOTEXIST Badge number " badge-num " does not exist in file."
CLOSE JT-FIL
GO TO SEND-MESSAGE.
* if key was valid:
MOVE B-EXIST TO MESSAGE-DATA.
DISPLAY "INFO-JTSERV:B-EXIST Badge number " badge-num " exists in file.".
CLOSE JT-FIL.
SEND-MESSAGE.
* Send the remote task a message indicating whether the badge
* number presently exists in the ISAM file or not.
* The possibile values for the message are:
* 0 = badge # exists
* 1 = badge number does not exits
MOVE 36 TO MSG-BYTSIZ.
MOVE 1 TO MSGLEN.
ENTER MACRO NFSND USING NETLN(NETIDX), MSG-BYTSIZ, MSGLEN,
MESSAGE-DATA, DIT-MSG-MSG.
IF DIL-SEVERITY = STS-K-SUCCESS
DISPLAY "INFO-NFSND: Message send successful on link " NETIDX
ELSE
PERFORM DIT-STAT-CHECK.
MOVE A-ABORDAT TO LINK-STATE(NETIDX).
BDGORCLS-EXIT.
RECEIVE-10-20-BDG.
* if the remote system is also a 10/20, move the information
* directly into the badge-rec
MOVE 36 TO MSG-BYTSIZ.
MOVE 3 TO MSGLEN.
ENTER MACRO NFRCV USING NETLN(NETIDX), MSG-BYTSIZ, MSGLEN,
BADGE-REC, DIT-MSG-MSG, DIT-WAIT-YES.
IF DIL-SEVERITY = STS-K-SUCCESS
DISPLAY " NFRCV:INFO data receive was ok!"
ELSE
PERFORM DIT-STAT-CHECK.
RECEIVE-VAX-BDG.
* if the remote system is a VAX, then move the information into
* a hold area and do data conversion, THEN move the data into
* the badge-rec
MOVE 8 TO MSG-BYTSIZ.
MOVE 11 TO MSGLEN.
ENTER MACRO NFRCV USING NETLN(NETIDX), MSG-BYTSIZ, MSGLEN,
BDGORCLS-REC, DIT-MSG-MSG, DIT-WAIT-YES.
IF DIL-SEVERITY = STS-K-SUCCESS
DISPLAY " NFRCV:INFO data receive was ok!"
ELSE
PERFORM DIT-STAT-CHECK.
ENTER MACRO XCGEN USING RQ1-SRC-DSCR(1), RQ1-DST-DSCR(1).
IF DIL-SEVERITY NOT = STS-K-SUCCESS
PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of reqtyp1 is : " REQTYP1.
ENTER MACRO XCGEN USING BDG-SRC-DSCR(1), BDG-DST-DSCR(1).
IF DIL-SEVERITY NOT = STS-K-SUCCESS
PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of badge-num is : " BADGE-NUM.
*******************************************************************************
PROCESS-ABORDAT SECTION.
*******************************************************************************
* Receive a record in the remote system's native format which
* contains either job ticket data to be processed or a request
* to discontinue the record update process for this particular
* badge number (but NOT to close the link).
RECEIVE-DATA.
IF LINK-SYS-ORIG(NETIDX) = DIX-SYS-10-20
PERFORM RECEIVE-10-20-DATA
ELSE
PERFORM RECEIVE-VAX-DATA.
CHECK-REQUEST-TYPE.
* NOTE: if reqtyp2 = 1 didn't want to continue with update
* if reqtyp2 = 0 wanted to continue with update
IF REQTYP2 = 1
MOVE UPDA-ABORT TO MESSAGE-DATA
GO TO SEND-STATUS-TO-REMOTE
ELSE
IF REQTYP2 = 0
NEXT SENTENCE
ELSE DISPLAY " "
DISPLAY "%ERROR IN REMOTE SYSTEM CODE. PROCESS HALTED"
STOP RUN.
CONVERT-DATA-IF-NECESS.
* if the data is from a vax, then convert it to DEC20 format
IF LINK-SYS-ORIG(NETIDX) = DIX-SYS-VAX
PERFORM CONVERT-VAX-DATA THRU CVD-EXIT.
UPDATE-DATA-FILE.
MOVE SPACES TO JT-REC.
* an update of the data file was requested by the remote program
* now open the file to the correct record
MOVE 0 TO BDG-FLAG.
OPEN INPUT-OUTPUT JT-FIL.
MOVE LINK-BADGE-NUM(NETIDX) TO JT-BADGE-NUM.
READ JT-FIL KEY IS JT-BADGE-NUM
INVALID KEY DISPLAY "INFO-JTSERV: Badge number not exist in file."
MOVE B-NOTEXIST TO BDG-FLAG.
* first move the data from the ws-rec into the jt-rec
MOVE WS-NAME TO JT-NAME.
MOVE WS-COST-CENTER TO JT-COST-CENTER.
MOVE WS-WK-END-DATE TO JT-WK-END-DATE.
MOVE WS-TOTAL-HRS TO JT-TOTAL-HRS.
PERFORM MOVE-DETAIL-LINES THRU MOVE-DL-EXIT
VARYING DL-SUB FROM 1 BY 1 UNTIL DL-SUB > WS-COUNT.
* now write or rewrite the record
IF BDG-FLAG = B-EXIST
REWRITE JT-REC INVALID KEY DISPLAY "INVALID KEY ON REWRITE."
MOVE UPDA-ERR TO MESSAGE-DATA
GO TO CLOSE-FILE
ELSE IF BDG-FLAG = B-NOTEXIST
WRITE JT-REC INVALID KEY DISPLAY "INVALID KEY ON WRITE."
MOVE UPDA-ERR TO MESSAGE-DATA
GO TO CLOSE-FILE.
* if update ok, move upda-ok value to message-data to be sent to
* remote
MOVE UPDA-OK TO MESSAGE-DATA.
DISPLAY " Record written to RMS indexed file ok!! ".
CLOSE-FILE.
CLOSE JT-FIL.
SEND-STATUS-TO-REMOTE.
* send the remote program the status of the update: either
* upda-abort, upda-ok, or upda-err
MOVE 36 TO MSG-BYTSIZ.
MOVE 1 TO MSGLEN.
ENTER MACRO NFSND USING NETLN(NETIDX), MSG-BYTSIZ, MSGLEN,
MESSAGE-DATA, DIT-MSG-MSG.
IF DIL-SEVERITY = STS-K-SUCCESS
DISPLAY "INFO-NFSND: Message send successful on link " NETIDX
ELSE
PERFORM DIT-STAT-CHECK.
MOVE A-BDGORCLS TO LINK-STATE(NETIDX).
ABORDAT-EXIT.
RECEIVE-10-20-DATA.
* If the remote system is also a 10/20, move the information
* directly into the data-rec.
MOVE 36 TO MSG-BYTSIZ.
MOVE 61 TO MSGLEN.
ENTER MACRO NFRCV USING NETLN(NETIDX), MSG-BYTSIZ, MSGLEN,
DATA-RECORD, DIT-MSG-MSG, DIT-WAIT-YES.
IF DIL-SEVERITY = STS-K-SUCCESS
DISPLAY " NFRCV:INFO data receive was ok!"
ELSE
PERFORM DIT-STAT-CHECK.
RECEIVE-VAX-DATA.
* If the remots system is a VAX, then move the information into
* a hold area and do data conversion, THEN move the data into
* the data-rec.
MOVE 32 TO MSG-BYTSIZ.
MOVE 73 TO MSGLEN.
ENTER MACRO NFRCV USING NETLN(NETIDX), MSG-BYTSIZ, MSGLEN, REMOTE-DATA-REC,
DIT-MSG-MSG, DIT-WAIT-YES.
IF DIL-SEVERITY = STS-K-SUCCESS
DISPLAY " NFRCV:INFO data receive was ok!"
ELSE
PERFORM DIT-STAT-CHECK.
ENTER MACRO XCGEN USING RQ2-SRC-DSCR(1), RQ2-DST-DSCR(1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of reqtyp2 is : " REQTYP2.
MOVE-DETAIL-LINES.
MOVE WS-ACTIV-CD(DL-SUB) TO JT-ACTIV-CD(DL-SUB).
MOVE WS-PL-NUM(DL-SUB) TO JT-PL-NUM(DL-SUB).
MOVE WS-DIS-NUM(DL-SUB) TO JT-DIS-NUM(DL-SUB).
MOVE WS-MFG-NUM(DL-SUB) TO JT-MFG-NUM(DL-SUB).
MOVE WS-HOURS(DL-SUB) TO JT-HOURS(DL-SUB).
MOVE WS-OP-CD(DL-SUB) TO JT-OP-CD(DL-SUB).
MOVE-DL-EXIT.
*******************************************************************************
CLOSE-LINK SECTION.
*******************************************************************************
* This section is used to close a link either when there is an
* abort/reject event or when a disconnect event is requested.
ENTER MACRO NFCLS USING NETLN(NETIDX), DISCONN-TYPE, NUMOPCHAR, OPCHAR.
IF DIL-SEVERITY = STS-K-SUCCESS
DISPLAY "NFCLS:SUCCESS close successful."
MOVE UNOP TO LINK-STATE(NETIDX)
ELSE
IF DIL-MESSAGE = DIT-C-ABORTREJECT
DISPLAY "NFCLS:INFO ABRORTREJECT Link aborted before close done."
ELSE
PERFORM DIT-STAT-CHECK.
CL-EXIT.
*******************************************************************************
WHICH-LINK SECTION.
*******************************************************************************
* this section is called from various parts of the program and
* is used to determine which link of the in the
* network-link-status-table has had an event occur
IF RET-NETLN = NETLN(SUB)
SET NETIDX TO SUB
MOVE 7 TO SUB.
WHICH-EXIT.
*******************************************************************************
CONVERT-VAX-DATA SECTION.
*******************************************************************************
CONVERT-NAME-FIELD.
* convert name field
ENTER MACRO XCGEN USING NAM-SRC-DSCR(1), NAM-DST-DSCR(1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of name is : " WS-NAME.
CONVERT-COST-CENTER-FLD.
* convert cost center field
ENTER MACRO XCGEN USING CC-SRC-DSCR(1), CC-DST-DSCR(1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of cost-center is : " WS-COST-CENTER.
CONVERT-WK-END-DT-FLD.
* convert week ending date field
ENTER MACRO XCGEN USING WK-SRC-DSCR(1), WK-DST-DSCR(1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of wk-end-date is : " WS-WK-END-DATE.
CONVERT-TOT-HRS-FLD.
* convert total hours field
ENTER MACRO XCGEN USING TOT-SRC-DSCR(1), TOT-DST-DSCR(1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of total-hrs is : " WS-TOTAL-HRS.
CONVERT-WS-COUNT.
* convert count of projects field, ws-count = number of project
* lines in record
ENTER MACRO XCGEN USING CNT-SRC-DSCR(1), CNT-DST-DSCR(1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of ws-count is : " WS-COUNT.
PERFORM CONVERT-DETAIL-LINES THROUGH CONV-EXIT
VARYING DL-SUB FROM 1 BY 1 UNTIL DL-SUB > WS-COUNT.
CVD-EXIT.
CONVERT-DETAIL-LINES.
CONVERT-ACTIV-CD-FLD.
* convert acitvity code field
ENTER MACRO XCGEN USING ACT-SRC-DSCR(DL-SUB,1), ACT-DST-DSCR(DL-SUB,1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of activ-cd is : " WS-ACTIV-CD(DL-SUB).
CONVERT-PL-NUM-FLD.
* convert product line number field
ENTER MACRO XCGEN USING PLN-SRC-DSCR(DL-SUB,1), PLN-DST-DSCR(DL-SUB,1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of pl-num is : " WS-PL-NUM(DL-SUB).
CONVERT-DIS-NUM-FLD.
* convert discrete number field
ENTER MACRO XCGEN USING DIS-SRC-DSCR(DL-SUB,1), DIS-DST-DSCR(DL-SUB,1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of dis-num is : " WS-DIS-NUM(DL-SUB).
CONVERT-MANUF-NUM-FLD.
* convert manufacturing number field
ENTER MACRO XCGEN USING MNF-SRC-DSCR(DL-SUB,1), MNF-DST-DSCR(DL-SUB,1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of mfg-num is : " ws-mfg-num(dl-sub).
CONVERT-PROJ-HRS-FLD.
* convert project hours field
ENTER MACRO XCGEN USING HRS-SRC-DSCR(DL-SUB,1), HRS-DST-DSCR(DL-SUB,1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of hours is : " WS-HOURS(DL-SUB).
CONVERT-OP-CD-FLD.
* convert operations code field
ENTER MACRO XCGEN USING OPC-SRC-DSCR(DL-SUB,1), OPC-DST-DSCR(DL-SUB,1).
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
DISPLAY " Conversion of op-cd is : " WS-OP-CD(DL-SUB).
CONV-EXIT.
*******************************************************************************
MAKE-FFDS SECTION.
*******************************************************************************
* make reqtyp1 field ffds
ENTER MACRO XDESCR USING RQ1-SRC-DSCR(1), BDGORCLS-REC, DIX-SYS-VAX,
BYTSZ8, 0, 0, DIX-DT-SBF32, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ENTER MACRO XDESCR USING RQ1-DST-DSCR(1), REQTYP1, DIX-SYS-10-20,
BYTSZ36, 0, 0, DIX-DT-SBF36, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make badge number field ffds
ENTER MACRO XDESCR USING BDG-SRC-DSCR(1), BDGORCLS-REC, DIX-SYS-VAX,
BYTSZ8, 4, 0, DIX-DT-ASCII-8, 7, 0,
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ENTER MACRO XDESCR USING BDG-DST-DSCR(1), BADGE-NUM, DIX-SYS-10-20,
BYTSZ6, 0, 0, DIX-DT-SIXBIT, 7, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make name field ffds
ENTER MACRO XDESCR USING NAM-SRC-DSCR(1), REMOTE-DATA-REC, DIX-SYS-VAX,
BYTSZ8, 4, 0, DIX-DT-ASCII-8, 30, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ENTER MACRO XDESCR USING NAM-DST-DSCR(1), DATA-RECORD, DIX-SYS-10-20,
BYTSZ6, 6, 0, DIX-DT-SIXBIT, 30, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make reqtyp2 field ffds
ENTER MACRO XDESCR USING RQ2-SRC-DSCR(1), REMOTE-DATA-REC, DIX-SYS-VAX,
BYTSZ8, 0, 0, DIX-DT-SBF32, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ENTER MACRO XDESCR USING RQ2-DST-DSCR(1), REQTYP2, DIX-SYS-10-20,
BYTSZ36, 0, 0, DIX-DT-SBF36, 0, 0
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make cost center field ffds
ENTER MACRO XDESCR USING CC-SRC-DSCR(1), REMOTE-DATA-REC, DIX-SYS-VAX,
BYTSZ8, 34, 0, DIX-DT-ASCII-8, 4, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ENTER MACRO XDESCR USING CC-DST-DSCR(1), DATA-RECORD, DIX-SYS-10-20,
BYTSZ6, 36, 0, DIX-DT-SIXBIT, 4, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make week ending date field ffds
ENTER MACRO XDESCR USING WK-SRC-DSCR(1), REMOTE-DATA-REC, DIX-SYS-VAX,
BYTSZ8, 38, 0, DIX-DT-ASCII-8, 6, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ENTER MACRO XDESCR USING WK-DST-DSCR(1), DATA-RECORD, DIX-SYS-10-20,
BYTSZ6, 40, 0, DIX-DT-SIXBIT, 6, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make total hours field ffds
ENTER MACRO XDESCR USING TOT-SRC-DSCR(1), REMOTE-DATA-REC, DIX-SYS-VAX,
BYTSZ8, 44, 0, DIX-DT-F-FLOAT, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ENTER MACRO XDESCR USING TOT-DST-DSCR(1), DATA-RECORD, DIX-SYS-10-20,
BYTSZ36, 8, 0, DIX-DT-FLOAT-36, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make count (of projects) field ffds
ENTER MACRO XDESCR USING CNT-SRC-DSCR(1), REMOTE-DATA-REC, DIX-SYS-VAX,
BYTSZ8, 48, 0, DIX-DT-SBF32, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ENTER MACRO XDESCR USING CNT-DST-DSCR(1), DATA-RECORD, DIX-SYS-10-20,
BYTSZ36, 9, 0, DIX-DT-SBF36, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
MOVE 48 TO SRC-BYO.
MOVE 56 TO DST-BYO.
PERFORM MAKE-DETAIL-LINES-FFDS THRU MDLFFDS-EXIT
VARYING DL-SUB FROM 1 BY 1 UNTIL DL-SUB > 10.
MFFDS-EXIT.
MAKE-DETAIL-LINES-FFDS.
* make activity code field ffds
ADD +4 TO SRC-BYO.
ENTER MACRO XDESCR USING ACT-SRC-DSCR(DL-SUB,1), REMOTE-DATA-REC,
DIX-SYS-VAX, BYTSZ8, SRC-BYO, 0, DIX-DT-ASCII-8, 4, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ADD +4 TO DST-BYO.
ENTER MACRO XDESCR USING ACT-DST-DSCR(DL-SUB,1), DATA-RECORD,
DIX-SYS-10-20, BYTSZ6, DST-BYO, 0, DIX-DT-SIXBIT, 4, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make product line number field ffds
ADD +4 TO SRC-BYO.
ENTER MACRO XDESCR USING PLN-SRC-DSCR(DL-SUB,1), REMOTE-DATA-REC,
DIX-SYS-VAX, BYTSZ8, SRC-BYO, 0, DIX-DT-ASCII-8, 4, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ADD +4 TO DST-BYO.
ENTER MACRO XDESCR USING PLN-DST-DSCR(DL-SUB,1), DATA-RECORD,
DIX-SYS-10-20, BYTSZ6, DST-BYO, 0, DIX-DT-SIXBIT, 4, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make discrete number field ffds
ADD +4 TO SRC-BYO.
ENTER MACRO XDESCR USING DIS-SRC-DSCR(DL-SUB,1), REMOTE-DATA-REC,
DIX-SYS-VAX, BYTSZ8, SRC-BYO, 0, DIX-DT-SBF32, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ADD +4 TO DST-BYO.
DIVIDE DST-BYO BY 6 GIVING DST-BYO REMAINDER BIT-REMAINDER.
IF BIT-REMAINDER > 0 ADD +1 TO DST-BYO.
ENTER MACRO XDESCR USING DIS-DST-DSCR(DL-SUB,1), DATA-RECORD,
DIX-SYS-10-20, BYTSZ36, DST-BYO, 0, DIX-DT-SBF36, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make manufacturing number field ffds
ADD +4 TO SRC-BYO.
ENTER MACRO XDESCR USING MNF-SRC-DSCR(DL-SUB,1), REMOTE-DATA-REC,
DIX-SYS-VAX, BYTSZ8, SRC-BYO, 0, DIX-DT-SBF32, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ADD +1 TO DST-BYO.
ENTER MACRO XDESCR USING MNF-DST-DSCR(DL-SUB,1), DATA-RECORD,
DIX-SYS-10-20, BYTSZ36, DST-BYO, 0, DIX-DT-SBF36, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make project hours field ffds
ADD +4 TO SRC-BYO.
ENTER MACRO XDESCR USING HRS-SRC-DSCR(DL-SUB,1), REMOTE-DATA-REC,
DIX-SYS-VAX, BYTSZ8, SRC-BYO, 0, DIX-DT-F-FLOAT, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ADD +1 TO DST-BYO.
ENTER MACRO XDESCR USING HRS-DST-DSCR(DL-SUB,1), DATA-RECORD,
DIX-SYS-10-20, BYTSZ36, DST-BYO, 0, DIX-DT-FLOAT-36, 0, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
* make operations code field ffds
ADD +4 TO SRC-BYO.
ENTER MACRO XDESCR USING OPC-SRC-DSCR(DL-SUB,1), REMOTE-DATA-REC,
DIX-SYS-VAX, BYTSZ8, SRC-BYO, 0, DIX-DT-ASCII-8, 4, 0.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
ADD +1 TO DST-BYO.
MULTIPLY DST-BYO BY 6 GIVING DST-BYO.
ENTER MACRO XDESCR USING OPC-DST-DSCR(DL-SUB,1), DATA-RECORD,
DIX-SYS-10-20, BYTSZ6, DST-BYO, 0, DIX-DT-SIXBIT, 4, 0.
ADD +2 TO DST-BYO.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE PERFORM DCR-STATUS-CHECK THRU DCR-STATUS-EXIT.
MDLFFDS-EXIT.
*******************************************************************************
DCR-STATUS-CHECK SECTION.
*******************************************************************************
* This section is performed whenever a call is made to XDESCR
* and XCGEN (the data conversion routines). It is used to
* determine the status returned from the attempted conversion.
IF DIL-SEVERITY = STS-K-SUCCESS NEXT SENTENCE
ELSE
IF DIL-SEVERITY = STS-K-INFO
PERFORM DCR-INFO-RET-CHECK THRU CI-EXIT
ELSE PERFORM DCR-ERROR-RET-CHECK THRU CE-EXIT.
DCR-STATUS-EXIT.
DCR-INFO-RET-CHECK.
IF DIL-MESSAGE = DIX-C-ROUNDED
DISPLAY "DCR:STS$K_INFO Result is rounded."
ELSE
IF DIL-MESSAGE = DIX-C-TRUNC
DISPLAY "DCR:STS$K_INFO String too long for destination--truncated.".
CI-EXIT.
DCR-ERROR-RET-CHECK.
IF DIL-MESSAGE = DIX-C-TOOBIG
DISPLAY "DCR:STS$K_SEVERE Converted source field too large for destination field"
ELSE
IF DIL-MESSAGE = DIX-C-INVDATTYP
DISPLAY "DCR:STS$K_SEVERE Invalid data type."
ELSE
IF DIL-MESSAGE = DIX-C-UNKARGTYP
DISPLAY "DCR:STS$K_SEVERE Argument passed by descriptor is unknown type."
ELSE
IF DIL-MESSAGE = DIX-C-UNKSYS
DISPLAY "DCR:STS$K_SEVERE Unknown system of origin specified."
ELSE
IF DIL-MESSAGE = DIX-C-INVLNG
DISPLAY "DCR:STS$K_SEVERE Scale factor invalid or unspecified."
ELSE
IF DIL-MESSAGE = DIX-C-INVSCAL
DISPLAY "DCR:STS$K_SEVERE Scale factor invalid or unspecified."
ELSE
IF DIL-MESSAGE = DIX-C-GRAPHIC
DISPLAY "DCR:STS$K_WARNING Graphic charater changed in conversion"
ELSE
IF DIL-MESSAGE = DIX-C-FMTLOST
DISPLAY "DCR:STS$K_WARNING Format effector gained or lost in conversion."
ELSE
IF DIL-MESSAGE = DIX-C-NONPRINT
DISPLAY "DCR:STS$K_WARNING Non-printing character gained or lost in conversion."
ELSE
IF DIL-MESSAGE = DIX-C-UNIMP
DISPLAY "DCR:STS$K_SEVERE Unimplemented conversion."
ELSE
IF DIL-MESSAGE = DIX-C-INVALCHAR
DISPLAY "DCR:STS$K_ERROR Invalid character in source field or conversion table."
ELSE
IF DIL-MESSAGE = DIX-C-ALIGN
DISPLAY "DCR:STS$K_SEVERE Invalid alignment for data type."
ELSE
IF DIL-MESSAGE = DIX-C-UNNORM
DISPLAY "DCR:STS$K_SEVERE Floating point number improperly normalized."
ELSE
IF DIL-MESSAGE = DIX-C-IMPOSSIBLE
DISPLAY "DCR:STS$K_SEVERE Total internal fuckup."
ELSE
IF DIL-MESSAGE = DIX-C-UNSIGNED
DISPLAY "DCR:STS$K_ERROR Negative value moved to unsigned field."
ELSE
IF DIL-MESSAGE = DIX-C-INVBYTSIZ
DISPLAY "DCR:STS$K_SEVERE Invalid byte size specified."
ELSE DISPLAY "DCR:STS$K_SEVERE Unrecognized message code returned.".
DISPLAY "%Process halted due to severity of error return".
DISPLAY " Dil-Status was: " DIL-STATUS.
DISPLAY " Dil-Message was: " DIL-MESSAGE.
DISPLAY " Dil-Severity was: " DIL-SEVERITY.
STOP RUN.
CE-EXIT.
*******************************************************************************
DIT-STAT-CHECK SECTION.
*******************************************************************************
* This section is performed whenever a call is made to one of
* the DIT routines and an erroneous status code was returned.
* It is used to determine the error returned from the routine.
IF DIL-MESSAGE = DIT-C-OVERRUN
DISPLAY "?DIT$_OVERRUN: Data overrun."
ELSE
IF DIL-MESSAGE = DIT-C-INVARG
DISPLAY "%DIT$_INVARG: Invalid arguement. Process halted."
STOP RUN
ELSE
IF DIL-MESSAGE = DIT-C-HORRIBLE
DISPLAY "%DIT$_HORRIBLE: Jsys Error. Process halted."
STOP RUN
ELSE
IF DIL-MESSAGE = DIT-C-ABORTREJECT
DISPLAY "%DIT$_ABORTREJECT: Link abort/reject. Process halted."
STOP RUN
ELSE
IF DIL-MESSAGE = DIT-C-INTERRUPT
DISPLAY "%DIT$_INTERRUPT: Not supported and should not occur"
DISPLAY " Process Halted."
STOP RUN
ELSE
IF DIL-MESSAGE = DIT-C-NOTENOUGH
DISPLAY "%DIT$_NOTENOUGH: Required amt of data not available."
DISPLAY " Process Halted."
STOP RUN
ELSE
IF DIL-MESSAGE = DIT-C-TOOMANY
DISPLAY "%DIT$_TOOMANY: Too many link/no more interrupt channels"
STOP RUN
ELSE
IF DIL-MESSAGE = DIT-C-INTDATAEVENT
DISPLAY "%DIT$_INTDATAEVENT: Not supported and should not occur."
DISPLAY " Process Halted."
STOP RUN
ELSE
DISPLAY "%DIT: Invalid or unexpected status return code. "
DISPLAY "%Process Halted."
STOP RUN.