home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / multiadd.zip / ROUTE11.CLA < prev    next >
Text File  |  1989-06-30  |  11KB  |  277 lines

  1.          MEMBER('ROUTE')
  2. WIP_TABLE    PROCEDURE
  3.  
  4. SCREEN         SCREEN      WINDOW(18,25),AT(4,3),PRE(SCR),HUE(15,1)
  5.  OMIT('**-END-**')
  6.   ╔═══════════════════════╗
  7.   ║   Labor Ticket File      ║
  8.   ║              ║
  9.   ║   Goto Lot# :■■■■■■      ║
  10.   ║              ║
  11.   ║ LotNbr Part# Dept Opr ║
  12.   ║ ------ ----- ---- --- ║
  13.   ║ ■■■■■■ ■■■■■  ##  ### ║
  14.   ║              ║
  15.   ║              ║
  16.   ║              ║
  17.   ║              ║
  18.   ║              ║
  19.   ║              ║
  20.   ║              ║
  21.   ║              ║
  22.   ║              ║
  23.   ╚═══════════════════════╝
  24. **-END-**
  25.  
  26.            ROW(1,1)      STRING('<201,205{23},187>')
  27.            ROW(2,1)      REPEAT(16);STRING('<186,0{23},186>') .
  28.            ROW(18,1)  STRING('<200,205{23},188>')
  29.            ROW(2,5)      STRING('Labor Ticket File')
  30.            ROW(6,3)      STRING('LotNbr Part# Dept Opr')
  31.            ROW(7,3)      STRING('-{6} -{5} ---- ---')
  32.          COL(24)  ENTRY,USE(?FIRST_FIELD)
  33.            ROW(4,5)      STRING('Goto Lot# :')
  34.          COL(16)  ENTRY(@S6),USE(WIP:LOTNBR),HUE(14,1),SEL(10,1),NUM   |
  35.                 LFT,UPR
  36.               REPEAT(10),INDEX(NDX)
  37.            ROW(8,2)        POINT(1,23),USE(?POINT),ESC(?-1)
  38. LOTNBR         COL(3)        STRING(6)
  39. PARTNBR         COL(10)    STRING(5)
  40. DEPTNBR         COL(17)    STRING(@N02)
  41. OPERNBR         COL(21)    STRING(@N03)
  42.          .          .
  43.  
  44. TABLE         TABLE                 !TABLE OF RECORD POINTERS
  45. TBLPTR           LONG                 !  POINTER TO DATA RECORD
  46.          .
  47.  
  48. NDX         BYTE                 !REPEAT INDEX FOR POINT FIELD
  49. ROW         BYTE                 !ACTUAL ROW OF SCROLL AREA
  50. COL         BYTE                 !ACTUAL COLUMN OF SCROLL AREA
  51. MAX         LONG                 !LESSER OF COUNT AND RECORDS
  52. COUNT         BYTE(10)                 !NUMBER OF ITEMS TO SCROLL
  53. ROWS         BYTE(10)                 !NUMBER OF ROWS TO SCROLL
  54. COLS         BYTE(23)                 !NUMBER OF COLUMNS TO SCROLL
  55.  
  56.   EJECT
  57.   CODE
  58.   ACTION# = ACTION                 !SAVE ACTION
  59.   OPEN(SCREEN)                     !OPEN THE SCREEN
  60.   SETCURSOR                     !TURN OFF ANY CURSOR
  61.   NDX = 1                     !PUT SELECTOR BAR ON TOP ITEM
  62.   ROW = ROW(?POINT)                 !REMEMBER TOP ROW AND
  63.   COL = COL(?POINT)                 !  LEFT COLUMN OF SCROLL AREA
  64.   IF ACTION = 4                     !IF THIS IS A LOOKUP REQUEST
  65.     SET(WIP:LOT_KEY,WIP:LOT_KEY)         !  FIND IT IN THE FILE
  66.     NEXT(WIP)                     !    AND READ IT
  67.     POINTER# = POINTER(WIP)             !  SAVE POINTER TO CURRENT
  68.     SKIP(WIP,-1)                 !  MAKE IT THE TOP RECORD
  69.     DO SHOW_TABLE                 !  FILL SCROLL AREA
  70.     GET(WIP,POINTER#)                 !  AND REFRESH CURRENT RECORD
  71.   ELSE                         !OTHERWISE
  72.     SET(WIP:LOT_KEY)                 !  SET TO FIRST RECORD IN FILE
  73.     DO SHOW_TABLE                 !  FILL SCROLL AREA
  74.   .
  75.   RECORDS# = TRUE                 !INITIALIZE RECORDS FLAG
  76.   LOOP                         !LOOP UNTIL USER EXITS
  77.     MAX = RECORDS(WIP:LOT_KEY)             !SET LESSER OF FILE RECORD
  78.     IF MAX > COUNT THEN MAX = COUNT.         !  COUNT AND SCROLL ITEM COUNT
  79.     ACTION = ACTION#                 !RESTORE ACTION
  80.     POINTER# = 0                 !CLEAR ADD POINTER
  81.     IF ~RECORDS(WIP:LOT_KEY)             !IF THERE ARE NO RECORDS
  82.       CLEAR(WIP:RECORD)                 !  CLEAR RECORD AREA
  83.       ACTION = 1                 !  SET ACTION TO ADD
  84.       WIP_FORM                     !  CALL FORM FOR FIRST RECORD
  85.       IF ~RECORDS(WIP:LOT_KEY) THEN BREAK.     !  IF ADD ABORTED THEN EXIT
  86.       SET(WIP:LOT_KEY)                 !  SET TO NEW RECORD
  87.       DO SHOW_TABLE                 !  FILL SCROLL AREA
  88.       NDX = 1                     !  PUT SELECTOR BAR ON TOP ITEM
  89.       MAX = 1                     !  MAXIMUM DISPLAYED IS 1
  90.     .                         !
  91.     ALERT                     !RESET ALERTED KEYS
  92.     ALERT(REJECT_KEY)                 !ALERT SCREEN REJECT KEY
  93.     ALERT(ACCEPT_KEY)                 !ALERT SCREEN ACCEPT KEY
  94.     ACCEPT                     !READ A FIELD
  95.     IF KEYCODE() = REJECT_KEY THEN BREAK.     !RETURN ON SCREEN REJECT KEY
  96.     EDIT_RANGE# = FIELD()             !SET ONE FIELD EDIT RANGE
  97.     IF KEYCODE() = ACCEPT_KEY AND |         !ON SCREEN ACCEPT KEY
  98.        EDIT_RANGE# <> ?POINT             ! AND NOT ON THE POINT FIELD
  99.       UPDATE                     !  MOVE ALL FIELDS FROM SCREEN
  100.       EDIT_RANGE# = ?POINT - 1             !  AND EDIT REMAINING FIELDS
  101.       SELECT(?POINT)                 !  IF OK THEN START HERE NEXT
  102.     .                         !
  103.  
  104.     LOOP FIELD# = FIELD() TO EDIT_RANGE#     !EDIT FIELDS IN THE EDIT RANGE
  105.  
  106.       CASE FIELD#                 !JUMP TO FIELD EDIT ROUTINE
  107.       OF ?FIRST_FIELD                 !FROM THE FIRST FIELD
  108.     IF KEYCODE() = ESC_KEY    OR |         !  RETURN ON ESC KEY
  109.        RECORDS# = FALSE             !  OR NO RECORDS
  110.          FREE(TABLE)             !    FREE THE MEMORY TABLE
  111.          RETURN
  112.     .
  113.       OF ?WIP:LOTNBR                 !Production Lot Number
  114.     DO FIND_RECORD
  115.  
  116.     RECORDS# = TRUE                 !  ASSUME RECORDS ARE HERE
  117.       OF ?POINT                     !FROM THE POINT FIELD
  118.  
  119.     CASE KEYCODE()                 !  PROCESS THE KEYSTROKE
  120.     OF INS_KEY                 !*INSERT KEY
  121.       ACTION = 1                 !* SET ACTION TO ADD
  122.       LOOP UNTIL ACTION <> 1         !* DO UNTIL ADD IS ABORTED
  123.         CLEAR(WIP:RECORD)             !* CLEAR RECORD AREA
  124.         WIP_FORM                 !* CALL FORM FOR NEW RECORD
  125.         POINTER# = POINTER(WIP)         !*   REMEMBER WHICH RECORD
  126.         SET(WIP:LOT_KEY,WIP:LOT_KEY)     !*   SET TO NEW RECORD AND
  127.         SKIP(WIP,-1)             !*   MAKE IT THE TOP ITEM
  128.         DO SHOW_TABLE             !*   DISPLAY THAT PAGE
  129.       .
  130.  
  131.     OF ENTER_KEY                 !ENTER KEY OR
  132.     OROF ACCEPT_KEY                 !CTRL ENTER KEY
  133.       DO GET_RECORD                 !  READ THE SELECTED RECORD
  134.       IF ERROR()                 !  IF RECORD HAS BEEN DELETED
  135.         MEM:MESSAGE = ERROR()         !    TELL USER WHAT HAPPENED
  136.         GBL:DISK_ERROR = FILE_ERR()         !*   DISPLAY FILE ERROR
  137.         SELECT(?)                 !    STAY IN THE POINT FIELD
  138.         DO SHOW_TABLE             !    SHOW IT
  139.         BREAK                 !    AND GET ANOTHER KEY
  140.       .
  141.       IF ACTION = 4 AND KEYCODE() = ENTER_KEY!  IF THIS IS A LOOKUP REQUEST
  142.         ACTION = 0                 !    SET ACTION TO COMPLETE
  143.         FREE(TABLE)                 !    FREE THE MEMORY TABLE
  144.         RETURN                 !    AND RETURN TO CALLER
  145.       .                     !
  146.       ACTION = 2                 !  SET ACTION TO CHANGE
  147.       WIP_FORM                 !  CALL FORM TO CHANGE RECORD
  148.       IF ~ACTION                 !  IF THE RECORD WAS CHANGED
  149.         POINTER# = POINTER(WIP)         !    REMEMBER WHICH RECORD
  150.         SET(WIP:LOT_KEY,WIP:LOT_KEY)     !    SET TO CHANGED RECORD
  151.         SKIP(WIP,-1)             !    MAKE IT THE TOP ITEM
  152.         DO SHOW_TABLE             !    AND DISPLAY THAT PAGE
  153.       .
  154.     OF DEL_KEY                 !DELETE KEY
  155.       DO GET_RECORD                 !  READ THE SELECTED RECORD
  156.       IF ERROR()                 !  IF RECORD HAS BEEN DELETED
  157.         MEM:MESSAGE = ERROR()         !    TELL USER WHAT HAPPENED
  158.         GBL:DISK_ERROR = FILE_ERR()         !*   DISPLAY FILE ERROR
  159.         SELECT(?)                 !    STAY IN THE POINT FIELD
  160.         DO SHOW_TABLE             !    SHOW IT
  161.         BREAK                 !    AND GET ANOTHER KEY
  162.       .
  163.       ACTION = 3                 !  SET ACTION TO DELETE
  164.       WIP_FORM                 !  CALL FORM TO DELETE RECORD
  165.       IF ~ACTION                 !  IF RECORD WAS DELETED
  166.         SKIP(WIP,-COUNT)             !    SET NEXT RECORD ON TOP
  167.         DO SHOW_TABLE             !    AND DISPLAY THAT PAGE
  168.       .
  169.     OF DOWN_KEY                 !DOWN ARROW KEY
  170.       IF NOT EOF(WIP)             !  IF THERE ARE MORE RECORDS
  171.         SCROLL(ROW,COL,ROWS,COLS,ROWS(?POINT)) !  SCROLL THE SCREEN UP
  172.         NEXT(WIP)                 !    READ THE BOTTOM RECORD
  173.         GET(TABLE,1)             !    GET THE TOP POINTER
  174.         DELETE(TABLE)             !    REMOVE TOP ITEM
  175.         TBLPTR = POINTER(WIP)         !    DETERMINE RECORD POINTER
  176.         ADD(TABLE)                 !    ADD TO BOTTOM OF TABLE
  177.         DO SHOW_RECORD             !    AND DISPLAY IT
  178.       .
  179.     OF PGDN_KEY                 !PAGE DOWN KEY
  180.       IF EOF(WIP)                 !  ON THE LAST PAGE
  181.         NDX = MAX                 !    POINT TO BOTTOM ITEM
  182.       ELSE                     !  OTHERWISE
  183.         DO SHOW_TABLE             !    DISPLAY NEXT PAGE
  184.       .
  185.     OF CTRL_PGDN                 !CTRL-PAGE DOWN KEY
  186.       NDX = MAX                 !  POINT TO BOTTOM ITEM
  187.       IF NOT EOF(WIP)             !  ON THE LAST PAGE
  188.         SET(WIP:LOT_KEY)             !    SET TO BOTTOM RECORD MINUS
  189.         SKIP(WIP,-COUNT)             !    ONE PAGE OF RECORDS
  190.         DO SHOW_TABLE             !    DISPLAY THE LAST PAGE
  191.       .
  192.     OF UP_KEY                 !UP ARROW KEY
  193.       SKIP(WIP,-(COUNT-1))             !  SET TO TOP RECORD MINUS ONE
  194.       IF NOT BOF(WIP)             !  IF THERE IS A PRIOR RECORD
  195.         PREVIOUS(WIP)             !     READ THE TOP RECORD
  196.         IF NOT ERROR()             !    IF RETRIEVED OKAY
  197.           SCROLL(ROW,COL,ROWS,COLS,-(ROWS(?POINT)))! SCROLL THE SCREEN DOWN
  198.           GET(TABLE,RECORDS(TABLE))         !    GET THE LAST POINTER
  199.           DELETE(TABLE)             !    REMOVE LAST ITEM
  200.           TBLPTR = POINTER(WIP)         !     DETERMINE RECORD POINTER
  201.           ADD(TABLE,1)             !    ADD TO TOP OF TABLE
  202.           DO SHOW_RECORD             !     AND DISPLAY IT
  203.         ELSIF ERRORCODE() = 33         !    ELSE IF RECORD NOT AVAIL
  204.           NEXT(WIP)                 !    RETURN TO FIRST RECORD
  205.       . .
  206.       SKIP(WIP,COUNT-1)             !  SET RECORD FOR NEXT PAGE
  207.  
  208.     OF PGUP_KEY                 !PAGE UP KEY
  209.       SKIP(WIP,-(COUNT-1))             !  SET TO TOP RECORD MINUS ONE
  210.       IF BOF(WIP)                 !  IF THERE IS NO PRIOR RECORD
  211.         NDX = 1                 !    THEN POINT TO TOP ITEM
  212.         SKIP(WIP,COUNT-1)             !    SET RECORD FOR THIS PAGE
  213.       ELSE                     !  OTHERWISE
  214.         SKIP(WIP,-(COUNT+1))         !    SET RECORD FOR PRIOR PAGE
  215.         DO SHOW_TABLE             !    AND DISPLAY THE PAGE
  216.       .
  217.     OF CTRL_PGUP                 !CTRL-PAGE UP KEY
  218.       SET(WIP:LOT_KEY)             !  SET TO FIRST RECORD
  219.       NDX = 1                 !  POINT TO TOP ITEM
  220.       DO SHOW_TABLE                 !  AND DISPLAY THE PAGE
  221.     .
  222.   . . .
  223.   FREE(TABLE)                     !FREE THE MEMORY TABLE
  224.   RETURN                     !RETURN TO CALLER
  225.  
  226. SHOW_TABLE ROUTINE                 !DISPLAY A PAGE OF RECORDS
  227.   FREE(TABLE)                     !  FREE THE MEMORY TABLE
  228.   SKIP(WIP,COUNT-1)                 !  SET TO THE BOTTOM RECORD
  229.   IF EOF(WIP)                     !  FOR A PARTIAL PAGE
  230.     SET(WIP:LOT_KEY)                 !    SET TO THE LAST RECORD
  231.     SKIP(WIP,-COUNT)                 !    AND BACK UP ONE PAGE
  232.   ELSE                         !  OTHERWISE
  233.     SKIP(WIP,-(COUNT-1))             !    SET RECORD FOR THIS PAGE
  234.   .
  235.   NDX# = NDX                     !  SAVE REPEAT INDEX
  236.   LOOP NDX = 1 TO COUNT                 !  LOOP THRU THE SCROLL AREA
  237.     IF EOF(WIP) THEN BREAK.             !    BREAK ON END OF FILE
  238.     NEXT(WIP)                     !    READ THE NEXT RECORD
  239.     TBLPTR = POINTER(WIP)             !    GET THE RECORD NUMBER
  240.     ADD(TABLE)                     !    ADD IT TO THE TABLE
  241.     DO SHOW_RECORD                 !    AND DISPLAY IT
  242.     IF POINTER(WIP) = POINTER# THEN NDX# = NDX.!POINT TO CORRECT RECORD
  243.   .
  244.   NDX = NDX#                     !  RESTORE REPEAT INDEX
  245.   CLEAR(WIP:RECORD)                 !  CLEAR RECORD AREA
  246.   IF RECORDS(WIP:LOT_KEY) < COUNT         !  IF RECORDS DO NOT FILL
  247.      NDX#= RECORDS(WIP:LOT_KEY) * 1         !     GET NUMBER TIMES SIZE
  248.      BLANK(ROW + NDX#,COL,ROWS-NDX#,COLS)     !     BLANK REMAINING AREA
  249.   .
  250.  
  251. SHOW_RECORD ROUTINE                 !DISPLAY A RECORD
  252.   SCR:LOTNBR = WIP:LOTNBR
  253.   SCR:PARTNBR = WIP:PARTNBR
  254.   SCR:DEPTNBR = WIP:DEPTNBR
  255.   SCR:OPERNBR = WIP:OPERNBR
  256.  
  257. GET_RECORD ROUTINE                 !READ SELECTED RECORD
  258.   GET(TABLE,NDX)                 !  GET THE TABLE RECORD
  259.   GET(WIP,TBLPTR)                 !  GET THIS RECORD
  260.  
  261. FIND_RECORD ROUTINE                 !LOCATE REQUESTED RECORD
  262.   SET(WIP:LOT_KEY,WIP:LOT_KEY)             !  SET TO REQUESTED RECORD
  263.   IF EOF(WIP)                     !  IF BEYOND END OF FILE
  264.     PREVIOUS(WIP)                 !    GET THE LAST RECORD
  265.   ELSE                         !  ELSE
  266.     NEXT(WIP)                     !    READ THIS RECORD
  267.   .
  268.   POINTER# = POINTER(WIP)             !  SAVE ITS RECORD POINTER
  269.   SKIP(WIP,-1)                     !  MAKE IT THE TOP RECORD
  270.   DO SHOW_TABLE                     !  AND FILL THE SCROLL AREA
  271.  
  272. SAME_PAGE ROUTINE                 !SET TO SAME PAGE ROUTINE
  273.   POINTER# = POINTER(WIP)             !  SAVE ITS RECORD POINTER
  274.   GET(WIP,POINTER#)                 !  GET THE CURRENT RECORD
  275.   SET(WIP:LOT_KEY,WIP:LOT_KEY)             !    SET TO NEW RECORD AND
  276.  
  277.