home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / ovlay.zip / OVLAY.CLA < prev    next >
Text File  |  1990-04-17  |  3KB  |  116 lines

  1.         MEMBER('OVSAMPLE')     ! Must change to name of your program
  2.  
  3. STACK_PROC      PROCEDURE(EPROC,CPROC,PROC_MSG)
  4.  
  5. EPROC       BYTE
  6. CPROC       BYTE
  7. PROC_MSG    STRING(80)
  8.  
  9.  
  10.         CODE
  11.  
  12.         IF ( (EPROC > LAST_PROC) OR (EPROC < 2) )
  13.            SETHUE(2,1,1)
  14.            BLANK
  15.            SETCURSOR(1,1)
  16.            TYPE(CR_LF & 'Invalid EX_PROC code in STACK_PROC ->' & EPROC |
  17.                       & CR_LF)
  18.            RESTART(OVABN_ABORT)
  19.         .
  20.         IF ( (CPROC > LAST_PROC) OR (CPROC < 1) )
  21.            SETHUE(2,1,1)
  22.            BLANK
  23.            SETCURSOR(1,1)
  24.            TYPE(CR_LF & 'Invalid CALL_PROC code in STACK_PROC ->' & CPROC |
  25.                       & CR_LF)
  26.            RESTART(OVABN_ABORT)
  27.         .
  28.         PAR:EX_PROC = EPROC
  29.         PAR:CALL_PROC = CPROC
  30.         PAR:PASS_MSG = PROC_MSG
  31.         PAR:CALL_STAT = 0
  32.         ADD(PAR_TABLE)
  33.         IF ERROR() THEN
  34.            SETHUE(2,1,1)
  35.            BLANK
  36.            SETCURSOR(1,1)
  37.            TYPE(CR_LF & 'UNABLE TO EXTEND PARAMETER TABLE' & CR_LF)
  38.            RESTART(OVABN_ABORT)
  39.         .
  40.         RETURN
  41.  
  42. PROC_CTL        PROCEDURE
  43.  
  44.         CODE
  45.  
  46.         PT_RECS = RECORDS(PAR_TABLE)
  47.         LOOP WHILE PT_RECS > 0
  48.            SEL_PROC
  49.            PT_RECS = RECORDS(PAR_TABLE)
  50.         .
  51.         RETURN
  52.  
  53. SEL_PROC            PROCEDURE
  54.  
  55. PRECS           SHORT
  56. CPROC           BYTE
  57.  
  58.    CODE
  59.         PRECS = RECORDS(PAR_TABLE)
  60.         IF PRECS = 0 THEN
  61.            SETHUE(2,1,1)
  62.            BLANK
  63.            SETCURSOR(1,1)
  64.            TYPE('SEL_PROC: EXPECTED MORE PARAM BLOCKS, NONE FOUND' & CR_LF)
  65.            RESTART(OVABN_ABORT)
  66.         .
  67.         GET(PAR_TABLE,RECORDS(PAR_TABLE))
  68.         PMSG = PAR:PASS_MSG
  69.         IF PAR:CALL_STAT = 1 THEN GOTO RET_CALL.
  70.         PAR:CALL_STAT = 1
  71.         PUT(PAR_TABLE)
  72.         IF ( (PAR:EX_PROC < 2) OR (PAR:EX_PROC > LAST_PROC) )
  73.            SETHUE(2,1,1)
  74.            BLANK
  75.            SETCURSOR(1,1)
  76.            TYPE(CR_LF & 'Invalid EX_PROC code in SEL_PROC ->' & PAR:EX_PROC |
  77.                       & CR_LF)
  78.            RESTART(OVABN_ABORT)
  79.         .
  80.  
  81.  
  82.        ! Execute statement must be customized to you application's procedures
  83.         EXECUTE PAR:EX_PROC
  84.                RETURN                          ! Note that even though return is
  85.                S1                              ! not valid for EX_PROC, it must be
  86.                S2                              ! listed since it is position 1 in
  87.                S3                              ! equate list
  88.         .
  89.         RETURN
  90. RET_CALL
  91.         CPROC = PAR:CALL_PROC
  92.         IF ( (CPROC > LAST_PROC) OR (CPROC < 1) )
  93.            SETHUE(2,1,1)
  94.            BLANK
  95.            SETCURSOR(1,1)
  96.            TYPE(CR_LF & 'Invalid CALL_PROC code in STACK_PROC ->' & CPROC |
  97.                       & CR_LF)
  98.            RESTART(OVABN_ABORT)
  99.         .
  100.         DELETE(PAR_TABLE)
  101.         EXECUTE CPROC                       ! Execute structure is same as above
  102.                RETURN                       ! except that EX_PROC is replaced by
  103.           S1                           ! CPROC and RETURN is now valid
  104.           S2
  105.           S3
  106.         .
  107.  
  108. OVABN_ABORT    PROCEDURE
  109.  
  110.              CODE
  111.  
  112.             TYPE(CR_LF & CR_LF & 'Program aborted' & CR_LF)
  113.             TYPE('Press any key to continue...' & CR_LF)
  114.             ASK
  115.             RETURN
  116.