IDENTIFICATION DIVISION. 

PROGRAM-ID.

        JTVRPT.

AUTHOR.

        DIGITAL EQUIPMENT CORPORATION.

        COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1983, 1986.
        ALL RIGHTS RESERVED.
        
        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 THAT IS NOT SUPPLIED BY DIGITAL.


        This  program  is  a  portion  of  the  DIL  Load  Test   test
        application.  It is a program  that "lives" on the DEC-20  and
        writes a remote  sequential ASCII  file on the  VAX.  It  will
        open a link and use DAP routines to handle remote file access.

INSTALLATION.

        DEC-MARLBOROUGH.

DATE-WRITTEN.

        JUNE 17, 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'5', '06-Jan-83', 'Sandy Clemens')
* %(  Make JTVRPT prompt for password neater.  File: JTVRPT.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 )%
*
* new_version (2, 0)
*
* Edit (%O'12', '17-Apr-84', 'Sandy Clemens')
* %(  Add V2 files to DS2:.  )%
* 
* new_version (2, 1)
* 
* Edit (%O'13', '3-Jul-86', 'Sandy Clemens')
* %( Add V2.1 files to DS21:. )%

ENVIRONMENT DIVISION.

CONFIGURATION SECTION.

SOURCE-COMPUTER.

        DECSYSTEM-20.

OBJECT-COMPUTER.

        DECSYSTEM-20.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

    SELECT JT-FIL ASSIGN TO DSK
           ORGANIZATION IS RMS INDEXED
           ACCESS MODE IS SEQUENTIAL
           RECORD KEY IS BADGE-NUM.


DATA DIVISION.

FILE SECTION.

FD  JT-FIL LABEL RECORDS ARE STANDARD
        VALUE OF IDENTIFICATION IS "JOBTICRMS".

01  JT-REC.
    05  NAME PIC X(30).
    05  BADGE-NUM PIC 9(7).
    05  COST-CENTER PIC X(4).
    05  WK-END-DATE PIC 9(6).
    05  TOTAL-HRS COMP-1.
    05  DETAIL-LINE OCCURS 10.
        15  ACTIV-CODE PIC X(4).
        15  PROD-LINE PIC X(4).
        15  DISCR-NUM PIC 9(5) COMP.
        15  MFG-NUM PIC 9(5) COMP.
        15  HOURS COMP-1.
        15  OPER-CODE PIC X(4).


WORKING-STORAGE SECTION.

01  DILINI-PARAMETERS.
    05  DIL-INIT-STATUS PIC S9(10) COMP.
    05  DIL-STATUS PIC S9(10) COMP.
    05  DIL-SEVERITY PIC S9(10) COMP.
    05  DIL-MESSAGE PIC S9(10) COMP.

01  VAX-FILNO PIC S9(10) COMP.
01  VAX-FILNAM PIC X(39) VALUE "SPAGS::JTSUM.RPT" USAGE DISPLAY-7.
01  VAX-USER PIC X(39) VALUE "SCLEMENS" USAGE DISPLAY-7.
01  VAX-PSWD PIC X(39) USAGE DISPLAY-7.
01  VAX-ACCNT PIC X(39) USAGE DISPLAY-7.

01  REC-FOR-CONVERSION.
    05  CONV-NAME PIC X(30).
    05  FILLER PIC X VALUE SPACES.
    05  CONV-BADGE-NUM PIC X(7).
    05  FILLER PIC X VALUE SPACES.
    05  CONV-COST-CENTER PIC X(5).
    05  FILLER PIC XX VALUE SPACES.
    05  CONV-DATE PIC X(6).

01  VAX-TRANS-REC PIC X(52) USAGE DISPLAY-7.

01  EOF-FLAG PIC X.
    88 NOT-END-OF-FILE VALUE "N".
    88 END-OF-FILE VALUE "Y".

01  COPY-DIL-INTERFILS.
    COPY DIX OF "SYS:DIL.LIB".
    COPY DIT OF "SYS:DIL.LIB".
    COPY DIL OF "SYS:DIL.LIB".

77  ANS PIC X.
77  KNT PIC 99 COMP VALUE 0.
77  WS-COMMAND PIC X(10).
77  RET-CODE PIC S9(10) COMP.


*******************************************************************************

PROCEDURE DIVISION.

*******************************************************************************

THE-TOP SECTION.

    PERFORM START-UP.

*    PERFORM OPEN-REMOTE-FILE.
    perform main.
