| IDENTIFICATION DIVISION.
PROGRAM-ID. IMG00108.
*******************************************************************************
* *
* PROPRIETORY INFORMATION *
* THIS IS THE SOLE PROPERTY OF FAMILIAN PIPE AND SUPPLY CORPORATION AND *
* IS NOT TO BE REPRODUCED IN ANY MANNER WITHOUT THE PRIOR WRITTEN CON- *
* SENT OF FAMILIAN PIPE AND SUPPLY CORPORATION. *
*******************************************************************************
* PROGRAM NAME : IMG00108 *
* *
* DESCRIPTION : is a subroutine called for branch IM0050 search.
* *
* AUTHOR : CAROL LI *
* *
* DATE : FEB. 19, 1993 *
* *
* FILES : IM0050_FILE - BRANCH INVENTORY MASTER FILE *
* *
* LINK INSTR : See caller's opt file. *
* *
*******************************************************************************
* *
* R E V I S I O N L O G *
* * *
* NUMBER DATE PROGRAMMER D E S C R I P T I O N *
* -------- -------- ----------------- ----------------------------------- *
* 01 06/96 BELINDA DUONG 1852 PRICE COST SYSTEM CHANGES.
*******************************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
* COPY IM50FC OF COPYBOOK.
SELECT IM0050 ASSIGN TO IM0050_FILE
ACCESS MODE IS DYNAMIC
ORGANIZATION IS INDEXED
FILE STATUS IS FILE-STATUS
RECORD KEY IS IM50-MASTER-KEY
ALTERNATE RECORD KEY IS IM50-ALTERNATE-ID-03 WITH DUPLICATES
ALTERNATE RECORD KEY IS IM50-BIN-LOC-1-17
ALTERNATE RECORD KEY IS IM50-PRIMARY-VENDOR-75 WITH DUPLICATES
ALTERNATE RECORD KEY IS IM50-VENDOR-NUMBER-76.
* COPY IM45FC OF COPYBOOK.
SELECT IM0045 ASSIGN TO IM0045_FILE
ACCESS MODE IS DYNAMIC
ORGANIZATION IS INDEXED
FILE STATUS IS FILE-STATUS
RECORD KEY IS IM45-ITEM
ALTERNATE RECORD KEY IS IM45-PLATE
ALTERNATE RECORD KEY IS IM45-CAT-GRP-SEQ
ALTERNATE RECORD KEY IS IM45-UPC-CODE WITH DUPLICATES.
DATA DIVISION.
FILE SECTION.
FD IM0050.
* COPY IM50RC OF COPYBOOK.
01 IM50-INVENTORY-MASTER-RECORD.
05 IM50-MASTER-KEY PIC X(11).
05 IM50-MASTER-KEY-XX REDEFINES IM50-MASTER-KEY.
10 IM50-LOC-NO-01 PIC X(04).
10 IM50-LOC-NO-01-XX REDEFINES IM50-LOC-NO-01.
15 IM50-CO-LOC PIC X(02).
15 IM50-BR-LOC PIC X(02).
10 IM50-ITEM-NO-02 PIC X(07).
10 IM50-XS-ITEM REDEFINES IM50-ITEM-NO-02.
15 IM50-XS-ITEM-IND PIC 9(01).
15 IM50-XS-ITEM-CAT PIC 9(02).
15 IM50-XS-ITEM-SEQ PIC 9(04).
05 IM50-ALTERNATE-ID-03 PIC X(16).
05 IM50-XS-ALTERNATE REDEFINES IM50-ALTERNATE-ID-03.
10 IM50-XS-PO PIC 9(06).
10 IM50-XS-PO-LINE PIC 9(02).
10 IM50-XS-OE PIC 9(06).
10 IM50-XS-OE-LINE PIC 9(02).
05 IM50-ABC-CLASS-10 PIC X(01).
05 IM50-SELL-UNIT-MSR-12 PIC X(02).
05 IM50-BIN-LOC-1-17 PIC X(08).
05 IM50-BIN-LOC-1-17-XX REDEFINES IM50-BIN-LOC-1-17.
10 IM50-AREA1 PIC X(02).
10 IM50-ROW1 PIC X(02).
10 IM50-BIN1 PIC X(02).
10 IM50-SHELF1 PIC X(02).
05 IM50-BIN-LOC-2-18 PIC X(08).
05 IM50-BIN-LOC-2-18-XX REDEFINES IM50-BIN-LOC-2-18.
10 IM50-AREA2 PIC X(02).
10 IM50-ROW2 PIC X(02).
10 IM50-BIN2 PIC X(02).
10 IM50-SHELF2 PIC X(02).
05 IM50-NS-UPDATE PIC 9(06) COMP-3.
05 FILLER PIC X(02).
05 IM50-RESTOCK-FLAG PIC X(01).
05 IM50-IB-IN-TRANSIT PIC S9(07)V9(2) COMP-3.
05 IM50-TAX-STATUS-CODE-29 PIC X(01).
05 IM50-CASH-DISC-IND-96 PIC X(01).
05 IM50-ON-HAND-1-35 PIC S9(09)V9(2) COMP-3.
05 IM50-ALLOC-36 PIC S9(09)V9(2) COMP-3.
05 IM50-ON-ORDR-37 PIC S9(09)V9(2) COMP-3.
05 IM50-CURR-MO-RCPT-38 PIC S9(09)V9(2) COMP-3.
05 IM50-CURR-MO-RTRN-39 PIC S9(09)V9(2) COMP-3.
05 IM50-BO-QTY-40 PIC S9(09)V9(2) COMP-3.
05 IM50-CURR-MO-SALES-45 PIC S9(09)V9(2) COMP-3.
05 IM50-CURR-MO-ISSUES-46 PIC S9(09)V9(2) COMP-3.
05 IM50-XS-ITEM-DESC PIC X(35).
05 IM50-MISC-INFO REDEFINES IM50-XS-ITEM-DESC.
10 IM50-CURR-SALES-AMT-47 PIC S9(07)V9(2) COMP-3.
10 IM50-CURR-RETURN-AMT-48 PIC S9(07)V9(2) COMP-3.
10 IM50-CURR-NO-ORDER-49 PIC S9(05) COMP-3.
10 IM50-CURR-QTY-ORDERED-50 PIC S9(11) COMP-3.
10 IM50-CURR-COST-AMT-51 PIC S9(05)V9(4) COMP-3.
10 IM50-WEIGHT-63 PIC S9(06)V9(1) COMP-3.
10 IM50-HEIGHT-64 PIC S9(03) COMP-3.
10 IM50-LENGTH-65 PIC S9(04)V9(1) COMP-3.
10 IM50-WIDTH-66 PIC S9(03) COMP-3.
05 IM50-DATE-OF-ENTRY-67 PIC 9(06) COMP-3.
05 IM50-ID-OF-ENTRY-68 PIC X(04).
05 IM50-DATE-OF-LAST-INV-69 PIC 9(06) COMP-3.
05 IM50-PRIMARY-VENDOR-75 PIC X(12).
05 IM50-CGS-REDF REDEFINES IM50-PRIMARY-VENDOR-75.
10 IM50-CATEGORY PIC 9(03).
10 IM50-GROUP PIC X(04).
10 IM50-SEQUENCE PIC 9(05).
05 IM50-MIN-FACTOR-98 PIC 9(01)V9(1).
05 IM50-MAX-FACTOR-99 PIC 9(01)V9(1).
05 IM50-ORDER-QTY-NAME-1-82 PIC X(02).
05 IM50-ORDER-QTY-AMT-1-83 PIC S9(05) COMP-3.
05 IM50-ORDER-QTY-NAME-2-84 PIC X(02).
05 IM50-ORDER-QTY-AMT-2-85 PIC S9(05) COMP-3.
05 IM50-MIN-STOCK-LVL-88 PIC S9(09)V9(2) COMP-3.
05 IM50-CUBIC-MSR-89 PIC S9(05)V9(2) COMP-3.
05 IM50-MIN-STK-ACTUAL-97 PIC S9(07)V9(2) COMP-3.
05 IM50-VENDOR-NUMBER-76 PIC 9(05).
05 IM50-ALT-VENDOR-100 PIC 9(05).
05 IM50-MIN-MAINT-101 PIC X(01).
05 IM50-RCVD-THIS-PER-102 PIC S9(09)V9(2) COMP-3.
05 IM50-LAST-REG-PO-NO PIC X(06).
05 FILLER REDEFINES IM50-LAST-REG-PO-NO.
10 IM50-XS-GROUP PIC X(04).
10 IM50-XS-FILLER PIC X(02).
05 IM50-CHANGE-DATE PIC 9(06) COMP-3.
05 IM50-LAST-REG-REC-DATE PIC 9(06) COMP-3.
* NUMBER OF CHARACTERS IN RECORD = 227
FD IM0045.
* COPY IM45RC OF COPYBOOK.
01 IM45-RECORD.
05 IM45-ITEM PIC X(07).
05 IM45-PLATE PIC X(16).
05 IM45-CAT-GRP-SEQ.
10 IM45-CATEGORY PIC 9(03).
10 IM45-GROUP PIC X(04).
10 IM45-SEQ-NO PIC 9(05).
05 IM45-UPC-CODE.
10 IM45-UPC-VENDOR PIC 9(06).
10 IM45-UPC-ITEM PIC 9(05).
05 IM45-ITEM-PRICE.
10 IM45-MODERN-LIST PIC S9(07)V9(04) COMP.
10 IM45-MFG-LIST PIC S9(07)V9(04) COMP.
10 IM45-MFG-FACTOR PIC S9(03)V9(04) COMP.
10 IM45-DB-COST PIC S9(07)V9(04) COMP.
10 IM45-SURCHARGE PIC S9(07)V9(04) COMP.
10 IM45-LIFO-COST PIC S9(07)V9(04) COMP.
10 IM45-SALES-GROUP PIC X(04).
05 IM45-PREV-MODERN-LIST PIC S9(07)V9(04) COMP.
05 IM45-PREV-MFG-LIST PIC S9(07)V9(04) COMP.
05 IM45-PREV-MFG-FACTOR PIC S9(07)V9(04) COMP.
05 IM45-DESCRIPTION PIC X(36).
05 IM45-BOX-PACK-QTY PIC S9(05) COMP.
05 IM45-LIFT-CTN-QTY PIC S9(05) COMP.
05 IM45-ITEM-NOTE PIC 9(02).
05 IM45-VENDOR-ONE PIC X(05).
05 IM45-PREV-VENDOR-ONE PIC X(05).
05 IM45-UOM PIC X(02).
05 IM45-BOX-PACK-DIMENSIONS.
10 IM45-WEIGHT PIC S9(04)V9(02) COMP.
10 IM45-HEIGHT PIC S9(04)V9(02) COMP.
10 IM45-LENGTH PIC S9(04)V9(02) COMP.
10 IM45-WIDTH PIC S9(04)V9(02) COMP.
10 IM45-CUBIC PIC S9(04)V9(02) COMP.
05 IM45-TAXABLE-ITEM PIC X(01).
05 IM45-OBSOLETE-ITEM PIC X(01).
05 IM45-UPDATE-DATE PIC 9(08) COMP.
05 IM45-COST-CHG-DATE PIC 9(08) COMP.
05 IM45-WMS-CHG-DATE PIC 9(08) COMP.
05 IM45-PROD-CODE PIC X(01).
05 IM45-WMS-CHG-TIME PIC 9(04) COMP.
05 IM45-LIFT-CTN-DIMENSIONS.
10 IM45-LC-WEIGHT PIC S9(04)V9(02) COMP.
10 IM45-LC-HEIGHT PIC S9(04)V9(02) COMP.
10 IM45-LC-LENGTH PIC S9(04)V9(02) COMP.
10 IM45-LC-WIDTH PIC S9(04)V9(02) COMP.
10 IM45-LC-CUBIC PIC S9(04)V9(02) COMP.
05 FILLER PIC X(13).
WORKING-STORAGE SECTION.
* COPY 'GTVMS' OF COPYBOOK.
01 GTVMS-PARAMETERS.
03 GTVMS-ATTRIBUTES PIC 9(004).
88 GTVMS-PID VALUE 0100.
88 GTVMS-PRCNAM VALUE 0101.
88 GTVMS-USRNAM VALUE 0102.
88 GTVMS-IMGNAM VALUE 0103.
88 GTVMS-PRCMODE VALUE 0104.
88 GTVMS-PRCTERM VALUE 0105.
88 GTVMS-SETPRCNAM VALUE 0106.
88 GTVMS-GETPRCNODE VALUE 0110.
88 GTVMS-GETSYM VALUE 0201.
88 GTVMS-SETSYM VALUE 0202.
88 GTVMS-DELSYM VALUE 0203.
88 GTVMS-GETLOG VALUE 0301.
88 GTVMS-SETLOG VALUE 0302.
88 GTVMS-DELLOG VALUE 0303.
88 GTVMS-RECLCK VALUE 1001.
88 GTVMS-SETPWD VALUE 2001.
88 GTVMS-VERPWD VALUE 2002.
88 GTVMS-GETMSG VALUE 9901.
03 GTVMS-ATTR REDEFINES GTVMS-ATTRIBUTES.
05 GTVMS-GROUP PIC 9(002).
05 GTVMS-FUNCTION PIC 9(002).
03 GTVMS-INPUT.
05 GTVMS-IN-LEN.
10 GTVMS-IN-LEN1 PIC 9(002) VALUE 0.
10 GTVMS-IN-LEN2 PIC 9(002) VALUE 0.
10 GTVMS-IN-LEN3 PIC 9(002) VALUE 0.
05 GTVMS-IN-LENGTHS REDEFINES GTVMS-IN-LEN
PIC X(006).
05 GTVMS-IN-RDF.
10 FILLER PIC X(090).
10 GTVMS-IN-VALUE PIC S9(009) COMP VALUE 0.
05 GTVMS-IN-STRING REDEFINES GTVMS-IN-RDF
PIC X(094).
03 GTVMS-OUTPUT.
05 GTVMS-OUT-LENGTH PIC 9(002) VALUE 0.
05 GTVMS-OUT-RDF.
10 FILLER PIC X(094).
10 GTVMS-OUT-VALUE PIC S9(009) COMP VALUE 0.
05 GTVMS-OUT-STRING REDEFINES GTVMS-OUT-RDF
PIC X(098).
03 FILLER PIC X(100).
03 GTVMS-STATUS PIC S9(009) COMP VALUE 0.
88 GTVMS-AMBSYMDEF VALUE EXTERNAL LIB$_AMBSYMDEF.
88 GTVMS-STRTRU VALUE EXTERNAL LIB$_STRTRU.
88 GTVMS-INPCONERR VALUE EXTERNAL OTS$_INPCONERR.
88 GTVMS-ACCVIO VALUE EXTERNAL SS$_ACCVIO.
88 GTVMS-BADPARAM VALUE EXTERNAL SS$_BADPARAM.
88 GTVMS-BUFFEROVF VALUE EXTERNAL SS$_BUFFEROVF.
88 GTVMS-DUPLNAM VALUE EXTERNAL SS$_DUPLNAM.
88 GTVMS-EXASTLM VALUE EXTERNAL SS$_EXASTLM.
88 GTVMS-INSFARG VALUE EXTERNAL SS$_INSFARG.
88 GTVMS-IVLOGNAM VALUE EXTERNAL SS$_IVLOGNAM.
88 GTVMS-IVLOGTAB VALUE EXTERNAL SS$_IVLOGTAB.
88 GTVMS-MSGNOTFND VALUE EXTERNAL SS$_MSGNOTFND.
88 GTVMS-NOLOGNAM VALUE EXTERNAL SS$_NOLOGNAM.
88 GTVMS-NOLOGTAB VALUE EXTERNAL SS$_NOLOGTAB.
88 GTVMS-NOMORENODE VALUE EXTERNAL SS$_NOMORENODE.
88 GTVMS-NOMOREPROC VALUE EXTERNAL SS$_NOMOREPROC.
88 GTVMS-NONEXPR VALUE EXTERNAL SS$_NONEXPR.
88 GTVMS-NOPRIV VALUE EXTERNAL SS$_NOPRIV.
88 GTVMS-NORMAL VALUE EXTERNAL SS$_NORMAL.
88 GTVMS-NOSUCHNODE VALUE EXTERNAL SS$_NOSUCHNODE.
88 GTVMS-NOSUCHSYM VALUE EXTERNAL LIB$_NOSUCHSYM.
88 GTVMS-SUSPENDED VALUE EXTERNAL SS$_SUSPENDED.
88 GTVMS-SUPERSEDE VALUE EXTERNAL SS$_SUPERSEDE.
88 GTVMS-TOOMANYLNAM VALUE EXTERNAL SS$_TOOMANYLNAM.
* COPY 'IOEHBS' OF COPYBOOK.
01 IOEHBS-RECORD.
05 STATUS-TO-RETURN PIC X(2).
88 SUCCESSFUL VALUE "00" THRU "02".
88 ENDOFFILE VALUE "13" THRU "16".
88 SEQUENCE-ER VALUE "21".
88 ALTERED-INDX VALUE "21".
88 DUP-KEY VALUE "22".
88 NO-RECORD VALUE "23".
88 BOUND-VIOL VALUE "24".
88 PERM-I-O-ER VALUE "30".
88 RECORD-LOCK VALUE "92", "LO".
88 RECORD-LOCKED VALUE "92", "LO".
88 LOCKED-REC VALUE "92", "LO".
88 INDX-NO-MATCH VALUE "94".
88 DISK-FULL VALUE "95".
05 FILE-STATUS REDEFINES STATUS-TO-RETURN.
10 FILE-STATUS-1 PIC XX.
05 IOE-STATUS REDEFINES STATUS-TO-RETURN.
10 IOE-STATUS-1 PIC XX.
* SORRY FOLKS - 'ADD WS-KILL-THE-RUN TO WS-KILL-THE-RUN' NO LONGER WORKS
* (ON THE ALPHA SYSTEMS). USE 'CALL "LIB$STOP" USING BY VALUE 4' INSTEAD.
* JEF NORTON - 1 MAY 1997.
*01 WS-A-SPACE VALUE SPACES.
* 05 WS-KILL-THE-RUN PIC 9(1).
01 SYERROR-PARM-LIST.
05 SYERROR-SEVERITY PIC X(01).
88 SYERROR-WARNING VALUE "W".
88 SYERROR-ERROR VALUE "A".
05 SYERROR-PROGRAM PIC X(08).
05 SYERROR-MESSAGE-1 PIC X(75) VALUE SPACES.
05 SYERROR-MESSAGE-2 PIC X(75) VALUE SPACES.
05 SYERROR-MESSAGE-3 PIC X(75) VALUE SPACES.
05 SYERROR-FILE PIC X(12).
05 SYERROR-STATUS PIC X(02).
05 SYERROR-STS PIC S9(09) USAGE IS COMP.
05 SYERROR-STV PIC S9(09) USAGE IS COMP.
05 SYERROR-KEY PIC X(20) VALUE SPACES.
* COPY 'SMGDSP' OF COPYBOOK.
01 SMG-DATA-SIZE PIC 99 COMP.
01 SMG-DATA.
03 SMG-DATA-STRING
OCCURS 1 TO 80 TIMES
DEPENDING ON SMG-DATA-SIZE PIC X.
01 SMG-BUFFER.
03 SMG-FUNCTION PIC 99.
88 SMG-REFRESH VALUE 00.
88 SMG-SET-CURSOR-ABS VALUE 01.
88 SMG-ERASE-DISPLAY VALUE 02.
88 SMG-ERASE-LINE VALUE 03.
88 SMG-PUT-CHARS VALUE 04.
88 SMG-DISPLAY-CLEAR-SCREEN VALUE 05.
88 SMG-DISPLAY-CLEAR-LINE VALUE 06.
88 SMG-RING-BELL VALUE 07.
88 SMG-ERASE-COLUMN VALUE 08.
88 SMG-CREATE-VID VALUE 21.
88 SMG-PASTE-VID VALUE 22.
88 SMG-UNPASTE-VID VALUE 23.
88 SMG-DELETE-VID VALUE 24.
88 SMG-CREATE-VIEWPORT VALUE 25.
88 SMG-SCROLL-VIEWPORT VALUE 26.
88 SMG-DELETE-VIEWPORT VALUE 27.
88 SMG-MOVE-VID VALUE 28.
88 SMG-POP-VID VALUE 29.
88 SMG-PUT-CHARS-WIDE VALUE 31.
88 SMG-PUT-CHARS-HIGHWIDE VALUE 32.
88 SMG-CHANGE-RENDITION VALUE 33.
88 SMG-FIND-CURSOR VALUE 41.
88 SMG-SET-CURSOR VALUE 42.
88 SMG-DRAW-BOX VALUE 43.
88 SMG-DRAW-LINE VALUE 44.
88 SMG-BEGIN-BATCHING VALUE 45.
88 SMG-END-BATCHING VALUE 46.
88 SMG-PUT-HELP VALUE 47.
88 SMG-MESSAGE-LINE VALUE 48.
88 SMG-CHANGE-VID VALUE 49.
88 SMG-READ-FROM-VID VALUE 50.
88 SMG-DISABLE-CONTROL-Y VALUE 51.
88 SMG-ENABLE-CONTROL-Y VALUE 52.
88 SMG-SAVE-KBID VALUE 91.
88 SMG-GET-VID VALUE 92.
88 SMG-GET-PBD VALUE 93.
88 SMG-GET-KBID VALUE 94.
03 SMG-ROW.
05 SMG-ROWS PIC S9(4) VALUE ZEROS.
88 SMG-SCROLL-UP VALUE 0001.
88 SMG-SCROLL-DOWN VALUE 0002.
88 SMG-SCROLL-RIGHT VALUE 0004.
88 SMG-SCROLL-LEFT VALUE 0008.
88 SMG-CR-TO-ABORT VALUE 1.
88 SMG-CR-TO-CONTINUE VALUE 2.
88 SMG-CR-TO-RECOVER VALUE 3.
05 SMG-ROWX REDEFINES SMG-ROWS.
07 SMG-ROW1 PIC S99.
07 SMG-ROW2 PIC S99.
03 SMG-COL.
05 SMG-COLS PIC S9(4) VALUE ZEROS.
05 SMG-COLX REDEFINES SMG-COLS.
07 SMG-COL1 PIC S99.
07 SMG-COL2 PIC S99.
03 SMG-ATT.
05 SMG-ATTRIBUTES PIC 9(9) COMP VALUE ZEROS.
88 SMG-NORMAL VALUE ZERO.
88 SMG-BLINK VALUE EXTERNAL SMG$M_BLINK.
88 SMG-BOLD VALUE EXTERNAL SMG$M_BOLD.
88 SMG-REVERSE VALUE EXTERNAL SMG$M_REVERSE.
88 SMG-UNDERLINE VALUE EXTERNAL SMG$M_UNDERLINE.
88 SMG-INVISIBLE VALUE EXTERNAL SMG$M_INVISIBLE.
03 SMG-VIRTUAL-ID.
05 SMG-VID PIC S9(4) COMP.
03 SMG-LABEL.
05 SMG-SIDES PIC X VALUE SPACE.
88 SMG-TOP VALUE 'T'.
88 SMG-BOTTOM VALUE 'B'.
88 SMG-RIGHT VALUE 'R'.
88 SMG-LEFT VALUE 'L'.
05 SMG-POSITION PIC 99 VALUE ZEROS.
03 SMG-TOP-VIRTUAL-ID.
05 SMG-TOP-VID PIC 9(9) COMP VALUE ZEROS.
03 SMG-RETURN-STATUS PIC 9(9) COMP.
88 SMG-RETURN-SUCCESS VALUE 1.
* COPY 'VKBD' OF COPYBOOK.
01 VKBD-DATA-SIZE PIC 99 COMP VALUE 0.
01 VKBD-DATA.
03 VKBD-DATA-STRING
OCCURS 1 TO 80 TIMES
DEPENDING ON VKBD-DATA-SIZE PIC X.
01 VKBD-BUFFER.
03 VKBD-TYPE-OF-INPUT PIC 99 VALUE 0.
88 VKBD-NUMERIC VALUE 01.
88 VKBD-ALPHA VALUE 02.
88 VKBD-PASSWORD VALUE 03.
88 VKBD-NUMERIC-FUNCTION VALUE 11.
88 VKBD-ALPHA-FUNCTION VALUE 12.
88 VKBD-PASSWORD-FUNCTION VALUE 13.
88 VKBD-NUMERIC-FUNCTION-FULL VALUE 21.
88 VKBD-ALPHA-FUNCTION-FULL VALUE 22.
88 VKBD-NUMERIC-FUNCTION-VAL VALUE 31.
88 VKBD-ALPHA-FUNCTION-VAL VALUE 32.
88 VKBD-NUMERIC-FUNC-VAL-DEF VALUE 41.
88 VKBD-ALPHA-FUNC-VAL-DEF VALUE 42.
88 VKBD-NUMERIC-FUNC-VAL-DEF-NF VALUE 51.
88 VKBD-ALPHA-FUNC-VAL-DEF-NF VALUE 52.
03 VKBD-ROW PIC 9(4) COMP VALUE 0.
03 VKBD-COL PIC 9(4) COMP VALUE 0.
03 VKBD-TIME-OUT PIC 9(4) COMP VALUE 0.
03 VKBD-VID PIC 9(4) COMP VALUE 0.
03 VKBD-ATT PIC 9(9) COMP VALUE 0.
88 VKBD-BLINK VALUE EXTERNAL SMG$M_BLINK.
88 VKBD-BOLD VALUE EXTERNAL SMG$M_BOLD.
88 VKBD-REVERSE VALUE EXTERNAL SMG$M_REVERSE.
88 VKBD-UNDERLINE VALUE EXTERNAL SMG$M_UNDERLINE.
88 VKBD-INVISIBLE VALUE EXTERNAL SMG$M_INVISIBLE.
03 VKBD-DECIMALS PIC S9(1) VALUE 0.
03 VKBD-RETURNS PIC 9(2) COMP VALUE 0.
88 VKBD-RETURN-NORMAL VALUE 00.
88 VKBD-RETURN-BACKSPACE VALUE 01.
88 VKBD-RETURN-UP-ARROW VALUE 02.
88 VKBD-RETURN-DOWN-ARROW VALUE 03.
88 VKBD-RETURN-LEFT-ARROW VALUE 04.
88 VKBD-RETURN-RIGHT-ARROW VALUE 05.
88 VKBD-RETURN-TAB VALUE 06.
88 VKBD-RETURN-PF2 VALUE 07.
88 VKBD-RETURN-PF3 VALUE 08.
88 VKBD-RETURN-PF4 VALUE 09.
88 VKBD-RETURN-TIME-OUT VALUE 10.
88 VKBD-RETURN-PAGE-UP VALUE 11.
88 VKBD-RETURN-PAGE-DOWN VALUE 12.
88 VKBD-VALID-RETURNS VALUE 00 THRU 12.
01 RECORD-LIT.
03 LIT-1.
05 FILLER PIC X(63) VALUE
'ACTION: Enter line #, ARROW key for scrolling, <PF4> to exit : '.
03 LIT-3 PIC X(59) VALUE
'ITEM # PLATE # CAT/GRP ITEM DESCRIPTION'.
03 LIT-4 PIC X(75) VALUE
' ------- ---------------- -------- ----------------------------------'.
03 LIT-5 PIC X(59) VALUE
'ITEM # po# inv# CAT/GRP ITEM DESCRIPTION'.
01 FILLER.
03 W1-LOCATION PIC X(04).
03 W1-PLATE-NO PIC X(16).
03 W1-CAT-GRP-SEQ.
05 W1-CAT PIC 9(3).
05 W1-GRP PIC X(4).
05 W1-SEQ PIC 9(5).
03 W1-FIELD PIC S9(4).
03 W1-ALPHA-FIELD REDEFINES W1-FIELD PIC X(4).
03 W1-WINDOW-SIZE PIC 9(4) COMP.
03 W1-SEQ-LIMIT PIC 9(4) COMP VALUE 30.
03 W1-MAX PIC 9(4) COMP.
03 W1-SUB PIC 9(4) COMP.
03 W1-POINTER PIC S9(9) COMP.
03 W1-SCROLL-LINES PIC S9(9) COMP.
03 W1-VID PIC 9(4) COMP.
03 W1-VID-SIZE PIC 9(4) COMP.
03 W1-WINDOW PIC 9(4) COMP.
03 W1-VIDSX OCCURS 2 TIMES.
05 W1-VIDS PIC 9.
03 W1-INIT-SW PIC 9.
88 W1-INIT VALUE 1.
03 W1-NO-MORE-RECORD-SW PIC X.
88 W1-NO-MORE-RECORD VALUE 'N'.
03 W1-AT-POS PIC 9(2) COMP.
88 W1-AT-FOUND VALUE 2 THRU 24.
03 W1-SAVE-FUNCTION PIC 9(2).
03 W1-SAVE-KEY-DATA PIC X(12).
03 W1-DETAIL.
05 W1-DETAIL-NUM PIC ZZZZ..
05 W1-DETAIL-NUMX
REDEFINES W1-DETAIL-NUM PIC X(5).
05 FILLER PIC X(1) VALUE SPACE.
05 W1-DETAIL-ITEM PIC X(7).
05 FILLER PIC X(3) VALUE SPACES.
05 W1-DETAIL-PLATE PIC X(16).
05 FILLER PIC X(3) VALUE SPACES.
05 W1-DETAIL-CAT PIC X(3).
05 FILLER PIC X(1) VALUE '-'.
05 W1-DETAIL-GRP PIC X(4).
05 FILLER PIC X(3) VALUE SPACES.
05 W1-DETAIL-DESC PIC X(34).
LINKAGE SECTION.
* COPY 'IMG00101' OF COPYBOOK.
01 IMG00101-HELP-PARAMETERS.
05 IMG00101-INQ-FUNCTION PIC 9(2).
88 IMG00101-INQ-BY-PLATE VALUE 01.
88 IMG00101-INQ-BY-CAT VALUE 02.
88 IMG00101-INQ-BY-ITEM VALUE 03.
88 IMG00101-INQ-BY-NEXT-ITEM VALUE 04.
88 IMG00101-INQ-BY-UPC VALUE 05.
88 IMG00101-CLOSE-FILE VALUE 09.
05 IMG00101-STARTING-VID PIC 9(4) COMP.
05 IMG00101-KEY-DATA PIC X(16).
05 IMG00101-ITEM-RECORD PIC X(246).
05 IMG00101-RETURNS PIC 9.
88 IMG00101-INQ-SUCCESS VALUE 0.
88 IMG00101-ITEM-NOT-FOUND VALUE 1.
88 IMG00101-INQ-EXIT VALUE 2.
05 IMG00101-ITEM-IND PIC 9.
88 IMG00101-ALL-ITEM VALUE 0.
88 IMG00101-SQ-ITEM VALUE 1.
88 IMG00101-NS-ITEM VALUE 2.
PROCEDURE DIVISION USING IMG00101-HELP-PARAMETERS.
DECLARATIVES.
* COPY IM50DC OF COPYBOOK.
IM0050-ERROR-SECTION SECTION.
USE AFTER STANDARD ERROR PROCEDURE ON IM0050.
IM0050-ERROR.
IF FILE-STATUS NOT = "02" AND "90" AND "92"
DISPLAY " "
DISPLAY "I/O ERROR ON IM0050_FILE"
DISPLAY "FILE STATUS = " FILE-STATUS
DISPLAY "RMS-STS VALUE = " RMS-STS OF IM0050 WITH CONVERSION
DISPLAY "RMS-STV VALUE = " RMS-STV OF IM0050 WITH CONVERSION
SET GTVMS-GETMSG TO TRUE
MOVE RMS-STS OF IM0050 TO GTVMS-IN-VALUE
CALL "GTVMS" USING GTVMS-PARAMETERS
DISPLAY GTVMS-OUT-STRING(1:GTVMS-OUT-LENGTH)
DISPLAY " "
CALL "LIB$STOP" USING BY VALUE 4.
* COPY IM45DC OF COPYBOOK.
IM0045-ERROR-SECTION SECTION.
USE AFTER STANDARD ERROR PROCEDURE ON IM0045.
IM0045-ERROR.
IF FILE-STATUS NOT = "02" AND "90" AND "92"
DISPLAY " "
DISPLAY "I/O ERROR ON IM0045_FILE"
DISPLAY "FILE STATUS = " FILE-STATUS
DISPLAY "RMS-STS VALUE = " RMS-STS OF IM0045 WITH CONVERSION
DISPLAY "RMS-STV VALUE = " RMS-STV OF IM0045 WITH CONVERSION
SET GTVMS-GETMSG TO TRUE
MOVE RMS-STS OF IM0045 TO GTVMS-IN-VALUE
CALL "GTVMS" USING GTVMS-PARAMETERS
DISPLAY GTVMS-OUT-STRING(1:GTVMS-OUT-LENGTH)
DISPLAY " "
CALL "LIB$STOP" USING BY VALUE 4.
END DECLARATIVES.
MAIN-PROGRAM SECTION.
MAIN-START-00.
IF NOT W1-INIT
SET W1-INIT TO TRUE
OPEN INPUT IM0050 ALLOWING ALL
OPEN INPUT IM0045 ALLOWING ALL
END-IF.
MOVE 500 TO W1-WINDOW-SIZE.
MOVE IMG00101-STARTING-VID TO W1-VID.
MOVE ZERO TO W1-VIDS(1),W1-VIDS(2).
MOVE SPACES TO W1-PLATE-NO.
MOVE 0 TO W1-CAT, W1-SEQ.
MOVE SPACES TO W1-GRP.
EVALUATE IMG00101-INQ-FUNCTION
WHEN 1 PERFORM 100-INQ-BY-PLATE
WHEN 2 PERFORM 200-INQ-BY-CATEGORY
END-EVALUATE.
IF W1-VIDS(2) = 1
MOVE W1-VID TO SMG-VID
ADD 1 TO SMG-VID
SET SMG-DELETE-VID TO TRUE
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
IF W1-VIDS(1) = 1
MOVE W1-VID TO SMG-VID
SET SMG-DELETE-VID TO TRUE
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
PERFORM 300-CLOSE-FILES.
EXIT PROGRAM.
100-INQ-BY-PLATE.
MOVE 16 TO W1-AT-POS.
PERFORM UNTIL W1-AT-POS = 1 OR IMG00101-KEY-DATA(W1-AT-POS:1) = '@'
SUBTRACT 1 FROM W1-AT-POS
END-PERFORM.
IF W1-AT-FOUND
MOVE IMG00101-KEY-DATA(1:W1-AT-POS - 1) TO IM50-ALTERNATE-ID-03
ELSE
MOVE IMG00101-KEY-DATA TO IM50-ALTERNATE-ID-03.
START IM0050 KEY IS NOT < IM50-ALTERNATE-ID-03
INVALID KEY
SET NO-RECORD TO TRUE.
IF NOT NO-RECORD
READ IM0050 NEXT RECORD
AT END
SET NO-RECORD TO TRUE
END-READ.
IF NOT NO-RECORD
IF W1-AT-FOUND
IF IM50-ALTERNATE-ID-03(1:W1-AT-POS - 1) = IMG00101-KEY-DATA(1:W1-AT-POS - 1)
MOVE IM50-LOC-NO-01 TO W1-LOCATION
PERFORM 1000-DISPLAY-ITEM-DATA
ELSE
PERFORM 400-KEY-NOT-FOUND
ELSE
IF IM50-ALTERNATE-ID-03 = IMG00101-KEY-DATA
SET IMG00101-INQ-SUCCESS TO TRUE
MOVE IM50-INVENTORY-MASTER-RECORD TO IMG00101-ITEM-RECORD
ELSE
PERFORM 400-KEY-NOT-FOUND.
200-INQ-BY-CATEGORY.
MOVE IMG00101-KEY-DATA(1:12) TO W1-CAT-GRP-SEQ.
INSPECT W1-CAT REPLACING ALL SPACES BY ZEROES
INSPECT W1-SEQ REPLACING ALL SPACES BY ZEROES.
MOVE W1-CAT TO IM50-CATEGORY.
MOVE W1-GRP TO IM50-GROUP.
MOVE W1-SEQ TO IM50-SEQUENCE.
START IM0050 KEY IS NOT < IM50-PRIMARY-VENDOR-75
INVALID KEY SET NO-RECORD TO TRUE.
IF NOT NO-RECORD
READ IM0050 NEXT RECORD
AT END SET NO-RECORD TO TRUE
END-READ.
IF NOT NO-RECORD AND W1-CAT NOT = IM50-CATEGORY
SET NO-RECORD TO TRUE
END-IF.
IF NOT NO-RECORD
MOVE IM50-LOC-NO-01 TO W1-LOCATION
PERFORM 1000-DISPLAY-ITEM-DATA
ELSE
PERFORM 400-KEY-NOT-FOUND.
300-CLOSE-FILES.
IF W1-INIT
CLOSE IM0045
CLOSE IM0050.
MOVE ZERO TO W1-INIT-SW.
400-KEY-NOT-FOUND.
SET SMG-MESSAGE-LINE TO TRUE.
SET SMG-CR-TO-RECOVER TO TRUE.
MOVE 60 TO SMG-DATA-SIZE.
MOVE 'Record not found in your branch inventory file' TO SMG-DATA.
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
MOVE 1 TO IMG00101-RETURNS.
1000-DISPLAY-ITEM-DATA.
SET VKBD-REVERSE TO TRUE.
MOVE SPACE TO W1-NO-MORE-RECORD-SW.
MOVE ZERO TO W1-MAX,W1-VID-SIZE
MOVE W1-VID TO SMG-VID.
MOVE 15 TO SMG-ROWS.
MOVE 80 TO SMG-COLS.
SET SMG-CREATE-VID TO TRUE.
SET SMG-TOP TO TRUE.
MOVE 25 TO SMG-DATA-SIZE.
MOVE ' BRANCH INVENTORY SEARCH ' TO SMG-DATA.
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
MOVE SPACE TO SMG-SIDES.
SET SMG-PASTE-VID TO TRUE.
MOVE 10 TO SMG-ROWS.
MOVE 1 TO SMG-COLS.
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
MOVE 1 TO W1-VIDS(1).
SET SMG-PUT-CHARS TO TRUE.
MOVE 3 TO SMG-ROWS.
MOVE 8 TO SMG-COLS.
MOVE 59 TO SMG-DATA-SIZE.
IF W1-GRP = '\\\\'
CALL 'SMGDSP' USING SMG-DATA-SIZE,LIT-5,SMG-BUFFER
ELSE
CALL 'SMGDSP' USING SMG-DATA-SIZE,LIT-3,SMG-BUFFER
END-IF.
MOVE 4 TO SMG-ROWS.
MOVE 6 TO SMG-COLS.
MOVE 74 TO SMG-DATA-SIZE.
CALL 'SMGDSP' USING SMG-DATA-SIZE,LIT-4,SMG-BUFFER.
MOVE W1-VID TO SMG-VID.
ADD 1 TO SMG-VID.
MOVE W1-WINDOW-SIZE TO SMG-ROWS.
MOVE 85 TO SMG-COLS.
SET SMG-CREATE-VID TO TRUE.
MOVE SPACE TO SMG-SIDES.
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
MOVE SPACE TO SMG-SIDES.
MOVE 0180 TO SMG-COLS.
MOVE 0110 TO SMG-ROWS.
SET SMG-CREATE-VIEWPORT TO TRUE.
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
MOVE 1 TO W1-VIDS(2).
PERFORM 4100-READ-ITEM-RECORD
MOVE W1-VID TO W1-WINDOW.
ADD 1 TO W1-WINDOW.
MOVE 10 TO W1-POINTER.
PERFORM 1500-GET-INPUT TEST AFTER UNTIL ( W1-FIELD > 0 AND
W1-FIELD NOT > W1-MAX AND
VKBD-RETURN-NORMAL) OR
VKBD-RETURN-PF4 OR
VKBD-RETURN-TIME-OUT.
IF VKBD-RETURN-PF4 OR VKBD-RETURN-TIME-OUT
MOVE 2 TO IMG00101-RETURNS
ELSE
MOVE W1-FIELD TO SMG-ROWS
SET SMG-READ-FROM-VID TO TRUE
MOVE 85 TO SMG-DATA-SIZE
MOVE W1-VID TO SMG-VID
ADD 1 TO SMG-VID
CALL 'SMGDSP' USING SMG-DATA-SIZE,W1-DETAIL,SMG-BUFFER
INITIALIZE IMG00101-ITEM-RECORD
MOVE W1-LOCATION TO IM50-LOC-NO-01
MOVE W1-DETAIL-ITEM TO IM50-ITEM-NO-02
READ IM0050
INVALID KEY
SET IMG00101-INQ-EXIT TO TRUE
NOT INVALID KEY
MOVE IM50-INVENTORY-MASTER-RECORD TO IMG00101-ITEM-RECORD
SET IMG00101-INQ-SUCCESS TO TRUE
END-READ
END-IF.
1500-GET-INPUT.
SET VKBD-NUMERIC-FUNCTION-VAL TO TRUE.
MOVE W1-VID TO VKBD-VID.
MOVE 1 TO VKBD-ROW.
MOVE 65 TO VKBD-COL.
MOVE 4 TO VKBD-DATA-SIZE.
MOVE 300 TO VKBD-TIME-OUT.
CALL 'VKBD' USING VKBD-DATA-SIZE,W1-ALPHA-FIELD,VKBD-BUFFER.
EVALUATE VKBD-RETURNS
WHEN 2 PERFORM 2000-UP-ARROW
WHEN 3 PERFORM 2100-DOWN-ARROW
WHEN 4 PERFORM 2200-LEFT-ARROW
WHEN 5 PERFORM 2300-RIGHT-ARROW
END-EVALUATE.
IF W1-FIELD > 0 AND W1-FIELD NOT > W1-MAX AND VKBD-RETURN-NORMAL
MOVE W1-FIELD TO SMG-ROWS
SET SMG-READ-FROM-VID TO TRUE
MOVE 85 TO SMG-DATA-SIZE
MOVE W1-VID TO SMG-VID
ADD 1 TO SMG-VID
CALL 'SMGDSP' USING SMG-DATA-SIZE,W1-DETAIL,SMG-BUFFER
INITIALIZE IMG00101-ITEM-RECORD
MOVE W1-LOCATION TO IM50-LOC-NO-01
MOVE W1-DETAIL-ITEM TO IM50-ITEM-NO-02
READ IM0050
INVALID KEY
SET IMG00101-INQ-EXIT TO TRUE
NOT INVALID KEY
MOVE IM50-INVENTORY-MASTER-RECORD TO IMG00101-ITEM-RECORD
SET IMG00101-INQ-SUCCESS TO TRUE
END-READ
ELSE
NEXT SENTENCE.
2000-UP-ARROW.
MOVE W1-WINDOW TO SMG-VID.
SET SMG-SCROLL-VIEWPORT TO TRUE.
SET SMG-SCROLL-DOWN TO TRUE.
IF W1-FIELD > 0 AND W1-POINTER > 10
MOVE W1-FIELD TO W1-SCROLL-LINES
COMPUTE W1-POINTER = W1-POINTER - W1-FIELD
IF W1-POINTER < 10
ADD W1-FIELD TO W1-POINTER
COMPUTE W1-SCROLL-LINES = W1-POINTER - 10
COMPUTE W1-POINTER = W1-POINTER - W1-SCROLL-LINES
ELSE
NEXT SENTENCE
ELSE
IF W1-POINTER > 10
SUBTRACT 1 FROM W1-POINTER
MOVE 1 TO W1-SCROLL-LINES
ELSE
MOVE 0 TO W1-SCROLL-LINES.
IF W1-SCROLL-LINES > 0
MOVE W1-SCROLL-LINES TO SMG-COLS
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
2100-DOWN-ARROW.
MOVE W1-WINDOW TO SMG-VID.
SET SMG-SCROLL-VIEWPORT TO TRUE.
SET SMG-SCROLL-UP TO TRUE.
IF W1-FIELD > 0
MOVE W1-FIELD TO W1-SCROLL-LINES
ADD W1-FIELD TO W1-POINTER
ELSE
ADD 1 TO W1-POINTER
MOVE 1 TO W1-SCROLL-LINES.
IF W1-POINTER NOT > W1-MAX
MOVE W1-SCROLL-LINES TO SMG-COLS
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ELSE
IF NOT W1-NO-MORE-RECORD
PERFORM 4700-EXPAND-VID UNTIL W1-NO-MORE-RECORD OR
W1-POINTER NOT > W1-MAX
IF W1-POINTER NOT > W1-MAX
MOVE W1-WINDOW TO SMG-VID
SET SMG-SCROLL-VIEWPORT TO TRUE
SET SMG-SCROLL-UP TO TRUE
MOVE W1-SCROLL-LINES TO SMG-COLS
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ELSE
SUBTRACT W1-SCROLL-LINES FROM W1-POINTER
IF W1-POINTER < W1-MAX
COMPUTE W1-SCROLL-LINES = W1-MAX - W1-POINTER
SET SMG-SCROLL-VIEWPORT TO TRUE
SET SMG-SCROLL-UP TO TRUE
MOVE W1-SCROLL-LINES TO SMG-COLS
ADD W1-SCROLL-LINES TO W1-POINTER
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ELSE
NEXT SENTENCE
ELSE
SUBTRACT W1-SCROLL-LINES FROM W1-POINTER
IF W1-POINTER < W1-MAX
COMPUTE W1-SCROLL-LINES = W1-MAX - W1-POINTER
SET SMG-SCROLL-VIEWPORT TO TRUE
SET SMG-SCROLL-UP TO TRUE
MOVE W1-SCROLL-LINES TO SMG-COLS
ADD W1-SCROLL-LINES TO W1-POINTER
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ELSE
NEXT SENTENCE.
2200-LEFT-ARROW.
MOVE W1-WINDOW TO SMG-VID.
SET SMG-SCROLL-VIEWPORT TO TRUE.
SET SMG-SCROLL-DOWN TO TRUE.
IF W1-FIELD > 0 AND W1-POINTER > 10
COMPUTE W1-SCROLL-LINES = W1-FIELD * 10
COMPUTE W1-POINTER = W1-POINTER - W1-SCROLL-LINES
IF W1-POINTER < 10
ADD W1-SCROLL-LINES TO W1-POINTER
COMPUTE W1-SCROLL-LINES = W1-POINTER - 10
COMPUTE W1-POINTER = W1-POINTER - W1-SCROLL-LINES
ELSE
NEXT SENTENCE
ELSE
IF W1-POINTER > 10
MOVE 10 TO W1-SCROLL-LINES
SUBTRACT W1-SCROLL-LINES FROM W1-POINTER
IF W1-POINTER < 10
ADD W1-SCROLL-LINES TO W1-POINTER
COMPUTE W1-SCROLL-LINES = W1-POINTER - 10
SUBTRACT W1-SCROLL-LINES FROM W1-POINTER
ELSE
NEXT SENTENCE
ELSE
MOVE 0 TO W1-SCROLL-LINES.
IF W1-SCROLL-LINES > 0
MOVE W1-SCROLL-LINES TO SMG-COLS
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
2300-RIGHT-ARROW.
MOVE W1-WINDOW TO SMG-VID.
SET SMG-SCROLL-VIEWPORT TO TRUE.
SET SMG-SCROLL-UP TO TRUE.
IF W1-FIELD > 0
COMPUTE W1-SCROLL-LINES = W1-FIELD * 10
ADD W1-SCROLL-LINES TO W1-POINTER
ELSE
ADD 10 TO W1-POINTER
MOVE 10 TO W1-SCROLL-LINES.
IF W1-POINTER NOT > W1-MAX
MOVE W1-SCROLL-LINES TO SMG-COLS
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ELSE
IF NOT W1-NO-MORE-RECORD
PERFORM 4700-EXPAND-VID UNTIL W1-NO-MORE-RECORD OR
W1-POINTER NOT > W1-MAX
IF W1-POINTER NOT > W1-MAX
MOVE W1-WINDOW TO SMG-VID
SET SMG-SCROLL-VIEWPORT TO TRUE
SET SMG-SCROLL-UP TO TRUE
MOVE W1-SCROLL-LINES TO SMG-COLS
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ELSE
SUBTRACT W1-SCROLL-LINES FROM W1-POINTER
IF W1-POINTER < W1-MAX
COMPUTE W1-SCROLL-LINES = W1-MAX - W1-POINTER
SET SMG-SCROLL-VIEWPORT TO TRUE
SET SMG-SCROLL-UP TO TRUE
MOVE W1-SCROLL-LINES TO SMG-COLS
ADD W1-SCROLL-LINES TO W1-POINTER
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ELSE
NEXT SENTENCE
ELSE
SUBTRACT W1-SCROLL-LINES FROM W1-POINTER
IF W1-POINTER < W1-MAX
COMPUTE W1-SCROLL-LINES = W1-MAX - W1-POINTER
SET SMG-SCROLL-VIEWPORT TO TRUE
SET SMG-SCROLL-UP TO TRUE
MOVE W1-SCROLL-LINES TO SMG-COLS
ADD W1-SCROLL-LINES TO W1-POINTER
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ELSE
NEXT SENTENCE.
4100-READ-ITEM-RECORD.
MOVE W1-VID TO SMG-VID.
ADD 1 TO SMG-VID.
MOVE 1 TO SMG-ROWS,SMG-COLS.
SET SMG-PUT-CHARS TO TRUE.
MOVE 85 TO SMG-DATA-SIZE.
PERFORM 4200-READ-NEXT-SEQ-RECORDS.
MOVE W1-VID TO SMG-VID.
MOVE 1 TO SMG-ROWS,SMG-COLS.
SET SMG-DISPLAY-CLEAR-LINE TO TRUE.
MOVE 63 TO SMG-DATA-SIZE.
MOVE LIT-1 TO SMG-DATA.
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
ADD 1 TO SMG-VID.
MOVE 14 TO SMG-ROWS.
MOVE 1 TO SMG-COLS.
SET SMG-PASTE-VID TO TRUE.
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
4200-READ-NEXT-SEQ-RECORDS.
MOVE ZERO TO W1-SUB.
SET SMG-PUT-CHARS TO TRUE.
PERFORM 4400-SET-DETAIL-LINE UNTIL W1-SUB = W1-SEQ-LIMIT OR
W1-NO-MORE-RECORD.
4400-SET-DETAIL-LINE.
IF IMG00101-SQ-ITEM AND IM50-ITEM-NO-02(1:1) = '9'
NEXT SENTENCE
ELSE
IF ( W1-AT-FOUND AND IMG00101-INQ-BY-PLATE AND
IM50-ALTERNATE-ID-03(1:W1-AT-POS - 1) = IMG00101-KEY-DATA(1:W1-AT-POS - 1) )
OR ( NOT W1-AT-FOUND AND IMG00101-INQ-BY-PLATE AND
IM50-ALTERNATE-ID-03 = IMG00101-KEY-DATA )
OR (IMG00101-INQ-BY-CAT AND
IM50-CATEGORY = W1-CAT AND IM50-GROUP = W1-GRP )
ADD 1 TO W1-MAX,W1-SUB
MOVE W1-MAX TO W1-DETAIL-NUM
MOVE IM50-ITEM-NO-02 TO W1-DETAIL-ITEM, IM45-ITEM
MOVE IM50-ALTERNATE-ID-03 TO W1-DETAIL-PLATE
MOVE IM50-CATEGORY TO W1-DETAIL-CAT
MOVE IM50-GROUP TO W1-DETAIL-GRP
PERFORM TEST AFTER UNTIL NOT RECORD-LOCK
READ IM0045
INVALID KEY
MOVE '* No description * ' TO W1-DETAIL-DESC
NOT INVALID KEY
MOVE IM45-DESCRIPTION(1:34) TO W1-DETAIL-DESC
END-READ
END-PERFORM
IF IM50-GROUP = '\\\\'
MOVE IM50-XS-ITEM-DESC(1:34) TO W1-DETAIL-DESC
MOVE IM50-XS-GROUP TO W1-DETAIL-GRP
MOVE SPACES TO W1-DETAIL-PLATE
MOVE IM50-ALTERNATE-ID-03(1:6) TO W1-DETAIL-PLATE
MOVE IM50-ALTERNATE-ID-03(9:6) TO W1-DETAIL-PLATE(9:6)
MOVE '*' TO W1-DETAIL-PLATE(16:1)
END-IF
CALL 'SMGDSP' USING SMG-DATA-SIZE,W1-DETAIL,SMG-BUFFER
ADD 1 TO SMG-ROWS
END-IF.
READ IM0050 NEXT RECORD
AT END SET W1-NO-MORE-RECORD TO TRUE
END-READ.
IF IMG00101-INQ-BY-CAT
AND IM50-CATEGORY > W1-CAT
SET W1-NO-MORE-RECORD TO TRUE.
IF W1-MAX NOT < 9999
SET W1-NO-MORE-RECORD TO TRUE.
4700-EXPAND-VID.
MOVE W1-VID TO SMG-VID.
MOVE 35 TO SMG-DATA-SIZE.
MOVE 'Reading more records. Please wait..' TO SMG-DATA.
MOVE 2 TO SMG-ROWS.
MOVE 24 TO SMG-COLS.
SET SMG-PUT-CHARS TO TRUE.
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
MOVE W1-WINDOW TO SMG-VID.
IF W1-MAX NOT < W1-VID-SIZE
COMPUTE W1-WINDOW-SIZE = W1-WINDOW-SIZE * 2
MOVE W1-WINDOW-SIZE TO SMG-ROWS
MOVE 53 TO SMG-COLS
MOVE W1-WINDOW TO SMG-VID
SET SMG-CHANGE-VID TO TRUE
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ADD W1-WINDOW-SIZE TO W1-VID-SIZE
ELSE
NEXT SENTENCE.
IF NOT SMG-RETURN-SUCCESS
SET W1-NO-MORE-RECORD TO TRUE
SET SMG-MESSAGE-LINE TO TRUE
SET SMG-CR-TO-RECOVER TO TRUE
MOVE 31 TO SMG-DATA-SIZE
MOVE 'Virtual memory allocation error' TO SMG-DATA
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER
ELSE
MOVE W1-MAX TO SMG-ROWS
ADD 1 TO SMG-ROWS
SET SMG-PUT-CHARS TO TRUE
MOVE 1 TO SMG-COLS
MOVE 85 TO SMG-DATA-SIZE
PERFORM 4200-READ-NEXT-SEQ-RECORDS.
MOVE W1-VID TO SMG-VID.
MOVE 2 TO SMG-ROWS.
MOVE 1 TO SMG-COLS.
SET SMG-ERASE-LINE TO TRUE.
CALL 'SMGDSP' USING SMG-DATA-SIZE,SMG-DATA,SMG-BUFFER.
MOVE W1-WINDOW TO SMG-VID.
PROGRAM-ERROR-RTN SECTION.
|
| Here's the structure of your program:
IF ...
NEXT SENTENCE
ELSE
IF ...
ADD, MOVE, PERFORM/END-PERFORM...
IF ...
MOVE...
END-IF
CALL, ADD...
END-IF
.(period)
The two inner IF's are ended with "END-IF", and the outer IF is ended with the period.
The compiler complained about one of the MOVEs in the innermost IF. When it resumed
processing, it seems to have assumed that the innermost IF was already closed. Thus,
it thought the first END-IF closed the middle IF, and the last END-IF closed the
first IF -- which would be an error. In other words, the complaint about NEXT SENTENCE
isn't valid for your real program, but only for the program the compiler thought
it saw:
IF ...
NEXT SENTENCE
ELSE
IF ...
ADD, MOVE, PERFORM/END-PERFORM...
IF ...
MOVE...
(error)
END-IF
CALL, ADD...
END-IF
.(period)
|