`ê*NAME IARU_locator dêî … ï 7: ï 12: ï 7: à lêò_initialize pêò_screen_1 têò_screen_3 xêõ |êò_get_input .€êç ©(iaru$)=6 Œ ò_iaru_globe ‹ ò_globe_iaru „êò_show_results ˆêý £ Œêú ”êÝ ò_initialize 2˜êô Declare the working storage for the program. œêô 2 êlat$="dd.mmss":long$="ddd.mmss":iaru$="..nn.." ¤êô B¨êÞ letter1$(24):letter1$(1)="A":letter1$(2)="B":letter1$(3)="C" C¬êletter1$(4)="D":letter1$(5)="E":letter1$(6)="F":letter1$(7)="G" E°êletter1$(8)="H":letter1$(9)="I":letter1$(10)="J":letter1$(11)="K" G´êletter1$(12)="L":letter1$(13)="M":letter1$(14)="N":letter1$(15)="O" G¸êletter1$(16)="P":letter1$(17)="Q":letter1$(18)="R":letter1$(19)="S" G¼êletter1$(20)="T":letter1$(21)="U":letter1$(22)="V":letter1$(23)="W" Àêletter1$(24)="X" Äêô BÈêÞ number1$(10):number1$(1)="0":number1$(2)="1":number1$(3)="2" CÌênumber1$(4)="3":number1$(5)="4":number1$(6)="5":number1$(7)="6" 4Ðênumber1$(8)="7":number1$(9)="8":number1$(10)="9" Ôêô Øêneg1%=-1 Üêô àêá èêÝ ò_screen_0 ìêô ðêï 12 ôêô +øêô Define the Z88 screen for other uses. üêô 'ëñ Š3,0);"I A R U L O C A T O R "; )ëñ " C O N V E R S I O N "; %ëï 1,138,61,64,7,8,17,18,18,17,8,7 % ëï 1,138,61,65,56,4,50,2,2,50,4,56 ëï 1,50,63,64,1,50,63,65 ëñ " 1991, L.J.DEVANEY."; ëñ " version 1.00"; ëñ Š82,7);"ESC to exit";  ëô $ëá ,ëÝ ò_screen_1 0ëô 4ëò_screen_0 8ëô 7<ëô Define the Z88 screen for the initial commentary. @ëô Dëï 1,50,43,84 ?Hëñ Š1,2);"THIS PROGRAM ACCEPTS AN IARU LOCATOR AND RETURNS"; 3Lëñ " THE GLOBAL CO-ORDINATES CORRESPONDING TO "; ?Pëñ Š1,3);"IT. BECAUSE OF THE NATURE OF THE LOCATOR THE MAX"; 3Tëñ "IMUM ERROR IS 5' IN LONGITUDE AND 2.5' IN "; ?Xëñ Š1,4);"LATITUDE. GLOBAL CO-ORDINATES ARE ALSO CONVERTED"; 3\ëñ " TO AN IARU LOCATOR WHEN APPROPRIATE. DO "; ?`ëñ Š1,5);"REMEMBER THAT LONGITUDE IS A MAXIMUM OF 180 DEGR"; 3dëñ "EES AND LATITUDE A MAXIMUM OF 90 DEGREES. "; hëô lëï 1,50,45,84 pëô )tëñ Š1,7);"Press a key to continue - "; xëõ ý ¦(0)=-1 |ëê a$ €ëa$=¾ „ëô ˆëá �ëÝ ò_screen_2 ”ëò_screen_0 1˜ëñ Š3,2);" IARU Latitude Longitude "; 1œëñ Š3,3);"locator dd ? mm ss ddd ? mm ss"; A ëñ Š1,7);" "; &¤ëñ " |"; ¨ëá °ëÝ ò_screen_3 ´ëô ¸ëò_screen_0 ¼ëô 6Àëô Define the Z88 screen for the second commentary. Äëô Èëï 1,50,43,84 ?Ìëñ Š1,2);"THE OFFICIALLY PUBLISHED ALGORITHM HAS TWO ERROR"; 3Ðëñ "S IN IT. THE LONGITUDE 180E HAS TO BE "; ?Ôëñ Š1,3);"REPRESENTED BY 'A0A', USED BECAUSE IT IS ADJACEN"; 3Øëñ "T TO 180W. THE LATITUDE 90N HAS TO BE "; ?Üëñ Š1,4);"REPRESENTED BY 'R9X' BECAUSE IT IS AN END POINT "; 3àëñ "AND 'S0A' IS NOT ALLOWED. "; ?äëñ Š1,5);"** ** ALL LETTERS ARE TO BE ENTERED IN UPPER CAS"; èëñ "E ** **"; ìëô ðëï 1,50,45,84 ôëô )øëñ Š1,7);"Press a key to continue - "; üëõ ý ¦(0)=-1 ìê a$ ìa$=¾ ìô  ìá ìÝ ò_get_input ìô ìò_screen_2  ìô !$ìô Ask for the input data. (ìô /,ìê lupe%,a$,b$,c$,f$,d1%,m1%,s1%,d2%,m2%,s2% %0ìlupe%=1:a$="......":b$=".":c$="." '4ìd1%=0:m1%=0:s1%=0:d2%=0:m2%=0:s2%=0 8ìõ <ìõ ý ¦(0)=-1 6@ìè Š4,5);""a$;Š13,5);""d1%;Š16,5);""b$;Š18,5);""m1% ,Dìè Š21,5);""s1%;Š26,5);""d2%;Š30,5);""c$ Hìè Š32,5);""m2%;Š35,5);""s2% ALìñ Š1,7);" "; &Pìñ " |"; Tìò_strip_blanks AXìô PRINT TAB(50,2);" "; A\ìô PRINT TAB(50,3);" "; A`ìô PRINT TAB(50,4);" "; Adìô PRINT TAB(50,5);" "; 5hìô PRINT TAB(50,2);"a$=";a$;", b$=";b$;", c$=";c$; ;lìô PRINT TAB(50,3);"d1%=";d1%;", m1%=";m1%;", s1%=";s1%; ;pìô PRINT TAB(50,4);"d2%=";d2%;", m2%=";m2%;", s2%=";s2%; tìç lupe%<>0 Œ õ ý ¦(0)=-1 xìç lupe%<>0 Œ ñ Š80,7);:f$=¾ |ìç lupe%=0 Œ iaru$=a$ .€ìç lupe%=0 Œ a$=Ã(100+d1%):lat$=Áa$,2,2)+b$ 0„ìç lupe%=0 Œ a$=Ã(100+m1%):lat$=lat$+Áa$,2,2) 0ˆìç lupe%=0 Œ a$=Ã(100+s1%):lat$=lat$+Áa$,2,2) 0Œìç lupe%=0 Œ a$=Ã(1000+d2%):long$=Áa$,2,3)+c$ 2�ìç lupe%=0 Œ a$=Ã(100+m2%):long$=long$+Áa$,2,2) 2”ìç lupe%=0 Œ a$=Ã(100+s2%):long$=long$+Áa$,2,2) ˜ìý lupe%=0 :œìô PRINT TAB(50,5);iaru$+" -- "+lat$+" -- "+long$+"..";  ìô REPEAT UNTIL INKEY(0)=-1 ¤ìô PRINT TAB(80,7);:f$=GET$ ¨ìá °ìÝ ò_show_results ´ìô ¸ìò_screen_2 ¼ìô )Àìô Show the results of the conversion. Äìô &Èìê a$,b$,c$,d1%,m1%,s1%,d2%,m2%,s2% 'Ììa$=Álat$,3,1):b$=Álong$,4,1):c$="." (Ðìd1%=»(Álat$,1,2)):d2%=»(Álong$,1,3)) (Ôìm1%=»(Álat$,4,2)):m2%=»(Álong$,5,2)) (Øìs1%=»(Álat$,6,2)):s2%=»(Álong$,7,2)) 2Üìñ Š4,5);iaru$;Š13,5);d1%;Š16,5);a$;Š18,5);m1%; 1àìñ Š21,5);s1%;Š26,5);d2%;Š30,5);b$;Š32,5);m2%; äìñ Š35,5);s2%; èìõ ý ¦(0)=-1 ììñ Š80,7);:c$=¾ ðìá øìÝ ò_iaru_error_1 <üìñ Š1,7);"Locator length error - must be six characters"; íá íÝ ò_iaru_error_2 6 íñ Š1,7);"All input data are wrong - please retry"; íá íÝ ò_iaru_error_3 ?íñ Š1,7);"Is the latitude input incorrect ? - please retry";  íá (íÝ ò_iaru_error_4 @,íñ Š1,7);"Is the longitude input incorrect ? - please retry"; 0íá 8íÝ ò_iaru_error_5 @<íñ Š1,7);"The initial two letters of a locator are limited "; @íñ "to A - R."; Díá LíÝ ò_iaru_error_6 @Píñ Š1,7);"The middle two characters of a locator are limite"; Tíñ "d to 0 - 9."; Xíá `íÝ ò_iaru_error_7 @díñ Š1,7);"The last two characters of a locator are limited "; híñ "to A - X."; líá tíÝ ò_iaru_error_8 @xíñ Š1,7);"The latitude is incorrect! Please retry. "; |íá „íÝ ò_iaru_error_9 @ˆíñ Š1,7);"The longitude is incorrect! Please retry. "; Œíá ”íÝ ò_strip_blanks ˜íê r%,s%,t%,u%,v$,w$,x$ œíw$="WwEe":x$="NnSs"  ír%=©(a$):v$=".":u%=r% ¤íã s%=r% ¸ 1 ˆ -1 ¨ív$=Áa$,s%,1) &¬íç (v$>"@") € (v$<"[") Œ u%=s%:s%=0 &°íç (v$>"`") € (v$<"{") Œ u%=s%:s%=0 &´íç (v$>"/") € (v$<":") Œ u%=s%:s%=0 #¸íç (s%<2) € (r%>u%) Œ a$=Àa$,u%) ¼íí s% Àíç u%>6 Œ ò_iaru_error_1:á Äít%=§x$,b$) Èíç t%=0 Œ b$="." Ìít%=§w$,c$) Ðíç t%=0 Œ c$="." Ôít%=1 Øíç (u%<>6) Œ ò_iaru_test_2 Üíç t%=0 Œ á àíç (u%=6) Œ ò_iaru_test_3 äíç t%=0 Œ á èíç (u%<>6) Œ ò_iaru_test_4 ìíç t%=0 Œ á ðílupe%=0 ôíá üíÝ ò_iaru_test_2 ît%=0:iaru$="":u%=0 îñ Š4,5);" "; ,îç (b$=".") € (c$=".") Œ ò_iaru_error_2:á - îç (b$=".") € (c$<>".") Œ ò_iaru_error_3:á -îç (b$<>".") € (c$=".") Œ ò_iaru_error_4:á îç (b$="n") Œ b$="N" îç (b$="s") Œ b$="S" îç (c$="e") Œ c$="E"  îç (c$="w") Œ c$="W" $ît%=1 (îá 0îÝ ò_iaru_test_3 ,4ît%=0:d1%=0:m1%=0:s1%=0:d2%=0:m2%=0:s2%=0 +8îñ Š10,5);" "; 0<îê xlupe%,xa$,xb$,xc$,xe$,xf$,xw%,xx%,xy%,xz% *@îxa$=Áa$,1,1):xb$=Áa$,2,1):xc$=Áa$,3,1) *Dîxd$=Áa$,4,1):xe$=Áa$,5,1):xf$=Áa$,6,1) %Hîxw%=0:xx%=0:xy%=0:xz%=0:xlupe%=24 Lîõ (Pîç xa$=letter1$(xlupe%) Œ xw%=xlupe% 'Tîç xe$=letter1$(xlupe%) Œ xx%=xlupe% 'Xîç xb$=letter1$(xlupe%) Œ xy%=xlupe% '\îç xf$=letter1$(xlupe%) Œ xz%=xlupe% `îxlupe%=xlupe%-1 dîý xlupe%=0 +hîç (xw%<1) „ (xw%>18) Œ ò_iaru_error_5:á +lîç (xx%<1) „ (xx%>24) Œ ò_iaru_error_7:á +pîç (xy%<1) „ (xy%>18) Œ ò_iaru_error_5:á +tîç (xz%<1) „ (xz%>24) Œ ò_iaru_error_7:á xîô |îxw%=»(xc$):xx%=»(xd$) *€îç (xw%<0) „ (xw%>9) Œ ò_iaru_error_6:á *„îç (xx%<0) „ (xx%>9) Œ ò_iaru_error_6:á -ˆîç (xw%=0) € (xc$<>"0") Œ ò_iaru_error_6:á -Œîç (xx%=0) € (xd$<>"0") Œ ò_iaru_error_6:á �îô ”ît%=1 ˜îá  îÝ ò_iaru_test_4 ¤ît%=0 +¨îç (d1%<0) „ (d1%>90) Œ ò_iaru_error_8:á ,¬îç (d2%<0) „ (d2%>180) Œ ò_iaru_error_9:á +°îç (m1%<0) „ (m1%>59) Œ ò_iaru_error_8:á +´îç (m2%<0) „ (m2%>59) Œ ò_iaru_error_9:á +¸îç (s1%<0) „ (s1%>59) Œ ò_iaru_error_8:á +¼îç (s2%<0) „ (s2%>59) Œ ò_iaru_error_9:á Àîô 2Äîç (d1%=90) € ((m1%+s1%)<>0) Œ ò_iaru_error_8:á 3Èîç (d2%=180) € ((m2%+s2%)<>0) Œ ò_iaru_error_9:á Ìît%=1 Ðîá ØîÝ ò_iaru_globe Üîô 9àîô Convert IARU coordinates to latitude and longitude. >äîô The results are rlong EAST and rlat NORTH, with negative 5èîô numbers indicating WEST and SOUTH respectively. ìîô 1ðîê lupe%,a$,b$,c$,e$,f$,w%,x%,y%,z%,rlong,rlat 0ôîa$=Áiaru$,1,1):b$=Áiaru$,2,1):c$=Áiaru$,3,1) 0øîd$=Áiaru$,4,1):e$=Áiaru$,5,1):f$=Áiaru$,6,1) üîw%=0:x%=0:y%=0:z%=0:lupe%=24 ïõ %ïç a$=letter1$(lupe%) Œ w%=lupe%-1 %ïç e$=letter1$(lupe%) Œ x%=lupe%-1 % ïç b$=letter1$(lupe%) Œ y%=lupe%-1 %ïç f$=letter1$(lupe%) Œ z%=lupe%-1 ïlupe%=lupe%-1 ïý lupe%=0 ïô ' ïrlong=(20*w%)+(2*»(c$))+(x%/12)-180 !$ïrlat=(10*y%)+»(d$)+(z%/24)-90 (ïô 1,ïç rlong<0 Œ rlong=rlong*neg1%:a$="W" ‹ a$="E" 0ïw%=¨(rlong) 4ïrlong=(rlong-w%)*60 8ïx%=¨(rlong) <ïrlong=(rlong-x%)*60 @ïy%=¨(rlong+0.5) Dïç y%>59 Œ x%=x%+1:y%=0 Hïç x%>59 Œ w%=w%+1:x%=0 Lïd$=Ã(y%) Pïç y%<10 Œ d$="0"+d$ Tïc$=Ã(x%) Xïç x%<10 Œ c$="0"+c$ \ïb$=Ã(w%) `ïç w%<10 Œ b$="0"+b$ dïç w%<100 Œ b$="0"+b$ hïlong$=b$+a$+c$+d$ lïô .pïç rlat<0 Œ rlat=rlat*neg1%:a$="S" ‹ a$="N" tïw%=¨(rlat) xïrlat=(rlat-w%)*60 |ïx%=¨(rlat) €ïrlat=(rlat-x%)*60 „ïy%=¨(rlat+0.5) ˆïç y%>59 Œ x%=x%+1:y%=0 Œïç x%>59 Œ w%=w%+1:x%=0 �ïd$=Ã(y%) ”ïç y%<10 Œ d$="0"+d$ ˜ïc$=Ã(x%) œïç x%<10 Œ c$="0"+c$  ïb$=Ã(w%) ¤ïç w%<10 Œ b$="0"+b$ ¨ïlat$=b$+a$+c$+d$ ¬ïá ´ïÝ ò_globe_iaru ¸ïô 9¼ïô Convert latitude and longitude to IARU coordinates. FÀïô The result is the six character group ABCDEF where the <Äïô characters A, C and E are for logitude and B, D and F Èïô are for latitude. Ìïô .Ðïê d%,m%,s%,a$,b$,c$,d$,e$,f$,g$,x%,y%,z%,x $Ôïg$=Álong$,4,1):d%=»(Álong$,1,3)) 'Øïm%=»(Álong$,5,2)):s%=»(Álong$,7,2)) Üïx%=(60*d%+m%)*60+s% àïç g$="W" Œ x%=x%*neg1% %äïx%=648000+x%:x=x%/72000:y%=¨(x)+1 &èïç y%>18 Œ a$="A" ‹ a$=letter1$(y%) ,ìïz%=x%-((y%-1)*72000):x=z%/7200:x%=¨(x)+1 ðïc$=number1$(x%) *ôïy%=z%-((x%-1)*7200):x=y%/300:z%=¨(x)+1 øïe$=letter1$(z%) üïô "ðg$=Álat$,3,1):d%=»(Álat$,1,2)) %ðm%=»(Álat$,4,2)):s%=»(Álat$,6,2)) ðx%=(60*d%+m%)*60+s%  ðç g$="S" Œ x%=x%*neg1% %ðx%=324000+x%:x=x%/36000:y%=¨(x)+1 ðb$=letter1$(y%) ,ðz%=x%-((y%-1)*36000):x=z%/3600:x%=¨(x)+1 ðd$=number1$(x%) * ðy%=z%-((x%-1)*3600):x=y%/150:z%=¨(x)+1 $ðf$=letter1$(z%) (ðô #,ðç b$="S" Œ b$="R":d$="9":f$="X" 0ðô 4ðiaru$=a$+b$+c$+d$+e$+f$ 8ðá ÿÿ