*$CONTROL CROSSREF,SYMDEBUG
001100*----------------------------------------------------*
001200 IDENTIFICATION DIVISION.
001300*----------------------------------------------------*
001400 PROGRAM-ID. HP.
001500 AUTHOR.
001600 INSTALLATION.
001700 DATE-WRITTEN.
001800 DATE-COMPILED.
001900*
002000 REMARKS.
002100*
002200*----------------------------------------------------*
002300 ENVIRONMENT DIVISION.
002400*----------------------------------------------------*
002500 CONFIGURATION SECTION.
002600 SOURCE-COMPUTER. HP 3000.
002700 OBJECT-COMPUTER. HP 3000.
002800 SPECIAL-NAMES.
002900 CONDITION-CODE IS CCODE.
003000*
003100*----------------------------------------------------*
003200 DATA DIVISION.
003300*----------------------------------------------------*
003400*
003500*----------------------------------------------------*
003600 WORKING-STORAGE SECTION.
003700*----------------------------------------------------*
003800*
003900 01 INTRINSIC-COMP.
004000 05 TPID PIC S9(4) COMP.
004100 05 TRACEON PIC S9(4) COMP VALUE +1.
004200 05 LENGTH-REMOTE-TP-NAME PIC S9(4) COMP VALUE +4.
004300 05 RESOURCE-ID PIC S9(4) COMP.
004400 05 TRANS-LENGTH PIC S9(4) COMP VALUE +30.
004500 05 RECEIVE-LENGTH PIC S9(4) COMP.
004600 05 WHAT-RECEIVED PIC S9(4) COMP.
004700 05 FULL-RECORD PIC S9(4) COMP VALUE +80.
004800 05 REQ-TO-SEND-REC PIC S9(4) COMP.
004900 05 DATA-COMPLETE PIC S9(4) COMP VALUE +1.
005000 05 SEND-RECEIVED PIC S9(4) COMP VALUE +4.005100 05 DEALLOCATE-TYPE PIC S9(4) COMP VALUE +0.
005200 05 TRANSLATE-TO-EBCDIC PIC S9(4) COMP VALUE +2.
005300 05 TRANSLATE-TO-ASCII PIC S9(4) COMP VALUE +1.
005400*
005500 01 INTRINSIC-STATUS PIC S9(8) COMP.
005600 01 INTRINSIC-STATUS-ALL REDEFINES INTRINSIC-STATUS.
005700 05 INTRINSIC-STATUS-INFO PIC S9(4) COMP.
005800 05 INTRINSIC-STATUS-SUBSYS PIC S9(4) COMP.
005900*
006000 01 RETURN-CODE.
006100 05 ALLOCATE-RTRNCD PIC X(5).
006200 05 DEALLOCATE-RTRNCD PIC X(5).
006300 05 ENDED-RTRNCD PIC X(5).
006400 05 SENDDATA-RTRNCD PIC X(5).
006500 05 TPSTART-RTRNCD PIC X(5).
006600 05 RCVANDWAIT-RTRNCD PIC X(5).
006700*
006800 01 DISPLAY-WHAT-RECEIVED PIC X(5).
006900*
007000 01 API-PARAMETERS.
007100 05 TPSTARTED-PARAMETERS.
007200 10 LOCAL-TP-NAME PIC X(8) VALUE "USERTP ".
007300 05 ALLOCATE-PARAMETERS.
007400 10 SESSION-TYPE PIC X(8) VALUE "DISOSS1 ".
007500 05 REMOTE-TP-NAME.
007600 10 REMOTE-TP-NAME-EBCDIC PIC X(4) VALUE SPACES.
007700 10 REMOTE-TP-NAME-ASCII PIC X(4) VALUE "Z027".
007800*
007900 01 DEBUGGING-ERROR-MESSAGES.
008000 05 STARTED-ERR-MSG PIC X(20) VALUE 'TP STARTED ERROR'.
008100 05 ALLOCATE-ERR-MSG PIC X(20) VALUE 'ALLOCATE ERROR'.
008200 05 SENDDATA-ERR-MSG PIC X(20) VALUE 'SEND DATA ERROR'.
008300 05 DEALLOCATE-ERR-MSG PIC X(20) VALUE 'DEALLOCATE ERROR'.
008400 05 ENDED-ERR-MSG PIC X(20) VALUE 'ENDED ERROR'.
008500 05 CTRANSLATE-ERR-MSG PIC X(20) VALUE 'CTRANSLATE ERROR'.
008600 05 RCVANDWAIT-ERR-MSG PIC X(20) VALUE 'RCVANDWAIT ERROR'.
008700 05 WHAT-RECEIVED-MSG PIC X(20) VALUE 'WHAT RECEIVED ERROR'.
008800*
008900 01 CONTROL-FLAGS.
009000 05 QUIT-SW PIC X.
009100*
009200 01 TRANSACTION-ERROR-CODES.
009300 05 SYSTEM-ERROR-CD PIC 9(4) VALUE 0003.
009400 05 SOCSEC-ERROR-CD PIC 9(4) VALUE 0001.
009500*
009600 01 CONTROL-VALUES.
009700 05 YES-SW PIC X VALUE 'Y'.
009800 05 NO-SW PIC X VALUE 'N'.
009900*
010000 01 CONSOLE-HEADING PIC X(17) VALUE
010100 "CREDIT RISK CHECK".
010200*
010300 01 ACCEPT-CODE PIC X VALUE "3".
010400*
010500 01 MASTER-DATA.
010600 05 SOCSEC-MASTER.
010700 10 SOCSEC1-MASTER PIC X(3).
010800 10 SOCSEC2-MASTER PIC X(2).
010900 10 SOCSEC3-MASTER PIC X(4).
011000 05 NAME-MASTER.
011100 10 LAST-NAME-MASTER PIC X(10).
011200 10 FIRST-NAME-MASTER PIC X(10).
011300 10 MI-NAME-MASTER PIC X.
011400 05 CREDIT-INFO-MASTER OCCURS 5 TIMES.
011500 10 CO-CODE-MASTER PIC X.
011600 10 BALANCE-MASTER PIC 9(4)V9(2).
011700 05 FILLER PIC X(14).
011800 05 RISK-CODE-MASTER PIC X(1).
011900*
012000 01 ERROR-RECORD REDEFINES MASTER-DATA.
012100 05 ERROR-CODE PIC 9(4).
012200 05 FILLER PIC X(76).
012300*
012400 01 TRANS-DATA.
012500 05 SOCSEC-TRANS.
012600 10 SOCSEC1-TRANS PIC X(3).
012700 10 SOCSEC2-TRANS PIC X(2).
012800 10 SOCSEC3-TRANS PIC X(4).
012900 05 NAME-TRANS.
013000 10 LAST-NAME-TRANS PIC X(10).
013100 10 FIRST-NAME-TRANS PIC X(10).
013200 10 MI-NAME-TRANS PIC X.
013300*
013400*
013500*----------------------------------------------------*
013600 PROCEDURE DIVISION.
013700*----------------------------------------------------*
013800*
013900*----------------------------------------------------*
014000 000000-MAINLINE SECTION.
014100*----------------------------------------------------*
014200*
014300 PERFORM 101000-BEGIN-HOUSEKEEPING.
014400*
014500 PERFORM 102000-PROCESS-RECORDS
014600 UNTIL QUIT-SW = YES-SW.
014700*
014800 PERFORM 103000-END-HOUSEKEEPING.
014900*
015000 000099-EXIT.
015100 STOP RUN.
015200*
015300*----------------------------------------------------*
015400 101000-BEGIN-HOUSEKEEPING SECTION.
015500*----------------------------------------------------*
015600* This section calls TPStarted to initialize resources
015700* for the local TP, and then it calls MCAllocate to
015800* allocate a conversation with the remote TP.
015900*
016000 MOVE NO-SW TO QUIT-SW.
016100*
016200 CALL INTRINSIC "TP'STARTED" USING LOCAL-TP-NAME,
016300 TPID,
016400 INTRINSIC-STATUS,
016500 TRACEON.
016600 IF INTRINSIC-STATUS IS NOT EQUAL TO ZERO
016700 MOVE YES-SW TO QUIT-SW
016800 MOVE INTRINSIC-STATUS-INFO TO TPSTART-RTRNCD
016900 DISPLAY STARTED-ERR-MSG,TPSTART-RTRNCD
017000 GO TO 101099-EXIT.
017100*
017200 CALL INTRINSIC "CTRANSLATE" USING TRANSLATE-TO-EBCDIC,
017300 REMOTE-TP-NAME-ASCII,
017400 REMOTE-TP-NAME-EBCDIC,
017500 LENGTH-REMOTE-TP-NAME.
017600 IF CCODE << ZERO
017700 DISPLAY CTRANSLATE-ERR-MSG,
017800 "CCL - REMOTE-TP-NAME NOT TRANSLATED"
017900 MOVE YES-SW TO QUIT-SW
018000 GO TO 101099-EXIT.
018100*
018200 CALL INTRINSIC "MCALLOCATE" USING TPID,
018300 SESSION-TYPE,
018400 REMOTE-TP-NAME-EBCDIC,
018500 LENGTH-REMOTE-TP-NAME,
018600 RESOURCE-ID,
018700 INTRINSIC-STATUS.
018800 IF INTRINSIC-STATUS IS NOT EQUAL TO ZERO
018900 MOVE YES-SW TO QUIT-SW
019000 MOVE INTRINSIC-STATUS-INFO TO ALLOCATE-RTRNCD
019100 DISPLAY ALLOCATE-ERR-MSG,ALLOCATE-RTRNCD
019200 GO TO 101099-EXIT.
019300*
019400 PERFORM 501000-FULL-SCREEN.
019500 101099-EXIT.
019600 EXIT.
019700*
019800*----------------------------------------------------*
019900 102000-PROCESS-RECORDS SECTION.
020000*----------------------------------------------------*
020100* This section calls SEND-DATA and RECEIVE-DATA.
020200*
020300 PERFORM 201000-SEND-DATA.
020400*
020500 IF QUIT-SW IS EQUAL TO YES-SW
020600 GO TO 102099-EXIT.
020700*
020800 PERFORM 202000-RECEIVE-DATA.
020900*
021000 102099-EXIT.
021100 EXIT.
021200*
021300*----------------------------------------------------*
021400 103000-END-HOUSEKEEPING SECTION.
021500*----------------------------------------------------*
021600* This section deallocates the conversation and calls
021700* TPEnded to free the resources used by the local TP.
021800*
021900 CALL INTRINSIC "MCDEALLOCATE" USING RESOURCE-ID,
022000 DEALLOCATE-TYPE,
022100 INTRINSIC-STATUS.
022200 IF INTRINSIC-STATUS IS NOT EQUAL TO ZERO
022300 MOVE INTRINSIC-STATUS-INFO TO DEALLOCATE-RTRNCD
022400 DISPLAY DEALLOCATE-ERR-MSG,DEALLOCATE-RTRNCD.
022500*
022600 CALL INTRINSIC "TPENDED" USING TPID,
022700 INTRINSIC-STATUS.
022800 IF INTRINSIC-STATUS IS NOT EQUAL TO ZERO
022900 MOVE INTRINSIC-STATUS-INFO TO ENDED-RTRNCD
023000 DISPLAY ENDED-ERR-MSG,ENDED-RTRNCD.
023100*
023200 103099-EXIT.
023300 EXIT.
023400*
023500*----------------------------------------------------*
023600 201000-SEND-DATA SECTION.
023700*----------------------------------------------------*
023800* This section translates the data received from the
023900* user's screen into EBCDIC and sends it to the remote TP.
024000*
024100 CALL INTRINSIC "CTRANSLATE" USING TRANSLATE-TO-EBCDIC,
024200 TRANS-DATA,
024300 TRANS-DATA,
024400 TRANS-LENGTH.
024500 IF CCODE << ZERO
024600 DISPLAY CTRANSLATE-ERR-MSG,
024700 "CCL - TRANS-DATA NOT TRANSLATED"
024800 MOVE YES-SW TO QUIT-SW
024900 GO TO 201099-EXIT.
025000*
025100 CALL INTRINSIC "MCSENDDATA" USING RESOURCE-ID,
025200 TRANS-DATA,
025300 TRANS-LENGTH,
025400 REQ-TO-SEND-REC,
025500 INTRINSIC-STATUS.
025600 IF INTRINSIC-STATUS IS NOT EQUAL TO ZERO
025700 MOVE YES-SW TO QUIT-SW
025800 MOVE INTRINSIC-STATUS-INFO TO SENDDATA-RTRNCD
025900 DISPLAY SENDDATA-ERR-MSG,SENDDATA-RTRNCD.
026000*
026100 201099-EXIT.
026200 EXIT.
026300*
026400*----------------------------------------------------*
026500 202000-RECEIVE-DATA SECTION.
026600*----------------------------------------------------*
026700* This section calls MCRcvAndWait twice: once to
026800* receive a data record from the remote TP and once
026900* to receive the instruction to change to Send state.
027000* If this section receives a complete data record,
027100* it calls CTranslate to translate it to ASCII.
027200*
027300 MOVE FULL-RECORD TO RECEIVE-LENGTH.
027400*
027500 CALL INTRINSIC "MCRCVANDWAIT" USING RESOURCE-ID,
027600 RECEIVE-LENGTH,
027700 REQ-TO-SEND-REC,
027800 MASTER-DATA,
027900 WHAT-RECEIVED,
028000 INTRINSIC-STATUS.
028100*
028200 IF INTRINSIC-STATUS IS NOT EQUAL TO ZERO
028300 MOVE INTRINSIC-STATUS-INFO TO RCVANDWAIT-RTRNCD
028400 DISPLAY RCVANDWAIT-ERR-MSG,RCVANDWAIT-RTRNCD
028500 MOVE YES-SW TO QUIT-SW
028600 GO TO 202099-EXIT.
028700*
028800 IF WHAT-RECEIVED IS NOT EQUAL TO DATA-COMPLETE
028900 MOVE WHAT-RECEIVED TO DISPLAY-WHAT-RECEIVED
029000 DISPLAY WHAT-RECEIVED-MSG,DISPLAY-WHAT-RECEIVED
029100 MOVE YES-SW TO QUIT-SW
029200 GO TO 202099-EXIT.
029300*
029400 CALL INTRINSIC "MCRCVANDWAIT" USING RESOURCE-ID,
029500 RECEIVE-LENGTH,
029600 REQ-TO-SEND-REC,
029700 MASTER-DATA,
029800 WHAT-RECEIVED,
029900 INTRINSIC-STATUS.
030000*
030100 IF INTRINSIC-STATUS IS NOT EQUAL TO ZERO
030200 MOVE INTRINSIC-STATUS-INFO TO RCVANDWAIT-RTRNCD
030300 DISPLAY RCVANDWAIT-ERR-MSG,RCVANDWAIT-RTRNCD
030400 MOVE YES-SW TO QUIT-SW
030500 GO TO 202099-EXIT.
030600*
030700 IF WHAT-RECEIVED IS NOT EQUAL TO SEND-RECEIVED
030800 MOVE WHAT-RECEIVED TO DISPLAY-WHAT-RECEIVED
030900 DISPLAY WHAT-RECEIVED-MSG,DISPLAY-WHAT-RECEIVED
031000 MOVE YES-SW TO QUIT-SW
031100 GO TO 202099-EXIT.
031200*
031300 CALL INTRINSIC "CTRANSLATE" USING TRANSLATE-TO-ASCII,
031400 MASTER-DATA,
031500 MASTER-DATA,
031600 RECEIVE-LENGTH.
031700 IF CCODE << ZERO
031800 DISPLAY CTRANSLATE-ERR-MSG,
031900 "CCL - MASTER-DATA NOT TRANSLATED"
032000 MOVE YES-SW TO QUIT-SW
032100 GO TO 202099-EXIT.
032200*
032300 IF RECEIVE-LENGTH IS EQUAL TO FULL-RECORD
032400 PERFORM 301000-DISPLAY-ACCEPTANCE
032500 ELSE
032600 PERFORM 302000-DISPLAY-ERROR-MESSAGE.
032700*
032800 202099-EXIT.
032900 EXIT.
033000*
033100*----------------------------------------------------*
033200 301000-DISPLAY-ACCEPTANCE SECTION.
033300*----------------------------------------------------*
033400* This section evaluates the Risk Code received from
033500* the remote TP to determine whether to approve or deny
033600* credit, and then it writes a message to the user's terminal.
033700*
033800 IF RISK-CODE-MASTER IS LESS THAN ACCEPT-CODE
033900 DISPLAY "CREDIT DENIED"
034000 ELSE
034100 DISPLAY "CREDIT APPROVED".
034200*
034300 PERFORM 401000-QUIT-SCREEN.
034400*
034500 301099-EXIT.
034600 EXIT.
034700*
034800*----------------------------------------------------*
034900 302000-DISPLAY-ERROR-MESSAGE SECTION.
035000*----------------------------------------------------*
035100* This section evaluates the errorcode returned by the
035200* remote TP and writes an error message to the user's
035300* terminal. The remote TP can return any of 3 error codes:
035400* 001 - The SS# is not in the database.
035500* 002 - The SS# is in the database, but the name does
035600* not match the name sent by the HP 3000.
035700* 003 - Miscellaneous system errors.
035800* Error codes 001 and 002 cause this section to call
035900* QUIT-SCREEN. Error code 003 causes this section to
036000* set QUIT_SW to YES_SW.
036100*
036200 IF ERROR-CODE IS EQUAL TO SYSTEM-ERROR-CD
036300 DISPLAY SYSTEM-ERROR-CD
036400 MOVE YES-SW TO QUIT-SW
036500 GO TO 302099-EXIT.
036600*
036700 IF ERROR-CODE IS EQUAL TO SOCSEC-ERROR-CD
036800 DISPLAY "SS# not on file - CREDIT DENIED"
036900 ELSE
037000 DISPLAY "Invalid Name".
037100*
037200 PERFORM 401000-QUIT-SCREEN.
037300*
037400 302099-EXIT.
037500 EXIT.
037600*
037700*----------------------------------------------------*
037800 401000-QUIT-SCREEN SECTION.
037900*----------------------------------------------------*
038000* This section asks the user if he or she is ready
038100* to quit. If the user responds 'Y', this section
038200* changes QUIT_SW to YES_SW.
038300*
038400 DISPLAY "READY TO QUIT (Y/N)?".
038500 ACCEPT QUIT-SW FREE.
038600*
038700 IF QUIT-SW IS NOT EQUAL TO YES-SW
038800 PERFORM 501000-FULL-SCREEN.
038900*
039000 401099-EXIT.
039100 EXIT.
039200*
039300*----------------------------------------------------*
039400 501000-FULL-SCREEN SECTION.
039500*----------------------------------------------------*
039600* This section prompts the user for data and
039700* receives the data from the terminal.
039800*
039900 MOVE SPACE TO TRANS-DATA.
040000 MOVE SPACES TO MASTER-DATA.
040100*
040200 DISPLAY CONSOLE-HEADING.
040300*
040400 DISPLAY "SOCSEC # :".
040500 PERFORM 601000-ACCEPT-SOCSEC
040600 UNTIL SOCSEC-TRANS IS NUMERIC.
040700*
040800 DISPLAY "LASTNAME :".
040900 ACCEPT LAST-NAME-TRANS FREE.
041000*
041100 DISPLAY "FIRSTNAME :".
041200 ACCEPT FIRST-NAME-TRANS FREE.
041300*
041400 DISPLAY "MI :".
041500 ACCEPT MI-NAME-TRANS FREE.
041600*
041700 501099-EXIT.
041800 EXIT.
041900*
042000*----------------------------------------------------*
042100 601000-ACCEPT-SOCSEC SECTION.
042200*----------------------------------------------------*
042300* This section prompts the user for a social security
042400* number and accepts it from the terminal.
042500*
042600 ACCEPT SOCSEC-TRANS FREE.
042700*
042800 IF SOCSEC-TRANS IS EQUAL TO SPACES
042900 DISPLAY "SOCSEC # MUST BE NUMERIC"
043000 DISPLAY "SOCSEC # :"
043100 GO TO 601099-EXIT.
043200*
043300 IF SOCSEC-TRANS IS NOT NUMERIC
043400 DISPLAY "SOCSEC # MUST BE NUMERIC"
043500 DISPLAY "SOCSEC # :".
043600*
043700 601099-EXIT.
043800 EXIT.
¤ Dauer der Verarbeitung: 0.24 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|