home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / pocketbk / utilsr / tube20 / TUBE.OPL < prev    next >
Text File  |  1993-12-05  |  5KB  |  282 lines

  1. APP Tube
  2.  ICON "\OPD\TUBE.PIC"
  3.  TYPE 0
  4. ENDA
  5.  
  6. PROC Tube:
  7.   GLOBAL A001$(50),A002$(50),Dl,Di1
  8.   GLOBAL Di2,Di3,Di4,Di5,Al
  9.   GLOBAL Ai1,Ai2,Ai3,Ai4,Ai5
  10.   GLOBAL Dstn$(22),Astn$(22),Stn$(22),Route%,Route2
  11.   GLOBAL Line1$(30),Line2$(30)
  12.   GLOBAL Pos%,Da,M
  13.   LOCAL dmyz1$(2),lclz1$(50),lclz2%(6)
  14.  
  15.   GIPRINT "TubeFinder v2.0"
  16.   lclz1$=PARSE$("",CMD$(1),lclz2%(1))
  17.   A002$=LEFT$(lclz1$,lclz2%(5)-1)
  18.   A001$=A002$+"\TUBE.DAT"
  19.   TRAP OPEN "M:\OPD\TUBE.DBF",A,d$,a$
  20.   IF ERR<>0
  21.     Dstn$=""
  22.     Astn$=""
  23.   ELSE
  24.     Dstn$=A.d$
  25.     Astn$=A.a$
  26.     CLOSE
  27.   ENDIF
  28.   Stn$=Dstn$
  29.   DO
  30.     dINIT "Departure Station"
  31.     dEDIT Stn$,"Search Clue:"
  32.     IF DIALOG=0
  33.       STOP
  34.     ENDIF
  35.   UNTIL Tfstn%:=1
  36.   Pos%=POS
  37.   Dstn$=UpLow$:(A.STN$)
  38.   Dl=A.L1
  39.   Di1=A.I1
  40.   Di2=A.I2
  41.   Di3=A.I3
  42.   Di4=A.I4
  43.   Di5=A.I5
  44.   CLOSE
  45.   Stn$=Astn$
  46.   DO
  47.     dINIT "Arrival Station"
  48.     dEDIT Stn$,"Search Clue:"
  49.     IF DIALOG=0
  50.       STOP
  51.     ENDIF
  52.   UNTIL Tfstn%:=1
  53.   Astn$=UpLow$:(A.STN$)
  54.   Al=A.L1
  55.   Ai1=A.I1
  56.   Ai2=A.I2
  57.   Ai3=A.I3
  58.   Ai4=A.I4
  59.   Ai5=A.I5
  60.   CLOSE
  61.   BUSY "Searching"
  62.   LOCK ON
  63.   dINIT LEFT$(Dstn$+" to "+Astn$,39)
  64.   T1route:
  65.   IF Route2=0
  66.     dTEXT "","Take the",2
  67.     dTEXT "",Line2$+" line.",2
  68.   ELSE
  69.     T2route:
  70.     IF Route2=1
  71.       dTEXT "","Take the",2
  72.       dTEXT "",Line1$+" line,",2
  73.       dTEXT "","change at "+Stn$,2
  74.       dTEXT "","and take the",2
  75.       dTEXT "",Line2$+" line.",2
  76.     ELSE
  77.       dTEXT "","Your chosen journey is too complex",2
  78.       dTEXT "","to calculate on a Psion Series 3!",2
  79.       dTEXT "","Try re-running TubeFinder with a better",2
  80.       dTEXT "","known starting point or destination",2
  81.       dTEXT "","and then planning a route from there!",2
  82.     ENDIF
  83.   ENDIF
  84.   BUSY OFF
  85.   LOCK OFF
  86.   DIALOG
  87. ENDP
  88.  
  89. PROC T1route:
  90.   Da=1
  91.   Route2=0
  92.   IF Dl=Al OR Dl=Ai1 OR Dl=Ai2 OR Dl=Ai3 OR Dl=Ai4 OR Dl=Ai5
  93.     Route%=Dl
  94.     Tline:
  95.   ELSEIF Di1=Al OR Di1=Ai1 OR Di1=Ai2 OR Di1=Ai3 OR Di1=Ai4 OR Di1=Ai5
  96.     Route%=Di1
  97.     Tline:
  98.   ELSEIF Di2=Al OR Di2=Ai1 OR Di2=Ai2 OR Di2=Ai3 OR Di2=Ai4 OR Di2=Ai5
  99.     Route%=Di2
  100.     Tline:
  101.   ELSEIF Di3=Al OR Di3=Ai1 OR Di3=Ai2 OR Di3=Ai3 OR Di3=Ai4 OR Di3=Ai5
  102.     Route%=Di3
  103.     Tline:
  104.   ELSEIF Di4=Al OR Di4=Ai1 OR Di4=Ai2 OR Di4=Ai3 OR Di4=Ai4 OR Di4=Ai5
  105.     Route%=Di4
  106.     Tline:
  107.   ELSEIF Di5=Al OR Di5=Ai1 OR Di5=Ai2 OR Di5=Ai3 OR Di5=Ai4 OR Di5=Ai5
  108.     Route%=Di5
  109.     Tline:
  110.   ENDIF
  111. ENDP
  112.  
  113. PROC T2rint:
  114.   M=0
  115.   IF Dl=A.L1 OR Dl=A.I1 OR Dl=A.I2 OR Dl=A.I3 OR Dl=A.I4 OR Dl=A.I5 AND (Al=A.L1 OR Al=A.I1 OR Al=A.I2 OR Al=A.I3 OR Al=A.I4 OR Al=A.I5)
  116.     Route%=Dl
  117.     Da=1
  118.     Tline:
  119.     Line1$=Line2$
  120.     Stn$=A.STN$
  121.     Route%=Al
  122.     Da=0
  123.     Tline:
  124.     M=1
  125.     RETURN
  126.     GOTO L232::
  127.   ENDIF
  128.   L232::
  129. ENDP
  130.  
  131. PROC T2route:
  132.   LOCAL lclz1
  133.   OPEN A001$,A,STN$,L1,I1,I2,I3,I4,I5
  134.   POSITION Pos%
  135.   lclz1=0
  136.   DO
  137.     T2rint:
  138.     IF M=1
  139.       CLOSE
  140.       RETURN
  141.     ENDIF
  142.     lclz1=lclz1+1
  143.     POSITION Pos%+lclz1
  144.     T2rint:
  145.     IF M=1
  146.       CLOSE
  147.       RETURN
  148.     ENDIF
  149.     POSITION Pos%-lclz1
  150.     T2rint:
  151.     IF M=1
  152.       CLOSE
  153.       RETURN
  154.     ENDIF
  155.   UNTIL EOF OR Pos%-lclz1=1
  156.   IF EOF
  157.     POSITION Pos%
  158.     DO
  159.       T2rint:
  160.       IF M=1
  161.         CLOSE
  162.         RETURN
  163.       ENDIF
  164.       BACK
  165.       Pos%=Pos%-1
  166.     UNTIL Pos%=1
  167.   ELSE
  168.     POSITION Pos%
  169.     DO
  170.       T2rint:
  171.       IF M=1
  172.         CLOSE
  173.         RETURN
  174.       ENDIF
  175.       NEXT
  176.     UNTIL EOF
  177.   ENDIF
  178.   Route2=2
  179.   CLOSE
  180. ENDP
  181.  
  182. PROC UpLow$:(in$)
  183.   LOCAL p%,t%,u%,c$(1),out$(30)
  184.   p%=1
  185.   t%=LEN(in$)
  186.   u%=1
  187.   out$=""
  188.   WHILE p%<=t%
  189.     c$=MID$(in$,p%,1)
  190.     IF u%=1
  191.       out$=out$+UPPER$(c$)
  192.       u%=0
  193.     ELSE
  194.       out$=out$+LOWER$(c$)
  195.     ENDIF
  196.     IF c$=" "
  197.       u%=1
  198.     ENDIF
  199.     p%=p%+1
  200.   ENDWH
  201.   RETURN(out$)
  202. ENDP
  203.  
  204. PROC Tfstn%:
  205.   LOCAL lclz2%,rec%,p%,all$(255)
  206.   OPEN A001$,A,STN$,L1,I1,I2,I3,I4,I5
  207.   FIRST
  208.   lclz2%=FIND("*"+UPPER$(Stn$)+"*")
  209.   IF lclz2%=0
  210.     dINIT
  211.     dTEXT "","No matches found",2
  212.     CLOSE
  213.     DIALOG
  214.     RETURN(0)
  215.   ENDIF
  216.   all$=UpLow$:(A.STN$)
  217.   dINIT "Select a Station"
  218.   DO
  219.     NEXT
  220.     lclz2%=FIND("*"+UPPER$(Stn$)+"*")
  221.     IF lclz2%=0
  222.       BREAK
  223.     ENDIF
  224.     IF (LEN(all$)+LEN(A.STN$)+1)>255
  225.       dTEXT "","Not all matches shown",$102
  226.       BREAK
  227.     ENDIF
  228.     all$=all$+","+UpLow$:(A.STN$)
  229.   UNTIL 0
  230.   dCHOICE rec%,"Station",all$
  231.   IF DIALOG=0
  232.     CLOSE
  233.     RETURN(0)
  234.   ENDIF
  235.   p%=1
  236.   WHILE rec%>1
  237.     WHILE MID$(all$,p%,1)<>","
  238.       p%=p%+1
  239.     ENDWH
  240.     p%=p%+1
  241.     rec%=rec%-1
  242.   ENDWH
  243.   all$=right$(all$,LEN(all$)+1-p%)
  244.   p%=LOC(all$,",")
  245.   IF p%>0
  246.     all$=LEFT$(all$,p%-1)
  247.   ENDIF
  248.   FIRST
  249.   FIND(UPPER$(all$))
  250.   RETURN(1)
  251. ENDP
  252.  
  253. PROC Tline:
  254.   IF Route%=1
  255.     Line2$="Bakerloo (Brown)"
  256.   ELSEIF Route%=2
  257.     Line2$="Central (Red)"
  258.   ELSEIF Route%=3
  259.     Line2$="Circle (Yellow)"
  260.   ELSEIF Route%=4
  261.     Line2$="District (Green)"
  262.   ELSEIF Route%=5
  263.     Line2$="East London (Orange)"
  264.   ELSEIF Route%=6
  265.     Line2$="Jubilee (Gray)"
  266.   ELSEIF Route%=7
  267.     Line2$="Metropolitan (Burgundy)"
  268.   ELSEIF Route%=8
  269.     Line2$="Northern (Black)"
  270.   ELSEIF Route%=9
  271.     Line2$="Piccadilly (Blue)"
  272.   ELSEIF Route%=10
  273.     Line2$="Victoria (Sky Blue)"
  274.   ELSEIF Route%=11
  275.     Line2$="Docklands Light Railway"
  276.   ELSE
  277.     Route2=1
  278.   ENDIF
  279.   RETURN
  280. ENDP
  281.  
  282.