home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / S / SACULBY1.ZIP / ULBYPRO.PPS < prev   
Text File  |  1995-12-03  |  18KB  |  599 lines

  1.  ;ULBY PRO v1.1 BY FoX OF SAC iN 1995
  2.  
  3. STRING COLOR(3),DEFCOLOR,LEVEL,ULBYNAME,LETTER,TXTSTR(6),INPUT,NAME,SEARCHSTR(2),CHOICE(3),MAGIC
  4. INTEGER ANSIPOS(3),POSITION,MAXPOS(2),MAXLEN,COUNTER,NEWSTR
  5.  
  6. :HIDECHECK1
  7.  GETUSER
  8.  IF (EXIST(PPEPATH()+"ULBYPRO.HID")) THEN FOPEN 1,PPEPATH()+"ULBYPRO.HID",O_RD,S_DN
  9.  GOTO HIDECHECK2
  10.  ENDIF
  11.  GOTO CHECKCFG
  12.  
  13. :HIDECHECK2
  14.  FGET 1,NAME
  15.  
  16. :HIDECHECK3
  17.  NAME=(UPPER(NAME))
  18.  NAME=STRIP(NAME,CHR(32))
  19.  IF (NAME=U_NAME()) GOTO TROWOUT
  20.  IF (NAME="") GOTO CHECKCFG
  21.  GOTO HIDECHECK2
  22.  
  23. :CHECKCFG
  24.  FCLOSE 1
  25.  IF (!EXIST(PPEPATH()+"ULBYPRO.CFG")) THEN PRINTLN "@X8CCONFiG FiLE NOT FOUND ! CHECK PATH !"
  26.  GOTO DONE
  27.  ENDIF 
  28.  
  29. :GETCONFIG
  30.  FOPEN 1,PPEPATH()+"ULBYPRO.CFG",O_RD,S_DN
  31.  FGET 1,DEFCOLOR
  32.  FGET 1,LEVEL
  33.  FGET 1,ULBYNAME
  34.  FGET 1,MAXLEN
  35.  FCLOSE 1
  36.  
  37. :PREPSTR
  38.  DEFCOLOR=UPPER(DEFCOLOR):DEFCOLOR=STRIP(DEFCOLOR,CHR(32))
  39.  ULBYNAME=UPPER(ULBYNAME):ULBYNAME=STRIP(ULBYNAME,CHR(32))
  40.  
  41. :SETDEFAULT
  42.  ANSIPOS(1)=28
  43.  ANSIPOS(2)=6
  44.  ANSIPOS(3)=53
  45.  POSITION=1
  46.  NAME=U_NAME() 
  47.  CHOICE(1)="@X10"+CHR(219)+"@X0FYES/no"
  48.  CHOICE(2)="@X0Fyes/NO@X10"+CHR(219)+"@X0F"
  49.  TXTSTR(6)=" @X0FSTRINGS FOUND"
  50.  MAGIC="@X10"+CHR(219)
  51.  
  52. :CHECKDATA
  53.  IF (!EXIST(PPEPATH()+ULBYNAME)) THEN PRINTLN "@X8C"+ULBYNAME+" NOT FOUND ! CHECK PATH/NAME !"
  54.  GOTO DONE
  55.  ENDIF
  56.  
  57. :DEFINECOLOR
  58.  IF (DEFCOLOR="BLUE") THEN COLOR(1)="@X09":COLOR(2)="@X01":COLOR(3)="@X1F"
  59.  ELSEIF (DEFCOLOR="GREEN") THEN COLOR(1)="@X0A":COLOR(2)="@X02":COLOR(3)="@X2F"
  60.  ELSEIF (DEFCOLOR="RED") THEN COLOR(1)="@X0C":COLOR(2)="@X04":COLOR(3)="@X4F"
  61.  ELSEIF (DEFCOLOR="PURPLE") THEN COLOR(1)="@X0D":COLOR(2)="@X05":COLOR(3)="@X5F"
  62.  ELSEIF (DEFCOLOR="YELLOW") THEN COLOR(1)="@X0E":COLOR(2)="@X07":COLOR(3)="@XE0"
  63.  ELSEIF (DEFCOLOR="CYAN") THEN COLOR(1)="@X0B":COLOR(2)="@X03":COLOR(3)="@X3F"
  64.  ELSEIF (DEFCOLOR="GREY") THEN COLOR(1)="@X07":COLOR(2)="@X08":COLOR(3)="@X70"
  65.  ELSE PRINTLN "@X8CPLEASE USE ONLY BLUE/GREEN/RED/PURPLE/YELLOW/CYAN OR GREY FOR COLORS !"
  66.  GOTO DONE
  67.  ENDIF
  68.  
  69. :CHECKLENGTH
  70.  IF (MAXLEN>51) THEN PRINTLN "@X8CPLEASE ALLOW MAXIMUM 51 CHARS FOR INPUT LENGTH !"
  71.  GOTO DONE
  72.  ENDIF
  73.  
  74. :GETSTRING1
  75.  FOPEN 1,PPEPATH()+ULBYNAME,O_RD,S_DN
  76.  
  77. :GETSTRING2
  78.  FGET 1,TXTSTR(1)
  79.  FGET 1,TXTSTR(2)
  80.  IF (TXTSTR(1)=NAME) THEN FCLOSE 1:GOTO BUILDSCR1
  81.  ELSEIF (TXTSTR(1)="") THEN FCLOSE 1:NEWSTR=1:TXTSTR(2)=NAME:GOTO BUILDSCR1
  82.  ENDIF
  83.  GOTO GETSTRING2
  84.  
  85. :BUILDSCR1
  86.  TXTSTR(3)=TXTSTR(2)
  87.  TXTSTR(3)=STRIPATX(TXTSTR(3))
  88.  SEARCHSTR(1)=""
  89.  SEARCHSTR(2)=""
  90.  DEFCOLOR
  91.  CLS
  92.  NEWLINES 4
  93.  PRINTLN SPACE(25)+COLOR(1)+"■"+COLOR(2)+"───[@X0FULBY PRO BY FoX/SAC"+COLOR(2)+"]───"+COLOR(1)+"■"
  94.  PRINTLN SPACE(25)+COLOR(2)+"│ [A] CHANGE ULBY STRING    "+COLOR(2)+"│"
  95.  
  96. :CHECKSEC2
  97.  IF (LEVEL>U_SEC) THEN LETTER=CHR(66):MAXPOS(1)=2:MAXPOS(2)=8:GOTO BUILDSCR3
  98.  ELSE
  99.  LETTER=CHR(71)
  100.  MAXPOS(1)=7
  101.  MAXPOS(2)=13
  102.  ENDIF
  103.   
  104. :BUILDSCR2 
  105.  PRINTLN SPACE(25)+COLOR(2)+"│ [B] VIEW ALL STRINGS      "+COLOR(2)+"│"
  106.  PRINTLN SPACE(25)+COLOR(2)+"│ [C] GET SPECIFIC STRING   "+COLOR(2)+"│"
  107.  PRINTLN SPACE(25)+COLOR(2)+"│ [D] CLEAN STRING LIST     "+COLOR(2)+"│"
  108.  PRINTLN SPACE(25)+COLOR(2)+"│ [E] VIEW ULBYPRO.HID      "+COLOR(2)+"│"
  109.  PRINTLN SPACE(25)+COLOR(2)+"│ [F] HIDE/UNHIDE USER      "+COLOR(2)+"│"
  110.  
  111. :BUILDSCR3
  112.  PRINTLN SPACE(25)+COLOR(2)+"│ ["+LETTER+"] QUIT ULBY PRO         "+COLOR(2)+"│"
  113.  PRINTLN SPACE(25)+COLOR(1)+"■"+COLOR(2)+"──[@X0FA-"+LETTER+"/=SELECTS,H=HELP"+COLOR(2)+"]──"+COLOR(1)+"■"
  114.  NEWLINE
  115.  PRINTLN SPACE(10)+COLOR(1)+"■"+COLOR(2)+"──────────────────[@X0FCURRENT ULBY STRING"+COLOR(2)+"]──────────────────"+COLOR(1)+"■"
  116.  PRINTLN SPACE(10)+COLOR(2)+"│   @X0F"+TXTSTR(2)+SPACE(54-LEN(TXTSTR(3)))+COLOR(2)+"│"
  117.  PRINTLN SPACE(10)+COLOR(1)+"■"+COLOR(2)+"─────────────────────────────────────────────────────────"+COLOR(1)+"■"
  118.  
  119. :DEFINEPOS
  120.  TXTSTR(4)=SCRTEXT(ANSIPOS(1),ANSIPOS(2),25,0)
  121.  ANSIPOS ANSIPOS(1),ANSIPOS(2)
  122.  PRINT COLOR(3)+TXTSTR(4)+MAGIC
  123.  ANSIPOS ANSIPOS(3),ANSIPOS(2)
  124.  
  125. :PROMPT
  126.  INPUT=INKEY()
  127.  INPUT=UPPER(INPUT)
  128.  IF (INPUT="DOWN") THEN POSITION=POSITION+1:GOSUB MOVE1
  129.  ELSEIF (INPUT="2") THEN POSITION=POSITION+1:GOSUB MOVE1
  130.  ELSEIF (INPUT="UP") THEN POSITION=POSITION-1:GOSUB MOVE2
  131.  ELSEIF (INPUT="8") THEN POSITION=POSITION-1:GOSUB MOVE2
  132.  ELSEIF (INPUT="A") THEN POSITION=1:GOTO MOVE3
  133.  ELSEIF (INPUT="B") THEN POSITION=2:GOTO MOVE3
  134.  ELSEIF (LEVEL>U_SEC) GOTO PROMPT2
  135.  ELSEIF (INPUT="C") THEN POSITION=3:GOTO MOVE3
  136.  ELSEIF (INPUT="D") THEN POSITION=4:GOTO MOVE3
  137.  ELSEIF (INPUT="E") THEN POSITION=5:GOTO MOVE3
  138.  ELSEIF (INPUT="F") THEN POSITION=6:GOTO MOVE3
  139.  ELSEIF (INPUT="G") THEN POSITION=7:GOTO MOVE3
  140.  
  141. :PROMPT2
  142.  ENDIF
  143.  IF (INPUT="H") GOTO HELPSCR1
  144.  IF (INPUT="Q") GOTO DONE
  145.  IF (INPUT=CHR(27)) GOTO DONE
  146.  IF (INPUT=CHR(13)) GOTO COMMAND
  147.  GOTO PROMPT
  148.  
  149. :MOVE1
  150.  ANSIPOS ANSIPOS(1),ANSIPOS(2)
  151.  PRINT COLOR(2)+TXTSTR(4)
  152.  IF (POSITION>MAXPOS(1)) THEN ANSIPOS(2)=5:POSITION=1
  153.  ENDIF
  154.  ANSIPOS(2)=ANSIPOS(2)+1
  155.  TXTSTR(4)=SCRTEXT(ANSIPOS(1),ANSIPOS(2),25,0)
  156.  ANSIPOS ANSIPOS(1),ANSIPOS(2)
  157.  PRINT COLOR(3)+TXTSTR(4)+MAGIC
  158.  ANSIPOS 53,ANSIPOS(2)
  159.  RETURN
  160.  
  161. :MOVE2
  162.  ANSIPOS ANSIPOS(1),ANSIPOS(2)
  163.  PRINT COLOR(2)+TXTSTR(4)
  164.  IF (POSITION<1) THEN ANSIPOS(2)=MAXPOS(2):POSITION=MAXPOS(1)
  165.  ENDIF
  166.  ANSIPOS(2)=ANSIPOS(2)-1
  167.  TXTSTR(4)=SCRTEXT(ANSIPOS(1),ANSIPOS(2),25,0)
  168.  ANSIPOS ANSIPOS(1),ANSIPOS(2)
  169.  PRINT COLOR(3)+TXTSTR(4)+MAGIC
  170.  ANSIPOS 53,ANSIPOS(2)
  171.  RETURN
  172.  
  173. :MOVE3
  174.  ANSIPOS ANSIPOS(1),ANSIPOS(2)
  175.  PRINT COLOR(2)+TXTSTR(4)
  176.  IF (POSITION=1) ANSIPOS(2)=6
  177.  IF (POSITION=2) ANSIPOS(2)=7
  178.  IF (POSITION=3) ANSIPOS(2)=8
  179.  IF (POSITION=4) ANSIPOS(2)=9
  180.  IF (POSITION=5) ANSIPOS(2)=10
  181.  IF (POSITION=6) ANSIPOS(2)=11
  182.  IF (POSITION=7) ANSIPOS(2)=12
  183.  TXTSTR(4)=SCRTEXT(ANSIPOS(1),ANSIPOS(2),25,0)
  184.  ANSIPOS ANSIPOS(1),ANSIPOS(2)
  185.  PRINT COLOR(3)+TXTSTR(4)+MAGIC
  186.  ANSIPOS 53,ANSIPOS(2)
  187.  
  188. :COMMAND
  189.  IF (POSITION=1) GOTO CHANGESTR
  190.  IF (POSITION=2) GOTO VIEWALL1
  191.  IF (POSITION=3) GOTO GETSPECSTR1
  192.  IF (POSITION=4) GOTO CLNLST1
  193.  IF (POSITION=5) GOTO VIEWHIDE1
  194.  IF (POSITION=6) GOTO HIDEUSER1
  195.  IF (POSITION=7) GOTO DONE
  196.  GOTO PROMPT
  197.  
  198. :HELPSCR1
  199.  DEFCOLOR
  200.  CLS
  201.  NEWLINE
  202.  PRINTLN COLOR(1)+"■"+COLOR(2)+"───────────────────────────[@X0FULBYPRO ONLINE HELP"+COLOR(2)+"]─────────────────────────────"+COLOR(1)+"■"
  203.  PRINTLN ""+COLOR(2)+"│ ["+COLOR(1)+"A"+COLOR(2)+"] @X0FCHANGE CURRENT ULBY STRING"+SPACE(46)+""+COLOR(2)+"│"
  204.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"Change the current ULBY string (for default YOUR string). Its possible  "+COLOR(2)+"│"
  205.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"to use any PCB color and/or ASCII code."+SPACE(33)+""+COLOR(2)+"│"
  206.  IF (LEVEL>U_SEC) GOTO HELPSCR2
  207.  PRINTLN ""+COLOR(2)+"│ ["+COLOR(1)+"B"+COLOR(2)+"] @X0FVIEW ALL STRINGS"+SPACE(56)+""+COLOR(2)+"│"
  208.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"Shows a complete list of all ULBY strings."+SPACE(30)+""+COLOR(2)+"│"
  209.  PRINTLN ""+COLOR(2)+"│ ["+COLOR(1)+"C"+COLOR(2)+"] @X0FGET SPECIFIC STRING"+SPACE(53)+""+COLOR(2)+"│"
  210.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"Load a specific ULBY string from ANY user by entering his user name or  "+COLOR(2)+"│"
  211.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"a SEARCHSTRING to scan for (all possible matches will be shown)."+SPACE(8)+""+COLOR(2)+"│"
  212.  PRINTLN ""+COLOR(2)+"│ ["+COLOR(1)+"D"+COLOR(2)+"] @X0FCLEAN STRING LIST"+SPACE(55)+""+COLOR(2)+"│"
  213.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"This will clean up the ULBY list from DELETED users."+SPACE(20)+""+COLOR(2)+"│"
  214.  PRINTLN ""+COLOR(2)+"│ ["+COLOR(1)+"E"+COLOR(2)+"] @X0FVIEW ULBYPRO.HID"+SPACE(56)+""+COLOR(2)+"│"
  215.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"View ULBYPRO.HID file, that contains all handles of users that are not  "+COLOR(2)+"│"
  216.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"able to access to this ppe."+SPACE(45)+""+COLOR(2)+"│"
  217.  PRINTLN ""+COLOR(2)+"│ ["+COLOR(1)+"F"+COLOR(2)+"] @X0FHIDE/UNHIDE USER"+SPACE(56)+""+COLOR(2)+"│"
  218.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"Add or remove user from ULBYPRO.HID. Removed users can access again and "+COLOR(2)+"│"
  219.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"added users will be denied for this ppe."+SPACE(32)+""+COLOR(2)+"│"
  220.  
  221. :HELPSCR2
  222.  PRINTLN ""+COLOR(2)+"│ ["+COLOR(1)+LETTER+COLOR(2)+"] @X0FQUIT ULBY PRO"+SPACE(59)+""+COLOR(2)+"│"
  223.  PRINTLN ""+COLOR(2)+"│     "+COLOR(1)+"Guess what, leaving to PCB."+SPACE(45)+""+COLOR(2)+"│"
  224.  PRINTLN COLOR(1)+"■"+COLOR(2)+"─────────────────────────────────────────────────────────────────────────────"+COLOR(1)+"■"
  225.  WAIT
  226.  GOTO BUILDSCR1
  227.  
  228. :CHANGESTR
  229.  IF (LEVEL>U_SEC) THEN ANSIPOS(1)=13:ANSIPOS(2)=11:ANSIPOS(3)=ANSIPOS(2)+3
  230.  ELSE ANSIPOS(1)=13:ANSIPOS(2)=16:ANSIPOS(3)=ANSIPOS(2)+3
  231.  ENDIF
  232.  ANSIPOS 1,ANSIPOS(3)
  233.  PRINTLN COLOR(1)+" ■"+COLOR(2)+"──────────────────────────[@X0FPOSSIBLE COLOR CODES"+COLOR(2)+"]────────────────────────────"+COLOR(1)+"■"
  234.  PRINTLN COLOR(2)+" │ @X0F@sX0F @X0E@sX0E @X0D@sX0E @X0C@sX0C @X0B@sX0B @X0A@sX0A @X09@sX09 @X08@sX08 @X07@sX07 @X06@sX06 @X05@sX05 @X04@sX04 @X03@sX03 @X02@sX02 @X01@sX01"+COLOR(2)+" │"
  235.  PRINTLN COLOR(2)+" │ @X1F@sX1F@X01 @X1B@sX1B@X01 @X2F@sX2F@X01 @X20@sX20@X01 @X3F@sX3F@X01 @X31@sX31@X01 @X4F@sX4F@X01 @X4A@sX4A@X01 @X5F@sX5F@X01 @X5D@sX5D@X01 @X6F@sX6F@X01 @X6A@sX6A@X01 @X7F@sX7F@X01 @X78@sX78@X01 @X9F@sX9F"+COLOR(2)+" │"
  236.  PRINTLN COLOR(1)+" ■"+COLOR(2)+"────────────────────────────────────────────────────────────────────────────"+COLOR(2)+"■"
  237.  ANSIPOS ANSIPOS(1)-1,ANSIPOS(2)
  238.  TXTSTR(5)=TXTSTR(2)
  239.  INPUTTEXT "",TXTSTR(2),0,MAXLEN
  240.  
  241. :CHECKCHANGES
  242.  IF (TXTSTR(2)=TXTSTR(5)) THEN
  243.  ANSIPOS ANSIPOS(1)+19,ANSIPOS(2)+1
  244.  PRINT COLOR(2)+"[@X0FNOTHING CHANGED"+COLOR(2)+"]"
  245.  ANSIPOS ANSIPOS(1)+27,ANSIPOS(2)+1
  246.  PRINT MAGIC
  247.  ANSIPOS ANSIPOS(1)+27,ANSIPOS(2)+1
  248.  DELAY 25
  249.  ANSIPOS(1)=28
  250.  ANSIPOS(2)=6
  251.  ANSIPOS(3)=53
  252.  GOTO BUILDSCR1
  253.  ENDIF
  254.  
  255. :CHANGE1
  256.  FCREATE 1,PPEPATH()+"ULBYPRO.##1",O_RW,S_DW
  257.  FOPEN 2,PPEPATH()+ULBYNAME,O_RD,S_DN
  258.  
  259. :CHANGE2
  260.  FGET 2,TXTSTR(3)
  261.  FGET 2,TXTSTR(4)
  262.  IF (TXTSTR(3)=NAME) TXTSTR(4)=TXTSTR(2)
  263.  IF (TXTSTR(3)="") GOTO CHANGE3
  264.  FPUTLN 1,TXTSTR(3)
  265.  FPUTLN 1,TXTSTR(4)
  266.  GOTO CHANGE2
  267.  
  268. :CHANGE3
  269.  IF (NEWSTR=1) THEN FPUTLN 1,NAME:FPUTLN 1,TXTSTR(2):NEWSTR=0
  270.  ENDIF
  271.  FCLOSE 1
  272.  FCLOSE 2 
  273.  DELETE PPEPATH()+ULBYNAME
  274.  RENAME PPEPATH()+"ULBYPRO.##1",PPEPATH()+ULBYNAME
  275.  ANSIPOS(1)=28
  276.  ANSIPOS(2)=6
  277.  ANSIPOS(3)=53
  278.  GOTO BUILDSCR1
  279.    
  280. :TROWOUT
  281.  FCLOSE 1
  282.  DEFCOLOR
  283.  CLS
  284.  NEWLINES 2
  285.  PRINTLN SPACE(12)+"@X0C■@X04──────────────────[@X0FULBY PRO BY FoX/SAC@X04]─────────────────@X0C■"
  286.  PRINTLN SPACE(12)+"@X04│ @X0FYOU ARE NOT REGISTERD FOR THIS PPE. CONTACT THE SYSOP. @X04│"
  287.  PRINTLN SPACE(12)+"@X0C■@X04────────────────────────────────────────────────────────@X0C■"
  288.  NEWLINE
  289.  WAIT
  290.  CLS
  291.  END
  292.  
  293. :VIEWALL1
  294.  COUNTER=1
  295.  IF (LEVEL>U_SEC) GOTO DONE
  296.  FOPEN 1,PPEPATH()+ULBYNAME,O_RD,S_DN
  297.  FCREATE 2,PPEPATH()+"ULBYPRO.##2",O_RW,S_DW
  298.  FPUTLN 2,COLOR(1)+"■"+COLOR(2)+"────────────────────────[@X0FCOMPLETE ULBY STRING LIST"+COLOR(2)+"]──────────────────────────"+COLOR(1)+"■"
  299.  FPUTLN 2,COLOR(2)+"["+COLOR(1)+"No."+COLOR(2)+"]"+SPACE(1)+COLOR(2)+"["+COLOR(1)+"REALNAME"+COLOR(2)+"]"+SPACE(16)+COLOR(2)+"["+COLOR(1)+"ULBY STRING"+COLOR(2)+"]"
  300.  
  301. :VIEWALL2
  302.  FGET 1,TXTSTR(3)
  303.  FGET 1,TXTSTR(4)
  304.  IF (TXTSTR(3)="") THEN FCLOSE 1:GOTO VIEWALL3
  305.  ENDIF
  306.  FPUTLN 2,COLOR(2)+"["+COLOR(1),COUNTER,COLOR(2)+"]"+SPACE(4-LEN(COUNTER))+"@X0F"+TXTSTR(3)+COLOR(2)+SPACE(26-LEN(TXTSTR(3)))+TXTSTR(4)
  307.  INC COUNTER
  308.  GOTO VIEWALL2
  309.  
  310. :VIEWALL3
  311.  FPUTLN 2,COLOR(1)+"■"+COLOR(2)+"───────────────────────────────[@X0FEND OF LISTING"+COLOR(2)+"]──────────────────────────────"+COLOR(1)+"■"
  312.  FCLOSE 1
  313.  FCLOSE 2
  314.  DEFCOLOR
  315.  CLS
  316.  DISPFILE PPEPATH()+"ULBYPRO.##2",GRAPH
  317.  WAIT
  318.  DELETE PPEPATH()+"ULBYPRO.##2"
  319.  ANSIPOS(1)=28
  320.  ANSIPOS(2)=7
  321.  ANSIPOS(3)=53
  322.  GOTO BUILDSCR1
  323.  
  324. :GETSPECSTR1
  325.  ANSIPOS 26,15
  326.  PRINTLN COLOR(2)+"[@X0FENTER NAME/TEXT TO SCAN FOR"+COLOR(2)+"]" 
  327.  ANSIPOS 15,16
  328.  PRINT SPACE(LEN(TXTSTR(3)))
  329.  ANSIPOS 15,16
  330.  INPUTTEXT "_",SEARCHSTR(1),0,MAXLEN
  331.  
  332. :GETSPECSTR2
  333.  SEARCHSTR(1)=UPPER(SEARCHSTR(1))
  334.  IF (SEARCHSTR(1)="") GOTO GETSPECSTR9
  335.  FOPEN 1,PPEPATH()+ULBYNAME,O_RD,S_DN
  336.  
  337. :GETSPECSTR3
  338.  FGET 1,TXTSTR(4)
  339.  FGET 1,TXTSTR(5)
  340.  TXTSTR(3)=MID(TXTSTR(4),1,LEN(SEARCHSTR(1)))
  341.  TXTSTR(3)=RTRIM(TXTSTR(3),CHR(32))
  342.  IF (TXTSTR(4)="") GOTO GETSPECSTR4
  343.  IF (SEARCHSTR(1)=TXTSTR(3)) GOTO GETSPECSTR5
  344.  IF (SEARCHSTR(1)<>TXTSTR(3)) GOTO GETSPECSTR3
  345.  
  346. :GETSPECSTR4
  347.  FCLOSE 1
  348.  IF (SEARCHSTR(2)=1) THEN
  349.  ANSIPOS 29,17
  350.  PRINT COLOR(2)+"[@X0FNO MORE MATCHES FOUND"+COLOR(2)+"]" 
  351.  ANSIPOS 37,17
  352.  PRINT MAGIC
  353.  ANSIPOS 37,17
  354.  ELSE
  355.  ANSIPOS 31,17
  356.  PRINT COLOR(2)+"[@X0FNO MATCHES FOUND"+COLOR(2)+"]" 
  357.  ANSIPOS 42,17
  358.  PRINT MAGIC
  359.  ANSIPOS 42,17
  360.  ENDIF
  361.  DELAY 25
  362.  ANSIPOS(1)=28
  363.  ANSIPOS(2)=8
  364.  ANSIPOS(3)=53
  365.  GOTO BUILDSCR1
  366.  
  367. :GETSPECSTR5
  368.  ANSIPOS 15,16
  369.  PRINT COLOR(1)+"FOUND "+COLOR(2)+": @X0F"+TXTSTR(4)+" "+COLOR(1)+"USE?"
  370.  ANSIPOS 28+LEN(TXTSTR(4)),16
  371.  PRINT CHOICE(1)+SPACE(31-LEN(TXTSTR(4)))
  372.  ANSIPOS 28+LEN(TXTSTR(4)),16
  373.  CHOICE(3)=CHR(89)
  374.  
  375. :GETSPECSTR6
  376.  INPUT=INKEY()
  377.  IF (INPUT="LEFT") GOSUB GETSPECSTR7
  378.  IF (INPUT="RIGHT") GOSUB GETSPECSTR7
  379.  IF (INPUT=CHR(13)) GOTO GETSPECSTR8
  380.  IF (INPUT=CHR(27)) GOTO GETSPECSTR9
  381.  GOTO GETSPECSTR6
  382.  
  383. :GETSPECSTR7
  384.  IF (CHOICE(3)=CHR(89)) THEN
  385.  ANSIPOS 29+LEN(TXTSTR(4)),16
  386.  PRINT CHOICE(2)+SPACE(31-LEN(TXTSTR(4)))
  387.  ANSIPOS 35+LEN(TXTSTR(4)),16
  388.  CHOICE(3)=CHR(78)
  389.  RETURN
  390.  ELSEIF (CHOICE(3)=CHR(78)) THEN
  391.  ANSIPOS 28+LEN(TXTSTR(4)),16
  392.  PRINT CHOICE(1)+SPACE(31-LEN(TXTSTR(4)))
  393.  ANSIPOS 28+LEN(TXTSTR(4)),16
  394.  CHOICE(3)=CHR(89)
  395.  RETURN
  396.  ENDIF
  397.  
  398. :GETSPECSTR8
  399.  IF (CHOICE(3)=CHR(78)) THEN
  400.  SEARCHSTR(2)=1
  401.  GOTO GETSPECSTR3
  402.  ENDIF
  403.  FCLOSE 1
  404.  NAME=TXTSTR(4)
  405.  TXTSTR(2)=TXTSTR(5)
  406.  ANSIPOS(1)=28
  407.  ANSIPOS(2)=8
  408.  ANSIPOS(3)=53
  409.  GOTO BUILDSCR1
  410.  
  411. :GETSPECSTR9
  412.  FCLOSE 1
  413.  ANSIPOS 33,17
  414.  PRINT COLOR(2)+"[@X0FSEARCH ABORTED"+COLOR(2)+"]" 
  415.  ANSIPOS 40,17
  416.  PRINT MAGIC
  417.  ANSIPOS 40,17
  418.  DELAY 25
  419.  ANSIPOS(1)=28
  420.  ANSIPOS(2)=8
  421.  ANSIPOS(3)=53
  422.  GOTO BUILDSCR1
  423.  
  424. :CLNLST1
  425.  COUNTER=0
  426.  ANSIPOS 33,17
  427.  PRINT COLOR(2)+"[@X0FCLEANING LIST"+COLOR(2)+"]" 
  428.  ANSIPOS 42,17
  429.  PRINT MAGIC
  430.  ANSIPOS 42,17
  431.  FOPEN 1,PPEPATH()+ULBYNAME,O_RD,S_DN
  432.  FCREATE 2,PPEPATH()+"ULBYPRO.##3",O_WR,S_DW
  433.  
  434. :CLNLST2
  435.  FGET 1,TXTSTR(4)
  436.  FGET 1,TXTSTR(5)
  437.  IF (TXTSTR(4)="") GOTO CLNLST3
  438.  IF (U_RECNUM(TXTSTR(4))=-1) THEN INC COUNTER:GOTO CLNLST2
  439.  ENDIF
  440.  FPUTLN 2,TXTSTR(4)
  441.  FPUTLN 2,TXTSTR(5)
  442.  GOTO CLNLST2 
  443.  
  444. :CLNLST3
  445.  FCLOSE 1
  446.  FCLOSE 2
  447.  IF (COUNTER=0) THEN
  448.  ANSIPOS 27,17
  449.  PRINT COLOR(2)+"[@X0FNO UNWANTED"+TXTSTR(6)+COLOR(2)+"]"
  450.  ANSIPOS 39,17
  451.  PRINT MAGIC
  452.  ANSIPOS 39,17
  453.  GOTO CLNLST4
  454.  ELSEIF (COUNTER=1) THEN
  455.  ANSIPOS 33,17
  456.  PRINT COLOR(2)+"["+COLOR(1),COUNTER,"@X0F STRING FOUND"+COLOR(2)+"]"
  457.  ANSIPOS 42,17
  458.  PRINT MAGIC
  459.  ANSIPOS 42,17
  460.  GOTO CLNLST4
  461.  ELSEIF (COUNTER<=9) THEN ANSIPOS(1)=32:ANSIPOS(2)=17:ANSIPOS(3)=42
  462.  ELSEIF (COUNTER<=99) THEN ANSIPOS(1)=32:ANSIPOS(2)=17:ANSIPOS(3)=43
  463.  ELSEIF (COUNTER>99) THEN ANSIPOS(1)=31:ANSIPOS(2)=17:ANSIPOS(3)=43
  464.  ENDIF 
  465.  ANSIPOS ANSIPOS(1),ANSIPOS(2)
  466.  PRINT COLOR(2)+"["+COLOR(1),COUNTER,TXTSTR(6)+COLOR(2)+"]"
  467.  ANSIPOS ANSIPOS(3),ANSIPOS(2)
  468.  PRINT MAGIC
  469.  ANSIPOS ANSIPOS(3),ANSIPOS(2)
  470.  GOTO CLNLST4
  471.  
  472. :CLNLST4
  473.  DELAY 25
  474.  DELETE PPEPATH()+ULBYNAME
  475.  RENAME PPEPATH()+"ULBYPRO.##3",PPEPATH()+ULBYNAME
  476.  ANSIPOS(1)=28
  477.  ANSIPOS(2)=9
  478.  ANSIPOS(3)=53
  479.  GOTO BUILDSCR1
  480.  
  481. :VIEWHIDE1
  482.  IF (!EXIST(PPEPATH()+"ULBYPRO.HID")) THEN
  483.  ANSIPOS 31,17
  484.  PRINT COLOR(2)+"[@X0FTHE LIST IS EMPTY"+COLOR(2)+"]" 
  485.  ANSIPOS 40,17
  486.  PRINT MAGIC
  487.  ANSIPOS 40,17
  488.  DELAY 25
  489.  GOTO VIEWHIDE4
  490.  ENDIF
  491.  COUNTER=1
  492.  FOPEN 1,PPEPATH()+"ULBYPRO.HID",O_RD,S_DN
  493.  FCREATE 2,PPEPATH()+"ULBYPRO.##4",O_WR,S_DW
  494.  FPUTLN 2,COLOR(1)+"■"+COLOR(2)+"────────────────────────────────[@X0FULBYPRO.HID"+COLOR(2)+"]────────────────────────────────"+COLOR(1)+"■"
  495.  FPUTLN 2,COLOR(2)+"["+COLOR(1)+"No."+COLOR(2)+"]"+SPACE(1)+COLOR(2)+"["+COLOR(1)+"REALNAME"+COLOR(2)+"]"
  496.  
  497. :VIEWHIDE2
  498.  FGET 1,TXTSTR(3)
  499.  IF (TXTSTR(3)="") GOTO VIEWHIDE3
  500.  FPUTLN 2,COLOR(2)+"["+COLOR(1),COUNTER,COLOR(2)+"]"+SPACE(4-LEN(COUNTER))+"@X0F"+TXTSTR(3)
  501.  INC COUNTER
  502.  GOTO VIEWHIDE2
  503.  
  504. :VIEWHIDE3
  505.  FPUTLN 2,COLOR(1)+"■"+COLOR(2)+"───────────────────────────────[@X0FEND OF LISTING"+COLOR(2)+"]──────────────────────────────"+COLOR(1)+"■"
  506.  FCLOSE 1
  507.  FCLOSE 2
  508.  DEFCOLOR
  509.  CLS
  510.  DISPFILE PPEPATH()+"ULBYPRO.##4",GRAPH
  511.  WAIT
  512.  DELETE PPEPATH()+"ULBYPRO.##4"
  513.  
  514. :VIEWHIDE4
  515.  ANSIPOS(1)=28
  516.  ANSIPOS(2)=10
  517.  ANSIPOS(3)=53
  518.  GOTO BUILDSCR1
  519.  
  520. :HIDEUSER1
  521.  ANSIPOS 21,15
  522.  PRINTLN COLOR(2)+"[@X0FENTER THE NAME YOU WANT TO ADD/REMOVE"+COLOR(2)+"]" 
  523.  ANSIPOS 15,16
  524.  PRINT SPACE(LEN(TXTSTR(3)))
  525.  ANSIPOS 15,16
  526.  INPUTTEXT "_",SEARCHSTR(1),0,MAXLEN
  527.  SEARCHSTR(1)=UPPER(SEARCHSTR(1))
  528.  IF (SEARCHSTR(1)="") THEN ANSIPOS(1)=33:ANSIPOS(2)=17:ANSIPOS(3)=40
  529.  TXTSTR(5)=COLOR(2)+"[@X0FSEARCH ABORTED"+COLOR(2)+"]"
  530.  GOTO HIDEUSER8
  531.  ELSEIF (EXIST(PPEPATH()+"ULBYPRO.HID")) THEN FOPEN 1,PPEPATH()+"ULBYPRO.HID",O_RD,S_DN
  532.  ELSE
  533.  GOTO HIDEUSER3 
  534.  ENDIF
  535.  
  536. :HIDEUSER2
  537.  FGET 1,TXTSTR(4)
  538.  IF (TXTSTR(4)="") GOTO HIDEUSER3
  539.  IF (TXTSTR(4)=SEARCHSTR(1)) GOTO HIDEUSER4
  540.  GOTO HIDEUSER2
  541.  
  542. :HIDEUSER3
  543.  IF (U_RECNUM(SEARCHSTR(1))=-1) THEN FCLOSE 1:ANSIPOS(1)=33:ANSIPOS(2)=17:ANSIPOS(3)=42
  544.  TXTSTR(5)=COLOR(2)+"[@X0FUSER NOT FOUND"+COLOR(2)+"]"
  545.  GOTO HIDEUSER8
  546.  ELSE
  547.  FCLOSE 1
  548.  FAPPEND 1,PPEPATH()+"ULBYPRO.HID",O_RW,S_DW
  549.  FPUTLN 1,SEARCHSTR(1)
  550.  FCLOSE 1
  551.  ANSIPOS(1)=31
  552.  ANSIPOS(2)=17
  553.  ANSIPOS(3)=42
  554.  TXTSTR(5)=COLOR(2)+"[@X0FUSER ADDED TO LIST"+COLOR(2)+"]"
  555.  ENDIF
  556.  GOTO HIDEUSER8
  557.  
  558. :HIDEUSER4
  559.  FCLOSE 1
  560.  FOPEN 1,PPEPATH()+"ULBYPRO.HID",O_RD,S_DN
  561.  FCREATE 2,PPEPATH()+"ULBYPRO.##5",O_RW,S_DR
  562.  
  563. :HIDEUSER5
  564.  FGET 1,TXTSTR(5)
  565.  
  566. :HIDEUSER6
  567.  IF (TXTSTR(5)="") GOTO HIDEUSER7
  568.  IF (TXTSTR(5)=TXTSTR(4)) GOTO HIDEUSER5
  569.  FPUTLN 2,TXTSTR(5)
  570.  GOTO HIDEUSER5
  571.  
  572. :HIDEUSER7
  573.  FCLOSE 1
  574.  FCLOSE 2
  575.  DELETE PPEPATH()+"ULBYPRO.HID"
  576.  RENAME PPEPATH()+"ULBYPRO.##5",PPEPATH()+"ULBYPRO.HID"
  577.  ANSIPOS(1)=34
  578.  ANSIPOS(2)=17
  579.  ANSIPOS(3)=39
  580.  TXTSTR(5)=COLOR(2)+"[@X0FUSER REMOVED"+COLOR(2)+"]"
  581.  
  582. :HIDEUSER8
  583.  ANSIPOS ANSIPOS(1),ANSIPOS(2)
  584.  PRINT TXTSTR(5)
  585.  ANSIPOS ANSIPOS(3),ANSIPOS(2)
  586.  PRINT MAGIC
  587.  ANSIPOS ANSIPOS(3),ANSIPOS(2)
  588.  DELAY 25
  589.  ANSIPOS(1)=28
  590.  ANSIPOS(2)=11
  591.  ANSIPOS(3)=53
  592.  GOTO BUILDSCR1
  593.  
  594. :DONE
  595.  DEFCOLOR
  596.  CLS
  597.  END
  598.  
  599.  ;END