!
! RQLC
!
++INCLUDE AMGSYM.BSI

MAP1 GCB,X,56000

MAP1    DSP'MAX,F,6,100
MAP1    DSP'ARRAY
       MAP2    DSP'COUNT,B,2
       MAP2    DSP'XY(100)
               MAP3    DSP'X,B,2
               MAP3    DSP'Y,B,2

MAP1    POINT'MAX,F,6,100
MAP1    POINT'ARRAY
       MAP2    POINT'COUNT,B,2
       MAP2    POINTS(100)
               MAP3    POINT'X,B,2
               MAP3    POINT'Y,B,2

MAP1    STATUS,F                !Status retruned from AMIGOS calls
MAP1    RQLC$,S,80
!***********************************************!
RQLC:
       PRINT   TAB(-1,0);
       GOSUB   DO'OVERHEAD
       GOSUB   DO'BOX
       GOSUB   DO'TEXT
       GOSUB   GET'POINTS
       GOSUB   DRAW'SHAPE
END'IT:
       XCALL   AMGSBR,G'CLWK,GCB,STATUS
       PRINT   TAB(1,1);
       END
!***********************************************!
DO'OVERHEAD:
! Set Mouse Cursor Shape
       PRINT   TAB(-1,29);
       PRINT   TAB(-1,160);CHR(32+4);
! Open the workstation
       XCALL AMGSBR,G'OPWK,GCB,"",STATUS
! Clear the workstation
       XCALL AMGSBR,G'CLRW,GCB,STATUS
! Do Polymarker Overhead
       XCALL   AMGSBR,G'SPMT,GCB,2,STATUS      ! type
       XCALL   AMGSBR,G'SPMS,GCB,20,STATUS     ! style
       XCALL   AMGSBR,G'SPMC,GCB,3,STATUS      ! color
! Text Overhead
       XCALL   AMGSBR,G'STXF,GCB,1004,STATUS   ! font
       XCALL   AMGSBR,G'STXC,GCB,3,STATUS      ! color
       XCALL   AMGSBR,G'SCHH,GCB,1500,STATUS   ! height
! Fill Area Overhead
       XCALL   AMGSBR,G'SFAC,GCB,4,STATUS      ! color
       XCALL   AMGSBR,G'SFAS,GCB,3,STATUS      ! style
       XCALL   AMGSBR,G'SFAI,GCB,55,STATUS     ! index

       RETURN
!***********************************************!
DO'BOX:
       POINT'COUNT     =5

       XMIN    =1000
       XMAX    =30000
       YMIN    =1500
       YMAX    =20000

       POINT'X(1)      =XMIN
       POINT'Y(1)      =YMIN
       POINT'X(2)      =XMIN
       POINT'Y(2)      =YMAX
       POINT'X(3)      =XMAX
       POINT'Y(3)      =YMAX
       POINT'X(4)      =XMAX
       POINT'Y(4)      =YMIN
       POINT'X(5)      =POINT'X(1)
       POINT'Y(5)      =POINT'Y(1)

       XCALL   AMGSBR,G'SPLC,GCB,1,STATUS
       XCALL   AMGSBR,G'PL,GCB,POINT'ARRAY,STATUS

       POINT'COUNT     =2

       POINT'X(1)      =XMIN
       POINT'X(2)      =XMAX

       XCALL   AMGSBR,G'SPLC,GCB,9,STATUS

       FOR I=YMIN TO YMAX STEP 2000
               POINT'Y(1)      =I
               POINT'Y(2)      =I
               XCALL   AMGSBR,G'PL,GCB,POINT'ARRAY,STATUS
       NEXT I

       POINT'Y(1)      =YMIN
       POINT'Y(2)      =YMAX

       FOR I=XMIN TO XMAX STEP 2000
               POINT'X(1)      =I
               POINT'X(2)      =I
               XCALL   AMGSBR,G'PL,GCB,POINT'ARRAY,STATUS
       NEXT I

       XCALL   AMGSBR,G'SPLC,GCB,1,STATUS


       RETURN
!***********************************************!
DO'TEXT:
       RQLC$   ="RQLC - Request Locator"
       XCALL   AMGSBR,G'TX,GCB,4500,20500,RQLC$,STATUS
       RETURN
!***********************************************!
GET'POINTS:
       DSP'COUNT       =1
       POINT'COUNT     =0
LOOP:
       GOSUB   GETCOR                          ! rqlc call

       IF XVAL<XMIN  THEN RETURN               ! outside of box
       IF XVAL>XMAX  THEN RETURN               !    "    "   "
       IF YVAL<YMIN  THEN RETURN               !    "    "   "
       IF YVAL>YMAX  THEN RETURN               !    "    "   "

       POINT'COUNT     =POINT'COUNT+1
       POINT'X(POINT'COUNT)    =XVAL
       POINT'Y(POINT'COUNT)    =YVAL
       DSP'X(DSP'COUNT)        =XVAL
       DSP'Y(DSP'COUNT)        =YVAL

! Display a Polymarker
       XCALL   AMGSBR,G'PM,GCB,DSP'ARRAY,STATUS

       IF POINT'COUNT < POINT'MAX THEN GOTO LOOP

       RETURN
!***********************************************!
DRAW'SHAPE:

       IF POINT'COUNT<3 THEN RETURN

       XCALL   AMGSBR,G'FA,GCB,POINT'ARRAY,STATUS

       POINT'COUNT     =POINT'COUNT+1
       POINT'X(POINT'COUNT)    =POINT'X(1)
       POINT'Y(POINT'COUNT)    =POINT'Y(1)

       XCALL   AMGSBR,G'SPLC,GCB,1,STATUS
       XCALL   AMGSBR,G'PL,GCB,POINT'ARRAY,STATUS

       RETURN
!***********************************************!

GETCOR:
       XCALL AMGSBR,G'RQLC,GCB,0,0,0,XVAL,YVAL,CHAR,VALID
       RETURN

GETCOR1:
       XCALL AMGSBR,G'RQLC,GCB,XVAL,YVAL,2,XVAL,YVAL,CHAR,VALID
       RETURN
       END