home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 85 / af085a.adf / archives / af85a1.lzx / Dialog_Procedures / Source / DataMasterWB.AMOS / DataMasterWB.amosSourceCode
Encoding:
AMOS Source Code  |  1978-07-26  |  50.6 KB  |  2,663 lines

  1. '
  2. Set Buffer 200
  3. '
  4. On Error Goto ER1
  5. '
  6. ' *************************    
  7. ' *** Data-Master V3.0b ***  Written By John.A.Kinsella    
  8. ' *************************    
  9. '
  10. ' *** SET VARIABLES HERE ****************************************************
  11. '
  12. _DIALOGBUTTON$=""
  13. A#=0.0 : Rem Compiler Fix.
  14. '
  15. _MAXFILES=200
  16. _FILES=0
  17. _PATH$="Ram:"
  18. _WILD$="**"
  19. _FILE$=""
  20. Dim _FILENAME$(_MAXFILES)
  21. '
  22. HINO=2000
  23. Dim F$(HINO)
  24. '  
  25. ' *** SET GLOBAL VARIABLES HERE *********************************************
  26. '
  27. Global A#,R1$,R2$,R3$,R4$
  28. '
  29. ' *** Open Default Screen & Set Font.
  30. '
  31. _OPENDIALOGSCREEN[0,200,44]
  32. _GETWBPALETTE
  33. '
  34. Limit Mouse 128,44 To 447,298-64
  35. '
  36. Get Rom Fonts 
  37. _SETFONT["Topaz",8]
  38. '
  39. ' *** INSERT PROGRAM BELOW THIS LINE ****************************************
  40. '
  41. RES:
  42. '
  43. F1$="FIELD 1"
  44. F2$="FIELD 2"
  45. F3$="FIELD 3"
  46. F4$="FIELD 4"
  47. FL1=60
  48. FL2=60
  49. FL3=60
  50. FL4=60
  51. DT$=""
  52. P=0
  53. NOR=0
  54. CHK=0
  55. HELP=0
  56. MC=0
  57. TIT$=""
  58. '
  59. For LOP=1 To HINO
  60.    F$(LOP)=Chr$(255)+Chr$(255)+Chr$(255)
  61. Next LOP
  62. '
  63. _DRAW3DBOX[0,2,633,54,"",0,0,_COLOUR]
  64. '
  65. _ADDBUTTON[4,5,116,19,"LOAD RECORDS",1]
  66. _ADDBUTTON[4,21,116,35,"SAVE RECORDS",2]
  67. _ADDBUTTON[4,37,116,51,"MERGE RECORDS",3]
  68. _ADDBUTTON[132,5,244,19,"PRINT RECORDS",4]
  69. _ADDBUTTON[132,21,244,35,"SORT RECORDS",5]
  70. _ADDBUTTON[132,37,244,51,"CLEAR ALL",6]
  71. _ADDBUTTON[260,5,372,19,"INSERT RECORD",7]
  72. '
  73. _DRAW3DBOX[388,37,500,51,"",1,0,_BACK]
  74. '
  75. _ADDBUTTON[260,37,372,51,"DELETE RECORD",8]
  76. _ADDBUTTON[388,21,500,35,"FIELD TOTAL",9]
  77. _ADDBUTTON[388,5,500,19,"FIND RECORD",10]
  78. _ADDBUTTON[260,21,372,35,"COPY RECORD",11]
  79. '
  80. _SETFONT["Topaz",9]
  81. _ADDBUTTON[516,5,628,35,"ABOUT",14]
  82. _SETFONT["Topaz",8]
  83. _ADDBUTTON[516,37,628,51,"QUIT !!!",15]
  84. '
  85. _DRAW3DBOX[0,114,633,198,"",0,0,_COLOUR]
  86. _DRAW3DBOX[12,117,116,131,"",0,0,_BACK]
  87. '
  88. _ADDBUTTON[132,117,172,131," S< ",16]
  89. _ADDBUTTON[180,117,220,131," << ",17]
  90. _ADDBUTTON[228,117,260,131," < ",18]
  91. '
  92. _ADDBUTTON[268,117,300,131," > ",19]
  93. _ADDBUTTON[308,117,348,131," >> ",20]
  94. _ADDBUTTON[356,117,396,131," >E ",21]
  95. '
  96. _ADDBUTTON[404,117,452,131,"GOTO",22]
  97. _ADDBUTTON[468,117,620,131,"",23]
  98. '
  99. _ADDBUTTON[12,133,116,147,F1$,24]
  100. _ADDBUTTON[12,149,116,163,F2$,25]
  101. _ADDBUTTON[12,165,116,179,F3$,26]
  102. _ADDBUTTON[12,181,116,195,F4$,27]
  103. '
  104. _ADDINPUTBUTTON[17,17,"",60,60,-28]
  105. _ADDINPUTBUTTON[17,19,"",60,60,-29]
  106. _ADDINPUTBUTTON[17,21,"",60,60,-30]
  107. _ADDINPUTBUTTON[17,23,"",60,60,-31]
  108. '
  109. OK:
  110. Do 
  111.    '
  112.    TEMP$="FREE :"+Str$(Free)
  113.    Print At(49,5)+TEMP$+Space$(13-Len(TEMP$))
  114.    '
  115.    _CHECKBUTTONS
  116.    _BUTTONZONE=Param
  117.    '
  118.    If _BUTTONZONE=16 and P>1
  119.       P=1
  120.       _DISPLAYRECORD
  121.    End If 
  122.    '
  123.    If _BUTTONZONE=17 and P>10
  124.       Add P,-10
  125.       _DISPLAYRECORD
  126.    End If 
  127.    '
  128.    If _BUTTONZONE=18 and P>1
  129.       Dec P
  130.       _DISPLAYRECORD
  131.    End If 
  132.    '
  133.    If _BUTTONZONE=19 and P<NOR
  134.       Inc P
  135.       _DISPLAYRECORD
  136.    End If 
  137.    '
  138.    If _BUTTONZONE=20 and P<NOR-9
  139.       Add P,10
  140.       _DISPLAYRECORD
  141.    End If 
  142.    '
  143.    If _BUTTONZONE=21 and P<NOR
  144.       P=NOR
  145.       _DISPLAYRECORD
  146.    End If 
  147.    '
  148.    If _BUTTONZONE=1
  149.       _LOADRECORDS
  150.    End If 
  151.    '
  152.    If _BUTTONZONE=2 and NOR>0
  153.       _SAVERECORDS
  154.    End If 
  155.    '
  156.    If _BUTTONZONE=3
  157.       _MERGEFILE
  158.    End If 
  159.    '
  160.    If _BUTTONZONE=10 and NOR>1
  161.       _FINDRECORD
  162.    End If 
  163.    '
  164.    If _BUTTONZONE=9 and NOR>0
  165.       _FIELDTOTAL
  166.    End If 
  167.    '    
  168.    If _BUTTONZONE=14
  169.       _ALERTREQUESTER["   D A T A - M A S T E R   V 3 . 0b   |Written By John.A.Kinsella","YEAH!"]
  170.    End If 
  171.    '
  172.    If _BUTTONZONE=15
  173.       _ALERTREQUESTER["Do You Really Wish To Quit ?","YES|NO"]
  174.       If Param=1
  175.          Exit 
  176.       End If 
  177.    End If 
  178.    '
  179.    If _BUTTONZONE=4 and NOR>0
  180.       _PRINTRECORDS
  181.    End If 
  182.    '
  183.    If _BUTTONZONE=6 and NOR>0
  184.       _CLEARALL
  185.    End If 
  186.    '
  187.    If _BUTTONZONE=7 and NOR<HINO
  188.       _INSERTRECORD
  189.    End If 
  190.    '
  191.    If _BUTTONZONE=8 and NOR>0
  192.       _DELETERECORDS
  193.    End If 
  194.    '
  195.    If _BUTTONZONE=11 and NOR>0 and NOR<HINO
  196.       _COPYRECORDS
  197.    End If 
  198.    '
  199.    If _BUTTONZONE=5 and NOR>1
  200.       _SORTRECORDS
  201.    End If 
  202.    '
  203.    If _BUTTONZONE=22 and NOR>1
  204.       _GOTORECORD
  205.    End If 
  206.    '
  207.    If _BUTTONZONE=23 and NOR>0
  208.       _FILENOTE
  209.    End If 
  210.    '
  211.    If _BUTTONZONE=24
  212.       _CHANGEFIELD1[0]
  213.    End If 
  214.    '
  215.    If _BUTTONZONE=25
  216.       _CHANGEFIELD2[0]
  217.    End If 
  218.    '
  219.    If _BUTTONZONE=26
  220.       _CHANGEFIELD3[0]
  221.    End If 
  222.    '
  223.    If _BUTTONZONE=27
  224.       _CHANGEFIELD4[0]
  225.    End If 
  226.    '
  227.    If _BUTTONZONE=28 and FL1>0 and NOR>0
  228.       _CUTFIELDS[P]
  229.       _ADDINPUTBUTTON[17,17,R1$,FL1,FL1,0]
  230.       R1$=Param$
  231.       F$(P)=R1$+Chr$(255)+R2$+Chr$(255)+R3$+Chr$(255)+R4$
  232.    End If 
  233.    '
  234.    If _BUTTONZONE=29 and FL2>0 and NOR>0
  235.       _CUTFIELDS[P]
  236.       _ADDINPUTBUTTON[17,19,R2$,FL2,FL2,0]
  237.       R2$=Param$
  238.       F$(P)=R1$+Chr$(255)+R2$+Chr$(255)+R3$+Chr$(255)+R4$
  239.    End If 
  240.    '
  241.    If _BUTTONZONE=30 and FL3>0 and NOR>0
  242.       _CUTFIELDS[P]
  243.       _ADDINPUTBUTTON[17,21,R3$,FL3,FL3,0]
  244.       R3$=Param$
  245.       F$(P)=R1$+Chr$(255)+R2$+Chr$(255)+R3$+Chr$(255)+R4$
  246.    End If 
  247.    '
  248.    If _BUTTONZONE=31 and FL4>0 and NOR>0
  249.       _CUTFIELDS[P]
  250.       _ADDINPUTBUTTON[17,23,R4$,FL4,FL4,0]
  251.       R4$=Param$
  252.       F$(P)=R1$+Chr$(255)+R2$+Chr$(255)+R3$+Chr$(255)+R4$
  253.    End If 
  254.    '
  255. Loop 
  256. '
  257. For LOP=0 To HINO
  258.    F$(LOP)=""
  259. Next LOP
  260. '
  261. ' *** INSERT PROGRAM ABOVE THIS LINE ****************************************
  262. '
  263. Screen Close 0
  264. End 
  265. '
  266. Procedure _OPENDIALOGSCREEN[N,H,Y]
  267.    '
  268.    Shared _BACK,_SHADOW,_LIGHT,_COLOUR,_TEXT
  269.    '
  270.    Screen Open N,640,H,4,Hires
  271.    Screen Display N,130,Y,,
  272.    Curs Off 
  273.    Flash Off 
  274.    Cls 0
  275.    Palette $AAA,$0,$FFF,$58B
  276.    '
  277.    Colour Back Colour(0)
  278.    '
  279.    _BACK=0
  280.    _SHADOW=1
  281.    _LIGHT=2
  282.    _COLOUR=3
  283.    _TEXT=1
  284.    '
  285.    Pen _TEXT
  286.    Paper _BACK
  287.    Ink _TEXT,_BACK
  288.    '
  289.    ' *** Set Mouse Colours. 
  290.    '
  291.    Colour 17,$EEC
  292.    Colour 18,$0
  293.    Colour 19,$E44
  294.    '
  295. End Proc
  296. '
  297. Procedure _DRAW3DBOX[X1,Y1,X2,Y2,T$,IN,FC,BC]
  298.    '
  299.    Shared _SHADOW,_LIGHT
  300.    '
  301.    If IN=0 or IN=3
  302.       C1=_SHADOW
  303.       C2=_LIGHT
  304.    Else 
  305.       C1=_LIGHT
  306.       C2=_SHADOW
  307.    End If 
  308.    '
  309.    If IN<>2
  310.       Ink BC,FC
  311.       Bar X1,Y1 To X2,Y2
  312.       Ink C1
  313.       Box X1,Y1 To X2,Y2
  314.       If IN<3
  315.          Box X1+1,Y1 To X2-1,Y2
  316.       End If 
  317.       Ink C2
  318.       Polyline X1+1,Y2 To X2,Y2 To X2,Y1
  319.       If IN<3
  320.          Polyline X1+1,Y2 To X2-1,Y2 To X2-1,Y1+1
  321.       End If 
  322.    Else 
  323.       Cls BC,X1+2,Y1+1 To X2-1,Y2
  324.    End If 
  325.    '
  326.    I=0
  327.    J=0
  328.    B=0
  329.    While I<Len(T$)
  330.       I=Instr(T$,"|",I+1)
  331.       If I=0
  332.          I=Len(T$)+1
  333.       End If 
  334.       J=I
  335.       Inc B
  336.    Wend 
  337.    '
  338.    If Upper$(Left$(T$,3))="(S)"
  339.       _DRAWUSEROBJECT[X1,Y1,X2,Y2,Mid$(T$,4)]
  340.       Goto FIN
  341.    End If 
  342.    '
  343.    H#=((Y2-Y1)-(B*Text Base))/(B+1)
  344.    Y#=Y1+H#+Text Base
  345.    '
  346.    Ink FC,BC
  347.    Gr Writing 0
  348.    '
  349.    I=0
  350.    J=0
  351.    LOP=0
  352.    While LOP<B
  353.       I=Instr(T$,"|",I+1)
  354.       If I=0
  355.          I=Len(T$)+1
  356.       End If 
  357.       A$=Mid$(T$,J+1,I-J-1)
  358.       '
  359.       If Left$(A$,1)="'"
  360.          A$=Mid$(A$,2)
  361.          X7=X1+4
  362.          Goto NXT
  363.       End If 
  364.       '
  365.       If Left$(A$,1)="^"
  366.          A$=Mid$(A$,2)
  367.          X7=(X2-Text Length(A$))-4
  368.          Goto NXT
  369.       End If 
  370.       '
  371.       WID=Text Length(A$)
  372.       X7=(((X2-X1)/2)+X1)-(WID/2)+1
  373.       '
  374.       NXT:
  375.       Text X7,Y#,A$
  376.       '
  377.       Y#=Y#+Text Base+H#
  378.       '
  379.       J=I
  380.       Inc LOP
  381.    Wend 
  382.    '
  383.    Gr Writing 1
  384.    '
  385.    FIN:
  386.    '
  387. End Proc
  388. '
  389. Procedure _CHECKZONE[X1,Y1,X2,Y2,WT]
  390.    '
  391.    X=X Screen(X Mouse)
  392.    Y=Y Screen(Y Mouse)
  393.    M=Mouse Key
  394.    AN=0
  395.    '
  396.    If X<X1 or X>X2 or Y<Y1 or Y>Y2 or M=0
  397.       Goto FIN2
  398.    End If 
  399.    '
  400.    AN=M
  401.    '
  402.    If WT=0
  403.       Goto FIN2
  404.    End If 
  405.    '
  406.    If WT=1
  407.       Gr Writing 2
  408.       Bar X1,Y1 To X2,Y2
  409.    End If 
  410.    '
  411.    While X>=X1 and X<=X2 and Y>=Y1 and Y<=Y2
  412.       X=X Screen(X Mouse)
  413.       Y=Y Screen(Y Mouse)
  414.       If Mouse Key=0
  415.          Goto FIN
  416.       End If 
  417.    Wend 
  418.    '
  419.    AN=0
  420.    '
  421.    FIN:
  422.    If WT=1
  423.       Bar X1,Y1 To X2,Y2
  424.       Gr Writing 1
  425.    End If 
  426.    '
  427.    FIN2:
  428.    '
  429. End Proc[AN]
  430. '
  431. Procedure _SETFONT[FT$,FS]
  432.    '
  433.    Shared _FONTNAME$,_FONTSIZE
  434.    '
  435.    FT$=Upper$(FT$)
  436.    '
  437.    OK=0
  438.    POS=1
  439.    '
  440.    While Font$(POS)<>""
  441.       If Upper$(Left$(Font$(POS),Len(FT$)+5))=(FT$+".FONT")
  442.          If Val(Mid$(Font$(POS),30,3))=FS
  443.             Set Font POS
  444.             OK=1
  445.             _FONTNAME$=FT$
  446.             _FONTSIZE=FS
  447.          End If 
  448.       End If 
  449.       Inc POS
  450.    Wend 
  451.    '
  452. End Proc[OK]
  453. '
  454. Procedure _ADDBUTTON[X1,Y1,X2,Y2,T$,BZ]
  455.    '
  456.    Shared _TEXT,_BACK
  457.    '
  458.    _DRAW3DBOX[X1,Y1,X2,Y2,T$,1,_TEXT,_BACK]
  459.    '
  460.    If BZ<>0
  461.       _ADDZONE[X1,Y1,X2,Y2,BZ,"B"]
  462.    End If 
  463.    '
  464. End Proc
  465. '
  466. Procedure _CHECKBUTTONS
  467.    '
  468.    Shared _DIALOGBUTTON$
  469.    '
  470.    ZN=0
  471.    I1=1
  472.    I2=1
  473.    '
  474.    While I2<Len(_DIALOGBUTTON$)
  475.       '
  476.       I2=Instr(_DIALOGBUTTON$,";",I1)
  477.       L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
  478.       '
  479.       AC=Asc(Mid$(L$,1,1))
  480.       X1=Val(Mid$(L$,3,3))
  481.       Y1=Val(Mid$(L$,7,3))
  482.       X2=Val(Mid$(L$,11,3))
  483.       Y2=Val(Mid$(L$,15,3))
  484.       BZ=Val(Mid$(L$,19,4))
  485.       '
  486.       WT=1
  487.       If BZ<0
  488.          BZ=-BZ
  489.          WT=0
  490.       End If 
  491.       '
  492.       _CHECKZONE[X1,Y1,X2,Y2,WT]
  493.       If Param and(AC>64 and AC<91) : Rem A to Z.
  494.          ZN=BZ
  495.          Goto FIN
  496.       End If 
  497.       '
  498.       I1=I2+1
  499.       '
  500.    Wend 
  501.    '
  502.    FIN:
  503.    '
  504. End Proc[ZN]
  505. '
  506. Procedure _DELETEBUTTON[NO,BC]
  507.    '
  508.    Shared _DIALOGBUTTON$
  509.    '
  510.    I1=1
  511.    I2=1
  512.    '
  513.    While I2<Len(_DIALOGBUTTON$)
  514.       '
  515.       I2=Instr(_DIALOGBUTTON$,";",I1)
  516.       L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
  517.       '
  518.       BZ=Val(Mid$(L$,19,3))
  519.       If BZ<0
  520.          BZ=-BZ
  521.       End If 
  522.       '
  523.       If BZ=NO
  524.          '
  525.          X1=Val(Mid$(L$,3,3))
  526.          Y1=Val(Mid$(L$,7,3))
  527.          X2=Val(Mid$(L$,11,3))
  528.          Y2=Val(Mid$(L$,15,3))
  529.          '
  530.          _DIALOGBUTTON$=Left$(_DIALOGBUTTON$,I1-1)+Mid$(_DIALOGBUTTON$,I2+1)
  531.          '
  532.          If BC>-1
  533.             Ink BC
  534.             Bar X1,Y1 To X2,Y2
  535.          End If 
  536.          '
  537.       End If 
  538.       '
  539.       I1=I2+1
  540.       '
  541.    Wend 
  542.    '
  543. End Proc
  544. '
  545. Procedure _ADDINPUTBUTTON[X,Y,TXT$,L,ML,BZ]
  546.    '
  547.    Shared _TEXT,_BACK
  548.    '
  549.    XX=X
  550.    YY=Y
  551.    ED$=TXT$
  552.    SX=L
  553.    '
  554.    Pen _TEXT
  555.    Paper _BACK
  556.    '
  557.    X1=(X*8)-4
  558.    Y1=(Y*8)-3
  559.    X2=(X*8)+(L*8)+4
  560.    Y2=(Y*8)+8+2
  561.    '
  562.    If BZ<>0
  563.       _ADDZONE[X1,Y1,X2,Y2,BZ,"I"]
  564.       _DRAW3DBOX[X1,Y1,X2,Y2,"",1,_TEXT,_BACK]
  565.       _DRAW3DBOX[X1+2,Y1+1,X2-2,Y2-1,"",0,_TEXT,_BACK]
  566.       Print At(XX,YY)+Mid$(TXT$,1,L)
  567.       Goto _END
  568.    End If 
  569.    '
  570.    XC=Len(ED$)
  571.    MN=0
  572.    PX=0
  573.    L=XC
  574.    '
  575.    Clear Key 
  576.    '
  577.    Do 
  578.       Gosub _DED
  579.       '
  580.       If Mouse Key=1
  581.          X=((X Screen(X Mouse))/8)-XX
  582.          If X>=0 and X<=L
  583.             XC=X
  584.             Gosub _DED
  585.          End If 
  586.       End If 
  587.       '
  588.       Gr Writing 2
  589.       GRX=X Curs*8
  590.       GRY=YY*8
  591.       Bar GRX,GRY To GRX+7,GRY+7
  592.       If Mouse Key
  593.          Repeat 
  594.          Until Mouse Key=0
  595.       End If 
  596.       '
  597.       Repeat 
  598.          A$=Inkey$
  599.          S=Scancode
  600.          K=Key Shift
  601.       Until A$<>"" or Mouse Key or(A$<>"" and K)
  602.       '
  603.       XM=X Screen(X Mouse)
  604.       YM=Y Screen(Y Mouse)
  605.       If Mouse Key and(XM<X1 or XM>X2 or YM<Y1 or YM>Y2)
  606.          A$=Chr$(13)
  607.       End If 
  608.       '
  609.       Bar GRX,GRY To GRX+7,GRY+7
  610.       Gr Writing 1
  611.       '
  612.       F=1
  613.       '
  614.       If A$=Chr$(13)
  615.          Exit 
  616.       End If 
  617.       '
  618.       If A$=Chr$(27)
  619.          ED$=TXT$
  620.          TXT$=""
  621.          Print At(XX,YY)+Space$(SX);
  622.          Gosub _DED
  623.          Exit 
  624.       End If 
  625.       '
  626.       If S=65 and K=0 and XC+PX>MN
  627.          ED$=Left$(ED$,XC+PX-1)+Mid$(ED$,PX+XC+1)
  628.          E=1
  629.          Dec L
  630.          S=79
  631.       End If 
  632.       '
  633.       If S=65 and K>0 and K<4
  634.          ED$=Mid$(ED$,PX+XC+1)
  635.          L=Len(ED$)
  636.          PX=0
  637.          XC=0
  638.       End If 
  639.       '
  640.       If S=70 and K=0 and XC+PX<L
  641.          ED$=Left$(ED$,XC+PX)+Mid$(ED$,PX+XC+2)
  642.          E=1
  643.          Dec L
  644.       End If 
  645.       '
  646.       If S=70 and K>0 and K<4
  647.          ED$=Left$(ED$,XC+PX)
  648.          L=Len(ED$)
  649.          F=0
  650.       End If 
  651.       '
  652.       If S=79 and PX+XC>MN
  653.          F=0
  654.          If XC=0
  655.             Dec PX
  656.          Else 
  657.             Dec XC
  658.          End If 
  659.       End If 
  660.       '
  661.       If S=79 and K>0 and K<4
  662.          F=0
  663.          PX=0
  664.          XC=0
  665.       End If 
  666.       '
  667.       If S=78 and PX+XC<L
  668.          F=0
  669.          If XC=SX
  670.             Inc PX
  671.          Else 
  672.             Inc XC
  673.          End If 
  674.       End If 
  675.       '
  676.       If S=78 and K>0 and K<4
  677.          F=0
  678.          XC=L
  679.          If XC>SX
  680.             XC=SX
  681.          End If 
  682.          PX=L-SX
  683.          If PX<0
  684.             PX=0
  685.          End If 
  686.       End If 
  687.       '
  688.       If F
  689.          If A$>=" " and L<ML
  690.             ED$=Left$(ED$,PX+XC)+A$+Mid$(ED$,PX+XC+1)
  691.             Inc L
  692.             If L>SX
  693.                If XC>=SX
  694.                   Inc PX
  695.                Else 
  696.                   Inc XC
  697.                End If 
  698.             Else 
  699.                Inc XC
  700.             End If 
  701.          End If 
  702.       End If 
  703.       '
  704.    Loop 
  705.    '
  706.    Goto _END
  707.    '
  708.    _DED:
  709.    Print At(XX,YY)+Space$(SX);
  710.    Print At(XX,YY)+Mid$(ED$,PX+1,SX);
  711.    Locate Min(XX+XC,XX+SX-1),YY
  712.    Return 
  713.    '
  714.    _END:
  715.    Print At(XX,YY)+Space$(SX);
  716.    Print At(XX,YY)+Left$(ED$,SX);
  717.    '
  718. End Proc[ED$]
  719. '
  720. Procedure _DRAWUSEROBJECT[X1,Y1,X2,Y2,T$]
  721.    '
  722.    Shared _FONTNAME$,_FONTSIZE,_SHADOW,_LIGHT,_TEXT,_BACK,_COLOUR
  723.    '
  724.    Left$(T$,3)=Upper$(Left$(T$,3))
  725.    '
  726.    ' *** Paste Icon.
  727.    '
  728.    If Mid$(T$,1,3)="ICO"
  729.       NO=Val(Mid$(T$,4,3))
  730.       If Length(2)>=NO
  731.          Paste Icon X1+Val(Mid$(T$,7,3)),Y1+Val(Mid$(T$,10,3)),NO
  732.       End If 
  733.    End If 
  734.    '
  735.    ' *** Paste Bob. 
  736.    '
  737.    If Mid$(T$,1,3)="BOB"
  738.       NO=Val(Mid$(T$,4,3))
  739.       If Length(1)>=NO
  740.          Paste Bob X1+Val(Mid$(T$,7,3)),Y1+Val(Mid$(T$,10,3)),NO
  741.       End If 
  742.    End If 
  743.    '
  744.    ' *** Up Arrow.
  745.    '
  746.    If T$="UAR"
  747.       Ink _SHADOW
  748.       X=X1+(X2-X1)/2
  749.       Y=Y1+(Y2-Y1)/2
  750.       Polygon X,Y1+2 To X1+4,Y2-2 To X,Y To X2-4,Y2-2 To X,Y1+2
  751.    End If 
  752.    '
  753.    ' *** Down Arrow.
  754.    '
  755.    If T$="DAR"
  756.       Ink _SHADOW
  757.       X=X1+(X2-X1)/2
  758.       Y=Y1+(Y2-Y1)/2
  759.       Polygon X,Y2-2 To X1+4,Y1+2 To X,Y To X2-4,Y1+2 To X,Y2-2
  760.    End If 
  761.    '
  762.    ' *** Left Arrow.
  763.    '
  764.    If T$="LAR"
  765.       Ink _SHADOW
  766.       X=X1+(X2-X1)/2
  767.       Y=Y1+(Y2-Y1)/2
  768.       Polygon X1+4,Y To X2-4,Y1+2 To X,Y To X2-4,Y2-2 To X1+4,Y
  769.    End If 
  770.    '
  771.    ' *** Right Arrow. 
  772.    '
  773.    If T$="RAR"
  774.       Ink _SHADOW
  775.       X=X1+(X2-X1)/2
  776.       Y=Y1+(Y2-Y1)/2
  777.       Polygon X2-4,Y To X1+4,Y1+2 To X,Y To X1+4,Y2-2 To X2-4,Y
  778.    End If 
  779.    '
  780.    ' *** Group Box. 
  781.    '
  782.    If T$="GBX"
  783.       _DRAW3DBOX[X1,Y1,X2,Y2,"",0,0,_BACK]
  784.       _DRAW3DBOX[X1+2,Y1+1,X2-2,Y2-1,"",1,0,_BACK]
  785.    End If 
  786.    '
  787.    ' *** Window.
  788.    '
  789.    If Mid$(T$,1,3)="WIN"
  790.       _DRAW3DBOX[X1,Y1,X2,Y2,"",4,0,_COLOUR]
  791.       _DRAW3DBOX[X1+3,Y1+10,X2-3,Y2-2,"",3,_LIGHT,_BACK]
  792.       _DRAW3DBOX[X1,Y1,X2,Y1+10,Mid$(T$,4),4,_LIGHT,_COLOUR]
  793.    End If 
  794.    '
  795. End Proc
  796. '
  797. Procedure _VERTICALSLIDER[X,Y,W,H,S,P,T$]
  798.    '
  799.    Shared _TEXT,_BACK,_TEXT
  800.    '
  801.    _DRAW3DBOX[X,Y,X+W,Y+H,"",4,_TEXT,_BACK]
  802.    HIG=0
  803.    '
  804.    If S>=1
  805.       T=Y+(H*(P-1))/S
  806.       B=Min(Y+H,T+H/S)
  807.       If B-T<3
  808.          T=Y+((H-3)*(P-1))/S
  809.          B=Min(Y+(H-3),T+(H-3)/S)
  810.          HIG=3
  811.       End If 
  812.       Cls _TEXT,X+3,T+1 To X+W-2,B+1+HIG
  813.    End If 
  814.    '
  815.    If T$<>""
  816.       _SLIDERROUTINE[T$,P]
  817.    End If 
  818.    '
  819. End Proc
  820. '
  821. Procedure _GRABVERTICALSLIDER[X,Y,W,H,S,P,T$]
  822.    '
  823.    If S<1 Then Pop Proc
  824.    '
  825.    T=Y+(H*(P-1))/S
  826.    B=Min(Y+H,T+H/S)
  827.    '
  828.    _CHECKZONE[X,Y,X+W,T-1,2]
  829.    If Param>0 and P>1
  830.       Dec P
  831.       Gosub _DRAWSLIDER
  832.       Goto FIN
  833.    End If 
  834.    '
  835.    _CHECKZONE[X,B+1,X+W,Y+H,2]
  836.    If Param and P<S
  837.       Inc P
  838.       Gosub _DRAWSLIDER
  839.       Goto FIN
  840.    End If 
  841.    '
  842.    _CHECKZONE[X,T,X+W,B,0]
  843.    If Param>0
  844.       '
  845.       PO=P
  846.       DY=Y Screen(Y Mouse)-T
  847.       '
  848.       Repeat 
  849.          '
  850.          YY=Y Screen(Y Mouse)-Y-DY
  851.          PO=((YY*(S+1))/H+1)
  852.          '
  853.          If PO<1
  854.             PO=1
  855.          End If 
  856.          If PO>S
  857.             PO=S
  858.          End If 
  859.          '  
  860.          If PO<>P
  861.             P=PO
  862.             Gosub _DRAWSLIDER
  863.          End If 
  864.          '
  865.       Until Mouse Key=0
  866.    End If 
  867.    '
  868.    Goto FIN
  869.    '
  870.    _DRAWSLIDER:
  871.    _VERTICALSLIDER[X,Y,W,H,S,P,""]
  872.    Return 
  873.    '
  874.    FIN:
  875.    '
  876. End Proc[P]
  877. '
  878. Procedure _SLIDERROUTINE[T$,P]
  879.    '
  880.    Shared _FONTNAME$,_FONTSIZE,_COLOUR,_SHADOW,_LIGHT,_BACK,_TEXT
  881.    '
  882.    Goto T$
  883.    Goto FIN
  884.    '
  885.    '
  886.    FIN:
  887.    '
  888. End Proc
  889. '
  890. Procedure _DRAWTITLEBAR[T$]
  891.    '
  892.    Shared _FONTNAME$,_FONTSIZE,_SHADOW,_LIGHT
  893.    '
  894.    B_FT$=_FONTNAME$
  895.    B_FS=_FONTSIZE
  896.    '
  897.    _SETFONT["Topaz",8]
  898.    '
  899.    If T$=""
  900.       T$=T$+"'Amiga Workbench  "+Str$(Chip Free)-" "+" graphics mem  "
  901.       T$=T$+Str$(Fast Free)-" "+" other mem"
  902.    End If 
  903.    _DRAW3DBOX[-1,-1,640,10,T$,1,_SHADOW,_LIGHT]
  904.    '
  905.    _SETFONT[B_FT$,B_FS]
  906.    '
  907. End Proc
  908. '
  909. Procedure _GETBUTTONSTRING[NO]
  910.    '
  911.    Shared _DIALOGBUTTON$
  912.    '
  913.    I1=1
  914.    I2=1
  915.    P=0
  916.    '
  917.    While I2<Len(_DIALOGBUTTON$) and P<>NO
  918.       '
  919.       I2=Instr(_DIALOGBUTTON$,";",I1)
  920.       L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
  921.       '
  922.       BZ=Val(Mid$(L$,19,4))
  923.       If BZ<0
  924.          BZ=-BZ
  925.       End If 
  926.       '
  927.       If BZ=NO
  928.          Exit 
  929.       End If 
  930.       '
  931.       I1=I2+1
  932.       '
  933.       Inc P
  934.    Wend 
  935.    '
  936. End Proc[L$]
  937. '
  938. Procedure _ADDZONE[X1,Y1,X2,Y2,BZ,TP$]
  939.    '
  940.    Shared _DIALOGBUTTON$
  941.    '
  942.    L$=Space$(22)+Mid$(TP$,2)+";"
  943.    '
  944.    Mid$(L$,1,1)=Mid$(TP$,1,1)
  945.    Mid$(L$,3,3)=Str$(X1)-" "
  946.    Mid$(L$,7,3)=Str$(Y1)-" "
  947.    Mid$(L$,11,3)=Str$(X2)-" "
  948.    Mid$(L$,15,3)=Str$(Y2)-" "
  949.    Mid$(L$,19,4)=Str$(BZ)-" "
  950.    '
  951.    _DIALOGBUTTON$=_DIALOGBUTTON$+L$
  952.    '
  953. End Proc
  954. '
  955. Procedure _ALERTREQUESTER[M$,BT$]
  956.    '
  957.    Shared _DIALOGBUTTON$,_BACK,_COLOUR,_TEXT,_LIGHT,_SHADOW
  958.    '
  959.    If M$="_Cc_"
  960.       Goto FIN
  961.    End If 
  962.    '
  963.    I=0
  964.    J=0
  965.    L=0
  966.    While I<Len(M$)
  967.       I=Instr(M$,"|",I+1)
  968.       If I=0
  969.          I=Len(M$)+1
  970.       End If 
  971.       J=I
  972.       Inc L
  973.    Wend 
  974.    '
  975.    I=0
  976.    J=0
  977.    B=0
  978.    While I<Len(BT$)
  979.       I=Instr(BT$,"|",I+1)
  980.       If I=0
  981.          I=Len(BT$)+1
  982.       End If 
  983.       J=I
  984.       Inc B
  985.    Wend 
  986.    '
  987.    _OPENDIALOGSCREEN[7,50+(L*8),44]
  988.    Get Palette 0
  989.    H=50+(L*8)-1
  990.    '
  991.    _DRAW3DBOX[0,0,639,H-1,"",4,0,_COLOUR]
  992.    Set Pattern 2
  993.    _DRAW3DBOX[3,10,636,H-2,"",3,_LIGHT,_BACK]
  994.    Set Pattern 0
  995.    '
  996.    If BT$=""
  997.       _DRAW3DBOX[0,0,639,10,"",4,0,_COLOUR]
  998.       Ink _TEXT,_COLOUR
  999.       Text 5,7,"Information Requester"
  1000.       _DRAW3DBOX[8,13,632,H-3,M$,3,_TEXT,_BACK]
  1001.       Goto FIN2
  1002.    End If 
  1003.    '
  1004.    B_DLG$=_DIALOGBUTTON$
  1005.    _DIALOGBUTTON$=""
  1006.    '
  1007.    _DRAW3DBOX[0,0,18,10,"",4,1,_COLOUR]
  1008.    _ADDZONE[0,0,18,10,1,"B"]
  1009.    Ink _LIGHT
  1010.    Bar 7,3 To 11,7
  1011.    Ink _SHADOW
  1012.    Box 7,3 To 11,7
  1013.    _DRAW3DBOX[19,0,639,10,"",4,0,_COLOUR]
  1014.    Ink _TEXT,_COLOUR
  1015.    Text 24,7,"Button Requester"
  1016.    _DRAW3DBOX[8,13,632,H-20,M$,3,_TEXT,_BACK]
  1017.    '
  1018.    BB#=B
  1019.    D2#=326.0-((BB#*100.0)/2.0)
  1020.    '
  1021.    I=0
  1022.    J=0
  1023.    A=0
  1024.    While A<B
  1025.       I=Instr(BT$,"|",I+1)
  1026.       If I=0
  1027.          I=Len(BT$)+1
  1028.       End If 
  1029.       _ADDBUTTON[D2#+100*A,H-18,D2#+100*A+86,H-5,Left$(Mid$(BT$,J+1,I-J-1),10),A+2]
  1030.       J=I
  1031.       Inc A
  1032.    Wend 
  1033.    '
  1034.    Repeat 
  1035.       _CHECKBUTTONS
  1036.       Q=Param
  1037.    Until Q
  1038.    '
  1039.    _DIALOGBUTTON$=B_DLG$
  1040.    B_DLG$=""
  1041.    ZN=0
  1042.    '
  1043.    FIN:
  1044.    Screen Close 7
  1045.    '
  1046.    FIN2:
  1047.    '
  1048. End Proc[Q-1]
  1049. '
  1050. Procedure _GETWBPALETTE
  1051.    '
  1052.    F$=""
  1053.    F=0
  1054.    '
  1055.    If Exist("Env:Sys/Palette.prefs")
  1056.       F$="Env:Sys/Palette.prefs"
  1057.       F=1
  1058.    End If 
  1059.    '
  1060.    If F=0 and Exist("ENVARC:Sys/Palette.prefs")
  1061.       F$="EnvArc:Sys/Palette.prefs"
  1062.       F=1
  1063.    End If 
  1064.    '
  1065.    If F=0 and Exist("Devs:System-Configuration")
  1066.       F$="Devs:System-Configuration"
  1067.       F=2
  1068.    End If 
  1069.    '
  1070.    If F=0
  1071.       Palette $999,$0,$FFF,$58A,$F00,$F0,$F,$FF0
  1072.    End If 
  1073.    '
  1074.    ' *** Change To WB Colours.
  1075.    '
  1076.    If F=1
  1077.       Open In 1,F$
  1078.       L=Lof(1)
  1079.       Close 1
  1080.       A$=String$(" ",L)
  1081.       Bload F$,Varptr(A$)
  1082.       For A=0 To 7
  1083.          R=Peek(Varptr(A$)+180+A*8)/16
  1084.          G=Peek(Varptr(A$)+182+A*8)/16
  1085.          B=Peek(Varptr(A$)+184+A*8)/16
  1086.          Colour A,(R*256+G*16+B)
  1087.       Next A
  1088.       A$=""
  1089.    End If 
  1090.    '
  1091.    If F=2
  1092.       Open In 1,F$
  1093.       L=Lof(1)
  1094.       Close 1
  1095.       A$=Space$(L)
  1096.       Bload F$,Varptr(A$)
  1097.       For A=0 To 3
  1098.          Colour A,Deek(Varptr(A$)+110+A*2)
  1099.          Colour A+16,Deek(Varptr(A$)+102+A*2)
  1100.       Next A
  1101.       A$=""
  1102.    End If 
  1103.    '
  1104.    Colour Back Colour(0)
  1105.    '
  1106. End Proc
  1107. '
  1108. Procedure _FILEREQUESTER[H$]
  1109.    '
  1110.    Shared _DIALOGBUTTON$,_FONTNAME$,_FONTSIZE,_TEXT,_COLOUR,_LIGHT,_BACK
  1111.    Shared _MAXFILES,_FILES,_PATH$,_WILD$,_FILENAME$(),_FILE$
  1112.    '
  1113.    TEMP1$=_DIALOGBUTTON$
  1114.    _DIALOGBUTTON$=""
  1115.    '
  1116.    TEMP2$=_FONTNAME$
  1117.    TEMP3=_FONTSIZE
  1118.    '
  1119.    _SETFONT["Topaz",8]
  1120.    '
  1121.    _OPENDIALOGSCREEN[7,110,44]
  1122.    Get Palette 0
  1123.    _DRAWTITLEBAR[H$]
  1124.    '
  1125.    _DRAW3DBOX[0,11,639,108,"",1,,_COLOUR]
  1126.    _DRAW3DBOX[8,13,334,106,"",1,,_BACK]
  1127.    '
  1128.    _ADDBUTTON[337,89,352,97,"(S)UAR",-1]
  1129.    _DRAW3DBOX[337,13,352,87,"",1,,_BACK]
  1130.    _ADDBUTTON[337,98,352,106,"(S)DAR",-2]
  1131.    '
  1132.    _DRAW3DBOX[356,45,440,59,"File",1,_TEXT,_BACK]
  1133.    _ADDINPUTBUTTON[45,8,_FILE$,31,31,-3]
  1134.    _DRAW3DBOX[356,13,440,27,"Drawer",1,_TEXT,_BACK]
  1135.    _ADDINPUTBUTTON[45,4,_PATH$+_WILD$,31,120,-4]
  1136.    '
  1137.    _ADDBUTTON[356,77,490,91,"Parent",5]
  1138.    _ADDBUTTON[356,92,490,106,"Volumes",6]
  1139.    _ADDBUTTON[497,77,631,91,"Cancel",7]
  1140.    _ADDBUTTON[497,92,631,106,"OK",8]
  1141.    '
  1142.    _BPATH$=_PATH$+_WILD$
  1143.    _SWITCH=0
  1144.    _POSITION=1
  1145.    '
  1146.    If _FILES=0
  1147.       Gosub _GETDIRECTORY
  1148.    End If 
  1149.    '
  1150.    Gosub _DISPLAYLIST
  1151.    Gosub _DISPLAYPATH
  1152.    Gosub _DISPLAYFILE
  1153.    '
  1154.    Do 
  1155.       '
  1156.       _CHECKBUTTONS
  1157.       _BUTTONZONE=Param
  1158.       '
  1159.       If _BUTTONZONE=1 and _POSITION>1
  1160.          Dec _POSITION
  1161.          Gosub _DISPLAYLIST
  1162.       End If 
  1163.       '
  1164.       If _BUTTONZONE=2 and _POSITION<_FILES-11
  1165.          Inc _POSITION
  1166.          Gosub _DISPLAYLIST
  1167.       End If 
  1168.       '
  1169.       If _BUTTONZONE=3
  1170.          _ADDINPUTBUTTON[45,8,_FILE$,31,31,0]
  1171.          _FILE$=Param$
  1172.       End If 
  1173.       '
  1174.       If _BUTTONZONE=4
  1175.          _BPATH$=_PATH$
  1176.          _ADDINPUTBUTTON[45,4,_PATH$+_WILD$,31,120,0]
  1177.          _PATH$=Param$
  1178.          Gosub _CUTWILD
  1179.          _TEMP$=_PATH$
  1180.          Gosub _CHECKFILE
  1181.       End If 
  1182.       '
  1183.       If _BUTTONZONE=5
  1184.          Gosub _PARENT
  1185.       End If 
  1186.       '
  1187.       If _BUTTONZONE=6
  1188.          SWITCH=1
  1189.          Gosub _GETDIRECTORY
  1190.          Gosub _DISPLAYLIST
  1191.          Gosub _DISPLAYPATH
  1192.          Gosub _DISPLAYFILE
  1193.       End If 
  1194.       '
  1195.       If _BUTTONZONE=7
  1196.          _FILE$=""
  1197.          Goto FIN
  1198.       End If 
  1199.       '
  1200.       If _BUTTONZONE=8
  1201.          _TEMP$=_PATH$+_FILE$
  1202.          Goto FIN
  1203.       End If 
  1204.       '
  1205.       _COUNT=0
  1206.       While _COUNT<11
  1207.          _CHECKZONE[10,16+(_COUNT*8),332,23+(_COUNT*8),1]
  1208.          If(Param>0) and(_FILENAME$(_POSITION+_COUNT)<>"")
  1209.             _TEMP$=_FILENAME$(_POSITION+_COUNT)
  1210.             Gosub _CHECKFILE
  1211.             Gosub _DISPLAYFILE
  1212.          End If 
  1213.          Inc _COUNT
  1214.       Wend 
  1215.       '
  1216.       _GRABVERTICALSLIDER[337,13,15,74,Min(_FILES,_FILES-11),_POSITION,""]
  1217.       If Param<>_POSITION
  1218.          _POSITION=Param
  1219.          Gosub _DISPLAYLIST
  1220.       End If 
  1221.       '
  1222.    Loop 
  1223.    '
  1224.    _GETDIRECTORY:
  1225.    '
  1226.    If Not Exist(_PATH$)
  1227.       _PATH$=_BPATH$
  1228.    End If 
  1229.    '
  1230.    _COUNT=1
  1231.    While _COUNT<_MAXFILES+1
  1232.       _FILENAME$(_COUNT)=""
  1233.       Inc _COUNT
  1234.    Wend 
  1235.    '
  1236.    Set Dir 31
  1237.    _FILES=0
  1238.    '
  1239.    If SWITCH=0
  1240.       '
  1241.       _FILENAME$(FILES)=Dir First$(_PATH$+_WILD$)
  1242.       While _FILENAME$(_FILES)<>"" and _FILES<_MAXFILES
  1243.          If Mid$(_FILENAME$(_FILES),1,1)="*"
  1244.             Mid$(_FILENAME$(_FILES),31,5)="(Dir)"
  1245.          End If 
  1246.          Inc _FILES
  1247.          _FILENAME$(_FILES)=Dir Next$
  1248.       Wend 
  1249.       '
  1250.    Else 
  1251.       '
  1252.       _FILENAME$(FILES)=Dev First$("**")
  1253.       While _FILENAME$(_FILES)<>"" and _FILES<_MAXFILES
  1254.          Mid$(_FILENAME$(_FILES),31,5)="(Dev)"
  1255.          Inc _FILES
  1256.          _FILENAME$(_FILES)=Dev Next$
  1257.       Wend 
  1258.       '
  1259.    End If 
  1260.    '
  1261.    _BPATH$=_PATH$
  1262.    _POSITION=1
  1263.    SWITCH=0
  1264.    '
  1265.    Return 
  1266.    '
  1267.    _DISPLAYPATH:
  1268.    '
  1269.    Pen _TEXT
  1270.    Print At(45,4)+Space$(31);
  1271.    Print At(45,4)+Left$(_PATH$+_WILD$,31);
  1272.    Return 
  1273.    '
  1274.    _DISPLAYFILE:
  1275.    '
  1276.    Pen _TEXT
  1277.    Print At(45,8)+Space$(31);
  1278.    Print At(45,8)+Left$(_FILE$,31);
  1279.    Return 
  1280.    '
  1281.    _DISPLAYLIST:
  1282.    '
  1283.    _COUNT=_POSITION
  1284.    While _COUNT<_POSITION+11
  1285.       Locate 2,_COUNT-_POSITION+2
  1286.       If _FILENAME$(_COUNT)<>""
  1287.          If Left$(_FILENAME$(_COUNT),1)="*"
  1288.             Pen _LIGHT
  1289.          Else 
  1290.             Pen _TEXT
  1291.          End If 
  1292.          Print _FILENAME$(_COUNT);
  1293.       Else 
  1294.          Print Space$(38);
  1295.       End If 
  1296.       Inc _COUNT
  1297.    Wend 
  1298.    '
  1299.    _VERTICALSLIDER[337,13,15,74,Min(_FILES,_FILES-11),_POSITION,""]
  1300.    '
  1301.    Return 
  1302.    '
  1303.    _PARENT:
  1304.    '
  1305.    If Len(_PATH$)>2
  1306.       _COUNT=Len(_PATH$)-1
  1307.       While _COUNT>1
  1308.          A$=Mid$(_PATH$,_COUNT,1)
  1309.          If(A$="/") or(A$=":")
  1310.             _PATH$=Left$(_PATH$,_COUNT)
  1311.             Gosub _GETDIRECTORY
  1312.             Gosub _DISPLAYPATH
  1313.             Gosub _DISPLAYLIST
  1314.             Exit 
  1315.          End If 
  1316.          Dec _COUNT
  1317.       Wend 
  1318.    End If 
  1319.    Return 
  1320.    '
  1321.    _CUTWILD:
  1322.    '
  1323.    _COUNT=Len(_PATH$)
  1324.    While _COUNT>1
  1325.       A$=Mid$(_PATH$,_COUNT,1)
  1326.       If(A$="/") or(A$=":")
  1327.          _WILD$=Right$(_PATH$,Len(_PATH$)-_COUNT)
  1328.          _PATH$=Left$(_PATH$,_COUNT)
  1329.          Exit 
  1330.       End If 
  1331.       Dec _COUNT
  1332.    Wend 
  1333.    Return 
  1334.    '
  1335.    _CHECKFILE:
  1336.    '
  1337.    _COUNT=30
  1338.    While _COUNT>1
  1339.       If Mid$(_TEMP$,_COUNT,1)<>" "
  1340.          _TEMP$=Left$(_TEMP$,_COUNT)
  1341.          Exit 
  1342.       End If 
  1343.       Dec _COUNT
  1344.    Wend 
  1345.    '
  1346.    If(Right$(_TEMP$,1)=":") or(Right$(_TEMP$,1)="/")
  1347.       If Left$(_TEMP$,1)=" "
  1348.          _PATH$=Mid$(_TEMP$,2)
  1349.       Else 
  1350.          _PATH$=_TEMP$
  1351.       End If 
  1352.       Gosub _GETDIRECTORY
  1353.       SWITCH=0
  1354.       Gosub _DISPLAYPATH
  1355.       Gosub _DISPLAYLIST
  1356.       Goto OK1
  1357.    End If 
  1358.    '
  1359.    A$=Left$(_TEMP$,1)
  1360.    _TEMP$=Mid$(_TEMP$,2)
  1361.    '
  1362.    If A$="*"
  1363.       _PATH$=_PATH$+_TEMP$+"/"
  1364.       Gosub _GETDIRECTORY
  1365.       Gosub _DISPLAYPATH
  1366.       Gosub _DISPLAYLIST
  1367.       Goto OK1
  1368.    End If 
  1369.    '
  1370.    _FILE$=_TEMP$
  1371.    Gosub _DISPLAYFILE
  1372.    '
  1373.    OK1:
  1374.    Return 
  1375.    '
  1376.    FIN:
  1377.    '
  1378.    _SETFONT[TEMP2$,TEMP3]
  1379.    _DIALOGBUTTON$=TEMP1$
  1380.    Screen Close 7
  1381.    '
  1382. End Proc[_TEMP$]
  1383. '
  1384. Procedure _INPUTREQUESTER[M$,TXT$,L,ML]
  1385.    '
  1386.    Shared _DIALOGBUTTON$,_BACK,_COLOUR,_TEXT,_LIGHT,_SHADOW
  1387.    '
  1388.    _TEMP1$=_DIALOGBUTTON$
  1389.    _TEMP2$=_FONTNAME$
  1390.    _TEMP3=_FONTSIZE
  1391.    _DIALOGBUTTON$=""
  1392.    '
  1393.    OLDTEXT$=TXT$
  1394.    '
  1395.    _OPENDIALOGSCREEN[7,58,44]
  1396.    Get Palette 0
  1397.    H=57
  1398.    '
  1399.    _DRAW3DBOX[0,0,639,H-1,"",4,0,_COLOUR]
  1400.    Set Pattern 2
  1401.    _DRAW3DBOX[3,10,636,H-2,"",3,_LIGHT,_BACK]
  1402.    Set Pattern 0
  1403.    '
  1404.    _DRAW3DBOX[2,1,637,9,M$,2,_TEXT,_COLOUR]
  1405.    _DRAW3DBOX[8,13,632,H-20,"",3,,_BACK]
  1406.    '
  1407.    _ADDBUTTON[20,H-18,120,H-5,"Cancel",1]
  1408.    _ADDBUTTON[519,H-18,619,H-5,"OK",2]
  1409.    '
  1410.    L=Min(L,76)
  1411.    XX=40-Int(L/2)
  1412.    _ADDINPUTBUTTON[XX,3,TXT$,L,ML,-3]
  1413.    '
  1414.    Do 
  1415.       '
  1416.       _CHECKBUTTONS
  1417.       _BUTTONZONE=Param
  1418.       '
  1419.       If _BUTTONZONE=1
  1420.          TXT$=OLDTEXT$
  1421.          Exit 
  1422.       End If 
  1423.       '
  1424.       If _BUTTONZONE=2
  1425.          Exit 
  1426.       End If 
  1427.       '
  1428.       If _BUTTONZONE=3
  1429.          _ADDINPUTBUTTON[XX,3,TXT$,L,ML,0]
  1430.          TXT$=Param$
  1431.       End If 
  1432.       '
  1433.    Loop 
  1434.    '
  1435.    _DIALOGBUTTON$=_TEMP1$
  1436.    _SETFONT[_TEMP2$,_TEMP3]
  1437.    Screen Close 7
  1438.    '
  1439. End Proc[TXT$]
  1440. '
  1441. Procedure _FIELDTOTAL
  1442.    '
  1443.    Shared _DIALOGBUTTON$,F$(),_TEXT,_BACK,_COLOUR,_LIGHT,F$,NOR
  1444.    '
  1445.    _OPENDIALOGSCREEN[7,52,102]
  1446.    Get Palette 0
  1447.    '
  1448.    Scroll Off 
  1449.    '
  1450.    _TEMP1$=_DIALOGBUTTON$
  1451.    _DIALOGBUTTON$=""
  1452.    '
  1453.    _TXT1$="Total = @"
  1454.    _TXT2$="0"
  1455.    '
  1456.    _DRAW3DBOX[100,4,539,16,"ENTER STRING TO PLACE FIELD TOTAL INSIDE",1,_LIGHT,_COLOUR]
  1457.    _ADDBUTTON[516,21,628,35,"Cancel",1]
  1458.    _ADDBUTTON[516,37,580,51,"PRINT",2]
  1459.    _ADDBUTTON[588,37,628,51,"O.K",3]
  1460.    _DRAW3DBOX[12,37,76,51,"ADD",1,_TEXT,_BACK]
  1461.    _DRAW3DBOX[142,37,500,51,"ADD @ SYMBOL TO PLACE TOTAL IN TEXT",2,_TEXT,_BACK]
  1462.    '
  1463.    _ADDINPUTBUTTON[2,3,_TXT1$,60,80,-4]
  1464.    _ADDINPUTBUTTON[11,5,_TXT2$,8,8,-5]
  1465.    '
  1466.    TEMP$=""
  1467.    Do 
  1468.       '
  1469.       _CHECKBUTTONS
  1470.       _BUTTONZONE=Param
  1471.       '
  1472.       If _BUTTONZONE=4
  1473.          _ADDINPUTBUTTON[2,3,_TXT1$,60,80,0]
  1474.          _TXT1$=Param$
  1475.       End If 
  1476.       '
  1477.       If _BUTTONZONE=5
  1478.          _ADDINPUTBUTTON[11,5,_TXT2$,8,8,0]
  1479.          _TXT2$=Param$
  1480.       End If 
  1481.       '
  1482.       If _BUTTONZONE=1
  1483.          Screen Close 7
  1484.          Goto FIN
  1485.       End If 
  1486.       '
  1487.       If _BUTTONZONE=2
  1488.          NC=1
  1489.          Exit 
  1490.       End If 
  1491.       '
  1492.       If _BUTTONZONE=3
  1493.          NC=0
  1494.          Exit 
  1495.       End If 
  1496.       '
  1497.    Loop 
  1498.    '
  1499.    _DIALOGBUTTON$=_TEMP1$
  1500.    '
  1501.    _ALERTREQUESTER["Total Which Field ?","FIELD 1|FIELD 2|FIELD 3|FIELD 4|NO FIELD"]
  1502.    If Param=0
  1503.       Goto FIN
  1504.    End If 
  1505.    _FLD=Param
  1506.    '
  1507.    _ALERTREQUESTER["Totaling Field"+Str$(_FLD),""]
  1508.    '
  1509.    TTL#=Val(_TXT2$)
  1510.    For LOP=1 To NOR
  1511.       _CUTFIELDS[LOP]
  1512.       If _FLD=1
  1513.          TTL#=TTL#+Val(R1$)
  1514.       End If 
  1515.       If _FLD=2
  1516.          TTL#=TTL#+Val(R2$)
  1517.       End If 
  1518.       If _FLD=3
  1519.          TTL#=TTL#+Val(R3$)
  1520.       End If 
  1521.       If _FLD=4
  1522.          TTL#=TTL#+Val(R4$)
  1523.       End If 
  1524.    Next LOP
  1525.    '    
  1526.    _ALERTREQUESTER["_Cc_",""]
  1527.    '  
  1528.    If NC=1
  1529.       For LOP=1 To Len(_TXT1$)
  1530.          CHK$=Mid$(_TXT1$,LOP,1)
  1531.          If CHK$="@"
  1532.             Lprint Str$(TTL#)-" ";
  1533.          Else 
  1534.             Lprint CHK$;
  1535.          End If 
  1536.       Next LOP
  1537.       Lprint 
  1538.    End If 
  1539.    '    
  1540.    If NC=0
  1541.       _TMP3$=""
  1542.       For LOP=1 To Len(_TXT1$)
  1543.          CHK$=Mid$(_TXT1$,LOP,1)
  1544.          If CHK$="@"
  1545.             _TMP3$=_TMP3$+Str$(TTL#)-" "
  1546.          Else 
  1547.             _TMP3$=_TMP3$+CHK$
  1548.          End If 
  1549.       Next LOP
  1550.       _ALERTREQUESTER[_TMP3$,"O.K!"]
  1551.    End If 
  1552.    '
  1553.    FIN:
  1554.    Scroll On 
  1555.    _DIALOGBUTTON$=_TEMP1$
  1556.    '
  1557. End Proc
  1558. '
  1559. Procedure _LOADRECORDS
  1560.    '
  1561.    Shared _DIALOGBUTTON$,F$(),_WILD$,_BACK,_TEXT,_COLOUR
  1562.    Shared F1$,F2$,F3$,F4$,FL1,FL2,FL3,FL4,TIT$,P,DT$,NOR
  1563.    '
  1564.    If NOR>0
  1565.       _ALERTREQUESTER["All Current Records Will Be Lost, Continue ?","YES|NO"]
  1566.       If Param<>1
  1567.          Pop Proc
  1568.       End If 
  1569.    End If 
  1570.    '
  1571.    _FILEREQUESTER["Load Database File"]
  1572.    ED$=Param$
  1573.    '
  1574.    If ED$=""
  1575.       Pop Proc
  1576.    End If 
  1577.    '
  1578.    If Not Exist(ED$)
  1579.       _ALERTREQUESTER["File Does Not Exist !","OOPS"]
  1580.       Pop Proc
  1581.    End If 
  1582.    '
  1583.    Open In 1,ED$
  1584.    CHK$=Input$(1,9)
  1585.    If Left$(CHK$,4)<>"DM20"
  1586.       Close 1
  1587.       _ALERTREQUESTER["Incorrect File Format !","OOPS"]
  1588.       Pop Proc
  1589.    End If 
  1590.    '
  1591.    _ALERTREQUESTER["Loading Records, Please Wait...||",""]
  1592.    TIT$=ED$
  1593.    '
  1594.    Screen 7
  1595.    _DRAW3DBOX[55,45,584,55,"",0,0,_BACK]
  1596.    '
  1597.    Line Input #1,DT$
  1598.    '
  1599.    Line Input #1,F$(1)
  1600.    _CUTFIELDS[1]
  1601.    F1$=R1$
  1602.    F2$=R2$
  1603.    F3$=R3$
  1604.    F4$=R4$
  1605.    '
  1606.    Input #1,FL1
  1607.    Input #1,FL2
  1608.    Input #1,FL3
  1609.    Input #1,FL4
  1610.    Input #1,NOR
  1611.    '
  1612.    For LOP=1 To NOR
  1613.       Line Input #1,F$(LOP)
  1614.       A1#=NOR
  1615.       A2#=529
  1616.       A3#=A2#/A1#
  1617.       A4#=LOP
  1618.       A5#=A3#*A4#
  1619.       Cls _COLOUR,56,46 To 56+A5#,55
  1620.    Next LOP
  1621.    '
  1622.    Close 1
  1623.    '
  1624.    _ALERTREQUESTER["_Cc_",""]
  1625.    '
  1626.    _CHANGEFIELD1[1]
  1627.    _CHANGEFIELD2[1]
  1628.    _CHANGEFIELD3[1]
  1629.    _CHANGEFIELD4[1]
  1630.    '
  1631.    _DRAW3DBOX[468,117,620,131,DT$,2,_TEXT,_BACK]
  1632.    '
  1633.    P=1
  1634.    _CUTFIELDS[P]
  1635.    _DISPLAYRECORD
  1636.    '
  1637. End Proc
  1638. '
  1639. Procedure _DISPLAYRECORD
  1640.    '  
  1641.    Shared _TEXT,_BACK,P,F$(),FL1,FL2,FL3,FL4,F1$,F2$,F3$,F4$,NOR
  1642.    '
  1643.    SC=Screen
  1644.    Screen 0
  1645.    '
  1646.    If P>0
  1647.       _CUTFIELDS[P]
  1648.       Print At(17,17)+Left$(R1$,FL1)+Space$(FL1-Len(Left$(R1$,FL1)))
  1649.       Print At(17,19)+Left$(R2$,FL2)+Space$(FL2-Len(Left$(R2$,FL2)))
  1650.       Print At(17,21)+Left$(R3$,FL3)+Space$(FL3-Len(Left$(R3$,FL3)))
  1651.       Print At(17,23)+Left$(R4$,FL4)+Space$(FL4-Len(Left$(R4$,FL4)))
  1652.    Else 
  1653.       Print At(17,17)+Space$(FL1)
  1654.       Print At(17,19)+Space$(FL2)
  1655.       Print At(17,21)+Space$(FL3)
  1656.       Print At(17,23)+Space$(FL4)
  1657.    End If 
  1658.    '
  1659.    _DRAW3DBOX[12,117,116,131,Str$(P)-" "+" / "+Str$(NOR)-" ",2,_TEXT,_BACK]
  1660.    '
  1661.    Screen SC
  1662.    '
  1663. End Proc
  1664. '
  1665. Procedure _CUTFIELDS[Z]
  1666.    '
  1667.    Shared F$()
  1668.    '
  1669.    TEMP$=F$(Z)
  1670.    '    
  1671.    I=Instr(TEMP$,Chr$(255))
  1672.    R1$=Left$(TEMP$,I-1)
  1673.    '  
  1674.    TEMP$=Right$(TEMP$,Len(TEMP$)-I)
  1675.    '  
  1676.    I=Instr(TEMP$,Chr$(255))
  1677.    R2$=Left$(TEMP$,I-1)
  1678.    '
  1679.    TEMP$=Right$(TEMP$,Len(TEMP$)-I)
  1680.    '
  1681.    I=Instr(TEMP$,Chr$(255))
  1682.    R3$=Left$(TEMP$,I-1)
  1683.    '
  1684.    R4$=Right$(TEMP$,Len(TEMP$)-I)
  1685.    '
  1686. End Proc
  1687. '
  1688. Procedure _DELETERECORDS
  1689.    '
  1690.    Shared F$(),P,NOR
  1691.    '
  1692.    _ALERTREQUESTER["Delete What ?","THIS ONE|FROM-TO"]
  1693.    '
  1694.    If Param=0
  1695.       Pop Proc
  1696.    End If 
  1697.    '
  1698.    If Param=1
  1699.       STA=P
  1700.       FIN=P
  1701.    End If 
  1702.    '
  1703.    If Param=2
  1704.       '
  1705.       _INPUTREQUESTER["Enter Record To Start From ?","",4,4]
  1706.       STA=Val(Param$)
  1707.       If STA<1 or STA>NOR
  1708.          Pop Proc
  1709.       End If 
  1710.       '
  1711.       _INPUTREQUESTER["Enter Record To Finish At ?","",4,4]
  1712.       FIN=Val(Param$)
  1713.       If FIN<0 or FIN>NOR or FIN<STA
  1714.          Pop Proc
  1715.       End If 
  1716.       '
  1717.    End If 
  1718.    '
  1719.    _ALERTREQUESTER["Delete Record(s), Sure ?","YES|NO"]
  1720.    If Param<>1
  1721.       Pop Proc
  1722.    End If 
  1723.    '
  1724.    Z=(FIN-STA)+1
  1725.    '
  1726.    NNO=NOR
  1727.    For LOP=FIN+1 To NOR
  1728.       F$(LOP-Z)=F$(LOP)
  1729.    Next LOP
  1730.    '
  1731.    NOR=NOR-Z
  1732.    If P>=NOR
  1733.       P=P-Z
  1734.    End If 
  1735.    '
  1736.    If NOR=0
  1737.       P=0
  1738.    End If 
  1739.    '
  1740.    For LOP=NOR+1 To NNO
  1741.       F$(LOP)=Chr$(255)+Chr$(255)+Chr$(255)
  1742.    Next LOP
  1743.    '
  1744.    _DISPLAYRECORD
  1745.    '
  1746. End Proc
  1747. '
  1748. Procedure _COPYRECORDS
  1749.    '
  1750.    Shared HINO,F$(),P,NOR
  1751.    '
  1752.    _ALERTREQUESTER["Choose Copy Option ?","COPY ONCE|MULTIPLE"]
  1753.    '
  1754.    If Param=0
  1755.       Pop Proc
  1756.    End If 
  1757.    '
  1758.    If Param=1
  1759.       Z=1
  1760.    End If 
  1761.    '
  1762.    If Param=2
  1763.       _INPUTREQUESTER["How Many Times Do You Wish To Copy This Record (1 To"+Str$(HINO-NOR)+")","",4,4]
  1764.       Z=Val(Param$)
  1765.       If Z<1 or Z+NOR>HINO
  1766.          Pop Proc
  1767.       End If 
  1768.    End If 
  1769.    '
  1770.    For LOP=NOR+1 To NOR+Z
  1771.       F$(LOP)=F$(P)
  1772.    Next LOP
  1773.    '
  1774.    Add NOR,Z
  1775.    '
  1776.    _DISPLAYRECORD
  1777.    '
  1778. End Proc
  1779. '
  1780. Procedure _SORTRECORDS
  1781.    '
  1782.    Shared NOR
  1783.    '
  1784.    _ALERTREQUESTER["Sort Records, Sure ?","YES|NO"]
  1785.    If Param<>1
  1786.       Pop Proc
  1787.    End If 
  1788.    '
  1789.    _ALERTREQUESTER["Sorting Records, Please Wait...||",""]
  1790.    '
  1791.    Screen 7
  1792.    _DRAW3DBOX[55,45,584,55,"",0,0,0]
  1793.    _SORT[1,NOR]
  1794.    '
  1795.    _ALERTREQUESTER["_Cc_",""]
  1796.    _DISPLAYRECORD
  1797.    '
  1798. End Proc
  1799. '
  1800. Procedure _SORT[L,R]
  1801.    '
  1802.    Shared F$(),_COLOUR,NOR
  1803.    '
  1804.    I=L
  1805.    J=R
  1806.    '    
  1807.    A1#=NOR
  1808.    A2#=529
  1809.    A3#=A2#/A1#
  1810.    A4#=L
  1811.    A5#=A3#*A4#
  1812.    Cls _COLOUR,56,46 To 56+A5#,55
  1813.    '    
  1814.    R1$=F$((L+R)/2)
  1815.    '    
  1816.    While I<=J
  1817.       While F$(I)<R1$
  1818.          Inc I
  1819.       Wend 
  1820.       '      
  1821.       While R1$<F$(J)
  1822.          Dec J
  1823.       Wend 
  1824.       '    
  1825.       If I<=J
  1826.          Swap F$(I),F$(J)
  1827.          Inc I
  1828.          Dec J
  1829.       End If 
  1830.       '    
  1831.    Wend 
  1832.    '
  1833.    If L<J
  1834.       _SORT[L,J]
  1835.    End If 
  1836.    '
  1837.    If I<R
  1838.       _SORT[I,R]
  1839.    End If 
  1840.    '
  1841. End Proc
  1842. '
  1843. Procedure _GOTORECORD
  1844.    '
  1845.    Shared P,NOR
  1846.    '
  1847.    _INPUTREQUESTER["Goto Which Record (1 To "+Str$(NOR)-" "+") ?","",4,4]
  1848.    Z=Val(Param$)
  1849.    If Z<0 or Z>NOR
  1850.       Pop Proc
  1851.    End If 
  1852.    '
  1853.    P=Z
  1854.    _DISPLAYRECORD
  1855.    '
  1856. End Proc
  1857. '
  1858. Procedure _FILENOTE
  1859.    '
  1860.    Shared DT$,_BACK,_TEXT
  1861.    '
  1862.    _INPUTREQUESTER["Enter File-Note ?",DT$,18,18]
  1863.    DT$=Param$
  1864.    _DRAW3DBOX[468,117,620,131,DT$,2,_TEXT,_BACK]
  1865.    '
  1866. End Proc
  1867. '
  1868. Procedure _CHANGEFIELD1[N]
  1869.    '
  1870.    Shared FL1,F1$,_DIALOGBUTTON$,_COLOUR,_TEXT,_BACK
  1871.    '
  1872.    If N=0
  1873.       '
  1874.       _INPUTREQUESTER["Enter Field Title #1",F1$,12,12]
  1875.       TEMP1$=Param$
  1876.       '
  1877.       _INPUTREQUESTER["Enter Field Width #1 (0 To 60)",Str$(FL1)-" ",2,2]
  1878.       TEMP2=Val(Param$)
  1879.       '
  1880.       If TEMP2>60
  1881.          TEMP2=60
  1882.       End If 
  1883.       '
  1884.       F1$=TEMP1$
  1885.       FL1=TEMP2
  1886.       '
  1887.    End If 
  1888.    '
  1889.    _CUTFIELDS[P]
  1890.    '
  1891.    _DELETEBUTTON[28,_COLOUR]
  1892.    _ADDINPUTBUTTON[17,17,R1$,FL1,FL1,-28]
  1893.    '
  1894.    _DRAW3DBOX[12,133,116,147,F1$,1,_TEXT,_BACK]
  1895.    '
  1896. End Proc
  1897. '
  1898. Procedure _CHANGEFIELD2[N]
  1899.    '
  1900.    Shared FL2,F2$,_DIALOGBUTTON$,_COLOUR,_TEXT,_BACK
  1901.    '
  1902.    If N=0
  1903.       '
  1904.       _INPUTREQUESTER["Enter Field Title #2",F2$,12,12]
  1905.       TEMP1$=Param$
  1906.       '
  1907.       _INPUTREQUESTER["Enter Field Width #2 (0 To 60)",Str$(FL2)-" ",2,2]
  1908.       TEMP2=Val(Param$)
  1909.       '
  1910.       If TEMP2>60
  1911.          TEMP2=60
  1912.       End If 
  1913.       '
  1914.       F2$=TEMP1$
  1915.       FL2=TEMP2
  1916.       '
  1917.    End If 
  1918.    '
  1919.    _CUTFIELDS[P]
  1920.    '
  1921.    _DELETEBUTTON[29,_COLOUR]
  1922.    _ADDINPUTBUTTON[17,19,R2$,FL2,FL2,-29]
  1923.    '
  1924.    _DRAW3DBOX[12,149,116,163,F2$,1,_TEXT,_BACK]
  1925.    '
  1926. End Proc
  1927. '
  1928. Procedure _CHANGEFIELD3[N]
  1929.    '
  1930.    Shared FL3,F3$,_DIALOGBUTTON$,_COLOUR,_TEXT,_BACK
  1931.    '
  1932.    If N=0
  1933.       '
  1934.       _INPUTREQUESTER["Enter Field Title #3",F3$,12,12]
  1935.       TEMP1$=Param$
  1936.       '
  1937.       _INPUTREQUESTER["Enter Field Width #3 (0 To 60)",Str$(FL3)-" ",2,2]
  1938.       TEMP2=Val(Param$)
  1939.       '
  1940.       If TEMP2>60
  1941.          TEMP2=60
  1942.       End If 
  1943.       '
  1944.       F3$=TEMP1$
  1945.       FL3=TEMP2
  1946.       '
  1947.    End If 
  1948.    '
  1949.    _CUTFIELDS[P]
  1950.    '
  1951.    _DELETEBUTTON[30,_COLOUR]
  1952.    _ADDINPUTBUTTON[17,21,R3$,FL3,FL3,-30]
  1953.    '
  1954.    _DRAW3DBOX[12,165,116,179,F3$,1,_TEXT,_BACK]
  1955.    '
  1956. End Proc
  1957. '
  1958. Procedure _CHANGEFIELD4[N]
  1959.    '
  1960.    Shared FL4,F4$,_DIALOGBUTTON$,_COLOUR,_TEXT,_BACK
  1961.    '
  1962.    If N=0
  1963.       '
  1964.       _INPUTREQUESTER["Enter Field Title #4",F4$,12,12]
  1965.       TEMP1$=Param$
  1966.       '
  1967.       _INPUTREQUESTER["Enter Field Width #4 (0 To 60)",Str$(FL4)-" ",2,2]
  1968.       TEMP2=Val(Param$)
  1969.       '
  1970.       If TEMP2>60
  1971.          TEMP2=60
  1972.       End If 
  1973.       '
  1974.       F4$=TEMP1$
  1975.       FL4=TEMP2
  1976.       '
  1977.    End If 
  1978.    '
  1979.    _CUTFIELDS[P]
  1980.    '
  1981.    _DELETEBUTTON[31,_COLOUR]
  1982.    _ADDINPUTBUTTON[17,23,R4$,FL4,FL4,-31]
  1983.    '
  1984.    _DRAW3DBOX[12,181,116,195,F4$,1,_TEXT,_BACK]
  1985.    '
  1986. End Proc
  1987. '
  1988. Procedure _SAVERECORDS
  1989.    '
  1990.    Shared NOR,DT$,FL1,FL2,FL3,FL4,F1$,F2$,F3$,F4$,TIT$,F$(),_COLOUR,_BACK
  1991.    '
  1992.    _FILEREQUESTER["Save Database *.DAT File"]
  1993.    ED$=Param$
  1994.    '
  1995.    If ED$=""
  1996.       Pop Proc
  1997.    End If 
  1998.    '
  1999.    If Exist(ED$)
  2000.       _ALERTREQUESTER["File Already Exists, Overwrite ?","YES|NO"]
  2001.       If Param<>1
  2002.          Pop Proc
  2003.       End If 
  2004.    End If 
  2005.    '
  2006.    TIT$=ED$
  2007.    _ALERTREQUESTER["Saving Records, Please Wait...||",""]
  2008.    '
  2009.    Screen 7
  2010.    _DRAW3DBOX[55,45,584,55,"",0,0,_BACK]
  2011.    '
  2012.    Open Out 1,ED$
  2013.    '
  2014.    Print #1,"DM20   "
  2015.    Print #1,DT$
  2016.    Print #1,F1$+Chr$(255)+F2$+Chr$(255)+F3$+Chr$(255)+F4$
  2017.    Print #1,Str$(FL1)+","+Str$(FL2)+","+Str$(FL3)+","+Str$(FL4)+","+Str$(NOR)
  2018.    '
  2019.    For LOP=1 To NOR
  2020.       _CUTFIELDS[LOP]
  2021.       Print #1,Left$(R1$,FL1)+Chr$(255)+Left$(R2$,FL2)+Chr$(255)+Left$(R3$,FL3)+Chr$(255)+Left$(R4$,FL4)
  2022.       A1#=NOR
  2023.       A2#=529
  2024.       A3#=A2#/A1#
  2025.       A4#=LOP
  2026.       A5#=A3#*A4#
  2027.       Cls _COLOUR,56,46 To 56+A5#,55
  2028.    Next LOP
  2029.    '
  2030.    Close 1
  2031.    _ALERTREQUESTER["_Cc_",""]
  2032.    '
  2033. End Proc
  2034. '
  2035. Procedure _INSERTRECORD
  2036.    '
  2037.    Shared NOR,HINO,F$(),P
  2038.    '
  2039.    _ALERTREQUESTER["Choose Insert Option ?","HERE|AT END"]
  2040.    If Param=0
  2041.       Pop Proc
  2042.    End If 
  2043.    '
  2044.    Inc NOR
  2045.    If P=0
  2046.       P=1
  2047.    End If 
  2048.    '
  2049.    If Param=1
  2050.       For LOP=NOR-1 To P Step -1
  2051.          F$(LOP+1)=F$(LOP)
  2052.       Next LOP
  2053.       F$(P)=Chr$(255)+Chr$(255)+Chr$(255)
  2054.    Else 
  2055.       F$(NOR)=Chr$(255)+Chr$(255)+Chr$(255)
  2056.    End If 
  2057.    '
  2058.    _DISPLAYRECORD
  2059.    '
  2060. End Proc
  2061. '
  2062. Procedure _CLEARALL
  2063.    '
  2064.    Shared _TEXT,_BACK,F$()
  2065.    Shared FL1,FL2,FL3,FL4,F1$,F2$,F3$,F4$,NOR,P,DT$,TIT$,HINO
  2066.    '
  2067.    _ALERTREQUESTER["Clear All Records & Fields, Sure ?","YES|NO"]
  2068.    If Param<>1
  2069.       Pop Proc
  2070.    End If 
  2071.    '
  2072.    F1$="FIELD 1"
  2073.    F2$="FIELD 2"
  2074.    F3$="FIELD 3"
  2075.    F4$="FIELD 4"
  2076.    FL1=60
  2077.    FL2=60
  2078.    FL3=60
  2079.    FL4=60
  2080.    DT$=""
  2081.    P=0
  2082.    NOR=0
  2083.    TIT$=""
  2084.    '
  2085.    For LOP=1 To HINO
  2086.       F$(LOP)=Chr$(255)+Chr$(255)+Chr$(255)
  2087.    Next LOP
  2088.    '
  2089.    _CHANGEFIELD1[1]
  2090.    _CHANGEFIELD2[1]
  2091.    _CHANGEFIELD3[1]
  2092.    _CHANGEFIELD4[1]
  2093.    '
  2094.    _DRAW3DBOX[468,117,620,131,DT$,2,_TEXT,_BACK]
  2095.    _DISPLAYRECORD
  2096.    '
  2097. End Proc
  2098. '
  2099. Procedure _MERGEFILE
  2100.    '
  2101.    Shared HINO,F$(),NOR,P,_BACK,_COLOUR
  2102.    '
  2103.    _FILEREQUESTER["Select Database File To Merge"]
  2104.    ED$=Param$
  2105.    '
  2106.    If ED$=""
  2107.       Pop Proc
  2108.    End If 
  2109.    '
  2110.    If Not Exist(ED$)
  2111.       _ALERTREQUESTER["File Does Not Exist !","OOPS"]
  2112.       Pop Proc
  2113.    End If 
  2114.    '
  2115.    TIT$=ED$
  2116.    '
  2117.    Open In 1,ED$
  2118.    CHK$=Input$(1,9)
  2119.    If Left$(CHK$,4)<>"DM20"
  2120.       Close 1
  2121.       _ALERTREQUESTER["Wrong File Format !","OOPS"]
  2122.       Pop Proc
  2123.    End If 
  2124.    '
  2125.    Line Input #1,TD$
  2126.    If Left$(CHK$,4)="DM20"
  2127.       Line Input #1,TF1$
  2128.    Else 
  2129.       Line Input #1,TF1$
  2130.       Line Input #1,TF2$
  2131.       Line Input #1,TF3$
  2132.       Line Input #1,TF4$
  2133.    End If 
  2134.    Input #1,TFL1
  2135.    Input #1,TFL2
  2136.    Input #1,TFL3
  2137.    Input #1,TFL4
  2138.    Input #1,TNO
  2139.    '
  2140.    If(NOR+TNO)>HINO
  2141.       _ALERTREQUESTER["Not Enough Room For All Records, Continue ?","YES|NO"]
  2142.       If Param<>1
  2143.          Close 1
  2144.          Pop Proc
  2145.       End If 
  2146.       TNO=HINO-NOR
  2147.    End If 
  2148.    '
  2149.    _ALERTREQUESTER["Merging Records, Please Wait...||",""]
  2150.    '
  2151.    Screen 7
  2152.    _DRAW3DBOX[55,45,584,55,"",0,0,_BACK]
  2153.    '
  2154.    For LOP=(NOR+1) To(NOR+TNO)
  2155.       Line Input #1,F$(LOP)
  2156.       A1#=TNO
  2157.       A2#=529
  2158.       A3#=A2#/A1#
  2159.       A4#=LOP-NOR
  2160.       A5#=A3#*A4#
  2161.       Cls _COLOUR,56,46 To 56+A5#,55
  2162.    Next LOP
  2163.    Close 1
  2164.    _ALERTREQUESTER["_Cc_",""]
  2165.    NOR=NOR+TNO
  2166.    _DISPLAYRECORD
  2167.    '
  2168. End Proc
  2169. '
  2170. Procedure _FINDRECORD
  2171.    '
  2172.    Shared _DIALOGBUTTON$,_LIGHT,_COLOUR,_TEXT,_BACK,NOR,P
  2173.    Shared FL1,FL2,FL3,FL4,F1$,F2$,F3$,F4$,F$()
  2174.    '
  2175.    _ALERTREQUESTER["Select A Search Option ?","FIELD|GLOBAL"]
  2176.    If Param=0
  2177.       Pop Proc
  2178.    End If 
  2179.    '
  2180.    _TEMP1$=_DIALOGBUTTON$
  2181.    _DIALOGBUTTON$=""
  2182.    '
  2183.    If Param=1
  2184.       _OPENDIALOGSCREEN[7,52,102]
  2185.       Get Palette 0
  2186.       Scroll Off 
  2187.       '
  2188.       _DRAW3DBOX[100,52-(8*6),539,64-(8*6),"ENTER SEARCH STRINGS",1,_LIGHT,_COLOUR]
  2189.       '
  2190.       _DRAW3DBOX[12,69-(8*6),116,83-(8*6),F1$,1,_TEXT,_BACK]
  2191.       _DRAW3DBOX[12,85-(8*6),116,99-(8*6),F2$,1,_TEXT,_BACK]
  2192.       '
  2193.       _ADDINPUTBUTTON[16,3,"",15,FL1,-4]
  2194.       _ADDINPUTBUTTON[16,5,"",15,FL2,-5]
  2195.       '
  2196.       _DRAW3DBOX[260,69-(8*6),364,83-(8*6),F3$,1,_TEXT,_BACK]
  2197.       _DRAW3DBOX[260,85-(8*6),364,99-(8*6),F4$,1,_TEXT,_BACK]
  2198.       '
  2199.       _ADDINPUTBUTTON[47,3,"",15,FL3,-6]
  2200.       _ADDINPUTBUTTON[47,5,"",15,FL4,-7]
  2201.       '
  2202.       _ADDBUTTON[516,69-(8*6),628,83-(8*6),"Cancel",1]
  2203.       _ADDBUTTON[516,85-(8*6),580,99-(8*6),"No Case",2]
  2204.       _ADDBUTTON[588,85-(8*6),628,99-(8*6),"O.K",3]
  2205.       '
  2206.       TEMP1$=""
  2207.       TEMP2$=""
  2208.       TEMP3$=""
  2209.       TEMP4$=""
  2210.       '
  2211.       Do 
  2212.          '
  2213.          _CHECKBUTTONS
  2214.          _BUTTONZONE=Param
  2215.          '
  2216.          If _BUTTONZONE=4
  2217.             _ADDINPUTBUTTON[16,3,TEMP1$,15,FL1,0]
  2218.             TEMP1$=Param$
  2219.          End If 
  2220.          '
  2221.          If _BUTTONZONE=5
  2222.             _ADDINPUTBUTTON[16,5,TEMP2$,15,FL2,0]
  2223.             TEMP2$=Param$
  2224.          End If 
  2225.          '
  2226.          If _BUTTONZONE=6
  2227.             _ADDINPUTBUTTON[47,3,TEMP3$,15,FL3,0]
  2228.             TEMP3$=Param$
  2229.          End If 
  2230.          '
  2231.          If _BUTTONZONE=7
  2232.             _ADDINPUTBUTTON[47,5,TEMP4$,15,FL4,0]
  2233.             TEMP4$=Param$
  2234.          End If 
  2235.          '
  2236.          If _BUTTONZONE=1
  2237.             Screen Close 7
  2238.             Goto FIN
  2239.          End If 
  2240.          '
  2241.          If _BUTTONZONE=2
  2242.             NC=1
  2243.             Goto SRCH
  2244.          End If 
  2245.          '
  2246.          If _BUTTONZONE=3
  2247.             NC=0
  2248.             Goto SRCH
  2249.          End If 
  2250.          '
  2251.       Loop 
  2252.       '
  2253.       '
  2254.       SRCH:
  2255.       '
  2256.       _ALERTREQUESTER["Start Searching From Where ?","START|HERE"]
  2257.       If Param=0
  2258.          Goto FIN
  2259.       End If 
  2260.       '
  2261.       If Param=1
  2262.          STA=1
  2263.       Else 
  2264.          STA=P
  2265.       End If 
  2266.       '
  2267.       _ALERTREQUESTER["Searching, Please Wait...",""]
  2268.       '
  2269.       If NC=1
  2270.          TEMP1$=Upper$(TEMP1$)
  2271.          TEMP2$=Upper$(TEMP2$)
  2272.          TEMP3$=Upper$(TEMP3$)
  2273.          TEMP4$=Upper$(TEMP4$)
  2274.       End If 
  2275.       '
  2276.       For LOP=STA To NOR
  2277.          '
  2278.          _CUTFIELDS[LOP]
  2279.          '
  2280.          If NC=1
  2281.             R1$=Upper$(R1$)
  2282.             R2$=Upper$(R2$)
  2283.             R3$=Upper$(R3$)
  2284.             R4$=Upper$(R4$)
  2285.          End If 
  2286.          '
  2287.          If(Left$(R1$,Len(TEMP1$))=TEMP1$) and(Left$(R2$,Len(TEMP2$))=TEMP2$) and(Left$(R3$,Len(TEMP3$))=TEMP3$) and(Left$(R4$,Len(TEMP4$))=TEMP4$)
  2288.             P=LOP
  2289.             _DISPLAYRECORD
  2290.             _ALERTREQUESTER["Continue Searching ?","YES|NO"]
  2291.             If Param<>1
  2292.                Goto FIN
  2293.             Else 
  2294.                _ALERTREQUESTER["Searching, Please Wait...",""]
  2295.             End If 
  2296.          End If 
  2297.       Next LOP
  2298.       '
  2299.       _ALERTREQUESTER["No Matching Record Found !","DAMN"]
  2300.       Goto FIN
  2301.    End If 
  2302.    '
  2303.    '
  2304.    If Param=2
  2305.       '
  2306.       _OPENDIALOGSCREEN[7,52,102]
  2307.       Get Palette 0
  2308.       '
  2309.       _DRAW3DBOX[100,4,539,16,"ENTER SEARCH STRING",1,_LIGHT,_COLOUR]
  2310.       '
  2311.       _ADDINPUTBUTTON[2,4,"",60,60,-1]
  2312.       _ADDBUTTON[516,21,628,35,"Cancel",2]
  2313.       _ADDBUTTON[516,37,580,51,"No Case",3]
  2314.       _ADDBUTTON[588,37,628,51,"O.K",4]
  2315.       TEMP$=""
  2316.       '
  2317.       Do 
  2318.          '
  2319.          _CHECKBUTTONS
  2320.          _BUTTONZONE=Param
  2321.          '
  2322.          If _BUTTONZONE=1
  2323.             _ADDINPUTBUTTON[2,4,TEMP$,60,60,0]
  2324.             TEMP$=Param$
  2325.          End If 
  2326.          '
  2327.          If _BUTTONZONE=2
  2328.             Screen Close 7
  2329.             Goto FIN
  2330.          End If 
  2331.          '
  2332.          If _BUTTONZONE=3
  2333.             NC=1
  2334.             Goto SRCH2
  2335.          End If 
  2336.          '
  2337.          If _BUTTONZONE=4
  2338.             NC=0
  2339.             Goto SRCH2
  2340.          End If 
  2341.          '
  2342.       Loop 
  2343.       '      
  2344.       '
  2345.       SRCH2:
  2346.       '
  2347.       _ALERTREQUESTER["Start Searching From Where ?","START|HERE"]
  2348.       If Param=0
  2349.          Goto FIN
  2350.       End If 
  2351.       '
  2352.       If Param=1
  2353.          STA=1
  2354.       Else 
  2355.          STA=P
  2356.       End If 
  2357.       '
  2358.       _ALERTREQUESTER["Searching, Please Wait...",""]
  2359.       '
  2360.       If NC=1
  2361.          TEMP$=Upper$(TEMP$)
  2362.       End If 
  2363.       '
  2364.       For Z=STA To NOR
  2365.          '
  2366.          If NC=1
  2367.             FF$=Upper$(F$(Z))
  2368.          Else 
  2369.             FF$=F$(Z)
  2370.          End If 
  2371.          If Len(FF$)<Len(TEMP$)
  2372.             Goto FIN6
  2373.          End If 
  2374.          '
  2375.          For LOP=1 To Len(FF$)-Len(TEMP$)
  2376.             If Mid$(FF$,LOP,Len(TEMP$))=TEMP$
  2377.                P=Z
  2378.                _DISPLAYRECORD
  2379.                _ALERTREQUESTER["Continue Searching ?","YES|NO"]
  2380.                If Param<>1
  2381.                   Goto FIN
  2382.                Else 
  2383.                   _ALERTREQUESTER["Searching, Please Wait...",""]
  2384.                   Goto FIN6
  2385.                End If 
  2386.             End If 
  2387.          Next LOP
  2388.          '
  2389.          FIN6:
  2390.       Next Z
  2391.       _ALERTREQUESTER["No Matching Record Found !","DAMN"]
  2392.    End If 
  2393.    '
  2394.    FIN:
  2395.    _DIALOGBUTTON$=_TEMP1$
  2396.    Scroll On 
  2397.    '
  2398. End Proc
  2399. '
  2400. Procedure _PRINTRECORDS
  2401.    '
  2402.    Shared FL1,FL2,FL3,FL4,NOR,F1$,F2$,F3$,F4$,DAT$,P
  2403.    Shared _TEXT,_COLOUR,_LIGHT,_BACK,_DIALOGBUTTON$,F$()
  2404.    '
  2405.    _ALERTREQUESTER["Choose Print Option ?","ALL|FROM-TO|SEARCH"]
  2406.    If Param=0
  2407.       Pop Proc
  2408.    End If 
  2409.    '
  2410.    TEMP9$=_DIALOGBUTTON$
  2411.    _DIALOGBUTTON$=""
  2412.    '
  2413.    If Param=1
  2414.       STA=1
  2415.       FIN=NOR
  2416.       Goto PR1
  2417.    End If 
  2418.    '
  2419.    If Param=2
  2420.       '
  2421.       _INPUTREQUESTER["Enter Record Number To Start Printing From ?","",4,4]
  2422.       TEMP=Val(Param$)
  2423.       If TEMP<1 or TEMP>NOR
  2424.          Goto FIN
  2425.       End If 
  2426.       STA=TEMP
  2427.       '
  2428.       _INPUTREQUESTER["Enter Record Number To Finish Printing At ?","",4,4]
  2429.       TEMP=Val(Param$)
  2430.       If TEMP<1 or TEMP>NOR
  2431.          Goto FIN
  2432.       End If 
  2433.       FIN=TEMP
  2434.       Goto PR1
  2435.    End If 
  2436.    '
  2437.    If Param=3
  2438.       '
  2439.       _OPENDIALOGSCREEN[7,52,102]
  2440.       Get Palette 0
  2441.       Scroll Off 
  2442.       '
  2443.       _DRAW3DBOX[100,52-(8*6),539,64-(8*6),"ENTER SEARCH STRINGS TO PRINT",1,_LIGHT,_COLOUR]
  2444.       '
  2445.       _DRAW3DBOX[12,69-(8*6),116,83-(8*6),F1$,1,_TEXT,_BACK]
  2446.       _DRAW3DBOX[12,85-(8*6),116,99-(8*6),F2$,1,_TEXT,_BACK]
  2447.       '
  2448.       _ADDINPUTBUTTON[16,3,"",15,FL1,-4]
  2449.       _ADDINPUTBUTTON[16,5,"",15,FL2,-5]
  2450.       '
  2451.       _DRAW3DBOX[260,69-(8*6),364,83-(8*6),F3$,1,_TEXT,_BACK]
  2452.       _DRAW3DBOX[260,85-(8*6),364,99-(8*6),F4$,1,_TEXT,_BACK]
  2453.       '
  2454.       _ADDINPUTBUTTON[47,3,"",15,FL3,-6]
  2455.       _ADDINPUTBUTTON[47,5,"",15,FL4,-7]
  2456.       '
  2457.       _ADDBUTTON[516,69-(8*6),628,83-(8*6),"Cancel",1]
  2458.       _ADDBUTTON[516,85-(8*6),580,99-(8*6),"No Case",2]
  2459.       _ADDBUTTON[588,85-(8*6),628,99-(8*6),"O.K",3]
  2460.       '
  2461.       TEMP1$=""
  2462.       TEMP2$=""
  2463.       TEMP3$=""
  2464.       TEMP4$=""
  2465.       '
  2466.       Do 
  2467.          '
  2468.          _CHECKBUTTONS
  2469.          _BUTTONZONE=Param
  2470.          '
  2471.          If _BUTTONZONE=4
  2472.             _ADDINPUTBUTTON[16,3,TEMP1$,15,FL1,0]
  2473.             TEMP1$=Param$
  2474.          End If 
  2475.          '
  2476.          If _BUTTONZONE=5
  2477.             _ADDINPUTBUTTON[16,5,TEMP2$,15,FL2,0]
  2478.             TEMP2$=Param$
  2479.          End If 
  2480.          '
  2481.          If _BUTTONZONE=6
  2482.             _ADDINPUTBUTTON[47,3,TEMP3$,15,FL3,0]
  2483.             TEMP3$=Param$
  2484.          End If 
  2485.          '
  2486.          If _BUTTONZONE=7
  2487.             _ADDINPUTBUTTON[47,5,TEMP4$,15,FL4,0]
  2488.             TEMP4$=Param$
  2489.          End If 
  2490.          '
  2491.          If _BUTTONZONE=1
  2492.             Screen Close 7
  2493.             Goto FIN
  2494.          End If 
  2495.          '
  2496.          If _BUTTONZONE=2
  2497.             NC=1
  2498.             Goto PRT3
  2499.          End If 
  2500.          '
  2501.          If _BUTTONZONE=3
  2502.             NC=0
  2503.             Goto PRT3
  2504.          End If 
  2505.          '
  2506.       Loop 
  2507.       '
  2508.       PRT3:
  2509.       '
  2510.       _ALERTREQUESTER["Start Printing From Where ?","START|HERE"]
  2511.       If Param=0
  2512.          Goto FIN
  2513.       End If 
  2514.       '
  2515.       If Param=1
  2516.          STA=1
  2517.       Else 
  2518.          STA=P
  2519.       End If 
  2520.       '
  2521.       PG=1
  2522.       Lprint "*** PAGE"+Str$(PG)+" ***  "+DT$
  2523.       Lprint 
  2524.       LIN=1
  2525.       _ALERTREQUESTER["Searching & Printing, Please Wait... (SPACE Exits)",""]
  2526.       If NC=1
  2527.          TEMP1$=Upper$(TEMP1$)
  2528.          TEMP2$=Upper$(TEMP2$)
  2529.          TEMP3$=Upper$(TEMP3$)
  2530.          TEMP4$=Upper$(TEMP4$)
  2531.       End If 
  2532.       FOUND=0
  2533.       For LOP=STA To NOR
  2534.          If Inkey$=" "
  2535.             Lprint Chr$(12)
  2536.             _ALERTREQUESTER["_Cc_",""]
  2537.             Goto FIN
  2538.          End If 
  2539.          _CUTFIELDS[LOP]
  2540.          If NC=1
  2541.             RR1$=R1$
  2542.             R1$=Upper$(R1$)
  2543.             RR2$=R2$
  2544.             R2$=Upper$(R2$)
  2545.             RR3$=R3$
  2546.             R3$=Upper$(R3$)
  2547.             RR4$=R4$
  2548.             R4$=Upper$(R4$)
  2549.          End If 
  2550.          If(Left$(R1$,Len(TEMP1$))=TEMP1$) and(Left$(R2$,Len(TEMP2$))=TEMP2$) and(Left$(R3$,Len(TEMP3$))=TEMP3$) and(Left$(R4$,Len(TEMP4$))=TEMP4$)
  2551.             FOUND=1
  2552.             TTT=2
  2553.             If FL1
  2554.                TMP$=Space$(18)+": "
  2555.                Mid$(TMP$,1,4)=Str$(LOP)-" "
  2556.                Mid$(TMP$,6,12)=F1$
  2557.                Lprint TMP$+RR1$
  2558.                Inc TTT
  2559.             End If 
  2560.             If FL2
  2561.                TMP$=Space$(18)+": "
  2562.                Mid$(TMP$,6,12)=F2$
  2563.                Lprint TMP$+RR2$
  2564.                Inc TTT
  2565.             End If 
  2566.             If FL3
  2567.                TMP$=Space$(18)+": "
  2568.                Mid$(TMP$,6,12)=F3$
  2569.                Lprint TMP$+RR3$
  2570.                Inc TTT
  2571.             End If 
  2572.             If FL4
  2573.                TMP$=Space$(18)+": "
  2574.                Mid$(TMP$,6,12)=F4$
  2575.                Lprint TMP$+RR4$
  2576.                Inc TTT
  2577.             End If 
  2578.             Lprint 
  2579.             LIN=LIN+TTT
  2580.             If LIN>=60
  2581.                Inc PG
  2582.                Lprint Chr$(12)
  2583.                Lprint "*** PAGE"+Str$(PG)+" ***  "+DT$
  2584.                Lprint 
  2585.                LIN=1
  2586.             End If 
  2587.          End If 
  2588.       Next LOP
  2589.       _ALERTREQUESTER["_Cc_",""]
  2590.       Lprint Chr$(12)
  2591.       If FOUND=0
  2592.          _ALERTREQUESTER["No Matching Records Found !","DAMN"]
  2593.       End If 
  2594.       Goto FIN
  2595.    End If 
  2596.    '    
  2597.    PR1:
  2598.    _ALERTREQUESTER["Printing Records, Please Wait... (SPACE Quits)",""]
  2599.    PG=1
  2600.    Z=STA
  2601.    3
  2602.    Lprint "*** PAGE"+Str$(PG)+" ***  "+DT$
  2603.    Lprint 
  2604.    LIN=1
  2605.    '  
  2606.    While LIN<60
  2607.       If Inkey$=" "
  2608.          Lprint Chr$(12)
  2609.          _ALERTREQUESTER["_Cc_",""]
  2610.          Goto FIN
  2611.       End If 
  2612.       TTT=2
  2613.       _CUTFIELDS[Z]
  2614.       If FL1
  2615.          TMP$=Space$(18)+": "
  2616.          Mid$(TMP$,1,4)=Str$(Z)-" "
  2617.          Mid$(TMP$,6,12)=F1$
  2618.          Lprint TMP$+R1$
  2619.          Inc TTT
  2620.       End If 
  2621.       If FL2
  2622.          TMP$=Space$(18)+": "
  2623.          Mid$(TMP$,6,12)=F2$
  2624.          Lprint TMP$+R2$
  2625.          Inc TTT
  2626.       End If 
  2627.       If FL3
  2628.          TMP$=Space$(18)+": "
  2629.          Mid$(TMP$,6,12)=F3$
  2630.          Lprint TMP$+R3$
  2631.          Inc TTT
  2632.       End If 
  2633.       If FL4
  2634.          TMP$=Space$(18)+": "
  2635.          Mid$(TMP$,6,12)=F4$
  2636.          Lprint TMP$+R4$
  2637.          Inc TTT
  2638.       End If 
  2639.       Lprint 
  2640.       LIN=LIN+TTT
  2641.       Inc Z
  2642.       If Z=FIN+1
  2643.          Goto 7
  2644.       End If 
  2645.    Wend 
  2646.    Inc PG
  2647.    Lprint Chr$(12)
  2648.    Goto 3
  2649.    7
  2650.    Lprint Chr$(12)
  2651.    _ALERTREQUESTER["_Cc_",""]
  2652.    '
  2653.    FIN:
  2654.    _DIALOGBUTTON$=TEMP9$
  2655.    '
  2656. End Proc
  2657. '
  2658. '
  2659. ER1:
  2660. Resume ER2
  2661. ER2:
  2662. _ALERTREQUESTER["An Error Has Occured !","AARRGH!"]
  2663. Goto OK