*    PERFORM WRITE-REPORT-HEADER.

    PERFORM PROCESS-RECORD THRU PROCESS-EXIT UNTIL END-OF-FILE.

    PERFORM FINISH-UP.

    STOP RUN.


*******************************************************************************

START-UP SECTION.

*******************************************************************************

INITIALIZE-DIL.

    CALL DILINI USING   DIL-INIT-STATUS,
                        DIL-STATUS,
                        DIL-MESSAGE,
                        DIL-SEVERITY.


    IF DIL-INIT-STATUS NOT = 1
        DISPLAY "%Fatal error: Unsuccessful return from DILINI routine."
        DISPLAY "%Process halted."
        STOP RUN.


INITIALIZE-DATA-FILE.

    MOVE "N" TO EOF-FLAG.
    OPEN INPUT JT-FIL.


*******************************************************************************

MAIN SECTION.

*******************************************************************************

GET-VAX-PSWD.

    DISPLAY "Enter the password for account: " VAX-USER.
    ACCEPT VAX-PSWD.

OPEN-REMOTE-FILE.

    CALL ROPEN USING    VAX-FILNO, VAX-FILNAM, VAX-USER, VAX-PSWD, 
                        VAX-ACCNT, DIT-MODE-WRITE, DIT-TYPE-ASCII,
                        DIT-RFM-FIXED, DIT-RAT-ENVELOPE, 52, 7.

    IF DIL-SEVERITY = STS-K-SUCCESS
         DISPLAY "ROP$OK Open successful."

    ELSE
         PERFORM ANALYZE-DIL-STATUS
         STOP RUN.



WRITE-REPORT-HEADER.

    MOVE  "NAME"    TO  CONV-NAME.
    MOVE  "BDG-NUM" TO  CONV-BADGE-NUM.
    MOVE  "C-C"     TO  CONV-COST-CENTER.
    MOVE  "DATE"    TO  CONV-DATE.

    PERFORM CONVERT-LOCAL-DATA THRU PROCESS-EXIT.


*******************************************************************************

FINISH-UP SECTION.

*******************************************************************************

CLOSE-LOCAL-DATA-FILE.

    CLOSE JT-FIL.



CLOSE-REMOTE-REPORT-FILE.

    CALL RCLOSE USING   VAX-FILNO,
                        DIT-OPT-NOTHING.


    IF DIL-SEVERITY = STS-K-SUCCESS
         DISPLAY "RCL$OK Close successful."

    ELSE
         PERFORM ANALYZE-DIL-STATUS
         STOP RUN.


*******************************************************************************

PROCESS-RECORD SECTION.

*******************************************************************************

READ-LOCAL-DATA-RECORD.

    READ JT-FIL NEXT

        AT END  MOVE "Y" TO EOF-FLAG
                GO TO PROCESS-EXIT.


DISPLAY-NAME.

    DISPLAY "Name is : " NAME.


MOVE-LOCAL-DATA.

    MOVE  NAME         TO  CONV-NAME.
    MOVE  BADGE-NUM    TO  CONV-BADGE-NUM.
    MOVE  COST-CENTER  TO  CONV-COST-CENTER.
    MOVE  WK-END-DATE  TO  CONV-DATE.


CONVERT-LOCAL-DATA.

    CALL CVGEN USING

        REC-FOR-CONVERSION, DIX-SYS-10-20, 6, 0, 0, DIX-DT-SIXBIT,  52, 0,
             VAX-TRANS-REC, DIX-SYS-10-20, 7, 0, 0, DIX-DT-ASCII-7, 52, 0.


CHECK-CONVERSION-STATUS.

    IF DIL-SEVERITY = STS-K-SUCCESS
         NEXT SENTENCE

    ELSE
         IF DIL-MESSAGE = DIX-C-ROUNDED DISPLAY "STS$K_INFO Result is rounded."

         ELSE
              IF DIL-MESSAGE = DIX-C-TRUNC
                 DISPLAY "STS$K_INFO Destination too long--truncated."

              ELSE
                   IF DIL-SEVERITY NOT = STS-K-INFO
                      PERFORM ANALYZE-DIX-ERROR
                      STOP RUN.

WRITE-REMOTE-RECORD.

    CALL RWRITE USING   VAX-FILNO,
                        7,
                        52,
                        VAX-TRANS-REC.


    IF DIL-SEVERITY = STS-K-SUCCESS
         DISPLAY "Record " BADGE-NUM " written successfully. "

    ELSE
         PERFORM ANALYZE-DIL-STATUS
         STOP RUN.

