home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / misc3 / navigate.lzh / AIRALPHA.BAS (.txt) next >
Encoding:
GW-BASIC  |  1980-01-01  |  5.3 KB  |  151 lines

  1. 10  ' AIRALPHA.BAS   NAVPROGseven Aprt/Fac Sort   22-Jan-82   Rev 01/22/86
  2. 20  ' Version F.03.02 for the IBM PC
  3. 30  ' (c) Copyright 1982 Alan Bose
  4. 40  ' 1224 Allison Lane
  5. 50  ' Schaumburg, IL  60194
  6. 60  '
  7. 70  ' CP/M modifications (c) 1982 by Glen Hassebrock, Jr.
  8. 75  ' HP-150 modifications (c) 1984 by Alan Bose
  9. 76  ' PC-DOS modifications (c) 1985 by Bruce Carson
  10. 80  '
  11. 90  CLEAR:DEFINT I-J:ON ERROR GOTO 1430
  12. 92  PROGDISK$="A:":DATADISK$="B:"
  13. 94  OPEN "I",1,"NAVDISCS.DAT"
  14. 96  INPUT #1,PROGDISK$,DATADISK$:CLOSE
  15. 100  BL$=CHR$(7):E$=CHR$(27)
  16. 110  CL$=CHR$(13)+CHR$(10)
  17. 140  HD$="A I R P O R T / F A C I L I T Y   S O R T I N G"
  18. 145  CLS:PRINT
  19. 150  PRINT TAB(44-LEN(HD$)/2)HD$;CL$
  20. 160  PRINT:PRINT TAB(15);"1  -  Identifier"
  21. 170  PRINT:PRINT TAB(15);"2  -  State/Identifier"
  22. 180  PRINT:PRINT TAB(15);"3  -  State/City"
  23. 190  PRINT:PRINT TAB(15);"4  -  State/Facility/Ident"
  24. 200  PRINT:PRINT TAB(15);"5  -  As filed (no sort)"
  25. 210  PRINT:PRINT:PRINT TAB(20);"Select sort criteria  <MENU>  ";
  26. 220  C$=INPUT$(1):C=VAL(C$)
  27. 230  IF C$=CHR$(13) THEN CLS:RUN PROGDISK$+"NAVMENU"
  28. 240  IF C<1 OR C>5 THEN PRINT CHR$(7);:GOTO 220
  29. 245  WIDTH 80
  30. 250  CLS:PRINT "Standby one";:MX=32767:MN=0
  31. 260  OPEN "R",2,DATADISK$+"AIRPORTS.RND",255:GOSUB 1410:MD=MD*5:PRINT"..."
  32. 270  DIM ID$(MD+1),ST$(MD+1),REF(MD+1)
  33. 280  'build indices for ident, city, state, facilities and location on file
  34. 285  WIDTH 80
  35. 290  FOR J=1 TO MD:REC=((J-1)\5)+1:SS=(J-1) MOD 5
  36. 300  IF LOC(2)<>REC THEN GET #2,REC
  37. 310  FIELD #2,SS*50 AS DU$,5 AS ID$,2 AS FAC$,4 AS DU$,20 AS A$,2 AS D1$,4 AS M1$,2 AS D$,4 AS M$
  38. 320  ID$(J)=ID$:IF ASC(ID$)=0 THEN ID$(J)=SPACE$(5)
  39. 330  IF ID$(J)="" THEN ID$(J)=SPACE$(5)
  40. 340  REF(J)=J-1:I2=INSTR(A$,", ")+2:IF I2=2 THEN I2=INSTR(A$,",")+1
  41. 350  X$=MID$(A$,I2,2)
  42. 360  '
  43. 370  D6=CVI(D1$):M6=CVS(M1$):D5=CVI(D$):M5=CVS(M$):M1=M6/60:P2=D6+M1:M=M5/60
  44. 380  P1=D5+M:IF J=1 THEN N=P2:NI$=ID$:N$=A$:SO=P2:SI$=ID$:S$=A$:E=P1:EI$=ID$:EJ$=A$:W=P1:WI$=ID$:W$=A$
  45. 390  IF P2>N THEN N=P2:NI$=ID$:N$=A$
  46. 400  IF P2<SO AND P2<>0 THEN SO=P2:SI$=ID$:S$=A$
  47. 410  IF P1<E AND P2<>0 THEN E=P1:EI$=ID$:EJ$=A$
  48. 420  IF P1>W THEN W=P1:WI$=ID$:W$=A$
  49. 430  '
  50. 440  ON C GOTO 480,460,470,450,500
  51. 450  X$=X$+LEFT$(FAC$,2):GOTO 490
  52. 460  GOTO 490
  53. 470  X$=X$+LEFT$(A$,I2):GOTO 490
  54. 480  X$=LEFT$(ID$,1)
  55. 490  GOSUB 1030:ST$(J)=X$
  56. 500  NEXT J
  57. 510  IF C=5 THEN 610
  58. 520  CLS:PRINT "sorting..."
  59. 530  M=MD
  60. 540  M=INT(M/2):IF M=0 THEN 610
  61. 550  J1=1:K1=MD-M
  62. 560  I1=J1
  63. 570  L1=I1+M:IF ST$(I1)+ID$(I1)<ST$(L1)+ID$(L1) THEN 600
  64. 580  SWAP ST$(I1),ST$(L1):SWAP ID$(I1),ID$(L1):SWAP REF(I1),REF(L1)
  65. 590  I1=I1-M:IF I1>=1 THEN 570
  66. 600  J1=J1+1:IF J1>K1 THEN 540 ELSE 560
  67. 610  ' Printout Airport/Facility Listing
  68. 620  CLS: PRINT"Output:  Enter <P> for printer, <S> for screen  ";
  69. 630  X$=INPUT$(1):GOSUB 1030:PRINT:IF X$="P" THEN PRINT :GOSUB 1070:GOTO 1080
  70. 635  IF X$=CHR$(13) THEN CLS:RUN PROGDISK$+"NAVMENU"
  71. 640  IF X$="S" THEN LS=0 ELSE PRINT BL$:GOTO 620
  72. 650  CLS
  73. 670  PRINT "Sort criteria: ";
  74. 680  ON C GOTO 690,700,710,720,730
  75. 690  PRINT "Identifier";:GOTO 740
  76. 700  PRINT "State/Identifier";:GOTO 740
  77. 710  PRINT "State/City";:GOTO 740
  78. 720  PRINT "State/Facilities/Identifier";:GOTO 740
  79. 730  PRINT "As filed (no sort)";
  80. 740  PRINT TAB(56)TM$" "D5$:PRINT:FOR J=1 TO MD
  81. 750  IF ID$(J)=SPACE$(5) THEN S=S+1:GOTO 970
  82. 760  REC=(REF(J)\5)+1:SS=REF(J) MOD 5:IF LREC<>REC THEN LREC=REC:GET#2,REC
  83. 770  FIELD #2,SS*50 AS DU$,5 AS ID$,2 AS FAC$,4 AS FR$,20 AS NM$,2 AS D1$,4 AS M1$,2 AS D$,4 AS M$,4 AS V$,1 AS V1$,2 AS EL$
  84. 780  IF C=5 AND J=1 THEN 810
  85. 790  IF C=5 OR LEFT$(ST$(J-1),2)=LEFT$(ST$(J),2) THEN 840
  86. 800  PRINT CL$CL$TAB(30)"****** "LEFT$(ST$(J),2);" ******"CL$
  87. 810  IF C=5 THEN PRINT "Ref";
  88. 820  PRINT TAB(5)"Ident Fac  Freq"TAB(32)"Name"TAB(47)"Lat";
  89. 830  PRINT TAB(56)"Long"TAB(65)"Var"TAB(71)"Elev"CL$
  90. 840  IF C=5 THEN PRINT USING"###";J-1; ELSE PRINT USING"###";J-S;
  91. 850  PRINT TAB(5);ID$;TAB(11);FAC$;TAB(15);
  92. 860  F5=CVS(FR$):IF F5=0 THEN 910
  93. 870  IF F5>136 THEN PRINT USING"####";F5;:GOTO 910
  94. 880  IF F5*10\1=F5*10/1 THEN PRINT USING"####.#";F5;:GOTO 910
  95. 890  IF F5*100\1=F5*100/1 THEN PRINT USING"####.##";F5;:GOTO 910
  96. 900  PRINT USING"###.###";F5;
  97. 910  PRINT TAB(23);NM$;:D6=CVI(D1$):PRINT TAB(45);USING"##";D6;
  98. 920  M6=CVS(M1$):PRINT TAB(48);USING"##.#";M6;
  99. 930  D5=CVI(D$):PRINT TAB(54);USING"###";D5;
  100. 940  M5=CVS(M$):PRINT TAB(58);USING"##.#";M5;
  101. 950  V5=CVS(V$):PRINT TAB(63);USING"###.#";V5;:PRINT V1$;
  102. 960  E5=CVI(EL$):PRINT TAB(69);USING"#####";E5
  103. 970  NEXT J
  104. 980  PRINT:PRINT:PRINT "Farthest North:  "NI$" "N$
  105. 990  PRINT "Farthest South:  "SI$" "S$:PRINT "Farthest East:   "EI$" "EJ$
  106. 1000  PRINT "Farthest West:   "WI$" "W$
  107. 1010  CLOSE:PRINT:PRINT "Press <RETURN> to continue...";
  108. 1020  LINE INPUT A$:CLOSE:CLS:RUN PROGDISK$+"NAVMENU"
  109. 1030  'map lc
  110. 1040  FOR L=1 TO LEN(X$):U$=MID$(X$,L,1)
  111. 1050  IF ASC(U$)>96 AND ASC(U$)<123 THEN MID$(X$,L,1)=CHR$(ASC(U$)-32)
  112. 1060  NEXT L:RETURN
  113. 1070  PRINT"Please align paper, then press <RETURN>";:LINE INPUT X$:RETURN
  114. 1080  LPRINT "Sort criteria: ";
  115. 1090  ON C GOTO 1100,1110,1120,1130,1140
  116. 1100  LPRINT "Identifier";:GOTO 1150
  117. 1110  LPRINT "State/Identifier";:GOTO 1150
  118. 1120  LPRINT "State/City";:GOTO 1150
  119. 1130  LPRINT "State/Facilities/Identifier";:GOTO 1150
  120. 1140  LPRINT "As filed (no sort)";
  121. 1150  LPRINT TAB(56)TM$" "D5$;:LPRINT:FOR J=1 TO MD
  122. 1160  IF ID$(J)=SPACE$(5) THEN S=S+1:GOTO 1370
  123. 1170  REC=(REF(J)\5)+1:SS=REF(J) MOD 5:IF LREC<>REC THEN LREC=REC:GET#2,REC
  124. 1180  FIELD #2,SS*50 AS DU$,5 AS ID$,2 AS FAC$,4 AS FR$,20 AS NM$,2 AS D1$,4 AS M1$,2 AS D$,4 AS M$,4 AS V$,1 AS V1$,2 AS EL$
  125. 1190  IF C=5 AND J=1 THEN 1220
  126. 1200  IF C=5 OR LEFT$(ST$(J-1),2)=LEFT$(ST$(J),2) THEN 1250
  127. 1210  LPRINT CL$CL$TAB(30)"****** "LEFT$(ST$(J),2);" ******"CL$
  128. 1220  IF C=5 THEN LPRINT "Ref";
  129. 1230  LPRINT TAB(5)"Ident Fac  Freq"TAB(32)"Name"TAB(47)"Lat";
  130. 1240  LPRINT TAB(56)"Long"TAB(65)"Var"TAB(71)"Elev"CL$
  131. 1250  IF C=5 THEN LPRINT USING"###";J-1; ELSE LPRINT USING"###";J-S;
  132. 1260  LPRINT TAB(5)ID$TAB(11)FAC$TAB(15);:F5=CVS(FR$):IF F5=0 THEN 1310
  133. 1270  IF F5>136 THEN LPRINT USING"####";F5;:GOTO 1310
  134. 1280  IF F5*10\1=F5*10/1 THEN LPRINT USING"####.#";F5;:GOTO 1310
  135. 1290  IF F5*100\1=F5*100/1 THEN LPRINT USING"####.##";F5;:GOTO 1310
  136. 1300  LPRINT USING"###.###";F5;
  137. 1310  LPRINT TAB(23);NM$;:D6=CVI(D1$):LPRINT TAB(45);USING"##";D6;
  138. 1320  M6=CVS(M1$):LPRINT TAB(48);USING"##.#";M6;
  139. 1330  D5=CVI(D$):LPRINT TAB(54);USING"###";D5;
  140. 1340  M5=CVS(M$):LPRINT TAB(58);USING"##.#";M5;
  141. 1350  V5=CVS(V$):LPRINT TAB(63);USING"###.#";V5;:LPRINT V1$;
  142. 1360  E5=CVI(EL$):LPRINT TAB(69);USING"#####";E5
  143. 1370  NEXT J
  144. 1380  LPRINT:LPRINT:LPRINT "Farthest North: "NI$" "N$
  145. 1390  LPRINT "Farthest South: "SI$" "S$:LPRINT"Farthest East:  "EI$" "EJ$
  146. 1400  LPRINT "Farthest West:  "WI$" "W$:LPRINT CHR$(12):GOTO 1010
  147. 1410  MD=(MX+MN)\2:GET #2,MD:IF EOF(2) THEN MX=MD ELSE MN=MD
  148. 1420  IF MX>MN+1 THEN 1410 ELSE MD=MN:RETURN
  149. 1430  IF ERR=53 AND ERL=94 THEN CLOSE:RESUME 100
  150. 1440  ON ERROR GOTO 0
  151.