PROCESS-EXIT.


*******************************************************************************

ANALYZE-DIL-STATUS SECTION.

*******************************************************************************

ANALYZE-STAT.

    IF DIL-MESSAGE = DIT-C-TOOMANY
        DISPLAY "%Error: too many files open, can't open another"

    ELSE
    IF DIL-MESSAGE = DIT-C-INVARG
        DISPLAY "%Error: argument type or invalid arguement "

    ELSE
    IF DIL-MESSAGE = DIT-C-NETOPRFAIL
        DISPLAY "?Network operation could not be done "

    ELSE
    IF DIL-MESSAGE = DIT-C-CHECKSUM
        DISPLAY "?Checksum error "

    ELSE
    IF DIL-MESSAGE = DIT-C-UNSFILETYPE
        DISPLAY "%Error: cannot write specified file type"

    ELSE
    IF DIL-MESSAGE = DIT-C-FILEINUSE
        DISPLAY "%Error: file activity precludes this operation"

    ELSE
    IF DIL-MESSAGE = DIT-C-NOFILE
        DISPLAY "?File does not exist or is not available"

    ELSE
    IF DIL-MESSAGE = DIT-C-HORRIBLE
        DISPLAY "%Internal or system error."

    else display "?Error not recognized... "
         display "Dil-Status was " DIL-STATUS
         display "Dil-Severity was " DIL-SEVERITY
         display "Dil-Message was " DIL-MESSAGE

    DISPLAY " ".

    DISPLAY "%Process halted.".


*******************************************************************************

ANALYZE-DIX-ERROR SECTION.

*******************************************************************************

ANALYZE-STAT.

    IF DIL-MESSAGE = DIX-C-TOOBIG
        DISPLAY "STS$K_SEVERE Converted source field too large for destination"

    ELSE
    IF DIL-MESSAGE = DIX-C-INVDATTYP 
        DISPLAY "STS$K_SEVERE Invalid data type."

    ELSE
    IF DIL-MESSAGE = DIX-C-UNKARGTYP
        DISPLAY "STS$K_SEVERE Argument passed by descriptor is unknown type."

    ELSE
    IF DIL-MESSAGE = DIX-C-UNKSYS
        DISPLAY "STS$K_SEVERE Unknown system of origin specified."

    ELSE
    IF DIL-MESSAGE = DIX-C-INVLNG
        DISPLAY "STS$K_SEVERE Scale factor invalid or unspecified."

    ELSE
    IF DIL-MESSAGE = DIX-C-INVSCAL
        DISPLAY "STS$K_SEVERE Scale factor invalid or unspecified."

    ELSE
    IF DIL-MESSAGE = DIX-C-GRAPHIC
        DISPLAY "STS$K_WARNING Graphic charater changed in conversion"

    ELSE
    IF DIL-MESSAGE = DIX-C-FMTLOST
        DISPLAY "STS$K_WARNING Format effector gained or lost in conversion."

    ELSE
    IF DIL-MESSAGE = DIX-C-NONPRINT
        DISPLAY "STS$K_WARNING Non-printing char gained or lost in conversion."

    ELSE
    IF DIL-MESSAGE = DIX-C-UNIMP
        DISPLAY "STS$K_SEVERE Unimplemented conversion."

    ELSE
    IF DIL-MESSAGE = DIX-C-INVALCHAR
        DISPLAY "STS$K_ERROR Invalid char in source field or conversion table."

    ELSE
    IF DIL-MESSAGE = DIX-C-ALIGN
        DISPLAY "STS$K_SEVERE Invalid alignment for data type."

    ELSE
    IF DIL-MESSAGE = DIX-C-UNNORM
        DISPLAY "STS$K_SEVERE Floating point number improperly normalized."

    ELSE
    IF DIL-MESSAGE = DIX-C-IMPOSSIBLE
        DISPLAY "STS$K_SEVERE Total internal fuckup."

    ELSE
    IF DIL-MESSAGE = DIX-C-UNSIGNED
        DISPLAY "STS$K_ERROR Negative value moved to unsigned field."

    ELSE
    IF DIL-MESSAGE = DIX-C-INVBYTSIZ
        DISPLAY "STS$K_SEVERE Invalid byte size specified."

    ELSE
        DISPLAY "STS$K_SEVERE Unrecognized message code returned."
        DISPLAY "Dil-Message was: " DIL-MESSAGE
        DISPLAY "Dil-Severity was: " DIL-SEVERITY.

    DISPLAY "%Process halted due to severity of error return.".