Home » Archimedes archive » Archimedes World » AW-1994-04-Disc2.adf » Disk2Apr94 » !AWApr94/Goodies/PowerBase/!Powerbase/!RunImage
!AWApr94/Goodies/PowerBase/!Powerbase/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1994-04-Disc2.adf » Disk2Apr94 |
Filename: | !AWApr94/Goodies/PowerBase/!Powerbase/!RunImage |
Read OK: | ✔ |
File size: | 39628 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
1REM ><PBase$Dir>.!RunImage 2REM 3REM !RunImage for !Powerbase database 4REM LEN D.L. & S.R. Haslam 5: 6REM Heap Manager (module + BASIC) 7REM LEN S.R. Haslam 8: 9REM Interface Manager (v.2) 10REM LEN Simon Huntingdon 11: 12version$="4.995 (09-Feb-1994)" 13intversion$="Interface Manager (v.2.00)" 14: 15SYS "OS_Byte",202,0,255 TO ,kbdstatus% 16fatal_err%=255:moan_err%=254 17present%=FALSE 18ON ERROR:ON ERROR OFF:ERROR ERR,"L0 error: "+REPORT$+" during initialisation at line "+STR$(ERL) 19PROCsetup 20IF buff%>endbuff% THEN ERROR 0,"No room for defs." 21IF menu_ptr%>men_end% THEN ERROR 0,"No room for menus" 22ON ERROR PROCwimp_error(TRUE,ERR,ERL,REPORT$) 23SYS "OS_GetEnv" TO ComString$ 24IF INSTR(ComString$,"-database") THEN 25 File$=MID$(ComString$,INSTR(ComString$,"-database")+10) 26 SYS "OS_GSTrans",File$,STRING$(255,CHR$13),255 TO ,File$,L% 27 File$=LEFT$(File$,L%) 28 PROCget_it_in(File$) 29ENDIF 30ON ERROR PROCwimp_error(TRUE,ERR,ERL,REPORT$) 31REPEAT 32 PROCpoll 33UNTIL quit% 34PROCclose_down 35END 36: 37DEF PROCpoll 38SYS "OS_Byte",229,1:SYS "OS_Byte",124 39SYS "Wimp_Poll",mask%,block% TO reason% 40SYS "Interface_Poll",reason%,,mytask% 41CASE reason% OF 42 WHEN 0:IF autosave%>0 AND Access%=TRUE THEN PROCcheck_save(saveint%*6000) 43 IF Imp_wait% AND NOT merging% THEN PROCready_to_merge 44 IF flash%>0 THEN PROCflash(mainW%,field%(flash%)) 45 WHEN 1:PROCredraw(!block%) 46 WHEN 2:SYS "Wimp_OpenWindow",,block% 47 WHEN 3:PROCperform_close(!block%) 48 WHEN 4:PROChourglass(TRUE) 49 WHEN 5:PROChourglass(FALSE) 50 WHEN 6:PROCmouse(block%!0,block%!4,block%!8,block%!12,block%!16) 51 WHEN 7:PROCend_drag(Start%,End%) 52 WHEN 8:PROCprocess_key 53 WHEN 9:PROCmenu_select 54 WHEN 12:PROCset_keyboard(!block%,block%!4) 55 WHEN 17,18: 56 SYS "Impulse_Decode",reason%,block%,,,,methodtable%,mytask% TO reason%,,,,,token%,params%,object% 57 IF reason%>=&200 THEN 58 CASE reason% OF 59 WHEN &200,&201:IF token%<>-1 THEN PROCImpulse_command(token%,params%,object%) 60 WHEN &202:PROCImpulse_reply(token%,params%) 61 WHEN &203:PROCImpulse_send(token%,object%) 62 WHEN &204:PROCImpulse_receive(token%,params%,object%) 63 ENDCASE 64 ELSE PROCmessage 65 ENDIF 66 WHEN 19:PROCnot_acknowledged 67ENDCASE 68ENDPROC 69: 70DEF PROChourglass(on%) 71IF (indexing% OR printing%) AND !block%=keypadW% THEN 72 IF on% THEN SYS "Hourglass_On" ELSE SYS "Hourglass_Off" 73ENDIF 74ENDPROC 75: 76DEF PROCflash(wi%,ic%) 77LOCAL time% 78SYS "OS_ReadMonotonicTime" TO time% 79IF (time% MOD 50)=0 THEN PROCinvert(wi%,ic%) 80ENDPROC 81: 82REM Shutdown routines --------------------------------------------------- 83: 84DEF PROCclose_down 85LOCAL F% 86LOCAL ERROR 87ON ERROR LOCAL:$block%="TASK":SYS "Wimp_CloseDown",mytask%,!block%:SYS "Interface_CloseDown",mytask%,!block%:ON ERROR OFF:MODE 12:ERROR ERR,"L0 error: "+REPORT$+" during closedown at line "+STR$(ERL):END 88SYS "Hourglass_Smash" 89PROCexit(0) 90SYS "Interface_CloseDown",mytask% 91SYS "Impulse_CloseDown",mytask% 92$block%="TASK" 93SYS "Wimp_CloseDown",mytask%,!block% 94SYS "OS_Byte",202,kbdstatus% 95END 96ENDPROC 97: 98DEF PROCexit(exittype%) 99LOCAL flag% 100SYS "Hourglass_Smash" 101IF present%=7 THEN PROCcheck_change 102CASE exittype% OF 103 WHEN 0:IF warn% AND ram% THEN flag%=FNconfirm(FNmsg(63)) ELSE flag%=TRUE 104 WHEN 1:IF warn% THEN flag%=FNconfirm(FNmsg(62)) ELSE flag%=TRUE 105ENDCASE 106IF flag%=FALSE THEN ENDPROC 107IF exittype%=0 THEN 108 IF design% THEN PROCsave_form($database%+".Form") 109 IF link$(0)="LOADED" THEN 110 lk=OPENOUT($database%+".Link") 111 FOR F%=1 TO fields% 112 PRINT#lk,link$(F%) 113 NEXT F% 114 ENDIF 115 IF calc$(0)="LOADED" THEN 116 cl=OPENOUT($database%+".Calc") 117 FOR F%=1 TO fields% 118 PRINT#cl,calc$(F%) 119 NEXT F% 120 ENDIF 121 IF Access%=TRUE AND present%=7 THEN PROCmouse(0,0,4,keypadW%,19) 122ENDIF 123IF menu%(5)>0 THEN menu_ptr%=menu%(5):menu%(5)=0 124REM ### Menu 5 is the menu of validation tables ### 125PROCclose_log 126PROCclose_files 127PROChide_windows 128PROCdelete_icons(mainW%,0) 129PROCdelete_icons(datadicW%,0) 130PROCdelete_icons(pselectW%,1) 131PROCdelete_icons(keypadW%,37) 132PROCrecover_memory 133PROCinit_vars 134FOR I%=0 TO MaxTabs% 135 printrel$(I%)="" 136NEXT I% 137field$()="" 138$Password%="" 139present%=FALSE 140exit%=TRUE 141PROClit(menu%(0),1,TRUE) 142PROClit(menu%(0),2,FALSE) 143PROClit(menu%(0),3,FALSE) 144PROClit(menu%(0),4,FALSE) 145PROClit(menu%(2),1,FALSE):ptr%=menu%(2)+52:ptr%!4=-1 146PROClit(menu%(6),6,FALSE) 147PROClit(menu%(6),7,FALSE) 148PROClit(menu%(6),8,FALSE) 149PROCset_auto(FALSE) 150PROCset_autobalance(FALSE) 151PROCtick(menu%(2),3,TRUE) 152PROCtick(menu%(2),4,FALSE) 153$dbase%="No data" 154$database%="No data" 155PROCredraw_icon(-2,pbaseicon%) 156ENDPROC 157: 158DEF PROCdelete_icons(wi%,ic%) 159!block%=wi%:block%!4=ic% 160REPEAT 161 SYS "Wimp_DeleteIcon",,block% 162 ic%+=1:block%!4=ic% 163 SYS "Wimp_GetIconState",,block% 164UNTIL ((block%!24) AND (1<<23))>0 165ENDPROC 166: 167DEF PROCclose_files 168LOCAL key% 169FOR key%=0 TO Keys% 170 PROCdate(key%) 171NEXT key% 172PROCclose_file(lk):link$()="" 173PROCclose_file(cl):calc$()="" 174PROCclose_file(dbasehandle%) 175PROCclose_file(csvhandle%) 176PROCclose_file(texthandle%) 177PROCclose_file(text%) 178PROCclose_file(toobighandle%) 179PROCclose_file(F) 180PROCclose_file(FH%) 181PROCclose_file(V) 182ENDPROC 183: 184DEF PROCclose_file(RETURN filehandle%) 185IF filehandle%>0 THEN 186 CLOSE#filehandle% 187 filehandle%=0 188ENDIF 189ENDPROC 190: 191DEF PROCrecover_memory 192LOCAL I% 193PROCscrap_sliding_block(headanchor%) 194PROCscrap_sliding_block(undoanchor%) 195PROCscrap_sliding_block(lineanchor%) 196PROCscrap_sliding_block(textanchor%) 197PROCscrap_sliding_block(formanchor%) 198PROCscrap_sliding_block(selanchor%) 199PROCscrap_sliding_block(tempanchor%) 200PROCscrap_sliding_block(balanchor%) 201PROCscrap_sliding_block(flaganchor%) 202PROCscrap_sliding_block(transanchor%) 203PROCscrap_sliding_block(sprsanchor%) 204PROCscrap_sliding_block(recanchor%) 205PROCscrap_sliding_block(saveanchor%) 206PROCscrap_sliding_block(logoanchor%) 207FOR I%=0 TO MaxTabs% 208 PROCscrap_sliding_block(tabanchor%(I%)) 209NEXT I% 210FOR I%=0 TO MaxKeys%+1 211 PROCscrap_sliding_block(keyanchor%(I%)) 212NEXT I% 213FOR I%=1 TO fields% 214 IF chartype%(I%)=40 THEN PROCscrap_sliding_block(Rf%(I%)) 215NEXT I% 216ENDPROC 217: 218REM Error handling ------------------------------------------------------ 219: 220DEF PROCwimp_error(return%,err%,erl%,err$) 221LOCAL type%,result% 222LOCAL ERROR 223ON ERROR LOCAL ON ERROR OFF:PROCclose_down:ERROR ERR,"L0 error: "+REPORT$+" during error handler at line "+STR$(ERL) 224SYS "Wimp_CommandWindow",-1 225block%!8=0:block%!12=wi%:block%!16=ic% 226SYS "Interface_SlabButton",,block% 227block%!0=err% 228IF return% AND err%<>fatal_err% THEN 229 IF err%=moan_err% THEN 230 type%=&11:REM OK button and no "Error from" in title 231 ELSE 232 type%=3:REM OK and Cancel buttons 233 err$+=" @ "+STR$(erl%)+" (OK to continue, Cancel to quit)" 234 ENDIF 235ELSE 236 type%=2:REM Cancel buttom 237 err$+=" @ "+STR$(erl%)+" (Powerbase must quit at once)" 238ENDIF 239$(block%+4)=err$+CHR$(0) 240SYS "Wimp_ReportError",block%,type%,"Powerbase" TO ,result% 241REM result=1 means OK selected, 2 means Cancel selected 242IF result%=2 THEN 243 PROCclose_down 244 END 245ENDIF 246RESTORE ERROR 247ENDPROC 248: 249DEF PROCsofterror(E$,E%) 250$(block%+4)=FNmsg(E%)+E$ 251!block%=255 252SYS "Wimp_ReportError",block%,&11,"Report from Powerbase" 253ENDPROC 254: 255DEF FNmsg(E%) 256errorblock%=errormsg% 257WHILE E%>1 258 errorblock%+=LEN($errorblock%)+1 259 E%-=1 260ENDWHILE 261=MID$($errorblock%,4) 262: 263REM Program initialisation ---------------------------------------------- 264: 265DEF PROCsetup 266LOCAL F,A%,I%,J%,V%,valid$ 267F=OPENIN("<Pbase$Dir>.Resources.Config") 268MaxFields%=VAL(GET$#F) 269IF MaxFields%>127 THEN ERROR fatal_err%,FNmsg(61) 270MaxKeys%=VAL(GET$#F) 271MaxTabs%=VAL(GET$#F)-1 272datesep$=LEFT$(GET$#F,1) 273timesep$=LEFT$(GET$#F,1) 274S$=GET$#F:P%=INSTR(S$," "):kill%=NOT (LEFT$(S$,P%-1)="YES") 275S$=GET$#F:P%=INSTR(S$," "):commoncase%=(LEFT$(S$,P%-1)="YES") 276S$=GET$#F:P%=INSTR(S$," "):common%=(LEFT$(S$,P%-1)="YES") 277S$=GET$#F:P%=INSTR(S$," "):leftmenu%=(LEFT$(S$,P%-1)="YES") 278S$=GET$#F:P%=INSTR(S$," "):IF LEFT$(S$,P%-1)="YES" THEN caps%=128 ELSE caps%=16 279winback%=VAL(GET$#F) 280PROCclose_file(F) 281PROCdim_arrays(MaxFields%,MaxKeys%,MaxTabs%) 282PROCinit_vars 283REM ------------------ Initialise Wimp ---------------------------- 284$block%="TASK" 285mask%=(1<<11) 286SYS "Wimp_Initialise",200,!block%,"Powerbase" TO version%,mytask% 287IF version%>=316 THEN RISCOS3=TRUE ELSE RISCOS3=FALSE 288SYS "Impulse_Initialise",003,mytask%,"Powerbase",-1 289SYS "Interface_Initialise",mytask% 290pbaseicon%=FNcreate_icon(-1,0,-16,144,110,&1700312B,"",dbase%,psprite%,10) 291REM --------- Set up Heap Manager. Load error messages ----------- 292PROCinitheaps(128,128) 293SYS "OS_File",5,"<PBase$Dir>.Resources.Messages" TO ,,,,len% 294errormsg%=FNcreate_fixed_block(len%) 295SYS "OS_File",255,"<PBase$Dir>.Resources.Messages",errormsg% 296FOR I%=0 TO len% 297 IF errormsg%?I%=10 THEN errormsg%?I%=13 298NEXT I% 299SYS "OS_Byte",135 TO,,mode% 300CASE mode% OF 301 WHEN 12,15,16,17,35,36:f$="Sprites" 302 OTHERWISE:f$="Sprites22" 303ENDCASE 304SYS "OS_File",5,"<PBase$Dir>.Resources."+f$ TO ,,,,len% 305sprites%=FNcreate_fixed_block(len%+4) 306!sprites%=len%+4 307SYS "OS_File",255,"<PBase$Dir>.Resources."+f$,sprites%+4 308undoanchor%=FNcreate_anchor("Undo") 309headanchor%=FNcreate_anchor("Heading") 310lineanchor%=FNcreate_anchor("TextLine") 311textanchor%=FNcreate_anchor("Text") 312formanchor%=FNcreate_anchor("Form") 313sprsanchor%=FNcreate_anchor("DbaseSprites") 314tempanchor%=FNcreate_anchor("Temp") 315balanchor%=FNcreate_anchor("Balance") 316flaganchor%=FNcreate_anchor("Flags") 317transanchor%=FNcreate_anchor("DataTransfer") 318selanchor%=FNcreate_anchor("PrintSel") 319recanchor%=FNcreate_anchor("RecordNum") 320saveanchor%=FNcreate_anchor("SaveBuffer") 321logoanchor%=FNcreate_anchor("Logo") 322FOR I%=0 TO MaxKeys%+1 323 keyanchor%(I%)=FNcreate_anchor("Key #"+STR$(I%)) 324NEXT I% 325FOR I%=0 TO MaxTabs% 326 tabanchor%(I%)=FNcreate_anchor("VTable #"+STR$(I%)) 327NEXT I% 328REM --------------- Read validation strings etc ----------------------- 329V=OPENIN("<Pbase$Dir>.Resources.ValStrings") 330vstrings%=VAL(GET$#V) 331DIM vname$(vstrings%),valid%(vstrings%),rvalid%(vstrings%),hvalid%(vstrings%) 332FOR I%=0 TO vstrings% 333 vname$(I%)=MID$(GET$#V,4) 334 valid$=GET$#V 335 DIM V% LEN(valid$)+1:$V%=valid$:valid%(I%)=V% 336 DIM V% LEN(valid$)+1:$V%=valid$:rvalid%(I%)=V% 337 DIM V% LEN(valid$)+16:$V%=valid$+";Pptr_hand,12,8":hvalid%(I%)=V% 338NEXT I% 339PROCclose_file(V) 340REM --------------------------------------------------------------- 341REM Method structure 342FOR PASS=0 TO 2 STEP 2 343P%=methodtable% 344 [OPT PASS 345 equd 0 346 FNmethod(0,1,"GetPathname","") 347 FNmethod(0,2,"Selection","") 348 FNmethod(0,3,"ParseQuery","") 349 FNmethod(0,4,"GetRecord","") 350 FNmethod(0,5,"PutRecord","") 351 FNmethod(0,6,"ExpandCode","") 352 FNmethod(0,7,"GetField","") 353 FNmethod(0,8,"GetExpanded","") 354 FNmethod(-1,-1,"","") 355 ] 356NEXT PASS 357PROCgetscreensize(ScreenWidth%,ScreenHeight%) 358PROCcreate_windows 359PROCmake_menus 360PROCset_auto(FALSE) 361PROCset_autobalance(FALSE) 362PROCget_choices("<Pbase$Dir>.Resources.Choices") 363ENDPROC 364: 365DEF FNmethod(Flags,Token,Method$,Syntax$) 366[OPT PASS 367 equd Flags 368 equd Token 369 equs Method$+CHR$(0) 370 equs Syntax$+CHR$(0) 371 align 372] 373=PASS 374: 375DEF PROCdim_arrays(F%,K%,T%) 376DIM desc%(F%),Tag$(F%),field%(F%),F$(F%),Rf%(F%),len%(F%),maxlen%(F%),chartype%(F%),fix%(F%),link$(F%),calc$(F%),Tab%(F%),field$(F%),update$(F%) 377DIM Date%(5),Index$(K%+1),KL%(K%+1),KF%(K%+1,1),KW%(K%+1,3),key$(K%+1),case%(K%+1),WD%(3),Ext%(10) 378DIM Label$(10,2) 379DIM Sum(30,3) 380DIM key 256,date% 6,calcrow% F% 381DIM menu%(22),choice$(4) 382DIM table$(T%+1),tabfieldlen%(9),fcol%(6),ncol%(6) 383DIM rel%(6) 384DIM buttonfield%(22) 385MC%=30:DIM L%(MC%) 386REM -------------------- Allocate buffers ------------------------------ 387indirectionmem%=&7000:menumem%=&1400 388DIM Mi% 20,Mo% 20 389DIM block% &1000,savebuff% &100,choices% &100 390DIM buff% indirectionmem%:endbuff%=buff%+indirectionmem% 391DIM menblk% menumem%:men_end%=menblk%+menumem%:menu_ptr%=menblk% 392DIM fieldmenu% 3200 393DIM hand% 16:$hand%="Pptr_hand,12,8" 394DIM paint% 8:$paint%="file_ff9" 395DIM writep% 16:$writep%="Pptr_write,4,4" 396DIM tick% 12:$tick%="Snull,yes" 397DIM dbase% 10:$dbase%="No data" 398DIM psprite% 15:$psprite%="S!Powerbase" 399DIM menspr% 15,mentxt% 1:$menspr%="Smenu;Z0":$mentxt%="" 400DIM winspr% 15,wintxt% 1:$winspr%="Swindow;Z0":$wintxt%="" 401DIM methodtable% 256 402REM ------------- Indirection addresses for Heap Manager --------------- 403DIM keyanchor%(K%+1) 404DIM tabanchor%(T%) 405DIM printrel$(T%) 406DIM box% 16,box2% 16,matrix% 16,origin% 8 407ENDPROC 408: 409DEF PROCinit_vars 410getrec%=213:ClientSearch$="TRUE" 411Imp_wait%=FALSE:Impref%=-1:merging%=FALSE:mergenum%=0:mergewith$="":document$="" 412mergetag%=214:transtag%=215:printtag%=216 413flash%=FALSE:dup%=FALSE:filter%=FALSE:logosloaded%=FALSE 414accessbutton%=0:stop%=TRUE:scripton%=FALSE:customise%=FALSE 415displayed%=FALSE:scratchpad$="":k$="" 416Search$="TRUE":Filter$="TRUE":REC%=-1:usekey%=-1:useval$="" 417real$="":visible$="":reform$="":val$="":calcfield%=0:savefunc$="":savetofile%=FALSE:startlog%=FALSE 418password$="":myref%=-1:Type%=0:fieldtype%=1 419printing%=FALSE:indexing%=FALSE:validate%=TRUE:relations%=FALSE 420delwarn%=TRUE:autosave%=FALSE:export%=FALSE:csvconv%=FALSE:saveint%=10 421autobalance%=0:balint%=25:added%=0 422present%=0:fields%=0:template%=0:adjust%=FALSE 423Listed%=FALSE:writingcsv%=FALSE:calcerror%=FALSE 424lk=0:cl=0:V=0:F=0:FH%=0:dbasehandle%=0:csvhandle%=0:texthandle%=0:text%=0:toobighandle%=0:loghandle%=0:handle%=0 425$date%=STRING$(6,CHR$(0)) 426movetype%=8:movetype$="Move �" 427quit%=FALSE:exit%=FALSE:matching%=FALSE:newrec%=FALSE:val%=FALSE:ram%=FALSE:Access%=FALSE:Modify%=FALSE:warn%=FALSE:design%=FALSE:newtree%=FALSE 428LenLine%=0:Count%=0:Start%=0:End%=0:Fptr%=0 429Fieldnumber%=0:calclink%=0:Keyfld0%=0:Keyfld1%=0 430LastTable%=-1:Tablenumber%=-1:TabsLoaded$="Tables":table$()="" 431Rows%=0:TabFields%=0:Rec%=0:Match_tag%=1:fast%=10 432Keys%=0:keylimit%=1:keylen%=1:LH%=90:file%=0:key%=0:top=8*file%+LH% 433keyfunc$="":fieldfunc$="":Keys%=0:RU%=0 434printorder$="":Form$="":ImpCom$="":margin$="" 435uon$=CHR$(27)+CHR$(%10001000) 436Filename$="":extrakeys$="":extratabs$="":logpath$="" 437months$="JanFebMarAprMayJunJulAugSepOctNovDec" 438pitch$=CHR$(31)+"9001" 439ENDPROC 440: 441REM Window handling ----------------------------------------------------- 442: 443DEF PROCcreate_windows 444SYS "Wimp_OpenTemplate",,"<Pbase$Dir>.Resources.Templates" 445infoW%=FNnew_window("info",sprites%) 446$FNtext(infoW%,7)=version$ 447$FNtext(infoW%,8)=intversion$ 448keypadW%=FNnew_window("keypad",sprites%):Title%=block%!72 449savesubW%=FNnew_window("savesub",sprites%):SubName%=FNtext(savesubW%,3):SubSprite%=FNval(savesubW%,1):SubTitle%=block%!72 450saveW%=FNnew_window("save",1):SaveName%=FNtext(saveW%,0):SaveSprite%=FNval(saveW%,1) 451datadicW%=FNnew_window("datadic",sprites%):TabTitle%=block%!72 452accessW%=FNnew_window("access",sprites%):Password%=FNtext(accessW%,0):AccessTitle%=block%!72 453passW%=FNnew_window("password",sprites%):Read%=FNtext(passW%,2):Write%=FNtext(passW%,3):Manager%=FNtext(passW%,5) 454mainW%=FNnew_window("main",sprites%):RecInfo%=block%!72 455keyW%=FNnew_window("changekey",sprites%):KeyTitle%=block%!72 456F1dkey%=FNtext(keyW%,0):F2dkey%=FNtext(keyW%,1) 457DIM Wkey%(3) 458FOR word%=0 TO 3 459 Wkey%(word%)=FNtext(keyW%,word%+2) 460NEXT word% 461KeyNo%=FNtext(keyW%,6) 462changeW%=FNnew_window("change",sprites%):ChangeTitle%=block%!72 463moveW%=FNnew_window("move",sprites%) 464tableW%=FNnew_window("table",sprites%) 465linkW%=FNnew_window("link",sprites%):LinkTitle%=block%!72:Tablename%=FNtext(linkW%,0):fieldnum%=FNtext(linkW%,2):expand%=FNtext(linkW%,10) 466miscW%=FNnew_window("misc",sprites%):database%=FNtext(miscW%,1):$database%="No data" 467FOR ic%=2 TO 7 468 Date%(ic%-2)=FNtext(miscW%,ic%) 469NEXT ic% 470used%=FNtext(miscW%,17):filesize%=FNtext(miscW%,18):percent%=FNtext(miscW%,14) 471printW%=FNnew_window("print",sprites%) 472matchW%=FNnew_window("match",sprites%) 473listW%=FNnew_window("list",sprites%) 474createW%=FNnew_window("create",sprites%):FtitleText%=block%!72:$FtitleText%="Field 0" 475DescText%=FNtext(createW%,4):TagText%=FNtext(createW%,5):LenText%=FNtext(createW%,6):ValText%=FNtext(createW%,28):InsText%=FNtext(createW%,26):Fixpt%=FNtext(createW%,13):$Fixpt%="2" 476mintext%=FNtext(createW%,15):maxtext%=FNtext(createW%,25) 477boxX%=FNtext(createW%,7):boxY%=FNtext(createW%,8):boxW%=FNtext(createW%,9):boxH%=FNtext(createW%,10) 478relateW%=FNnew_window("relation",sprites%):RelTitle%=block%!72 479reformW%=FNnew_window("reform",sprites%):RefmTitle%=block%!72 480colW%=FNnew_window("cols",sprites%) 481calcW%=FNnew_window("calc",sprites%):CalcForm%=FNtext(calcW%,0):CalcTitle%=block%!72 482labelW%=FNnew_window("label",sprites%) 483pselectW%=FNnew_window("pselect",sprites%) 484mergeW%=FNnew_window("merge",sprites%):MergeTitle%=block%!72 485sizeW%=FNnew_window("size",sprites%):Records%=FNtext(sizeW%,1):$Records%="100" 486Increment%=FNtext(sizeW%,3):$Increment%="0" 487csvW%=FNnew_window("csvfile",sprites%):CSVTitle%=block%!72 488SYS "Wimp_CloseTemplate" 489IF common% THEN PROCcommonbuffers 490ENDPROC 491: 492DEF PROCcommonbuffers 493PROCcommon(keypadW%,29,matchW%,0) 494PROCcommon(moveW%,7,matchW%,0) 495PROCcommon(changeW%,3,matchW%,0) 496PROCcommon(savesubW%,0,matchW%,0) 497PROCcommon(mergeW%,3,matchW%,0) 498ENDPROC 499: 500DEF PROCcommon(wi%,ic%,wic%,icc%) 501Formula%=FNtext(wic%,icc%) 502!block%=wi%:block%!4=ic%:SYS "Wimp_GetIconState",,block% 503SYS "Wimp_DeleteIcon",,block% 504block%!28=Formula%:block%!4=wi% 505SYS "Wimp_CreateIcon",,block%+4 TO handle% 506ENDPROC 507: 508DEF PROCcommoncase(wi%,ic%) 509LOCAL on% 510IF NOT commoncase% THEN ENDPROC 511on%=FNselected(wi%,ic%) 512PROCset_icon(matchW%,16,on%) 513PROCset_icon(keypadW%,32,on%) 514PROCset_icon(moveW%,9,on%) 515PROCset_icon(changeW%,5,on%) 516PROCset_icon(savesubW%,5,on%) 517PROCset_icon(mergeW%,12,on%) 518ENDPROC 519: 520DEF FNnew_window(name$,sp%) 521LOCAL handle% 522SYS "Wimp_LoadTemplate",,block%,buff%,endbuff%,-1,name$,0 TO ,,buff% 523IF name$="main" THEN block%?35=winback% 524block%!64=sp% 525SYS "Wimp_CreateWindow",,block% TO handle% 526=handle% 527: 528DEF PROCshow_windows 529PROCopen_window(mainW%) 530IF (present% AND 7)=7 THEN 531 IF FNselected(passW%,9) THEN 532 !block%=keypadW%:SYS "Wimp_GetWindowState",,block% 533 block%!12=block%!4+660:block%!8=block%!16-328 534 block%!20=0:block%!24=0:block%!28=-1 535 SYS "Wimp_OpenWindow",,block% 536 ENDIF 537 addr=FNmoveto(key%,top,1) 538ENDIF 539IF Listed% THEN PROCopen_window(listW%) 540ENDPROC 541: 542DEF PROCopen_window(whandle%) 543block%!0=whandle% 544SYS "Wimp_GetWindowState",,block% 545block%!28=-1 546SYS "Wimp_OpenWindow",,block% 547ENDPROC 548: 549DEF PROCset_height(handle%,height%) 550!block%=handle%:SYS "Wimp_GetWindowState",,block% 551block%!16=block%!8+height% 552SYS "Wimp_OpenWindow",,block% 553ENDPROC 554: 555DEF PROCperform_close(wi%) 556CASE wi% OF 557 WHEN mainW%:PROCclose_window(keypadW%) 558 WHEN matchW%:matching%=FALSE 559 WHEN calcW%:calclink%=0 560 WHEN keyW%: 561 design%=FALSE:newtree%=FALSE 562 !block%=0:block%!4=-700 563 block%!8=506:block%!12=0 564 SYS "Wimp_SetExtent",keyW%,block% 565 !block%=keyW% 566 WHEN mergeW%: 567 IF mergewith$<>"" THEN SYS "Impulse_SendMessage",&200,":"+mergewith$+"."+document$+" Edit On",,,,-1,mytask% 568 merging%=FALSE 569ENDCASE 570PROCclose_window(wi%) 571ENDPROC 572: 573DEF PROChide_windows 574PROCperform_close(mainW%) 575PROCperform_close(keypadW%) 576PROCperform_close(datadicW%) 577PROCperform_close(listW%) 578PROCperform_close(matchW%) 579PROCperform_close(relateW%) 580PROCperform_close(keyW%) 581PROCperform_close(reformW%) 582PROCperform_close(calcW%) 583PROCperform_close(mergeW%) 584PROCperform_close(csvW%) 585ENDPROC 586: 587DEF PROCclose_window(whandle%) 588!block%=whandle% 589SYS "Wimp_CloseWindow",,block% 590ENDPROC 591: 592DEF PROCredraw(handle%) 593LOCAL L% 594L%=LEN(margin$) 595!block%=handle% 596SYS "Wimp_RedrawWindow",,block% TO more% 597PROCget_origin(block%,x0%,y0%) 598WHILE more% 599 PROCdraw(x0%,y0%) 600 IF handle%<>datadicW% THEN SYS "Interface_Render3dWindow",,block% 601 SYS "Wimp_GetRectangle",,block% TO more% 602ENDWHILE 603ENDPROC 604: 605DEF PROCget_origin(block%,RETURN x0%,RETURN y0%) 606x0%=block%!4-block%!20 607y0%=block%!16-block%!24 608ENDPROC 609: 610DEF PROCdraw(x0%,y0%) 611LOCAL TextPtr%,y1%,y2%,I%,chars% 612CASE handle% OF 613 WHEN listW% 614 y1%=-(block%!40-y0%) 615 y2%=-(block%!32-y0%) 616 y1%=y1% DIV 32+1 617 y2%=y2% DIV 32+1 618 TextPtr%=(!textanchor%)+(y1%-1)*LenLine% 619 IF y2%>Count% THEN y2%=Count% 620 FOR I%=y1% TO y2% 621 PROCdraw_line(I%) 622 TextPtr%+=LenLine% 623 NEXT I% 624ENDCASE 625ENDPROC 626: 627DEF PROCdraw_line(Line%) 628MOVE x0%,y0%-(Line%-1)*32-4 629IF TextPtr%?L%=12 THEN ENDPROC 630SYS "OS_WriteN",TextPtr%,LenLine% 631ENDPROC 632: 633REM Menu handling ------------------------------------------------------- 634: 635DEF PROCmake_menus 636LOCAL I% 637menu%(10)=FNcreate_menu(menu_ptr%,260,"Field,Index field...,Analyse months,Global changes>"+STR$(changeW%)+",Link to table...,Combine fields>"+STR$(calcW%)+",Start editing,Clear contents,Warn of delete,Save contents>"+STR$(saveW%)+",Undo changes") 638menic%=menu%(10)+28+(1*24):AnalyseFunc%=menic%!12:menic%!16=-1:menic%!20=14 639menic%=menu%(10)+28+(4*24):CalcFunc%=menic%!12:menic%!16=-1:menic%!20=14 640menu%(13)=FNcreate_menu(menu_ptr%,120,"Interval:,"+STRING$(13,"0")) 641menic%=menu%(13)+28 642Interval%=menic%!12:menic%!16=buff%:$buff%="A0-9":buff%+=5 643?menic%=?menic% OR (1<<2):$Interval%="10 min" 644menu%(12)=FNcreate_menu(menu_ptr%,160,"Save indices,Automatic>"+STR$(menu%(13))+",Warning>"+STR$(menu%(13))+",Manual") 645menu%(2)=FNcreate_menu(menu_ptr%,265,"Validation,Create table...,~Display table,Show table files,Validate input,Show relations") 646PROCtick(menu%(2),3,TRUE) 647PROCtick(menu%(10),7,TRUE) 648menu%(7)=FNcreate_menu(menu_ptr%,260,"Misc.,Batch delete!"+STR$(moveW%)+",Set passwords...,Colours!"+STR$(colW%)+",Save indices>"+STR$(menu%(12))+",Edit template") 649menu%(15)=FNcreate_menu(menu_ptr%,90,"Separator,Comma,TAB,CR,LF,"+STRING$(13,"0")) 650menic%=menu%(15)+28+(4*24) 651Delim%=menic%!12:menic%!16=-1:menic%!20=3 652?menic%=?menic% OR (1<<2):$Delim%="" 653menu%(20)=FNcreate_menu(menu_ptr%,90,"Terminator,CR,LF,LF CR,CR LF,CR CR,LF LF,"+STRING$(13,"0")) 654menic%=menu%(20)+28+(6*24) 655Termin%=menic%!12:menic%!16=-1:menic%!20=3 656?menic%=?menic% OR (1<<2):$Termin%="" 657string$="Print,Match,Show resources,Show jobs done,Options...,Save options!"+STR$(saveW%)+",Save query!"+STR$(saveW%)+",~Numeric fields>"+STR$(pselectW%)+",~Save selection!"+STR$(saveW%)+",~Clear selection" 658menu%(6)=FNcreate_menu(menu_ptr%,260,string$+",Select all") 659string$="Powerbase,Information!"+STR$(miscW%)+",Field: ''>"+STR$(menu%(10))+",Print>"+STR$(menu%(6))+",Validation>"+STR$(menu%(2)) 660string2$=",Current key...,Miscellaneous>"+STR$(menu%(7))+",Show keypad,Export subset!"+STR$(savesubW%)+",Export CSV!"+STR$(savesubW%)+",CSV options...,Save choices,Undo changes,Help" 661menu%(1)=FNcreate_menu(menu_ptr%,236,string$+string2$) 662Fieldpos%=menu%(1)+28+(1*24)+12 663menu%(4)=FNcreate_menu(menu_ptr%,200,"Print tree,Complete,Totals only") 664menu%(22)=FNcreate_menu(menu_ptr%,120,"Every:,"+STRING$(13,"0")) 665menic%=menu%(22)+28 666Every%=menic%!12:menic%!16=buff%:$buff%="A0-9":buff%+=5 667?menic%=?menic% OR (1<<2):$Every%="25 recs" 668menu%(21)=FNcreate_menu(menu_ptr%,160,"Balance,Automatic>"+STR$(menu%(22))+",Right now") 669menu%(3)=FNcreate_menu(menu_ptr%,300,"Utilities,New primary key...,Adjust format,New record format,Merge database,~Change length>"+STR$(sizeW%)+",Balance index>"+STR$(menu%(21))+",Print index>"+STR$(menu%(4))+",Find duplicates,Warn of duplicates") 670menu%(0)=FNcreate_menu(menu_ptr%,266,"\Powerbase,Information>"+STR$(infoW%)+",New database!"+STR$(saveW%)+",~Utilities>"+STR$(menu%(3))+",~Close database,~Abandon database,Save choices,Default choices,Help,Quit") 671menu%(9)=FNcreate_menu(menu_ptr%,270,"New database,Design field...,~_Default database,~Save form file!"+STR$(saveW%)+",~Database size>"+STR$(sizeW%)+",~Primary key...,~Quit design") 672menu%(17)=FNcreate_menu(menu_ptr%,200,"Table,Clear,Save!"+STR$(saveW%)+",Print,Sort,Undo change,Undo all") 673menu%(18)=FNcreate_menu(menu_ptr%,250,"List,Save as text!"+STR$(saveW%)+",Sort,Scrap") 674menu$="Data" 675FOR I%=0 TO 8 676 menu$+=","+vname$(I%) 677NEXT I% 678menu%(8)=FNcreate_menu(menu_ptr%,200,menu$):PROCtick(menu%(8),1,TRUE) 679menu$="External" 680FOR I%=36 TO 40 681 menu$+=","+vname$(I%) 682NEXT I% 683menu%(11)=FNcreate_menu(menu_ptr%,180,menu$):PROCtick(menu%(11),0,TRUE) 684menu$="Check box" 685FOR I%=41 TO 45 686 menu$+=","+vname$(I%) 687NEXT I% 688menu%(14)=FNcreate_menu(menu_ptr%,180,menu$):PROCtick(menu%(14),0,TRUE) 689menu$="Stamp" 690FOR I%=46 TO 59 691 menu$+=","+vname$(I%) 692NEXT I% 693menu%(16)=FNcreate_menu(menu_ptr%,250,menu$):PROCtick(menu%(16),0,TRUE) 694menu$="Button" 695FOR I%=9 TO 35 696 menu$+=","+vname$(I%) 697NEXT I% 698menu%(19)=FNcreate_menu(menu_ptr%,270,menu$):PROCtick(menu%(19),0,TRUE) 699ybar%=96+9*44 700ENDPROC 701: 702DEF PROCfield_menu(menu%,N%) 703LOCAL F%,P%,L%,D$,F$ 704$menu%="Field list" 705menu%?12=7:menu%?13=2:menu%?14=7:menu%?15=0:menu%!16=270:menu%!20=44:menu%!24=0 706P%=menu%+28 707FOR F%=1 TO N% 708 F$=STR$(F%):F$=STRING$(3-LEN(F$)," ")+F$ 709 D$=LEFT$($FNtext(mainW%,desc%(F%)),7):D$+=STRING$(7-LEN(D$)," ") 710 F$+=" "+D$+" "+Tag$(F%):L%=LEN(F$) 711 !P%=0:P%!4=-1:P%!8=&7000121:P%!12=buff%:P%!16=-1:P%!20=L%+1 712 $buff%=F$:buff%+=L%+1 713 P%+=24 714NEXT F% 715P%!-24=P%!-24 OR &80 716ENDPROC 717: 718DEF FNcreate_menu(RETURN menu%,width%,list$) 719LOCAL start%,choice$,entries%,item%,P%,Q%,S%,shaded% 720start%=menu% 721IF LEFT$(list$,1)="\" AND (RISCOS3=FALSE OR leftmenu%=FALSE) THEN list$=MID$(list$,2) 722P%=INSTR(list$,",") 723$menu%=LEFT$(list$,P%-1) 724menu%?12=7:menu%?13=2 725menu%?14=7:menu%?15=0 726menu%!16=width%:menu%!20=44:menu%!24=0 727item%=menu%+28 728list$+="," 729entries%=0 730REPEAT 731 Q%=P%+1 732 P%=INSTR(list$,",",Q%) 733 IF P%>0 THEN 734 !item%=0:shaded%=0 735 choice$=MID$(list$,Q%,P%-Q%) 736 IF LEFT$(choice$,1)="~" THEN choice$=MID$(choice$,2):shaded%=(1<<22) 737 IF LEFT$(choice$,1)="_" THEN choice$=MID$(choice$,2):?item%=?item% OR 2 738 S%=INSTR(choice$,"!") 739 IF S%>0 THEN ?item%=?item% OR 8:MID$(choice$,S%,1)=">" 740 S%=INSTR(choice$,">") 741 IF S%=0 THEN 742 item%!4=-1 743 ELSE 744 item%!4=VAL(MID$(choice$,S%+1)) 745 choice$=LEFT$(choice$,S%-1) 746 ENDIF 747 IF LEN(choice$)<=12 THEN 748 $(item%+12)=choice$ 749 item%!8=&7000021 750 ELSE 751 L%=LEN(choice$)+1 752 item%!12=buff%:$buff%=choice$:buff%+=L%:item%!16=-1:item%!20=L% 753 item%!8=&7000121 754 ENDIF 755 item%!8=item%!8 OR shaded% 756 item%+=24 757 entries%+=1 758 ENDIF 759UNTIL P%=0 760item%!-24=item%!-24 OR &80 761menu%=item% 762IF menu%>men_end% THEN ERROR EXT 0,"Not enough room for menus (internal error code 50)" 763=start% 764: 765DEF PROCtick(menu%,item%,on%) 766item%=menu%+28+item%*24 767CASE on% OF 768 WHEN TRUE:?item%=?item% OR 1 769 WHEN FALSE:?item%=?item% AND 254 770ENDCASE 771ENDPROC 772: 773DEF PROCtick_one(menu%,first%,last%,item%) 774LOCAL I% 775FOR I%=first% TO last% 776 PROCtick(menu%,I%,(I%=item%)) 777NEXT I% 778ENDPROC 779: 780DEF FNticked(menu%,item%) 781item%=menu%+28+item%*24 782IF (?item% AND 1) THEN=TRUE ELSE=FALSE 783: 784DEF PROClit(menu%,item%,on%) 785item%=menu%+28+item%*24 786CASE on% OF 787 WHEN TRUE: item%!8=item%!8 AND NOT (1<<22) 788 WHEN FALSE: item%!8=item%!8 OR (1<<22) 789ENDCASE 790ENDPROC 791: 792DEF PROCshow_menu(menu%,x%,y%) 793menuhandle%=menu%:menux%=x%:menuy%=y% 794SYS "Wimp_CreateMenu",,menu%,x%,y% 795ENDPROC 796: 797REM Icon handling ------------------------------------------------------- 798: 799DEF FNcreate_icon(whandle%,xmin%,ymin%,width%,height%,iconflags%,text$,d1%,d2%,d3%) 800LOCAL handle% 801block%!0=whandle% 802block%!4=xmin%:block%!8=ymin% 803block%!12=xmin%+width%:block%!16=ymin%+height% 804block%!20=iconflags% 805IF d1%=0 THEN 806 $(block%+24)=text$ 807 ELSE 808 block%!24=d1% 809 block%!28=d2% 810 block%!32=d3% 811ENDIF 812SYS "Wimp_CreateIcon",,block% TO handle% 813=handle% 814: 815DEF PROCredraw_icon(wi%,ic%) 816!block%=wi%:block%!4=ic% 817block%!8=0:block%!12=0 818SYS "Wimp_SetIconState",,block% 819block%!8=0:block%!12=wi%:block%!16=ic% 820ENDPROC 821: 822DEF PROCicon_bit(bit%,wi%,ic%,on%) 823!block%=wi% 824block%!4=ic% 825CASE on% OF 826 WHEN TRUE:block%!8=0:block%!12=1<<bit% 827 WHEN FALSE:block%!8=1<<bit%:block%!12=1<<bit% 828ENDCASE 829SYS "Wimp_SetIconState",,block% 830ENDPROC 831: 832DEF PROCselect(wi%,ic%) 833!block%=wi%:block%!4=ic% 834block%!8=1<<21:block%!12=1<<21 835SYS "Wimp_SetIconState",,block% 836ENDPROC 837: 838DEF PROCdeselect(wi%,ic%) 839!block%=wi%:block%!4=ic% 840block%!8=0:block%!12=(1<<21) 841SYS "Wimp_SetIconState",,block% 842ENDPROC 843: 844DEF PROCinvert(wi%,ic%) 845IF FNselected(wi%,ic%) THEN PROCdeselect(wi%,ic%) ELSE PROCselect(wi%,ic%) 846ENDPROC 847: 848DEF PROCset_icon(wi%,ic%,on%) 849IF on% THEN PROCselect(wi%,ic%) ELSE PROCdeselect(wi%,ic%) 850ENDPROC 851: 852DEF FNselected(wi%,ic%) 853!block%=wi%:block%!4=ic% 854SYS "Wimp_GetIconState",,block% 855=((block%!24) AND (1<<21))>0 856: 857DEF FNshaded(wi%,ic%) 858!block%=wi%:block%!4=ic% 859SYS "Wimp_GetIconState",,block% 860=((block%!24) AND (1<<22))>0 861; 862DEF FNselected_esg(wi%,esg%) 863SYS "Wimp_WhichIcon",wi%,block%,&003F0000,&00200000+(esg%<<16) 864=!block% 865: 866DEF FNnext_writeable(wi%,ic%,d%,r%) 867LOCAL P%,E%,next% 868SYS "Wimp_WhichIcon",wi%,block%,&00C0E000,(14<<12) 869REPEAT 870 E%+=4 871UNTIL block%!E%=-1 872WHILE block%!P%<>ic% AND P%<E% 873 P%+=4 874ENDWHILE 875IF P%=E% THEN P%-=4 876IF r%=1 AND P%+4=E% THEN=TRUE 877CASE d% OF 878 WHEN 0:P%=E% 879 WHEN 2:P%=-4 880 OTHERWISE:P%+=4*d% 881ENDCASE 882CASE P% OF 883 WHEN E%:next%=!block% 884 WHEN -4:next%=block%!(E%-4) 885 OTHERWISE:next%=block%!P% 886ENDCASE 887PROCset_caret(wi%,next%) 888=FALSE 889: 890DEF FNtext(wi%,ic%) 891!block%=wi%:block%!4=ic% 892SYS "Wimp_GetIconState",,block% 893=block%!28 894: 895DEF FNval(wi%,ic%) 896!block%=wi%:block%!4=ic% 897SYS "Wimp_GetIconState",,block% 898=block%!32 899: 900DEF FNtext_length(wi%,ic%) 901!block%=wi%:block%!4=ic% 902SYS "Wimp_GetIconState",,block% 903=LEN($(block%!28)) 904: 905DEF PROCset_caret(handle%,ic%) 906IF ic%=-1 THEN 907 SYS "Wimp_SetCaretPosition",handle%,ic% 908 ELSE 909 SYS "Wimp_SetCaretPosition",handle%,ic%,0,0,-1,FNtext_length(handle%,ic%) 910ENDIF 911ENDPROC 912: 913DEF PROCalter_flags(dfg%,ffg%,bfg%) 914LOCAL ic%,F% 915!block%=mainW% 916FOR ic%=0 TO fields%*2-1 917 F%=(ic%+1) DIV 2 918 block%!4=ic%:SYS "Wimp_GetIconState",,block% 919 IF (ic% MOD 2)=1 THEN 920 CASE chartype%(F%) OF 921 WHEN 0,1,2,3,4,5,6,7,8,40,46,47,48,49,50,51,52,53,54,55,56,57,58:block%!8=ffg% 922 WHEN 39:block%!8=ffg%:len%(F%)=0 923 WHEN 59:IF logosloaded% THEN block%!8=&0000611E ELSE block%!8=ffg% 924 OTHERWISE:block%!8=bfg% 925 ENDCASE 926 ELSE block%!8=dfg% 927 ENDIF 928 block%!12=&FFFFFFFF 929 SYS "Wimp_SetIconState",,block% 930NEXT ic% 931ENDPROC 932: 933DEF PROClimit_actions(off%) 934LOCAL ic% 935RESTORE +0 936READ ic% 937REPEAT 938 PROCicon_bit(22,keypadW%,ic%,off%) 939 IF buttonfield%(ic%)>0 THEN PROCicon_bit(22,mainW%,field%(buttonfield%(ic%)),off%) 940 READ ic% 941UNTIL ic%=-1 942PROClit(menu%(10),0,off%) 943PROClit(menu%(10),1,off%) 944PROClit(menu%(10),2,off%) 945: 946DATA 12,14,15,16,17,18,20,21,22,-1 947: 948ENDPROC 949: 950DEF PROCidentify_field(ic%) 951Fieldnumber%=0:Fieldname$="":TextLength%=0 952IF (ic% MOD 2)=1 THEN 953 !block%=mainW%:block%!4=ic% 954 SYS "Wimp_GetIconState",,block% 955 TextLength%=block%!36-1 956 Fieldnumber%=(ic%+1) DIV 2 957 Fieldname$=$FNtext(mainW%,desc%(Fieldnumber%)) 958 IF Fieldname$="" THEN Fieldname$=Tag$(Fieldnumber%) 959 CASE chartype%(Fieldnumber%) OF 960 WHEN 2,4:SYS "OS_Byte",202,0,239 961 OTHERWISE:SYS "OS_Byte",202,16,111 962 ENDCASE 963 SYS "OS_Byte",118 964ENDIF 965ENDPROC 966: 967DEF FNfirst_field 968LOCAL I% 969REPEAT I%+=1 970UNTIL (len%(I%)>0 AND chartype%(I%)<6) OR I%>fields% 971IF I%>fields% THEN=0 ELSE=I% 972: 973REM Mouse_click processing ---------------------------------------------- 974: 975DEF PROCmouse(x%,y%,b%,wi%,ic%) 976oldx%=x%:oldy%=y% 977block%!0=x%:block%!4=y%:block%!8=b%:block%!12=wi%:block%!16=ic% 978IF (b% AND 2)<>2 AND NOT (design% AND (wi%=mainW%)) THEN SYS "Interface_SlabButton",,block% 979CASE wi% OF 980 WHEN -2:PROCiconbar_click 981 WHEN accessW%:accessbutton%=ic% 982 WHEN mainW%:PROCmain_click 983 WHEN keypadW%:PROCkeypad_click(wi%,ic%,b%) 984 WHEN saveW%,savesubW%:PROCsave_click(wi%,ic%,b%) 985 WHEN keyW%:PROCkey_click 986 WHEN tableW%:PROCcreate_table 987 WHEN linkW%:PROClink_to_table 988 WHEN passW%:PROCpasswords 989 WHEN printW%:PROCprint_click 990 WHEN matchW%:PROCmatch_click(b%,wi%,ic%) 991 WHEN createW%:PROCcreate_click 992 WHEN datadicW%:PROCdatadic_click 993 WHEN changeW%:PROCchange_click 994 WHEN moveW%:PROCmove_click 995 WHEN listW%:PROClist_click(x%,y%,b%,wi%) 996 WHEN colW%:PROCset_colours 997 WHEN calcW%:IF ic%=1 THEN PROCcalc_formula($CalcForm%) 998 WHEN labelW%: 999 CASE ic% OF 1000 WHEN 11:PROCicon_bit(22,labelW%,12,FNselected(labelW%,11)) 1001 WHEN 15:SYS "Wimp_CreateMenu",,-1 1002 ENDCASE 1003 WHEN mergeW%:PROCmerge_click 1004 WHEN sizeW%:PROCsize_click 1005 WHEN csvW%:PROCcsv_click 1006 WHEN pselectW%,relateW%,reformW%,infoW%,miscW%:REM ### No action on these ### 1007 OTHERWISE:PROCspecial_click 1008ENDCASE 1009block%!8=0:block%!12=wi%:block%!16=ic% 1010SYS "Interface_SlabButton",,block% 1011ENDPROC 1012: 1013DEF PROCchange_click 1014IF (b% AND %111)=4 THEN 1015 CASE ic% OF 1016 WHEN 4:PROCchanges(key%) 1017 WHEN 5:PROCcommoncase(wi%,ic%) 1018 ENDCASE 1019ENDIF 1020ENDPROC 1021: 1022DEF PROCmove_click 1023IF (b% AND %111)=4 THEN 1024 CASE ic% OF 1025 WHEN 8:PROCclear 1026 WHEN 9:PROCcommoncase(wi%,ic%) 1027 ENDCASE 1028ENDIF 1029ENDPROC 1030: 1031DEF PROCcsv_click 1032CASE (b% AND %111) OF 1033 WHEN 2,4: 1034 CASE ic% OF 1035 WHEN 5:PROCshow_menu(menu%(15),oldx%+32,oldy%) 1036 WHEN 6:PROCshow_menu(menu%(20),oldx%+32,oldy%) 1037 ENDCASE 1038ENDCASE 1039CASE (b% AND %111) OF 1040 WHEN 4: 1041 CASE ic% OF 1042 WHEN 1:PROCicon_bit(22,csvW%,4,(FNselected(csvW%,1))) 1043 WHEN 9:PROCconvert_csv($FNtext(csvW%,13)) 1044 WHEN 10:PROCclose_window(csvW%) 1045 ENDCASE 1046ENDCASE 1047ENDPROC 1048: 1049DEF PROCmerge_click 1050IF (b% AND %111)=4 THEN z%=1 ELSE z%=-1 1051CASE ic% OF 1052 WHEN 4:ClientPtr%=FNmerge_next(ClientPtr%,z%) 1053 WHEN 9:ClientPtr%=FNmerge_next(ClientPtr%,-z%) 1054 WHEN 11:ClientPtr%=FNmerge_next(top,z%) 1055 WHEN 10:ClientPtr%=FNmerge_next(top,-z%) 1056 WHEN 12:PROCcommoncase(wi%,ic%) 1057 WHEN 5: 1058 SYS "Impulse_SendMessage",&201,":"+mergewith$+"."+document$+" Print",,,,printtag%,mytask% 1059 WHEN 7: 1060 mergenum%=0 1061 ClientSearch$=FNparse($FNtext(mergeW%,3),FNselected(mergeW%,12)) 1062 ClientPtr%=FNmerge_next(top,1) 1063 WHEN 8:PROCperform_close(mergeW%) 1064ENDCASE 1065ENDPROC 1066: 1067DEF PROCsize_click 1068CASE TRUE OF 1069 WHEN VAL($Records%)<=0: 1070 PROCsofterror("",71) 1071 $Records%="100":PROCredraw_icon(sizeW%,1) 1072 WHEN VAL($Increment%)<0 1073 PROCsofterror("",72) 1074 $Increment%="25":PROCredraw_icon(sizeW%,3) 1075 OTHERWISE: 1076 IF present%=7 THEN PROCchange_length(VAL($Records%),TRUE) 1077 SYS "Wimp_CreateMenu",,-1 1078ENDCASE 1079ENDPROC 1080: 1081DEF PROCdatadic_click 1082CASE b% AND %111 OF 1083 WHEN 4: 1084 !block%=datadicW%:SYS "Wimp_GetWindowState",,block% 1085 SYS "Wimp_SetCaretPosition",datadicW%,ic%,x%-block%!4+block%!20,y%,-1,-1 1086 WHEN 2:PROCshow_menu(menu%(17),x%-64,y%-20) 1087 WHEN 1: 1088 IF ic%>=0 THEN 1089 field%=(ic% MOD (TabFields%+1)) 1090 PROCinvert(wi%,field%) 1091 field$=STR$(field%) 1092 IF FNselected(wi%,field%) THEN 1093 printrel$(Tablenumber%)+=field$ 1094 ELSE 1095 P%=INSTR(printrel$(Tablenumber%),field$) 1096 printrel$(Tablenumber%)=LEFT$(printrel$(Tablenumber%),P%-1)+MID$(printrel$(Tablenumber%),P%+1) 1097 ENDIF 1098 ENDIF 1099ENDCASE 1100ENDPROC 1101: 1102DEF PROClist_click(x%,y%,b%,wi%) 1103LOCAL N% 1104CASE (b% AND %111) OF 1105 WHEN 2:PROCshow_menu(menu%(18),x%-64,y%-20) 1106 WHEN 4: 1107 !block%=wi% 1108 SYS "Wimp_GetWindowState",,block% 1109 line%=(block%!16-block%!24-y%+32) DIV 32 1110 column%=(x%-block%!4+block%!20) DIV 16 1111 RecPtr%=!recanchor% 1112 R%=RecPtr%!(line%*4) 1113 E%=LEN(Form$) DIV 2 1114 IF R%>=0 THEN 1115 addr=FNfind("#"+STR$(R%),key%,1,TRUE) 1116 CASE format$ OF 1117 WHEN "horiz","table" 1118 REPEAT 1119 N%+=1 1120 UNTIL Tab%(N%)>column%+1 OR N%=E% 1121 F%=FNfnum(MID$(Form$,N%*2-1,2)) 1122 WHEN "vert": 1123 REPEAT 1124 N%+=1:line%-=1 1125 UNTIL RecPtr%!(line%*4)<>R% OR N%=E% 1126 F%=FNfnum(MID$(Form$,N%*2-1,2)) 1127 WHEN "tree":F%=KF%(tkey%,0) 1128 WHEN "dup":F%=KF%(0,0) 1129 ENDCASE 1130 IF chartype%(F%)<=10 THEN PROCset_caret(mainW%,field%(F%)) 1131 Fieldnumber%=F% 1132 ENDIF 1133ENDCASE 1134ENDPROC 1135: 1136DEF PROCmatch_click(b%,wi%,ic%) 1137LOCAL not%,and%,or% 1138IF b%=2 THEN PROCshow_menu(menu%(1),x%-64,y%-20):ENDPROC 1139CASE FNselected_esg(printW%,4) OF 1140 WHEN 38:reportdest$="Window" 1141 WHEN 39:reportdest$="File" 1142 WHEN 41:reportdest$="Printer" 1143ENDCASE 1144CASE ic% OF 1145 WHEN 16:PROCcommoncase(wi%,ic%) 1146 WHEN 27: 1147 IF FNselected(matchW%,27) THEN $FNtext(matchW%,25)="Number found" ELSE $FNtext(matchW%,25)="Time taken" 1148 PROCredraw_icon(matchW%,25) 1149 WHEN 1,24: 1150 IF ic%=24 THEN Search$="":displayed%=TRUE ELSE Search$=FNparse($FNtext(matchW%,0),FNselected(matchW%,16)):displayed%=FALSE 1151 IF Search$<>"FALSE" THEN 1152 $FNtext(matchW%,14)="" 1153 PROCredraw_icon(matchW%,14) 1154 CASE reportdest$ OF 1155 WHEN "Window","Printer":PROCdo_it(Search$,displayed%) 1156 WHEN "File": 1157 savefunc$="Save list" 1158 $SaveName%=$database%+".PrintJobs.List" 1159 $SaveSprite%="sfile_fff;Pptr_hand,12,8;B3" 1160 !block%=matchW%:SYS "Wimp_GetWindowState",,block% 1161 xmin%=block%!4+200:ymax%=block%!16 1162 !block%=saveW%:SYS "Wimp_GetWindowState",,block% 1163 block%!12=xmin%+block%!12-block%!4:block%!4=xmin% 1164 block%!8=ymax%-block%!16+block%!8:block%!16=ymax% 1165 block%!28=-1:SYS "Wimp_OpenWindow",,block% 1166 PROCset_caret(saveW%,0) 1167 ENDCASE 1168 ENDIF 1169 IF (b% AND %111)=4 AND NOT FNselected(matchW%,27) THEN PROCclose_window(matchW%):PROCset_caret(mainW%,-1) 1170 WHEN 21,22: 1171 IF (b% AND %111)=4 THEN z%=1 ELSE IF (b% AND %111)=1 THEN z%=-1 1172 IF ic%=21 THEN Match_tag%+=z% ELSE Match_tag%-=z% 1173 IF Match_tag%>fields% THEN Match_tag%=1 1174 IF Match_tag%<1 THEN Match_tag%=fields% 1175 $FNtext(matchW%,3)=Tag$(Match_tag%) 1176 PROCredraw_icon(matchW%,3) 1177 PROCtick_one(fieldmenu%,0,fields%-1,Match_tag%-1) 1178 WHEN 26:PROCshow_menu(fieldmenu%,oldx%+32,oldy%) 1179 WHEN 10: 1180 op%=FNselected_esg(matchW%,1) 1181 CASE op% OF 1182 WHEN 5:op$="=" 1183 WHEN 6:op$="{" 1184 WHEN 7:op$="<" 1185 WHEN 8:op$=">" 1186 WHEN 15:op$="<>" 1187 WHEN 18:op$=">=" 1188 WHEN 19:op$="<=" 1189 WHEN 20:op$="}{" 1190 ENDCASE 1191 not%=FNselected(matchW%,4):PROCdeselect(matchW%,4) 1192 and%=FNselected(matchW%,12):PROCdeselect(matchW%,12) 1193 or%=FNselected(matchW%,13):PROCdeselect(matchW%,13) 1194 tag$=$FNtext(matchW%,3) 1195 contents$=$FNtext(matchW%,9) 1196 new$=tag$+op$+contents$ 1197 IF not% THEN new$="NOT ("+new$+")" 1198 IF and% THEN new$+=" AND " 1199 IF or% THEN new$+=" OR " 1200 $FNtext(matchW%,0)=$FNtext(matchW%,0)+new$:PROCredraw_icon(matchW%,0) 1201 $FNtext(matchW%,9)="":PROCredraw_icon(matchW%,9) 1202 WHEN 24:reportdest$="Window":PROCdo_it("",TRUE) 1203 IF (b% AND %111)=4 AND NOT FNselected(matchW%,27) THEN PROCclose_window(matchW%):PROCset_caret(mainW%,-1) 1204ENDCASE 1205ENDPROC 1206: 1207DEF PROCiconbar_click 1208CASE b% AND %111 OF 1209 WHEN 2: 1210 IF FNselected(passW%,12) THEN 1211 PROCclose_window(saveW%) 1212 PROCshow_menu(menu%(0),x%-64,ybar%) 1213 ENDIF 1214 WHEN 4: 1215 IF $dbase%="No data" THEN 1216 $SaveName%="!DataBase" 1217 $SaveSprite%="snew_appl;Pptr_hand,12,8;B3" 1218 savefunc$=choice$(1) 1219 SYS "Wimp_CreateMenu",,saveW%,x%-50,y%+300 1220 ELSE PROCshow_windows 1221 ENDIF 1222ENDCASE 1223ENDPROC 1224: 1225DEF PROCmain_click 1226LOCAL P%,F%,H$,L%,T%,N$,field$ 1227IF present%=7 AND adjust%=FALSE THEN IF FNvalidate(Fieldnumber%,T%,N$)=FALSE THEN ENDPROC ELSE PROCupdate_calcs(Fieldnumber%) 1228IF flash% THEN PROCdeselect(mainW%,field%(flash%)):flash%=FALSE 1229CASE present% OF 1230 WHEN 0,3:PROCdesign_field 1231 WHEN 1: 1232 IF FNfirst_field>0 THEN PROCdefault_key 1233 PROCdesign_field 1234 WHEN 5,7: 1235 IF adjust% THEN 1236 PROCdesign_field 1237 ELSE 1238 PROCidentify_field(ic%) 1239 IF relations%=TRUE THEN PROCrelations(FALSE) 1240 CASE b% AND 2047 OF 1241 WHEN 2: 1242 IF FNselected(passW%,11) OR Modify% THEN 1243 PROCset_up_field_menu 1244 PROCshow_menu(menu%(1),x%-64,y%-20) 1245 ENDIF 1246 WHEN 1: 1247 CASE chartype%(Fieldnumber%) OF 1248 WHEN 41,42,43,44,45: 1249 PROCinvert(wi%,ic%) 1250 col%=FNget_icon_cols(wi%,ic%) 1251 col%=((col%>>4) OR (col%<<4)) AND %11111111 1252 PROCset_icon_cols(wi%,ic%,col%) 1253 boxon%=((col% AND %1111)<2) 1254 PROCupdate_selection(boxon%) 1255 ENDCASE 1256 WHEN 4: 1257 CASE chartype%(Fieldnumber%) OF 1258 WHEN 31:PROCfilter(mainW%,field%(buttonfield%(22))) 1259 WHEN 41,42,43,44,45: 1260 IF INKEY(-3) THEN PROCinvert(wi%,ic%) 1261 IF FNselected(wi%,ic%) THEN $Rf%(Fieldnumber%)=" " ELSE $Rf%(Fieldnumber%)="" 1262 OTHERWISE:PROCrelations(TRUE) 1263 ENDCASE 1264 WHEN 256: 1265 CASE chartype%(Fieldnumber%) OF 1266 WHEN 0,1,2,3,4,5,6,7,8,36,39,46,47,48,49,50,51,52,53,54,55,56,57: 1267 PROCinvert(wi%,ic%) 1268 PROCupdate_selection(FNselected(wi%,ic%)) 1269 WHEN 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30:PROCkeypad_click(wi%,chartype%(Fieldnumber%)-9,1) 1270 ENDCASE 1271 WHEN 1024: 1272 IF INKEY(-3) THEN 1273 SYS "Wimp_GetCaretPosition",,block% 1274 wi%=!block%:ic%=block%!4 1275 CASE wi% OF 1276 WHEN matchW%:IF ic%<>0 THEN wi%=0 1277 WHEN keypadW%:IF ic%<>29 THEN wi%=0 1278 WHEN mergeW%:IF ic%<>3 THEN wi%=0 1279 OTHERWISE:wi%=0 1280 ENDCASE 1281 IF wi%<>0 THEN 1282 $FNtext(wi%,ic%)+=Tag$(Fieldnumber%) 1283 PROCset_caret(wi%,ic%) 1284 PROCredraw_icon(wi%,ic%) 1285 ENDIF 1286 ELSE 1287 CASE chartype%(Fieldnumber%) OF 1288 WHEN 0,1,2,3,4,5,8: 1289 IF Fieldnumber%>0 THEN 1290 !block%=mainW%:SYS "Wimp_GetWindowState",,block% 1291 IF Access% THEN SYS "Wimp_SetCaretPosition",mainW%,ic%,x%-block%!4+block%!20,y%,-1,-1 1292 ENDIF 1293 WHEN 35:IF LEFT$(link$(Fieldnumber%),1)="@" THEN SYS "OS_CLI","Filer_OpenDir "+MID$(link$(Fieldnumber%),2) ELSE PROCsofterror("",91) 1294 WHEN 36,37,38:PROCedit_blob(REC%,Fieldnumber%,chartype%(Fieldnumber%)) 1295 WHEN 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30:PROCkeypad_click(wi%,chartype%(Fieldnumber%)-9,4) 1296 WHEN 32:PROCmatch 1297 WHEN 33:PROCexit(0) 1298 WHEN 34:quit%=TRUE 1299 ENDCASE 1300 ENDIF 1301 ENDCASE 1302 ENDIF 1303ENDCASE 1304ENDPROC 1305: 1306DEF PROCset_up_field_menu 1307LOCAL I% 1308PROCtick_one(menu%(5),0,LastTable%,LastTable%+1) 1309IF Fieldnumber%>0 THEN 1310 PROClit(menu%(1),1,TRUE) 1311 $AnalyseFunc%="Analyse" 1312 $Fieldpos%="Field: "+Tag$(Fieldnumber%) 1313 $LinkTitle%=Fieldname$ 1314 $CalcForm%=Tag$(Fieldnumber%)+"=" 1315 FOR I%=0 TO 9 1316 PROClit(menu%(10),I%,FALSE) 1317 NEXT I% 1318 V%=chartype%(Fieldnumber%) 1319 CASE V% OF 1320 WHEN 5,50,51: 1321 isadate%=TRUE:PROClit(menu%(10),1,TRUE) 1322 $AnalyseFunc%="Analyse months" 1323 OTHERWISE:isadate%=FALSE 1324 ENDCASE 1325 IF FNis_a_key(Fieldnumber%)>=0 THEN 1326 PROClit(menu%(10),1,TRUE) 1327 IF isadate%=FALSE OR NOT FNselected(mainW%,field%(Fieldnumber%)) THEN $AnalyseFunc%="Analyse index" 1328 ENDIF 1329 CASE V% OF 1330 WHEN 0,1,2,3,4,5: 1331 PROClit(menu%(10),0,Access%) 1332 PROClit(menu%(10),2,Access%) 1333 PROClit(menu%(10),3,Access%) 1334 PROClit(menu%(10),5,Access%) 1335 PROClit(menu%(10),9,Access%) 1336 Keyfld0%=Fieldnumber%:Keyfld1%=0:$F2dkey%="" 1337 $F1dkey%=Tag$(Fieldnumber%) 1338 keylimit%=TextLength%:$KeyNo%="" 1339 WD%()=0:WD%(0)=keylimit%:keylen%=keylimit% 1340 FOR J%=0 TO 3 1341 $Wkey%(J%)=STR$(WD%(J%)) 1342 NEXT J% 1343 $ChangeTitle%="Field: "+Fieldname$ 1344 $FNtext(changeW%,1)="" 1345 IF NOT common% THEN $FNtext(changeW%,3)="" 1346 PROClink_status 1347 WHEN 6: 1348 PROClit(menu%(10),4,Modify%) 1349 PROClit(menu%(10),3,Access%) 1350 PROCcalc_link("Calculations",6) 1351 PROClink_status 1352 WHEN 7: 1353 PROClit(menu%(10),4,Modify%) 1354 PROClit(menu%(10),3,Access%) 1355 PROCcalc_link("Combine fields",7) 1356 PROClink_status 1357 WHEN 46,47,48,49,50,51,52,53,54,55,56,57: 1358 IF V%=47 THEN 1359 PROClit(menu%(10),4,Modify%) 1360 PROCcalc_link("Set base value",47) 1361 ENDIF 1362 PROClit(menu%(10),0,Access%) 1363 Keyfld0%=Fieldnumber%:Keyfld1%=0:$F2dkey%="" 1364 IF Fieldname$<>Tag$(Fieldnumber%) THEN $F1dkey%=LEFT$(Fieldname$,8)+" ("+Tag$(Fieldnumber%)+")" ELSE $F1dkey%=Fieldname$ 1365 keylimit%=TextLength%:$KeyNo%="" 1366 WD%()=0:WD%(0)=keylimit%:keylen%=keylimit% 1367 FOR J%=0 TO 3 1368 $Wkey%(J%)=STR$(WD%(J%)) 1369 NEXT J% 1370 WHEN 36,39: 1371 IF FNblob_path(FALSE,$database%,REC%,Fieldnumber%,V%,object$)>=0 THEN 1372 PROClit(menu%(10),6,Access%) 1373 PROClit(menu%(10),7,TRUE) 1374 PROClit(menu%(10),8,TRUE) 1375 $SaveName%="TextFile" 1376 $SaveSprite%="sfile_fff;Pptr_hand,12,8;B3" 1377 savefunc$="Save text" 1378 ENDIF 1379 WHEN 37,40: 1380 IF FNblob_path(FALSE,$database%,REC%,Fieldnumber%,V%,object$)>=0 THEN 1381 PROClit(menu%(10),6,Access%) 1382 PROClit(menu%(10),7,TRUE) 1383 PROClit(menu%(10),8,TRUE) 1384 $SaveName%="Sprite" 1385 $SaveSprite%="sfile_ff9;Pptr_hand,12,8;B3" 1386 savefunc$="Save sprite" 1387 ENDIF 1388 WHEN 38: 1389 IF FNblob_path(FALSE,$database%,REC%,Fieldnumber%,V%,object$)>=0 THEN 1390 PROClit(menu%(10),6,Access%) 1391 PROClit(menu%(10),7,TRUE) 1392 PROClit(menu%(10),8,TRUE) 1393 $SaveName%="DrawFile" 1394 $SaveSprite%="sfile_aff;Pptr_hand,12,8;B3" 1395 savefunc$="Save draw" 1396 ENDIF 1397 ENDCASE 1398 ELSE PROClit(menu%(1),1,FALSE):$Fieldpos%="Field: ''" 1399ENDIF 1400ENDPROC 1401: 1402DEF PROCupdate_selection(add%) 1403LOCAL P%,SP%,F%,SF% 1404F%=Fieldnumber%:SF%=(F% OR 128) 1405field$=STR$~(F%):IF F%<16 THEN field$="0"+field$ 1406sfield$=STR$~(SF%):IF SF%<16 THEN sfield$="0"+sfield$ 1407IF add% THEN 1408 IF INKEY(-1) THEN printorder$+=sfield$ ELSE printorder$+=field$ 1409 PROCenable_row(calcrow%?Fieldnumber%,TRUE) 1410 PROClit(menu%(6),7,TRUE) 1411 PROClit(menu%(6),8,TRUE) 1412 ELSE 1413 REPEAT 1414 P%=INSTR(printorder$,field$,P%+1) 1415 UNTIL ((P%-1) MOD 2)=0 OR P%=0 1416 IF P%>0 THEN 1417 printorder$=LEFT$(printorder$,P%-1)+MID$(printorder$,P%+2) 1418 PROCenable_row(calcrow%?Fieldnumber%,FALSE) 1419 ELSE 1420 REPEAT 1421 SP%=INSTR(printorder$,sfield$,SP%+1) 1422 UNTIL ((SP%-1) MOD 2)=0 OR SP%=0 1423 IF SP%>0 THEN 1424 printorder$=LEFT$(printorder$,SP%-1)+MID$(printorder$,SP%+2) 1425 PROCenable_row(calcrow%?Fieldnumber%,FALSE) 1426 ENDIF 1427 ENDIF 1428 IF printorder$="" THEN 1429 PROClit(menu%(6),7,FALSE) 1430 PROClit(menu%(6),8,FALSE) 1431 ENDIF 1432ENDIF 1433ENDPROC 1434: 1435DEF PROCprint_click 1436CASE (b% AND %111) OF 1437 WHEN 2:IF FNselected(printW%,26) THEN PROCshow_menu(labelW%,x%-500,y%+200) 1438 WHEN 1,4: 1439 CASE ic% OF 1440 WHEN 23,24,25: 1441 PROCicon_bit(22,printW%,15,FNselected(printW%,25)) 1442 PROCicon_bit(22,printW%,45,FNselected(printW%,25)) 1443 WHEN 26: 1444 PROCicon_bit(22,printW%,15,FNselected(printW%,25)) 1445 PROCicon_bit(22,printW%,45,FNselected(printW%,25)) 1446 PROCshow_menu(labelW%,x%-500,y%+200) 1447 WHEN 28:PROCdrag_options("<Pbase$Dir>.Resources.PrintOpts") 1448 WHEN 20: 1449 PROCclose_window(printW%) 1450 IF (b% AND %111)=1 THEN PROCopen_window(matchW%):PROCmatch 1451 ENDCASE 1452ENDCASE 1453ENDPROC 1454: 1455DEF PROCkeypad_click(wi%,ic%,b%) 1456LOCAL handle%,icon%,T%,N$,date$ 1457PROCclose_window(relateW%) 1458IF flash% THEN PROCdeselect(mainW%,field%(flash%)):flash%=FALSE 1459IF ic%<>12 THEN IF FNvalidate(Fieldnumber%,T%,N$)=FALSE THEN ENDPROC ELSE PROCupdate_calcs(Fieldnumber%) 1460CASE (b% AND %111) OF 1461 WHEN 1,4: 1462 IF (b% AND %111)=4 THEN z%=1 ELSE z%=-1 1463 CASE ic% OF 1464 WHEN 0:PROCscan(z%,VAL($FNtext(keypadW%,23))) 1465 WHEN 1:stop%=TRUE 1466 WHEN 2:addr=FNmoveto(key%,top,z%) 1467 WHEN 3:addr=FNmoveto(key%,top,-z%) 1468 WHEN 4:addr=FNmoveto(key%,addr,z%) 1469 WHEN 5:addr=FNmoveto(key%,addr,-z%) 1470 WHEN 6:addr=FNfast_wind(top,addr,z%) 1471 WHEN 7:addr=FNfast_wind(top,addr,-z%) 1472 WHEN 8:PROCkey_select(z%) 1473 WHEN 9:PROCkey_select(-z%) 1474 WHEN 10:PROCsubfile(z%) 1475 WHEN 11:PROCsubfile(-z%) 1476 WHEN 12:PROCrotate:addr=FNmoveto(key%,top,1) 1477 WHEN 13:PROCallow_search(wi%,z%) 1478 WHEN 14: 1479 PROCdisplay(key%,-1) 1480 WHEN 15:addr=FNshift(z%,key%,0) 1481 IF INKEY(-3) THEN 1482 addr=FNfind("#"+STR$(REC%),key%,0,TRUE) 1483 ELSE PROCdisplay(key%,addr) 1484 ENDIF 1485 WHEN 16:addr=FNshift(-z%,key%,0) 1486 IF INKEY(-3) THEN 1487 addr=FNfind("#"+STR$(REC%),key%,0,TRUE) 1488 ELSE PROCdisplay(key%,addr) 1489 ENDIF 1490 WHEN 17:addr=FNshift(0,key%,1):PROCdisplay(key%,addr) 1491 WHEN 18:PROCval_help 1492 WHEN 19:PROCcheck_change:PROCsave_keys:PROCsave_all_tables 1493 WHEN 20:PROCstore 1494 WHEN 21:PROCretrieve 1495 WHEN 22:PROCfilter(keypadW%,22) 1496 WHEN 28: 1497 S$=$FNtext(keypadW%,27) 1498 CASE chartype%(KF%(key%,0)) OF 1499 WHEN 5,50,51: 1500 IF FNcheck_date(S$,1,date$)=TRUE THEN S$=FNreverse_date(date$) 1501 ENDCASE 1502 IF S$<>"" THEN addr=FNfind(LEFT$(S$,KL%(key%)),key%,1,TRUE) 1503 IF z%=1 THEN 1504 IF FNselected(passW%,9) THEN 1505 !block%=keypadW%:SYS "Wimp_GetWindowState",,block% 1506 block%!12=block%!4+660:block%!16=block%!8+328 1507 block%!20=0:block%!24=0 1508 SYS "Wimp_OpenWindow",,block% 1509 ELSE PROCclose_window(keypadW%) 1510 ENDIF 1511 ENDIF 1512 WHEN 30: 1513 IF $FNtext(keypadW%,29)<>"" THEN 1514 Filter$=FNparse($FNtext(keypadW%,29),FNselected(keypadW%,32)) 1515 filter%=TRUE 1516 addr=FNmoveto(key%,top,z%) 1517 ELSE filter%=FALSE 1518 ENDIF 1519 WHEN 32:PROCcommoncase(wi%,ic%) 1520 WHEN 37:SYS "OS_Byte",202,0,239:PROCshow_menu(specmenu%,oldx%+32,oldy%) 1521 WHEN 38:PROCopen_window(specialW%) 1522 ENDCASE 1523ENDCASE 1524ENDPROC 1525: 1526DEF PROCscan(z%,s%) 1527stop%=FALSE 1528REPEAT 1529 addr=FNmoveto(key%,addr,z%) 1530 K%=INKEY(s%) 1531 PROCpoll 1532UNTIL stop% 1533ENDPROC 1534: 1535DEF PROCstore 1536LOCAL wi%,ic% 1537SYS "Wimp_GetCaretPosition",,block% 1538wi%=!block%:ic%=block%!4 1539IF wi%=mainW% THEN scratchpad$=$FNtext(wi%,ic%) 1540ENDPROC 1541: 1542DEF PROCretrieve 1543LOCAL wi%,ic%,field% 1544SYS "Wimp_GetCaretPosition",,block% 1545wi%=!block%:ic%=block%!4 1546IF scratchpad$<>"" AND wi%=mainW% THEN 1547 field%=FNget_field(ic%) 1548 $FNtext(wi%,ic%)=LEFT$(scratchpad$,len%(field%)) 1549 PROCredraw_icon(wi%,ic%) 1550ENDIF 1551ENDPROC 1552: 1553REM ### Binary Large Objects (B.L.O.B.s) ### 1554: 1555DEF FNblob_path(create%,f$,R%,F%,V%,RETURN b$) 1556LOCAL O$,main$,level1$,level2$,d%,L% 1557CASE V% OF 1558 WHEN 36,39:O$=".Memo" 1559 WHEN 37,40:O$=".Sprite" 1560 WHEN 38:O$=".Draw" 1561ENDCASE 1562main$=f$+O$+STR$(F%) 1563level1$=main$+"."+STR$(R% DIV 4900) 1564level2$=level1$+"."+STR$(R% DIV 70) 1565b$=level2$+"."+STR$(R% MOD 70) 1566SYS "OS_File",5,b$ TO d%,,,,L% 1567IF d%=0 AND create%=TRUE THEN 1568 SYS "OS_File",8,main$ 1569 SYS "OS_File",8,level1$ 1570 SYS "OS_File",8,level2$ 1571ENDIF 1572IF d%=1 THEN=L% ELSE=-1 1573: 1574DEF FNload_blob(f$,R%,F%,V%) 1575LOCAL L%,b$ 1576L%=FNblob_path(FALSE,f$,R%,F%,V%,b$) 1577IF L%>=0 THEN 1578 PROCextend_named_sliding_block(tempanchor%,L%+1) 1579 SYS "OS_File",255,b$,!tempanchor% 1580ENDIF 1581=L% 1582: 1583DEF PROCblob_to_file(F,L%) 1584IF L%>0 THEN SYS "OS_GBPB",2,F,!tempanchor%,L% 1585ENDPROC 1586: 1587DEF PROCcopy_blob(source$,dest$,RS%,RD%,FS%,FD%,V%) 1588LOCAL L%,Z%,bs$,bd$ 1589L%=FNblob_path(FALSE,source$,RS%,FS%,V%,bs$) 1590IF L%>0 THEN 1591 Z%=FNblob_path(TRUE,dest$,RD%,FD%,V%,bd$) 1592 SYS "OS_CLI","Copy "+bs$+" "+bd$+" ~C~V~Q" 1593ENDIF 1594ENDPROC 1595: 1596DEF PROCdelete_blob(F%,F$,wi%,ic%) 1597LOCAL flag% 1598IF delwarn%=FALSE THEN 1599 SYS "OS_CLI","Delete "+F$:flag%=TRUE 1600 ELSE IF FNconfirm("Delete object? Are you sure?") THEN 1601 SYS "OS_CLI","Delete "+F$:flag%=TRUE 1602 ENDIF 1603ENDIF 1604IF flag% THEN 1605 CASE chartype%(F%) OF 1606 WHEN 36:$FNval(wi%,ic%)="Z0;Ssm!edit" 1607 WHEN 37:$FNval(wi%,ic%)="Z0;Ssm!paint" 1608 WHEN 38:$FNval(wi%,ic%)="Z0;Ssm!draw" 1609 WHEN 39:$FNtext(wi%,ic%)="" 1610 ENDCASE 1611 PROCredraw_icon(wi%,ic%) 1612ENDIF 1613ENDPROC 1614: 1615DEF PROCset_blob_sprite(R%,F%,V%) 1616LOCAL L%,b$,sprite$ 1617IF R%=RA% THEN L%=-1 ELSE L%=FNblob_path(FALSE,$database%,R%,F%,V%,b$) 1618CASE V% OF 1619 WHEN 36:IF L%>=0 THEN sprite$="small_fff" ELSE sprite$="sm!edit" 1620 WHEN 37:IF L%>=0 THEN sprite$="small_ff9" ELSE sprite$="sm!paint" 1621 WHEN 38:IF L%>=0 THEN sprite$="small_aff" ELSE sprite$="sm!draw" 1622ENDCASE 1623$FNval(mainW%,field%(F%))="Z0;Pptr_ext,8,4;S"+sprite$ 1624PROCredraw_icon(mainW%,field%(F%)) 1625ENDPROC 1626: 1627DEF PROCedit_blob(R%,F%,V%) 1628LOCAL wi%,ic%,b$,O$,val$ 1629IF R%=RA% THEN PROCcheck_change:IF REC%<>RA% THEN R%=REC% 1630wi%=mainW%:ic%=field%(F%) 1631CASE V% OF 1632 WHEN 36:O$="Memo":val$="Z0;Ssmall_fff":ftype%=&fff 1633 WHEN 37:O$="Sprite":val$="Z0;Ssmall_ff9":ftype%=&ff9 1634 WHEN 38:O$="Draw":val$="Z0;Ssmall_aff":ftype%=&aff 1635ENDCASE 1636IF FNblob_path(TRUE,$database%,R%,F%,V%,b$)<0 THEN 1637 $FNval(wi%,ic%)=val$ 1638 SYS "OS_CLI","Copy <PBase$Dir>.Resources.Objects."+O$+" "+b$+" ~C~V" 1639 PROCredraw_icon(wi%,ic%) 1640ENDIF 1641block%!0=256:block%!12=0:block%!16=5:block%!20=0 1642block%!24=0:block%!28=0:block%!32=0:block%!36=0 1643block%!40=ftype%:$(block%+44)=b$+CHR$(0) 1644SYS "Wimp_SendMessage",18,block%,0 1645ENDPROC 1646: 1647DEF PROCtransfer_blob(wi%,ic%,R%,file$,ft%) 1648LOCAL F%,V%,L%,W%,b$ 1649IF wi%<>mainW% THEN ENDPROC 1650IF R%=RA% THEN PROCcheck_change:IF REC%<>RA% THEN R%=REC% 1651F%=(ic%+1) DIV 2:V%=chartype%(F%) 1652CASE V% OF 1653 WHEN 35:IF ft%=-1 THEN link$(F%)="@"+file$:link$(0)="LOADED" 1654 WHEN 36: 1655 IF ft%=&fff THEN PROCinstall_blob:$FNval(wi%,ic%)="Z0;Ssmall_fff" 1656 WHEN 37: 1657 IF ft%=&ff9 THEN PROCinstall_blob:$FNval(wi%,ic%)="Z0;Ssmall_ff9" 1658 WHEN 38: 1659 IF ft%=&aff THEN PROCinstall_blob:$FNval(wi%,ic%)="Z0;Ssmall_aff" 1660 WHEN 39: 1661 IF ft%=&fff THEN PROCinstall_blob:PROCshow_text_block(F%) 1662 WHEN 40: 1663 IF ft%=&ff9 THEN PROCinstall_blob:PROCshow_picture(F%) 1664ENDCASE 1665PROCredraw_icon(wi%,ic%) 1666ENDPROC 1667: 1668DEF PROCinstall_blob 1669L%=FNblob_path(TRUE,$database%,R%,F%,V%,b$) 1670SYS "OS_CLI","Remove "+b$ 1671SYS "OS_CLI","Copy "+file$+" "+b$+" ~C~V" 1672ENDPROC 1673: 1674DEF PROCshow_text_block(F%) 1675LOCAL F,b$,I%,L%,base% 1676IF F%=0 THEN ENDPROC 1677base%=Rf%(F%) 1678L%=FNblob_path(FALSE,$database%,REC%,F%,39,b$) 1679IF L%>0 THEN 1680 IF L%>len%(F%) THEN L%=len%(F%) 1681 REM ### Load only as much of file as we can display ### 1682 F=OPENIN(b$):IF F>0 THEN SYS "OS_GBPB",4,F,base%,L%:PROCclose_file(F) 1683 REM ### Replace any characters<32 by spaces - but ONLY for display ### 1684 FOR I%=0 TO L%-1 1685 IF base%?I%<32 THEN base%?I%=32 1686 NEXT I% 1687 base%?L%=10 1688 ELSE $base%="" 1689ENDIF 1690ENDPROC 1691: 1692DEF PROCshow_picture(F%) 1693LOCAL F,f$,I%,max%,len%,x%,y%,w%,h% 1694IF F%=0 THEN ENDPROC 1695len%=FNblob_path(FALSE,$database%,REC%,F%,40,f$) 1696!block%=mainW%:block%!4=field%(F%):SYS "Wimp_GetIconState",,block% 1697x%=block%!8:y%=block%!12:w%=block%!16-x%:h%=block%!20-y% 1698SYS "Wimp_DeleteIcon",,block% 1699IF len%>=0 THEN 1700 PROCextend_named_sliding_block(Rf%(F%),len%+4):base%=!Rf%(F%) 1701 !base%=len%+4:SYS "OS_File",255,f$,base%+4 1702 field%(F%)=FNcreate_icon(mainW%,x%,y%,w%,h%,&0700A53E,"",base%+16,base%,0) 1703 ELSE 1704 field%(F%)=FNcreate_icon(mainW%,x%,y%,w%,h%,&0700A53E,"",paint%,1,384) 1705ENDIF 1706ENDPROC 1707: 1708DEF PROCfilter(wi%,ic%) 1709LOCAL h%,ox%,oy% 1710CASE wi% OF 1711 WHEN keypadW%:h%=530:ox%=0:oy%=0 1712 WHEN mainW%:h%=200:ox%=0:oy%=-330 1713ENDCASE 1714IF FNselected(wi%,ic%) THEN 1715 !block%=keypadW%:SYS "Wimp_GetWindowState",,block% 1716 block%!12=block%!4+660:block%!8=block%!16-h% 1717 block%!20=ox%:block%!24=oy% 1718 SYS "Wimp_OpenWindow",,block% 1719 IF NOT common% THEN $FNtext(keypadW%,29)="" 1720 PROCset_caret(keypadW%,29) 1721 IF $FNtext(keypadW%,29)<>"" THEN 1722 Filter$=FNparse($FNtext(keypadW%,29),FNselected(keypadW%,32)) 1723 filter%=TRUE 1724 addr=FNmoveto(key%,top,z%) 1725 ELSE filter%=FALSE 1726 ENDIF 1727 ELSE 1728 IF wi%=keypadW% THEN 1729 !block%=keypadW%:SYS "Wimp_GetWindowState",,block% 1730 block%!12=block%!4+660:block%!8=block%!16-330 1731 block%!20=0:block%!24=0 1732 SYS "Wimp_OpenWindow",,block% 1733 ELSE PROCclose_window(keypadW%) 1734 ENDIF 1735 filter%=FALSE 1736ENDIF 1737ENDPROC 1738: 1739DEF FNfast_wind(T%,P%,D%) 1740LOCAL I% 1741fast%=VAL($FNtext(keypadW%,23)) 1742D%=(D%+1) DIV 2 1743WHILE P%<>T% AND I%<fast% 1744 IF filter% THEN P%=FNnext_match(P%,D%,Filter$) ELSE P%=FNneighbour(key%,P%,D%) 1745 I%+=1 1746ENDWHILE 1747IF P%=T% AND NOT filter% THEN VDU 7:P%=FNneighbour(key%,P%,1-D%) 1748PROCdisplay(key%,P%) 1749=P% 1750: 1751DEF PROCsubfile(dir%) 1752file%+=dir% 1753IF file%=6 THEN file%=0 1754IF file%=-1 THEN file%=5 1755top=8*file%+LH% 1756addr=FNmoveto(key%,top,1) 1757ENDPROC 1758: 1759DEF PROCallow_search(wi%,e%) 1760LOCAL w%,ox%,oy% 1761CASE e% OF 1762 WHEN 1:PROCselect(keypadW%,24):PROCdeselect(keypadW%,25) 1763 WHEN -1:PROCselect(keypadW%,25):PROCdeselect(keypadW%,24) 1764ENDCASE 1765PROCdeselect(keypadW%,22) 1766IF buttonfield%(22)>0 THEN PROCdeselect(mainW%,field%(buttonfield%(22))) 1767filter%=FALSE 1768$FNtext(keypadW%,27)="":$FNtext(keypadW%,36)="" 1769$FNtext(keypadW%,33)=Index$(key%) 1770CASE wi% OF 1771 WHEN keypadW%:w%=1000:ox%=0:oy%=0 1772 WHEN mainW%:w%=340:ox%=660:oy%=0 1773ENDCASE 1774!block%=keypadW%:SYS "Wimp_GetWindowState",,block% 1775block%!12=block%!4+w%:block%!8=block%!16-328 1776block%!20=ox%:block%!24=oy% 1777SYS "Wimp_OpenWindow",,block% 1778PROCset_caret(keypadW%,27) 1779ENDPROC 1780: 1781DEF PROCval_help 1782LOCAL name$ 1783IF Fieldnumber%>0 THEN 1784 name$=LEFT$(link$(Fieldnumber%)) 1785 IF ASC(name$)<58 AND ASC(name$)<>-1 THEN name$=MID$(name$,2) 1786 Tablenumber%=FNtable_number(name$) 1787 IF Tablenumber%<>-1 THEN PROCshow_table(Tablenumber%) 1788ENDIF 1789ENDPROC 1790: 1791DEF PROCval_on_off 1792LOCAL I% 1793validate%=NOT validate% 1794PROCtick(menu%(2),3,validate%) 1795CASE validate% OF 1796 WHEN TRUE: 1797 FOR I%=1 TO vstrings% 1798 $valid%(I%)=$rvalid%(I%) 1799 NEXT I% 1800 WHEN FALSE: 1801 FOR I%=1 TO vstrings% 1802 $valid%(I%)="Pptr_write,4,4" 1803 NEXT I% 1804ENDCASE 1805ENDPROC 1806: 1807DEF PROCsave_click(wi%,ic%,b%) 1808LOCAL p$,H$ 1809butt%=(b% AND %111) 1810CASE wi% OF 1811 WHEN saveW%: 1812 Filename$=$SaveName% 1813 CASE savefunc$ OF 1814 WHEN "New database": 1815 Type%=0 1816 IF LEFT$(Filename$,1)<>"!" THEN Filename$="!"+Filename$:Filename$=LEFT$(Filename$,10):$SaveName%=Filename$ 1817 WHEN "Log changes": 1818 Type%=&fff:startlog%=TRUE 1819 WHEN "Save as text": 1820 Type%=&fff 1821 Start%=!textanchor%:End%=Start%+Count%*LenLine% 1822 $Start%=pitch$ 1823 WHEN "Save list": 1824 Type%=&fff:savetofile%=TRUE 1825 WHEN "Save text": 1826 Type%=&fff: 1827 len%=FNblob_path(TRUE,$database%,REC%,Fieldnumber%,36,f$) 1828 PROCextend_named_sliding_block(saveanchor%,len%+1) 1829 SYS "OS_File",255,f$,!saveanchor% 1830 Start%=!saveanchor%:End%=Start%+len% 1831 WHEN "Save sprite": 1832 Type%=&ff9 1833 len%=FNblob_path(TRUE,$database%,REC%,Fieldnumber%,37,f$) 1834 PROCextend_named_sliding_block(saveanchor%,len%+1) 1835 SYS "OS_File",255,f$,!saveanchor% 1836 Start%=!saveanchor%:End%=Start%+len% 1837 WHEN "Save draw": 1838 Type%=&aff 1839 len%=FNblob_path(TRUE,$database%,REC%,Fieldnumber%,38,f$) 1840 PROCextend_named_sliding_block(saveanchor%,len%+1) 1841 SYS "OS_File",255,f$,!saveanchor% 1842 Start%=!saveanchor%:End%=Start%+len% 1843 WHEN "Save options": 1844 Type%=&7f5 1845 WHEN "Save query": 1846 Start%=FNtext(matchW%,0):End%=Start%+LEN($Start%)+1:Type%=&7f4 1847 WHEN "Save selection": 1848 P%=savebuff%:$P%=printorder$:P%+=LEN($P%)+1 1849 FOR T%=0 TO LastTable% 1850 $P%=printrel$(T%):P%+=LEN($P%)+1 1851 NEXT T% 1852 Start%=savebuff%:End%=Start%+P%-savebuff%+1:Type%=&7F3 1853 WHEN "Save table": 1854 $TabTitle%=FNtable_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) 1855 Start%=!tabanchor%(T%):End%=Start%+160+Rows%*Rec%:Type%=&7f1 1856 WHEN "Save form file": 1857 Type%=&7f2 1858 PROClit(menu%(9),3,TRUE) 1859 PROClit(menu%(9),4,TRUE) 1860 IF adjust%=FALSE AND FNfirst_field>0 THEN PROCdefault_key 1861 ENDCASE 1862 WHEN savesubW%: 1863 CASE savefunc$ OF 1864 WHEN "Export subset": 1865 Filename$=$SubName%:Type%=0 1866 WHEN "Export CSV": 1867 Filename$=$SubName%:Type%=&dfe 1868 ENDCASE 1869ENDCASE 1870CASE ic% OF 1871 WHEN 1: 1872 IF (b% AND %11110000)>0 THEN PROCinit_drag(wi%,ic%,5) 1873 WHEN 2: 1874 IF INSTR(Filename$,".")>0 THEN 1875 IF butt%<>2 THEN PROCsave(Filename$,Type%,Start%,End%) 1876 IF butt%=4 THEN SYS "Wimp_CreateMenu",,-1 1877 ELSE PROCsofterror("",33) 1878 ENDIF 1879 WHEN 12:IF butt%=2 OR butt%=4 THEN PROCshow_menu(menu%(15),x%-64,y%-20) 1880 WHEN 13:IF butt%=2 OR butt%=4 THEN PROCshow_menu(menu%(20),x%-64,y%-20) 1881 WHEN 5:PROCcommoncase(wi%,ic%) 1882ENDCASE 1883ENDPROC 1884: 1885DEF PROCkey_click 1886LOCAL J% 1887CASE b% AND %111 OF 1888 WHEN 4:z%=1 1889 WHEN 1:z%=-1 1890ENDCASE 1891CASE ic% OF 1892 WHEN 16:PROCkcycle(Keyfld0%,F1dkey%,0,z%) 1893 WHEN 17:PROCkcycle(Keyfld0%,F1dkey%,0,-z%) 1894 WHEN 18:PROCkcycle(Keyfld1%,F2dkey%,1,z%) 1895 WHEN 19:PROCkcycle(Keyfld1%,F2dkey%,1,-z%) 1896 WHEN 21: 1897 PROCtick_one(fieldmenu%,0,fields%-1,Keyfld0%-1) 1898 PROCshow_menu(fieldmenu%,oldx%+32,oldy%):fieldfunc$="first" 1899 WHEN 22: 1900 PROCtick_one(fieldmenu%,0,fields%-1,Keyfld1%-1) 1901 PROCshow_menu(fieldmenu%,oldx%+32,oldy%):fieldfunc$="second" 1902 WHEN 7: 1903 IF keyfunc$<>"Current key" THEN 1904 keylimit%=len%(Keyfld0%)+len%(Keyfld1%) 1905 FOR J%=0 TO 3 1906 WD%(J%)=VAL($Wkey%(J%)) 1907 NEXT J% 1908 CASE TRUE OF 1909 WHEN SUM(WD%())>keylimit%:PROCsofterror("",26) 1910 OTHERWISE: 1911 CASE keyfunc$ OF 1912 WHEN "Primary key": 1913 key%=0 1914 PROCcopy_keydata(key%) 1915 RA%=VAL($Records%):f$=$database% 1916 PROCmake_empty_index(RA%,0,TRUE) 1917 PROCsave_recs(f$+".Database",RA%) 1918 present%=7:PROCsave_keys 1919 design%=FALSE:PROCget_it_in(f$) 1920 WHEN "New primary key":PROCnew_tree(file%) 1921 WHEN "Index field":PROCcreate_index 1922 ENDCASE 1923 ENDCASE 1924 ENDIF 1925 keyfunc$="" 1926 PROCclose_window(keyW%) 1927ENDCASE 1928ENDPROC 1929: 1930DEF PROCshade_key_icons(on%) 1931FOR I%=16 TO 20 1932 PROCicon_bit(22,keyW%,I%,on%) 1933NEXT I% 1934FOR I%=2 TO 5 1935 PROCicon_bit(22,keyW%,I%,on%) 1936NEXT I% 1937ENDPROC 1938: 1939DEF PROCkcycle(RETURN F%,T%,icon%,z%) 1940F%+=z% 1941IF F%>fields% THEN F%=0 1942IF F%<0 THEN F%=fields% 1943IF F%>0 THEN $T%=Tag$(F%) ELSE $T%="" 1944PROCredraw_icon(keyW%,icon%) 1945PROCtick_one(fieldmenu%,0,fields%-1,F%-1) 1946ENDPROC 1947: 1948DEF PROCcopy_keydata(key%) 1949KF%(key%,0)=Keyfld0%:KF%(key%,1)=Keyfld1% 1950KL%(key%)=SUM(WD%()) 1951FOR J%=0 TO 3 1952 KW%(key%,J%)=WD%(J%) 1953NEXT J% 1954case%(key%)=FNselected(keyW%,20) 1955ENDPROC 1956: 1957DEF PROCset_keydata(key%) 1958LOCAL J%,S$ 1959Keyfld0%=KF%(key%,0):Keyfld1%=KF%(key%,1) 1960$F1dkey%=Tag$(Keyfld0%) 1961IF KF%(key%,1)>0 THEN $F2dkey%=Tag$(Keyfld1%) ELSE $F2dkey%="" 1962keylen%=KL%(key%) 1963FOR J%=0 TO 3 1964 WD%(J%)=KW%(key%,J%):$Wkey%(J%)=STR$(WD%(J%)) 1965NEXT J% 1966$KeyNo%=STR$(key%) 1967PROCset_icon(keyW%,20,case%(key%)) 1968ENDPROC 1969: 1970DEF PROCkey_select(D%) 1971PROCcolour(key%,2) 1972CASE D% OF 1973 WHEN +1:key%=(key%+1) MOD (Keys%+1) 1974 WHEN -1:key%-=1:IF key%<0 THEN key%=Keys% 1975ENDCASE 1976PROCcolour(key%,1) 1977PROCset_keydata(key%) 1978$FNtext(keypadW%,33)=Index$(key%):PROCredraw_icon(keypadW%,33) 1979top=8*file%+LH% 1980addr=FNmoveto(key%,top,1) 1981ENDPROC 1982: 1983DEF PROCset_colours 1984LOCAL I% 1985CASE ic% OF 1986 WHEN 0,1,2,3,4,5,6: 1987 col%=ncol%(ic%) 1988 fb%=FNselected_esg(colW%,2) 1989 CASE fb% OF 1990 WHEN 11:col%=(col% AND &F):fb%=1 1991 WHEN 12:col%=((col%>>4) AND &F):fb%=0 1992 ENDCASE 1993 CASE b% AND %111 OF 1994 WHEN 1: 1995 col%-=1:IF col%<0 THEN col%=15 1996 PROCdcolour(colW%,ic%,col%,fb%) 1997 WHEN 4: 1998 col%=(col%+1) MOD 16 1999 PROCdcolour(colW%,ic%,col%,fb%) 2000 ENDCASE 2001 ncol%(ic%)=FNget_icon_cols(colW%,ic%) 2002 WHEN 9,10: 2003 fcol%()=ncol%() 2004 FOR I%=0 TO Keys% 2005 PROCcolour(I%,2) 2006 NEXT I% 2007 PROCcolour(0,0) 2008 PROCcolour(key%,1) 2009 FOR I%=1 TO fields% 2010 IF link$(I%)<>"" THEN PROCset_icon_cols(mainW%,field%(I%),ncol%(6)) 2011 NEXT I% 2012 IF ic%=10 THEN PROCwrite_colours 2013 SYS "Wimp_CreateMenu",,-1 2014 WHEN 15: 2015 PROCread_colours("<Pbase$Dir>.Resources.Colours") 2016 FOR I%=0 TO 6 2017 PROCset_icon_cols(colW%,I%,ncol%(I%)) 2018 NEXT I% 2019ENDCASE 2020ENDPROC 2021: 2022DEF PROCcreate_click 2023LOCAL Calc$ 2024butt%=(b% AND %111) 2025CASE butt% OF 2026 WHEN 2,4: 2027 IF ic%=36 THEN PROCshow_menu(menu%(menunumber%),oldx%+32,oldy%) 2028ENDCASE 2029IF butt%=4 THEN z%=1 ELSE IF butt%=1 THEN z%=-1 ELSE ENDPROC 2030CASE ic% OF 2031 WHEN 21:PROCset_limits(1,0,8,8) 2032 WHEN 22:PROCset_limits(36,36,40,11) 2033 WHEN 23:PROCset_limits(9,9,35,19) 2034 WHEN 24:PROCset_limits(41,41,45,14) 2035 WHEN 35:PROCset_limits(46,46,59,16) 2036 WHEN 19:PROCchange_type(z%,menunumber%) 2037 WHEN 20:PROCchange_type(-z%,menunumber%) 2038 WHEN 18:PROCcreate_field(VAL($InsText%),posx%,posy%,Calc$) 2039 WHEN 29:PROCremove_field(Fieldnumber%,FALSE,Calc$) 2040 PROCcreate_field(Fieldnumber%,posx%,posy%,Calc$) 2041 WHEN 30:PROCremove_field(Fieldnumber%,TRUE,Calc$) 2042 WHEN 14:PROCicon_bit(22,createW%,13,(FNselected(createW%,14))) 2043 WHEN 39: 2044 F%=VAL($InsText%) 2045 IF F%>0 AND F%<=fields% THEN 2046 IF F%<Fieldnumber% THEN Z%=-1 ELSE Z%=1 2047 PROCre_sequence(Fieldnumber%,F%,Z%) 2048 ENDIF 2049 PROCclose_window(createW%) 2050 WHEN 40:PROCswap_fields(Fieldnumber%,VAL($InsText%)) 2051ENDCASE 2052PROCupdate_box 2053IF (present% AND 4)=0 THEN PROClit(menu%(9),1,(fields%>0)) 2054CASE ic% OF 2055 WHEN 18,29,30: 2056 IF butt%=4 THEN 2057 PROCclose_window(createW%) 2058 ELSE 2059 PROCicon_bit(22,createW%,18,FALSE) 2060 PROCicon_bit(22,createW%,30,NOT adjust%) 2061 PROCicon_bit(22,createW%,29,TRUE) 2062 Fieldnumber%=fields% 2063 ENDIF 2064ENDCASE 2065ENDPROC 2066: 2067DEF PROCupdate_box 2068CASE fieldtype% OF 2069 WHEN 0,1,2,3,4,5,6,7,46,47:IF NOT adjust% THEN PROCicon_bit(22,createW%,6,TRUE) 2070 OTHERWISE:PROCicon_bit(22,createW%,6,FALSE) 2071ENDCASE 2072PROCicon_bit(22,createW%,14,(fieldtype%=3 OR fieldtype%=6)) 2073PROCicon_bit(22,createW%,13,(fieldtype%=3 OR fieldtype%=6) AND FNselected(createW%,14)) 2074PROCicon_bit(22,createW%,15,(fieldtype%=3 OR fieldtype%=47)) 2075PROCicon_bit(22,createW%,25,(fieldtype%=3)) 2076PROCicon_bit(22,createW%,26,NOT adjust%) 2077IF NOT adjust% THEN PROClit(menu%(9),2,(fields%>0)) 2078$ValText%=vname$(fieldtype%) 2079PROCredraw_icon(createW%,28) 2080ENDPROC 2081: 2082DEF PROCset_limits(t%,f%,l%,m%) 2083fieldtype%=t% 2084firsttype%=f% 2085lasttype%=l% 2086menunumber%=m% 2087PROCtick_one(menu%(m%),0,l%-f%,t%-f%) 2088PROCupdate_box 2089ENDPROC 2090: 2091DEF PROCchange_type(d%,m%) 2092CASE d% OF 2093 WHEN 1:fieldtype%+=1 2094 IF fieldtype%>lasttype% THEN fieldtype%=firsttype% 2095 WHEN -1:fieldtype%-=1 2096 IF fieldtype%<firsttype% THEN fieldtype%=lasttype% 2097ENDCASE 2098PROCtick_one(menu%(m%),0,lasttype%-firsttype%,fieldtype%-firsttype%) 2099PROCupdate_box 2100ENDPROC 2101: 2102DEF PROCpasswords 2103LOCAL F 2104CASE ic% OF 2105 WHEN 4: 2106 IF $Write%="" THEN $Write%=$Read% 2107 IF $Manager%="" THEN $Manager%=$Write% 2108 F=OPENUP($database%+".Colours") 2109 PTR#F=35 2110 S$=FNencrypt($Read%,TRUE):PRINT#F,S$ 2111 S$=FNencrypt($Write%,TRUE):PRINT#F,S$ 2112 S$=FNencrypt($Manager%,TRUE):PRINT#F,S$ 2113 FOR I%=9 TO 16 2114 PRINT#F,FNselected(passW%,I%) 2115 NEXT I% 2116 PRINT#F,logpath$ 2117 EXT#F=PTR#F 2118 PROCclose_file(F) 2119 PROClit(menu%(1),6,FNselected(passW%,9)) 2120 PROClit(menu%(1),7,FNselected(passW%,13)) 2121 PROClit(menu%(1),8,FNselected(passW%,13)) 2122 PROClit(menu%(1),2,FNselected(passW%,14)) 2123 PROClit(menu%(3),8,FNselected(passW%,15)) 2124 IF NOT FNselected(passW%,9) THEN PROCclose_window(keypadW%) ELSE PROCopen_window(keypadW%) 2125 PROCclose_window(passW%):PROCclose_window(saveW%) 2126 warn%=TRUE 2127 WHEN 16: 2128 IF FNselected(passW%,16) THEN 2129 savefunc$="Log changes" 2130 IF logpath$="" THEN $SaveName%=$database%+".Log" ELSE $SaveName%=logpath$ 2131 $SaveSprite%="sfile_fff;Pptr_hand,12,8;B3" 2132 !block%=passW%:SYS "Wimp_GetWindowState",,block% 2133 xmin%=block%!4+200:ymax%=block%!16 2134 !block%=saveW%:SYS "Wimp_GetWindowState",,block% 2135 block%!12=xmin%+block%!12-block%!4:block%!4=xmin% 2136 block%!8=ymax%-block%!16+block%!8:block%!16=ymax% 2137 block%!28=-1:SYS "Wimp_OpenWindow",,block% 2138 PROCset_caret(saveW%,0) 2139 PROCopen_log 2140 ELSE PROCclose_log 2141 ENDIF 2142ENDCASE 2143ENDPROC 2144: 2145DEF PROCopen_log 2146IF logpath$<>"" THEN 2147 SYS "OS_File",5,logpath$ TO d% 2148 IF d%=1 THEN 2149 loghandle%=OPENUP(logpath$):PTR#loghandle%=EXT#loghandle% 2150 BPUT#loghandle%,"Log opened "+TIME$ 2151 BPUT#loghandle%,"Password level used: "+STR$(pw%) 2152 BPUT#loghandle%,STRING$(35,"=") 2153 ELSE 2154 PROCsofterror("",99) 2155 PROCdeselect(passW%,16) 2156 logpath$="" 2157 ENDIF 2158ENDIF 2159ENDPROC 2160: 2161DEF PROCclose_log 2162IF loghandle%<>0 THEN 2163 BPUT#loghandle%,"" 2164 BPUT#loghandle%,"Log closed "+TIME$ 2165 PROCclose_file(loghandle%) 2166 SYS "OS_File",18,logpath$,&fff 2167ENDIF 2168ENDPROC 2169: 2170DEF PROCcount(key%,RETURN RU%) 2171LOCAL zero%,file%,top,sum% 2172RU%=0 2173FOR file%=0 TO 5 2174 top=8*file%+LH% 2175 sum%=FNcount_recs(key%,zero%) 2176 RU%+=sum% 2177 $FNtext(miscW%,file%+22)=STR$(sum%) 2178NEXT file% 2179ENDPROC 2180: 2181DEF FNcount_recs(key%,RETURN ptr%) 2182LOCAL P%,count%,S%,R%,S$,k$ 2183SYS "Hourglass_On" 2184P%=FNneighbour(key%,top,1) 2185WHILE P%<>top 2186 count%+=1 2187 IF ptr%>0 THEN 2188 R%=FNrec_no(k$,key%,P%) 2189 IF R%>highest% THEN highest%=R% 2190 !ptr%=R%:$(ptr%+4)=k$:ptr%+=4+KL%(key%)+1 2191 flagptr%?R%=0 2192 ENDIF 2193 P%=FNneighbour(key%,P%,1) 2194ENDWHILE 2195SYS "Hourglass_Off" 2196=count% 2197: 2198DEF PROCanalyse(func%) 2199LOCAL L%,P%,S%,S$,K$,k$,ptr%,pos%,N%,values%,key% 2200LOCAL S$(),N%() 2201PROCread_print_options 2202IF func%<0 THEN L%=6 ELSE key%=func%:L%=KL%(key%) 2203IF L%>8 THEN Tab%(0)=Lmargin%+L%+6 ELSE Tab%(0)=Lmargin%+14 2204Tab%(1)=Tab%(0)+6 2205IF func%<0 THEN 2206 Title$="Analysis of date field: "+Tag$(Fieldnumber%) 2207 Heading$=FNpad(margin$+"Month",Tab%(0))+"Number" 2208 ELSE 2209 Title$="Analysis of index: "+Index$(key%) 2210 Heading$=FNpad(margin$+"Contents",Tab%(0))+"Number" 2211ENDIF 2212Title1$=TIME$ 2213LenLine%=LEN(Heading$)+2 2214PROCextend_named_sliding_block(lineanchor%,LenLine%+4) 2215PROCextend_named_sliding_block(headanchor%,LenLine%+4):pos%=!headanchor% 2216PROCheap_store(headanchor%,LenLine%,0,pos%,0,Heading$) 2217reportdest$="Window" 2218PROCclose_window(datadicW%) 2219Count%=0 2220PROClist_head(0) 2221SYS "Hourglass_On" 2222IF func%<0 THEN PROCanalyse_date ELSE PROCanalyse_index 2223SYS "Hourglass_Off" 2224PROCrule_off(45) 2225Line$=FNpad(margin$+"Total",Tab%(0))+FNjustify(STR$(N%),1,0) 2226$(!lineanchor%)=Line$:PROClist_line(-1,lineanchor%,LEN(Line$),32) 2227PROCrule_off(45) 2228PROCscreen_list 2229ENDPROC 2230: 2231DEF PROCanalyse_index 2232K$="***" 2233P%=FNneighbour(key%,top,1) 2234WHILE P%<>top 2235 R%=FNrec_no(k$,key%,P%) 2236 IF k$<>K$ THEN values%+=1:K$=k$ 2237 P%=FNneighbour(key%,P%,1) 2238ENDWHILE 2239DIM S$(values%),N%(values%) 2240K$="***" 2241P%=FNneighbour(key%,top,1) 2242WHILE P%<>top 2243 R%=FNrec_no(k$,key%,P%) 2244 IF k$<>K$ THEN ptr%+=1:K$=k$:S$(ptr%)=K$:N%(ptr%)=1 ELSE N%(ptr%)+=1 2245 P%=FNneighbour(key%,P%,1) 2246ENDWHILE 2247FOR I%=1 TO ptr% 2248 S$=S$(I%):IF S$="" THEN S$="<null>" ELSE IF isadate% THEN S$=FNreverse_date(S$) 2249 Line$=margin$+S$:Line$=FNpad(Line$,Tab%(0))+FNjustify(STR$(N%(I%)),1,0) 2250 $(!lineanchor%)=Line$:PROClist_line(-1,lineanchor%,LEN(Line$),32) 2251 N%+=N%(I%) 2252NEXT I% 2253ENDPROC 2254: 2255DEF PROCanalyse_date 2256DIM S$(12),N%(12) 2257S$()="<null>","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" 2258dbasehandle%=OPENIN($database%+".Database") 2259P%=FNneighbour(key%,top,1) 2260WHILE P%<>top 2261 R%=FNrec_no(k$,key%,P%) 2262 PROCreadsmarray(dbasehandle%,R%) 2263 S$=F$(Fieldnumber%) 2264 IF S$<>"" THEN 2265 M%=VAL(MID$(S$,4,2)) 2266 N%(M%)+=1 2267 ELSE N%(0)+=1 2268 ENDIF 2269 P%=FNneighbour(key%,P%,1) 2270ENDWHILE 2271PROCclose_file(dbasehandle%) 2272FOR I%=0 TO 12 2273 Line$=margin$+S$(I%):Line$=FNpad(Line$,Tab%(0))+FNjustify(STR$(N%(I%)),1,0) 2274 $(!lineanchor%)=Line$:PROClist_line(-1,lineanchor%,LEN(Line$),32) 2275 N%+=N%(I%) 2276NEXT I% 2277ENDPROC 2278: 2279DEF PROCupdate_stats 2280$filesize%=STR$(RA%) 2281$Records%=STR$(RA%) 2282$used%=STR$(RU%) 2283$percent%=STR$(INT(RU%*100/RA%))+"%" 2284ENDPROC 2285: 2286REM Keypress processing -------------------------------------------------- 2287: 2288DEF PROCset_keyboard(wi%,ic%) 2289CASE wi% OF 2290 WHEN mainW%: 2291 CASE chartype%((ic%+1) DIV 2) OF 2292 WHEN 2,4:SYS "OS_Byte",202,0,239 2293 OTHERWISE:SYS "OS_Byte",202,16,111 2294 ENDCASE 2295 OTHERWISE:SYS "OS_Byte",202,caps%,111 2296ENDCASE 2297SYS "OS_Byte",118 2298ENDPROC 2299: 2300DEF PROCprocess_key 2301IF printing% OR indexing% THEN ENDPROC 2302LOCAL T%,N$ 2303SYS "Wimp_GetCaretPosition",,block% 2304wi%=block%!0:ic%=block%!4:key_pressed%=block%!24 2305CASE wi% OF 2306 WHEN mainW%:PROCmain_press 2307 WHEN keypadW%:PROCkeypad_press 2308 WHEN passW%:PROCdbox_press(4) 2309 WHEN changeW%:PROCdbox_press(4) 2310 WHEN tableW%:PROCdbox_press(26) 2311 WHEN saveW%:PROCdbox_press(2) 2312 WHEN datadicW%:PROCdatadic_press 2313 WHEN printW%:PROCdbox_press(20) 2314 WHEN labelW%:PROCdbox_press(15) 2315 WHEN createW%:PROCcreate_press 2316 WHEN accessW%:PROCdbox_press(3) 2317 WHEN keyW%:PROCdbox_press(7) 2318 WHEN savesubW%:PROCdbox_press(2) 2319 WHEN matchW%:PROCmatch_press 2320 WHEN moveW%:PROCdbox_press(8) 2321 WHEN calcW%:PROCdbox_press(1) 2322 WHEN mergeW%:PROCdbox_press(7) 2323 WHEN sizeW%:PROCdbox_press(4) 2324 WHEN csvW%:PROCdbox_press(9) 2325ENDCASE 2326ENDPROC 2327: 2328DEF PROCkeypad_press 2329IF key_pressed%=13 THEN 2330 CASE ic% OF 2331 WHEN 27:PROCmouse(0,0,4,wi%,28) 2332 WHEN 29:PROCmouse(0,0,4,wi%,30) 2333 ENDCASE 2334 ELSE SYS "Wimp_ProcessKey",key_pressed% 2335ENDIF 2336ENDPROC 2337: 2338DEF PROCmain_press 2339IF NOT FNselected(passW%,10) THEN SYS "Wimp_ProcessKey",key_pressed%:ENDPROC 2340LOCAL icon% 2341IF flash% THEN PROCdeselect(mainW%,field%(flash%)):flash%=FALSE 2342IF key_pressed%<>392 THEN IF FNvalidate(Fieldnumber%,T%,N$)=FALSE THEN ENDPROC ELSE PROCupdate_calcs(Fieldnumber%) 2343CASE key_pressed% OF 2344 WHEN 13: 2345 CASE wi% OF 2346 WHEN mainW%: 2347 IF Fieldnumber%=fields% THEN 2348 PROCclose_window(relateW%) 2349 PROCdisplay(key%,-1) 2350 ELSE 2351 REPEAT 2352 Fieldnumber%+=1:IF Fieldnumber%>fields% THEN Fieldnumber%=1 2353 c%=chartype%(Fieldnumber%) 2354 UNTIL len%(Fieldnumber%)>0 AND (c%<6 OR c%=8) 2355 icon%=field%(Fieldnumber%) 2356 PROCset_caret(mainW%,icon%) 2357 IF relations%=TRUE THEN PROCrelations(FALSE) 2358 ENDIF 2359 ENDCASE 2360 WHEN 398: 2361 REPEAT 2362 Fieldnumber%+=1:IF Fieldnumber%>fields% THEN Fieldnumber%=1 2363 c%=chartype%(Fieldnumber%) 2364 UNTIL len%(Fieldnumber%)>0 AND (c%<6 OR c%=8) 2365 icon%=field%(Fieldnumber%) 2366 PROCset_caret(mainW%,icon%) 2367 IF relations%=TRUE THEN PROCrelations(FALSE) 2368 WHEN 399: 2369 REPEAT 2370 Fieldnumber%-=1:IF Fieldnumber%<1 THEN Fieldnumber%=fields% 2371 c%=chartype%(Fieldnumber%) 2372 UNTIL len%(Fieldnumber%)>0 AND (c%<6 OR c%=8) 2373 icon%=field%(Fieldnumber%) 2374 PROCset_caret(mainW%,icon%) 2375 IF relations%=TRUE THEN PROCrelations(FALSE) 2376 WHEN 389:IF Access% THEN PROCshow_menu(changeW%,500,600) 2377 WHEN 405: 2378 IF LEN(printorder$)=2 THEN 2379 Fieldnumber%=FNfnum(printorder$):V%=chartype%(Fieldnumber%) 2380 CASE V% OF 2381 WHEN 36,39: 2382 IF FNblob_path(FALSE,$database%,REC%,Fieldnumber%,V%,object$)>=0 THEN 2383 PROCset_up_field_menu 2384 PROCshow_menu(saveW%,500,600) 2385 ENDIF 2386 ENDCASE 2387 ENDIF 2388 WHEN 408:PROCval_on_off 2389 WHEN 387:PROCmouse(0,0,4,keypadW%,2) 2390 WHEN 403:PROCmouse(0,0,4,keypadW%,3) 2391 WHEN 386:PROCmouse(0,0,4,keypadW%,4) 2392 WHEN 402:PROCmouse(0,0,4,keypadW%,5) 2393 WHEN 391:PROCmouse(0,0,4,keypadW%,6) 2394 WHEN 407:PROCmouse(0,0,4,keypadW%,7) 2395 WHEN 393:PROCmouse(0,0,4,keypadW%,8) 2396 WHEN 409:PROCmouse(0,0,4,keypadW%,9) 2397 WHEN 388:PROCmouse(0,0,4,keypadW%,10) 2398 WHEN 404:PROCmouse(0,0,4,keypadW%,11) 2399 WHEN 420:PROCmouse(0,0,4,keypadW%,12) 2400 WHEN 385:PROCmouse(0,0,4,keypadW%,13) 2401 WHEN 401:PROCmouse(0,0,1,keypadW%,13) 2402 WHEN 458:PROCmouse(0,0,4,keypadW%,14) 2403 WHEN 390:PROCmouse(0,0,4,keypadW%,15) 2404 WHEN 406:PROCmouse(0,0,4,keypadW%,16) 2405 WHEN 422:PROCmouse(0,0,4,keypadW%,17) 2406 WHEN 392:PROCmouse(0,0,4,keypadW%,18) 2407 WHEN 384:PROCprint_this 2408 WHEN 400:PROCmatch 2409 WHEN 416:PROCopen_window(printW%) 2410 OTHERWISE:SYS "Wimp_ProcessKey",key_pressed% 2411ENDCASE 2412CASE chartype%(Fieldnumber%) OF 2413 WHEN 2,4:SYS "OS_Byte",202,0,239 2414 OTHERWISE:SYS "OS_Byte",202,16,111 2415ENDCASE 2416SYS "OS_Byte",118 2417SYS "OS_Byte",15,0 2418ENDPROC 2419: 2420DEF PROCdbox_press(ok%) 2421CASE key_pressed% OF 2422 WHEN 13:IF FNnext_writeable(wi%,ic%,1,1)=TRUE THEN PROCmouse(0,0,4,wi%,ok%) 2423 WHEN 27:PROCclose_window(wi%):PROCset_caret(mainW%,-1) 2424 WHEN 398:f%=FNnext_writeable(wi%,ic%,1,0) 2425 WHEN 399:f%=FNnext_writeable(wi%,ic%,-1,0) 2426 OTHERWISE SYS "Wimp_ProcessKey",key_pressed% 2427ENDCASE 2428ENDPROC 2429: 2430DEF PROCdatadic_press 2431LOCAL icons% 2432icons%=Rows%*(TabFields%+1) 2433CASE key_pressed% OF 2434 WHEN 13: 2435 IF ic%<icons%-1 THEN PROCset_caret(datadicW%,ic%+1) 2436 WHEN 398: 2437 IF ic%<icons%-TabFields%-1 THEN PROCset_caret(datadicW%,ic%+TabFields%+1) 2438 WHEN 399: 2439 IF ic%>=TabFields%+1 THEN PROCset_caret(datadicW%,ic%-TabFields%-1) 2440 OTHERWISE:SYS "Wimp_ProcessKey",key_pressed% 2441ENDCASE 2442ENDPROC 2443: 2444DEF PROCcreate_press 2445CASE TRUE OF 2446 WHEN FNshaded(wi%,29):IF NOT FNshaded(wi%,18) THEN PROCdbox_press(18) 2447 OTHERWISE:IF NOT FNshaded(wi%,29) THEN PROCdbox_press(29) 2448ENDCASE 2449ENDPROC 2450: 2451DEF PROCmatch_press 2452CASE key_pressed% OF 2453 WHEN 13:PROCmouse(0,0,4,matchW%,1) 2454 WHEN 27:PROCclose_window(matchW%):SYS "Wimp_SetCaretPosition",mainW%,-1 2455 WHEN 384:PROCprint_this 2456 OTHERWISE:SYS "Wimp_ProcessKey",key_pressed% 2457ENDCASE 2458ENDPROC 2459: 2460DEF PROCmenu_select 2461LOCAL handle%,P%,Q%,I% 2462choice1%=!block%:choice2%=block%!4 2463choice3%=block%!8:choice4%=block%!12 2464P%=1 2465SYS "Wimp_DecodeMenu",,menuhandle%,block%,choices% 2466FOR I%=1 TO 4 2467 Q%=INSTR($choices%,".",P%+1) 2468 choice$(I%)=MID$($choices%,P%,Q%-P%) 2469 P%=Q%+1 2470NEXT I% 2471SYS "Wimp_GetPointerInfo",,block% 2472redo%=block%!8=1 2473CASE menuhandle% OF 2474 WHEN menu%(0): 2475 CASE choice$(1) OF 2476 WHEN "Help":SYS "Wimp_StartTask","<Pbase$Dir>.!Help" 2477 WHEN "Save choices":PROCsave_choices("<Pbase$Dir>.Resources.Choices") 2478 WHEN "Default choices":PROCget_choices("<Pbase$Dir>.Resources.Defaults") 2479 WHEN "Utilities": 2480 CASE choice$(2) OF 2481 WHEN "New primary key": 2482 $KeyTitle%=choice$(2) 2483 keyfunc$=choice$(2):PROCset_keydata(0) 2484 PROCshade_key_icons(TRUE) 2485 IF (present% AND 2)=2 THEN 2486 PROCselect(keyW%,8):PROCdeselect(keyW%,9) 2487 PROCicon_bit(22,keyW%,8,TRUE):PROCicon_bit(22,keyW%,9,TRUE) 2488 ELSE 2489 PROCselect(keyW%,9):PROCdeselect(keyW%,8) 2490 PROCicon_bit(22,keyW%,8,FALSE):PROCicon_bit(22,keyW%,9,FALSE) 2491 ENDIF 2492 PROCset_height(keyW%,700):PROCset_caret(keyW%,2) 2493 WHEN "New record format": 2494 PROCclose_window(reformW%) 2495 IF FNconfirm(FNmsg(28)) THEN 2496 reform$="Reformat" 2497 $RefmTitle%="Change record format" 2498 PROCset_height(reformW%,220) 2499 ENDIF 2500 WHEN "Adjust format": 2501 PROCadjust_on(TRUE) 2502 PROCdisplay(key%,-1) 2503 PROCalter_flags(&17016731,&07006535,&1700653B) 2504 WHEN "Merge database": 2505 PROCclose_window(reformW%) 2506 reform$="Merge" 2507 $RefmTitle%="Merge database" 2508 PROCset_height(reformW%,360) 2509 WHEN "Balance index": 2510 CASE choice$(3) OF 2511 WHEN "Automatic": 2512 IF choice4%=0 THEN 2513 PROCset_autobalance(TRUE) 2514 ELSE PROCset_autobalance(NOT FNticked(menu%(21),0)) 2515 ENDIF 2516 WHEN "Right now":PROCbalance(key%) 2517 ENDCASE 2518 WHEN "Print index": 2519 CASE choice$(3) OF 2520 WHEN "Complete": 2521 PROCprint_tree(key%,file%,"ALL") 2522 WHEN "Totals only": 2523 PROCprint_tree(key%,file%,"TOTALS") 2524 ENDCASE 2525 WHEN "Find duplicates":PROCduplicates(key%,file%) 2526 WHEN "Warn of duplicates":dup%=NOT dup%:PROCtick(menu%(3),8,dup%) 2527 ENDCASE 2528 WHEN "Close database":PROCexit(0) 2529 WHEN "Abandon database":PROCexit(1) 2530 WHEN "Quit":quit%=TRUE 2531 ENDCASE 2532 WHEN menu%(1): 2533 CASE choice$(1) OF 2534 WHEN "CSV options" 2535 $CSVTitle%=choice$(1) 2536 PROCicon_bit(22,csvW%,0,TRUE) 2537 !block%=csvW%:SYS "Wimp_GetWindowState",,block% 2538 block%!4=oldx%:block%!12=block%!4+390 2539 block%!8=200:block%!16=block%!8+420:block%!28=-1 2540 SYS "Wimp_OpenWindow",,block% 2541 WHEN "Miscellaneous": 2542 CASE choice$(2) OF 2543 WHEN "Set passwords":PROCopen_window(passW%) 2544 WHEN "Edit template":template%=1:PROCdisplay(key%,-1) 2545 WHEN "Save indices":PROCset_auto(2-choice3%) 2546 ENDCASE 2547 WHEN "Current key": 2548 $KeyTitle%=choice$(1):keyfunc$=choice$(1) 2549 PROCset_keydata(key%) 2550 PROCshade_key_icons(FALSE):PROCset_height(keyW%,590) 2551 WHEN "Print": 2552 CASE choice$(2) OF 2553 WHEN "Match":PROCmatch 2554 WHEN "Show resources":*Resources 2555 WHEN "Options":PROCopen_window(printW%):PROCset_caret(printW%,16) 2556 WHEN "Save options": 2557 $SaveName%=$database%+".PrintRes.PrintOpts" 2558 savefunc$=choice$(2):PROCsave_click(saveW%,2,4) 2559 WHEN "Save query": 2560 $SaveName%=$database%+".PrintRes.Query" 2561 savefunc$=choice$(2):PROCsave_click(saveW%,2,4) 2562 WHEN "Save selection": 2563 $SaveName%=$database%+".PrintRes.Selection" 2564 savefunc$=choice$(2):PROCsave_click(saveW%,2,4) 2565 WHEN "Show jobs done":*JobsDone 2566 WHEN "Clear selection":PROCclear_selection 2567 WHEN "Select all":PROCselect_all 2568 OTHERWISE:PROCmatch 2569 ENDCASE 2570 WHEN "Validation": 2571 CASE choice$(2) OF 2572 WHEN "Create table":PROCopen_window(tableW%):PROCset_caret(tableW%,0) 2573 WHEN "Display table": 2574 IF choice3%>=0 THEN 2575 Tablenumber%=choice3% 2576 PROCshow_table(Tablenumber%) 2577 ENDIF 2578 WHEN "Show table files":*Tables 2579 WHEN "Validate input":PROCval_on_off 2580 WHEN "Show relations":relations%=NOT relations%:PROCtick(menu%(2),4,relations%) 2581 ENDCASE 2582 WHEN "Show keypad":IF FNselected(passW%,9) THEN PROCopen_window(keypadW%) 2583 WHEN "Save choices":PROCsave_choices($database%+".Choices") 2584 WHEN "Undo changes":PROCrestore_rec 2585 WHEN "Help":SYS "Wimp_StartTask","<Pbase$Dir>.!Help" 2586 OTHERWISE: 2587 CASE choice$(2) OF 2588 WHEN "Index field": 2589 $KeyTitle%=choice$(2):keyfunc$=choice$(2) 2590 PROCdeselect(keyW%,20):PROCshade_key_icons(TRUE) 2591 PROCset_height(keyW%,590):PROCset_caret(keyW%,2) 2592 WHEN "Analyse index":PROCanalyse(FNis_a_key(Fieldnumber%)) 2593 WHEN "Analyse months":PROCanalyse(-1) 2594 WHEN "Link to table":PROCopen_window(linkW%) 2595 WHEN "Start editing": 2596 starthere%=field%(Fieldnumber%) 2597 IF Access% THEN PROCset_caret(mainW%,starthere%) 2598 WHEN "Clear contents":PROCdelete_blob(Fieldnumber%,object$,mainW%,field%(Fieldnumber%)) 2599 IF chartype%(Fieldnumber%)=40 THEN 2600 PROCshow_picture(Fieldnumber%):PROCredraw_icon(mainW%,field%(Fieldnumber%)) 2601 ENDIF 2602 WHEN "Warn of delete":delwarn%=NOT delwarn% 2603 PROCtick(menu%(10),7,delwarn%) 2604 WHEN "Undo changes":PROCrestore(Fieldnumber%,"",-1) 2605 ENDCASE 2606 ENDCASE 2607 WHEN menu%(9): 2608 CASE choice$(1) OF 2609 WHEN "Design field":PROCopen_window(createW%):PROCset_caret(createW%,4) 2610 WHEN "Save form file": 2611 $SaveName%=$database%+".Form" 2612 savefunc$=choice$(1):PROCsave_click(saveW%,2,4) 2613 WHEN "Default database": 2614 PROCsave_form($database%+".Form") 2615 PROCget_it_in($database%) 2616 IF FNfirst_field>0 THEN 2617 PROCdefault_key 2618 PROCdefaults($database%,100,0) 2619 ELSE PROCsofterror("",35) 2620 ENDIF 2621 WHEN "Primary key": 2622 $KeyTitle%=choice$(1) 2623 keyfunc$=choice$(1) 2624 case%(0)=FALSE:PROCset_keydata(0) 2625 PROCdeselect(keyW%,20):PROCshade_key_icons(TRUE): 2626 PROCset_height(keyW%,590):PROCset_caret(keyW%,2) 2627 WHEN "Quit design": 2628 PROCadjust_on(FALSE) 2629 PROCsave_form($database%+".Form") 2630 PROCget_it_in($database%) 2631 ENDCASE 2632 WHEN menu%(17): 2633 T%=FNtable_number($menu%(17)) 2634 CASE choice$(1) OF 2635 WHEN "Save": 2636 $SaveName%=$database%+".ValTables."+table$(T%) 2637 savefunc$="Save table":PROCsave_click(saveW%,2,4) 2638 WHEN "Clear":PROCclear_table(T%) 2639 WHEN "Print":PROCprint_table(T%) 2640 WHEN "Sort":PROCsort_table(T%) 2641 WHEN "Undo all":PROCrestore_table(T%,tablen%) 2642 WHEN "Undo change":PROCrestore_tabfield 2643 ENDCASE 2644 WHEN menu%(18): 2645 CASE choice$(1) OF 2646 WHEN "Save as text": 2647 $SaveName%=$database%+".PrintJobs.List" 2648 savefunc$=choice$(1):PROCsave_click(saveW%,2,4) 2649 WHEN "Sort":PROCsort_list 2650 WHEN "Scrap":PROClose_list 2651 ENDCASE 2652 WHEN menu%(15): 2653 CASE choice$(1) OF 2654 WHEN "Comma":sep$="," 2655 WHEN "TAB":sep$=CHR$(9) 2656 WHEN "CR":sep$=CHR$(13) 2657 WHEN "LF":sep$=CHR$(10) 2658 OTHERWISE sep$=$Delim% 2659 ENDCASE 2660 PROCtick_one(menuhandle%,0,3,choice1%) 2661 $FNtext(csvW%,14)=choice$(1) 2662 PROCredraw_icon(csvW%,14) 2663 WHEN menu%(20): 2664 CASE choice$(1) OF 2665 WHEN "CR":term$=CHR$(13) 2666 WHEN "LF":term$=CHR$(10) 2667 WHEN "CR LF":term$=CHR$(13)+CHR$(10) 2668 WHEN "LF CR":term$=CHR$(10)+CHR$(13) 2669 WHEN "CR CR":term$=CHR$(13)+CHR$(13) 2670 WHEN "LF LF":term$=CHR$(10)+CHR$(10) 2671 OTHERWISE:term$=$Termin% 2672 ENDCASE 2673 PROCtick_one(menuhandle%,0,5,choice1%) 2674 $FNtext(csvW%,15)=choice$(1) 2675 PROCredraw_icon(csvW%,15) 2676 WHEN menu%(8),menu%(11),menu%(14),menu%(16),menu%(19): 2677 fieldtype%=firsttype%+choice1% 2678 PROCtick_one(menuhandle%,0,lasttype%-firsttype%,choice1%) 2679 PROCupdate_box 2680 WHEN menu%(5): 2681 Tablenumber%=choice1% 2682 $Tablename%=table$(Tablenumber%) 2683 PROCtick_one(menuhandle%,0,LastTable%,choice1%) 2684 PROCredraw_icon(linkW%,0) 2685 WHEN fieldmenu%: 2686 CASE fieldfunc$ OF 2687 WHEN "match": 2688 Match_tag%=choice1%+1 2689 $FNtext(matchW%,3)=Tag$(Match_tag%):PROCredraw_icon(matchW%,3) 2690 PROCtick_one(fieldmenu%,0,fields%-1,choice1%) 2691 WHEN "first": 2692 IF keyfunc$<>"Current key" THEN 2693 IF FNticked(fieldmenu%,choice1%) THEN 2694 Keyfld0%=0:$F1dkey%="":PROCredraw_icon(keyW%,0) 2695 PROCtick(fieldmenu%,choice1%,FALSE) 2696 ELSE 2697 Keyfld0%=choice1%+1 2698 $F1dkey%=Tag$(Keyfld0%):PROCredraw_icon(keyW%,0) 2699 PROCtick_one(fieldmenu%,0,fields%-1,choice1%) 2700 ENDIF 2701 ENDIF 2702 WHEN "second": 2703 IF keyfunc$<>"Current key" THEN 2704 IF FNticked(fieldmenu%,choice1%) THEN 2705 Keyfld1%=0:$F2dkey%="":PROCredraw_icon(keyW%,1) 2706 PROCtick(fieldmenu%,choice1%,FALSE) 2707 ELSE 2708 Keyfld1%=choice1%+1 2709 $F2dkey%=Tag$(Keyfld1%):PROCredraw_icon(keyW%,1) 2710 PROCtick_one(fieldmenu%,0,fields%-1,choice1%) 2711 ENDIF 2712 ENDIF 2713 ENDCASE 2714 OTHERWISE:PROCspecial_select 2715ENDCASE 2716IF NOT quit% THEN 2717 IF redo% THEN PROCshow_menu(menuhandle%,menux%,menuy%) 2718ENDIF 2719ENDPROC 2720: 2721DEF PROCinit_drag(wi%,ic%,dragtype%) 2722PROCgetscreensize(W%,H%) 2723!block%=wi% 2724SYS "Wimp_GetWindowState",,block% 2725ysize%=block%!16-block%!8 2726x%=block%!4-block%!20 2727y%=block%!16-block%!24 2728block%!4=ic% 2729SYS "Wimp_GetIconState",,block% 2730block%!8+=x%:minx%=block%!8 2731block%!12+=y%:miny%=block%!12 2732block%!16+=x%:maxx%=block%!16 2733block%!20+=y%:maxy%=block%!20 2734IF dragtype%=6 THEN 2735 block%!24=2*minx%-maxx%:block%!36=2*maxy%-miny% 2736 ELSE block%!24=0:block%!36=H% 2737ENDIF 2738block%!28=0 2739block%!32=W% 2740!block%=0 2741block%!4=dragtype% 2742dragging%=TRUE 2743CASE wi% OF 2744 WHEN saveW%,savesubW%: 2745 IF RISCOS3 THEN 2746 IF wi%=saveW% THEN sprite$=MID$($SaveSprite%,2,8) ELSE sprite$=MID$($SubSprite%,2,8) 2747 SYS "DragASprite_Start",&C5,1,sprite$,block%+8 2748 ELSE SYS "Wimp_DragBox",,block% 2749 ENDIF 2750 OTHERWISE: 2751 SYS "Wimp_DragBox",,block% 2752ENDCASE 2753IF wi%=mainW% THEN ficon%=ic% 2754ENDPROC 2755: 2756DEF PROCend_drag(start%,end%) 2757LOCAL wi%,ic% 2758dragging%=FALSE 2759datasize%=end%-start% 2760SYS "Wimp_GetPointerInfo",,block% 2761wi%=block%!12:ic%=block%!16 2762block%!32=block%!4:block%!28=block%!0:block%!24=ic% 2763block%!20=wi%:block%!16=1 2764block%!12=0:block%!36=datasize%:block%!40=Type% 2765IF design% THEN 2766 PROCadjust_field(dragbutt%) 2767 ELSE 2768 IF Filename$<>"" AND wi%<>mainW% THEN 2769 $(block%+44)=FNleaf(Filename$) 2770 !block%=60 2771 SYS "Wimp_SendMessage",17,block%,wi%,ic% 2772 ramptr%=start% 2773 SYS "Wimp_CreateMenu",,-1 2774 ENDIF 2775ENDIF 2776ENDPROC 2777: 2778DEF FNencrypt(S$,Z%) 2779LOCAL I%,R% 2780R%=RND(-12817) 2781FOR I%=1 TO LEN(S$) 2782 R%=RND(58)-1 2783 IF NOT Z% THEN R%=58-R% 2784 MID$(S$,I%,1)=CHR$((ASC(MID$(S$,I%,1))-65+R%) MOD 58+65) 2785NEXT I% 2786=S$ 2787: 2788DEF FNleaf(s$) 2789s2$="" 2790WHILE RIGHT$(s$)<>"." AND s$<>"" 2791 s2$=RIGHT$(s$)+s2$ 2792 s$=LEFT$(s$) 2793ENDWHILE 2794dbasepath$=LEFT$(s$) 2795=s2$ 2796: 2797REM Message handling ---------------------------------------------------- 2798: 2799DEF PROCnot_acknowledged 2800CASE block%!16 OF 2801 WHEN 5: 2802 REM DataOpen failed, so run file 2803 IF block%!8=Impref% THEN Imp_wait%=TRUE 2804 SYS "Wimp_StartTask",$(block%+44) 2805 WHEN 7: 2806 REM RAMTransmit failed 2807 IF NOT merging% THEN ERROR moan_err%,FNmsg(39) 2808 WHEN 3: 2809 REM DataLoad failed, so delete scrapfile (if ours) 2810 IF block%!8=myref% THEN SYS "OS_File",6,block+44 2811 ERROR moan_err%,FNmsg(39) 2812 WHEN &80142:ERROR moan_err%,FNmsg(90) 2813ENDCASE 2814ENDPROC 2815: 2816DEF PROCmessage 2817LOCAL task%,ref%,myref% 2818task%=block%!4:ref%=block%!8 2819CASE block%!16 OF 2820 WHEN 0:quit%=TRUE 2821 WHEN 1:REM ### DataSave ### 2822 IF task%<>mytask% AND present%=7 THEN 2823 datasize%=block%!36 2824 CASE block%!40 OF 2825 WHEN &fff,&ff9,&aff,&dfe: 2826 myref%=ref% 2827 block%!0=256:block%!12=ref%:block%!16=2:block%!36=-1 2828 $(block%+44)="<Wimp$Scrap>"+CHR$(0) 2829 SYS "Wimp_SendMessage",17,block%,task% 2830 ENDCASE 2831 ENDIF 2832 WHEN 2:REM ### DataSaveAck ### 2833 PROCsave(FNgetstr(block%+44),Type%,Start%,End%) 2834 myref%=ref%:block%!12=ref%:block%!16=3:!block%=256 2835 SYS "Wimp_SendMessage",18,block%,task% 2836 SYS "Wimp_CreateMenu",,-1 2837 WHEN 3:REM ### DataLoad ### 2838 myref%=block%!12:f$=FNgetstr(block%+44) 2839 PROCget_it_in(f$) 2840 IF myref%<>0 THEN SYS "OS_CLI","Remove <Wimp$Scrap>" 2841 WHEN 4:REM ### DataLoadAck ### 2842 IF block%!12=Impref% AND NOT merging% THEN PROCready_to_merge 2843 WHEN 5:REM ### DataOpen - response to file double click ### 2844 CASE block%!40 OF 2845 WHEN &7f1,&7f3,&7f4,&7f5: 2846 IF present%=7 THEN 2847 block%!0=20:block%!12=ref%:block%!16=4 2848 SYS "Wimp_SendMessage",17,block% 2849 PROCget_it_in(FNgetstr(block%+44)) 2850 ENDIF 2851 WHEN &2000: 2852 IF kill% OR present%=0 THEN 2853 f$=FNgetstr(block%+44)+".Indices" 2854 SYS "OS_File",5,f$ TO d% 2855 IF d%=2 THEN 2856 block%!0=20:block%!12=ref%:block%!16=4 2857 SYS "Wimp_SendMessage",17,block% 2858 PROCget_it_in(FNgetstr(block%+44)) 2859 ENDIF 2860 ENDIF 2861 ENDCASE 2862 WHEN 6:IF savefunc$<>"Save list" AND savefunc$<>"Export CSV" THEN PROCram_transmit 2863 WHEN &502:PROChelp_message(block%!32,block%!36) 2864 WHEN &400C2:PROCgetscreensize(ScreenWidth%,ScreenHeight%) 2865 WHEN &400C0:PROCmessage_menu_select 2866 WHEN &80140:REM ### PrintFile - ignore ### 2867ENDCASE 2868ENDPROC 2869: 2870DEF PROCram_transmit 2871IF datasize%>block%!24 THEN tosend%=block%!24 ELSE tosend%=datasize% 2872SYS "Wimp_TransferBlock",mytask%,ramptr%,block%!4,block%!20,tosend% 2873block%!24=tosend% 2874datasize%-=tosend% 2875ramptr%+=tosend% 2876block%!12=block%!8 2877block%!16=7 2878SYS "Wimp_SendMessage",18+(datasize%=0),block%,block%!4 2879ENDPROC 2880: 2881DEF PROCmessage_menu_select 2882LOCAL P%,Q%,I% 2883keyfunc$="":savefunc$="" 2884handle%=block%!20:xmin%=block%!24:ymax%=block%!28 2885P%=1 2886SYS "Wimp_DecodeMenu",,menuhandle%,block%+32,choices% 2887FOR I%=1 TO 4 2888 Q%=INSTR($choices%,".",P%+1) 2889 choice$(I%)=MID$($choices%,P%,Q%-P%) 2890 P%=Q%+1 2891NEXT I% 2892CASE menuhandle% OF 2893 WHEN menu%(0): 2894 CASE choice$(1) OF 2895 WHEN "New database": 2896 $SaveName%="!DataBase" 2897 $SaveSprite%="snew_appl;Pptr_hand,12,8;B3" 2898 savefunc$=choice$(1) 2899 ENDCASE 2900 WHEN menu%(1): 2901 CASE choice$(1) OF 2902 WHEN "Information":PROCcount(key%,RU%):PROCupdate_stats 2903 WHEN "Print": 2904 CASE choice$(2) OF 2905 WHEN "Save options": 2906 $SaveName%=$database%+".PrintRes.PrintOpts" 2907 $SaveSprite%="sfile_7f5;Pptr_hand,12,8;B3" 2908 WHEN "Save query": 2909 $SaveName%=$database%+".PrintRes.Query" 2910 $SaveSprite%="sfile_7f4;Pptr_hand,12,8;B3" 2911 WHEN "Save selection": 2912 $SaveName%=$database%+".PrintRes.Selection" 2913 $SaveSprite%="sfile_7f3;Pptr_hand,12,8;B3" 2914 ENDCASE 2915 savefunc$=choice$(2) 2916 WHEN "Miscellaneous": 2917 CASE choice$(2) OF 2918 WHEN "Batch delete": 2919 PROCselect(moveW%,2):PROCdeselect(moveW%,1):PROCdeselect(moveW%,0) 2920 IF NOT common% THEN $FNtext(moveW%,7)="" 2921 WHEN "Colours": 2922 ncol%()=fcol%() 2923 FOR I%=0 TO 6 2924 PROCset_icon_cols(colW%,I%,ncol%(I%)) 2925 NEXT I% 2926 !block%=colW%:SYS "Wimp_GetWindowState",,block% 2927 width%=block%!12-block%!4 2928 block%!4=xmin%:block%!12=xmin%+width% 2929 block%!8=ymax%-height%:block%!16=ymax% 2930 ENDCASE 2931 WHEN "Export subset": 2932 export%=TRUE:$SubTitle%="Export subset":savefunc$=choice$(1) 2933 $SubName%=$database%+".PrintJobs.!Subset":IF NOT common% THEN $FNtext(savesubW%,0)="" 2934 $SubSprite%="snew_appl;Pptr_hand,12,8;B3" 2935 WHEN "Export CSV": 2936 $SubTitle%="Export CSV file":savefunc$=choice$(1) 2937 IF sep$="," THEN t$="dfe":f$="CSV" ELSE t$="fff":f$="Sep" 2938 $SubName%=$database%+".PrintJobs."+f$+"file":IF NOT common% THEN $FNtext(savesubW%,0)="" 2939 $SubSprite%="sfile_"+t$+";Pptr_hand,12,8;B3" 2940 ENDCASE 2941 WHEN menu%(9): 2942 CASE choice$(1) OF 2943 WHEN "Save form file": 2944 $SaveName%=$database%+".Form" 2945 $SaveSprite%="sfile_7f2;Pptr_hand,12,8;B3" 2946 savefunc$=choice$(1) 2947 ENDCASE 2948 WHEN menu%(17): 2949 CASE choice$(1) OF 2950 WHEN "Save": 2951 T%=FNtable_number($menuhandle%) 2952 $SaveName%=$database%+".ValTables."+table$(T%) 2953 $SaveSprite%="sfile_7f1;Pptr_hand,12,8;B3" 2954 savefunc$="Save table" 2955 ENDCASE 2956 WHEN menu%(18): 2957 CASE choice$(1) OF 2958 WHEN "Save as text": 2959 $SaveName%=$database%+".PrintJobs.List" 2960 $SaveSprite%="sfile_fff;Pptr_hand,12,8;B3" 2961 ENDCASE 2962 savefunc$=choice$(1) 2963ENDCASE 2964SYS "Wimp_CreateSubMenu",,handle%,xmin%,ymax% 2965ENDPROC 2966: 2967DEF PROChelp_message(wi%,ic%) 2968CASE wi% OF 2969 WHEN -2:PROCsend_help(75) 2970 WHEN infoW%:PROCsend_help(76) 2971 WHEN miscW%:PROCsend_help(77) 2972 WHEN mainW%: 2973 IF NOT design% AND ic%>=0 THEN 2974 F%=(ic%+1) DIV 2 2975 CASE chartype%(F%) OF 2976 WHEN 0,1,2,3,4,5,6,7,8,36,39,41,42,43,44,45:PROCsend_help(78) 2977 OTHERWISE:SYS "Interface_SendHelp",,block% 2978 ENDCASE 2979 ENDIF 2980 WHEN pselectW%:PROCsend_help(79) 2981 WHEN relateW%:PROCsend_help(80) 2982 WHEN listW%:PROCsend_help(81) 2983 WHEN datadicW%:PROCsend_help(82) 2984 WHEN saveW%:PROCsend_help(83) 2985 WHEN savesubW%:PROCsend_help(84) 2986 WHEN accessW%:PROCsend_help(85) 2987 WHEN mergeW%:PROCsend_help(86) 2988 OTHERWISE:SYS "Interface_SendHelp",,block% 2989ENDCASE 2990ENDPROC 2991: 2992DEF PROCsend_help(M%) 2993!block%=256 2994block%!12=ref% 2995block%!16=&503 2996$(block%+20)=FNmsg(M%) 2997SYS "Wimp_SendMessage",17,block%,block%!4 2998ENDPROC 2999: 3000: 3001REM File saving -------------------------------------------------------- 3002: 3003DEF PROCsave_all_tables 3004LOCAL T% 3005SYS "Hourglass_On" 3006WHILE T%<=LastTable% 3007 f$=$database%+".ValTables."+table$(T%) 3008 $TabTitle%=FNtable_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) 3009 Start%=!tabanchor%(T%):End%=Start%+160+Rows%*Rec% 3010 PROCsave(f$,&7f1,Start%,End%) 3011 T%+=1 3012 SYS "Hourglass_Percentage",T%*100 DIV (LastTable%+1) 3013ENDWHILE 3014SYS "Hourglass_Off" 3015ENDPROC 3016: 3017DEF PROCsave_options 3018LOCAL F,I%,ic% 3019F=OPENOUT(f$) 3020RESTORE +0 3021FOR I%=1 TO 13 3022 READ ic% 3023 PRINT#F,FNselected(printW%,ic%) 3024NEXT I% 3025FOR I%=1 TO 9 3026 READ ic% 3027 PRINT#F,$FNtext(printW%,ic%) 3028NEXT I% 3029FOR I%=1 TO 7 3030 READ ic% 3031 PRINT#F,FNselected(printW%,ic%) 3032NEXT I% 3033FOR I%=1 TO 3 3034 READ ic% 3035 PRINT#F,FNselected(labelW%,ic%) 3036NEXT I% 3037FOR I%=1 TO 4 3038 READ ic% 3039 PRINT#F,$FNtext(labelW%,ic%) 3040NEXT I% 3041FOR I%=1 TO 3 3042 READ ic% 3043 PRINT#F,FNselected(labelW%,ic%) 3044NEXT I% 3045PROCclose_file(F) 3046SYS "OS_File",18,f$,&7f5 3047: 3048DATA 1,2,4,6,7,8,23,24,25,26,38,39,41:REM Radio buttons 3049DATA 15,16,17,18,30,32,34,43,45:REM Writable fields 3050DATA 10,11,12,19,29,40,42:REM Option switches 3051REM In Label Definition window 3052DATA 0,1,2:REM Radio buttons 3053DATA 4,6,10,12:REM Writeable fields 3054DATA 11,13,16:REM Option switches 3055: 3056ENDPROC 3057: 3058DEF PROCsave(f$,ft%,start%,end%) 3059CASE ft% OF 3060 WHEN 0: 3061 leaf$=FNleaf(f$) 3062 IF LEFT$(leaf$,1)<>"!" THEN leaf$="!"+LEFT$(leaf$,9):f$=dbasepath$+"."+leaf$ 3063 SYS "OS_File",8,f$ 3064 SYS "OS_File",8,f$+".Indices" 3065 SYS "OS_File",8,f$+".ValTables" 3066 SYS "OS_File",8,f$+".PrintRes" 3067 SYS "OS_File",8,f$+".PrintJobs" 3068 SYS "OS_CLI","Copy <PBase$Dir>.Resources.Temp.!Run "+f$+".!Run ~C~V" 3069 SYS "OS_CLI","Copy <PBase$Dir>.Resources.Temp.!Boot "+f$+".!Boot ~C~V" 3070 SYS "OS_CLI","Copy <PBase$Dir>.Resources.chkspr "+f$+".chkspr ~C~V" 3071 SYS "OS_CLI","Copy <PBase$Dir>.Resources.Colours "+f$+".Colours ~C~V" 3072 PROCcopy_database_spritefile(f$,FNleaf(f$)) 3073 CASE TRUE OF 3074 WHEN export%:PROCexport_subset(f$) 3075 WHEN csvconv%: 3076 IF !formanchor%=0 THEN 3077 PROCextend_named_sliding_block(formanchor%,0) 3078 Fptr%=!formanchor% 3079 fields%=0:Fieldnumber%=0 3080 fields%=FNget_form(Fptr%) 3081 ENDIF 3082 OTHERWISE: 3083 PROClit(menu%(0),1,FALSE) 3084 PROCget_it_in(f$) 3085 PROCopen_window(mainW%) 3086 IF !formanchor%=0 THEN 3087 PROCextend_named_sliding_block(formanchor%,0) 3088 Fptr%=!formanchor% 3089 fields%=0:Fieldnumber%=0 3090 ENDIF 3091 ENDCASE 3092 WHEN 1: 3093 SYS "OS_CLI","CDir "+f$: 3094 logpath$=f$ 3095 PROCclose_window(saveW%) 3096 WHEN &7f2:PROCsave_form(f$):PROCget_it_in($database%) 3097 WHEN &7f5:PROCsave_options 3098 WHEN &dfe:PROCwrite_csv(f$) 3099 OTHERWISE: 3100 CASE TRUE OF 3101 WHEN startlog%: 3102 PROCclose_log 3103 logpath$=f$ 3104 loghandle%=OPENOUT(logpath$) 3105 BPUT#loghandle%,$database% 3106 BPUT#loghandle%,"Password level used: "+STR$(pw%) 3107 BPUT#loghandle%,"Log started "+TIME$ 3108 BPUT#loghandle%,STRING$(36,"=") 3109 startlog%=FALSE 3110 WHEN savetofile%: 3111 texthandle%=OPENOUT(f$) 3112 PROCdo_it(Search$,displayed%) 3113 OTHERWISE: 3114 SYS "OS_File",10,f$,ft%,,start%,end% 3115 PROCscrap_sliding_block(saveanchor%) 3116 ENDCASE 3117ENDCASE 3118warn%=TRUE 3119ENDPROC 3120: 3121DEF FNgetstr(p%) 3122LOCAL p$ 3123WHILE ?p%>31 3124 p$+=CHR$(?p%) 3125 p%+=1 3126ENDWHILE 3127=p$ 3128: 3129REM Validation tables ---------------------------------------------------- 3130: 3131DEF PROCcreate_table 3132LOCAL I%,title$,Rec% 3133CASE b% AND %111 OF 3134 WHEN 4: 3135 CASE ic% OF 3136 WHEN 26: 3137 IF LastTable%=MaxTabs% THEN 3138 PROCsofterror(STR$(MaxTabs%+1),32) 3139 ELSE 3140 LastTable%+=1 3141 Tablenumber%=LastTable% 3142 name$=$FNtext(tableW%,0) 3143 table$(LastTable%)=name$ 3144 Rows%=VAL($FNtext(tableW%,1)) 3145 TabFields%=VAL($FNtext(tableW%,2)) 3146 FOR I%=0 TO TabFields% 3147 tabfieldlen%(I%)=VAL($FNtext(tableW%,I%*2+4)) 3148 Rec%+=tabfieldlen%(I%)+1 3149 NEXT I% 3150 tablen%=160+Rows%*Rec% 3151 PROCcreate_named_sliding_block(tabanchor%(LastTable%),(tablen%+3) AND NOT 3) 3152 tabptr%=!tabanchor%(LastTable%) 3153 $tabptr%=STR$(Rows%):tabptr%+=LEN($tabptr%)+1 3154 $tabptr%=STR$(TabFields%):tabptr%+=LEN($tabptr%)+1 3155 FOR I%=0 TO TabFields% 3156 $tabptr%=STR$(tabfieldlen%(I%)):tabptr%+=LEN($tabptr%)+1 3157 head$=$FNtext(tableW%,I%*2+3) 3158 title$+=head$+STRING$(tabfieldlen%(I%)-LEN(head$)+2," ") 3159 NEXT I% 3160 $tabptr%=title$:tabptr%=!tabanchor%(LastTable%)+160 3161 FOR row%=1 TO Rows% 3162 FOR I%=0 TO TabFields% 3163 $tabptr%="":tabptr%+=tabfieldlen%(I%)+1 3164 NEXT I% 3165 NEXT row% 3166 PROCshow_table(LastTable%) 3167 Tablenumber%=LastTable% 3168 TabsLoaded$+=","+name$ 3169 IF menu%(5)>0 THEN menu_ptr%=menu%(5) 3170 menu%(5)=FNcreate_menu(menu_ptr%,140,TabsLoaded$) 3171 ptr%=menu%(2)+52:ptr%!4=menu%(5):PROClit(menu%(2),1,TRUE) 3172 ENDIF 3173 PROCclose_window(tableW%) 3174 ENDCASE 3175ENDCASE 3176ENDPROC 3177: 3178DEF PROCclear_table(T%) 3179IF FNconfirm(FNmsg(47))=FALSE THEN ENDPROC 3180LOCAL R%,F%,ind%,Rows%,TabFields%,start%,Rec% 3181T$=FNtable_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) 3182start%=!tabanchor%(T%)+160-Rec% 3183FOR R%=1 TO Rows% 3184 ind%=start%+R%*Rec% 3185 FOR F%=0 TO TabFields% 3186 $ind%="":ind%+=tabfieldlen%(F%)+1 3187 NEXT F% 3188NEXT R% 3189PROCshow_table(T%) 3190ENDPROC 3191: 3192DEF PROCshow_table(T%) 3193LOCAL ind%,start%,iflags%,I%,pos%,p$ 3194IF T%<0 THEN ENDPROC 3195PROCdelete_icons(datadicW%,0) 3196name$=table$(T%) 3197$Tablename%=name$ 3198$menu%(17)=name$ 3199SYS "OS_File",5,$database%+".ValTables."+name$ TO d%,,,,tablen% 3200PROCextend_named_sliding_block(undoanchor%,tablen%+1) 3201SYS "Wimp_TransferBlock",mytask%,!tabanchor%(T%),mytask%,!undoanchor%,tablen%+1 3202$TabTitle%=FNtable_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) 3203ind%=!tabanchor%(T%)+160 3204iflags%=&07003531 3205SYS "Hourglass_On" 3206FOR row%=1 TO Rows% 3207 pos%=80 3208 FOR I%=0 TO TabFields% 3209 R%=FNcreate_icon(datadicW%,pos%,-row%*36,(tabfieldlen%(I%)+1)*16,32,iflags%,"",ind%,writep%,tabfieldlen%(I%)+1) 3210 pos%+=(tabfieldlen%(I%)+2)*16 3211 ind%+=tabfieldlen%(I%)+1 3212 NEXT I% 3213 SYS "Hourglass_Percentage",row%*100 DIV Rows% 3214NEXT row% 3215SYS "Hourglass_Off" 3216p$=printrel$(T%) 3217IF p$<>"" THEN 3218 FOR I%=1 TO LEN(p$) 3219 PROCselect(datadicW%,VAL(MID$(p$,I%,1))) 3220 NEXT I% 3221ENDIF 3222!block%=0:block%!4=-Rows%*36-4 3223block%!8=(Rec%+10)*16:block%!12=0 3224SYS "Wimp_SetExtent",datadicW%,block% 3225!block%=datadicW% 3226SYS "Wimp_GetWindowState",,block% 3227block%!12=block%!4+(Rec%+10)*16 3228IF Rows%<20 THEN 3229 block%!16=block%!8+Rows%*36+4 3230 ELSE 3231 block%!16=block%!8+36*20+4 3232ENDIF 3233SYS "Wimp_OpenWindow",,block% 3234PROCredraw(datadicW%) 3235IF Access% THEN PROCset_caret(datadicW%,0) 3236ENDPROC 3237: 3238DEF PROCrestore_table(T%,L%) 3239SYS "Wimp_TransferBlock",mytask%,!undoanchor%,mytask%,!tabanchor%(T%),L%+1 3240PROCredraw(datadicW%) 3241ENDPROC 3242: 3243DEF PROCrestore_tabfield 3244LOCAL source%,dest% 3245SYS "Wimp_GetCaretPosition",,block%:wi%=!block%:ic%=block%!4 3246IF wi%=datadicW% THEN 3247 dest%=FNtext(datadicW%,ic%) 3248 source%=!undoanchor%+dest%-!tabanchor%(Tablenumber%) 3249 $dest%=$source% 3250 PROCredraw_icon(datadicW%,ic%) 3251ENDIF 3252ENDPROC 3253: 3254DEF PROCsort_table(T%) 3255title$=FNtable_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) 3256ind%=!tabanchor%(T%)+160-Rec% 3257FOR row%=0 TO Rows%-1 3258 ind%+=Rec% 3259 block%!(row%*4)=ind% 3260 IF $ind%="" THEN $ind%="~" 3261NEXT row% 3262SYS "OS_HeapSort",Rows%,(block% OR (1<<30) OR (1<<31)),4,,!tabanchor%(T%)+160,Rec% 3263ind%=!tabanchor%(T%)+160-Rec% 3264FOR row%=0 TO Rows%-1 3265 ind%+=Rec% 3266 IF $ind%="~" THEN $ind%="" 3267NEXT row% 3268PROCredraw(datadicW%) 3269ENDPROC 3270: 3271DEF PROCprint_table(T%) 3272IF printing% OR indexing% THEN ENDPROC 3273LOCAL start%,ptr%,Line$,title$,rowsused% 3274PROCread_print_options 3275format$="horiz" 3276title$=FNtable_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) 3277LenLine%=Lmargin%+LEN(title$)+2 3278Heading$=margin$+title$+STRING$(Rec%-LEN(title$)," ") 3279PROCextend_named_sliding_block(lineanchor%,LenLine%+4) 3280PROCextend_named_sliding_block(headanchor%,LenLine%+4):pos%=!headanchor% 3281PROCheap_store(headanchor%,LenLine%,0,pos%,0,Heading$) 3282Title$="Validation table" 3283Title1$=table$(T%) 3284Title2$="" 3285reportdest$="Window" 3286PROCclose_window(datadicW%) 3287Count%=0 3288PROClist_head(0) 3289SYS "Hourglass_On" 3290FOR I%=1 TO Rows% 3291 start%=!tabanchor%(T%)+160-Rec% 3292 Line$=margin$ 3293 ptr%=start%+I%*Rec% 3294 FOR J%=0 TO TabFields% 3295 IF $ptr%<>"" THEN Line$+=$ptr%+STRING$(tabfieldlen%(J%)-LEN($ptr%)+2," ") 3296 ptr%+=tabfieldlen%(J%)+1 3297 NEXT J% 3298 IF Line$<>margin$ THEN 3299 rowsused%+=1 3300 $(!lineanchor%)=Line$:PROClist_line(-1,lineanchor%,LEN(Line$),32) 3301 ENDIF 3302 SYS "Hourglass_Percentage",I%*100 DIV Rows% 3303NEXT I% 3304SYS "Hourglass_Off" 3305PROCrule_off(45) 3306S$=margin$+STR$(Rows%)+" rows" 3307$(!lineanchor%)=S$:PROClist_line(-1,lineanchor%,LEN(S$),32) 3308S$=margin$+STR$(rowsused%)+" used" 3309$(!lineanchor%)=S$:PROClist_line(-1,lineanchor%,LEN(S$),32) 3310PROCrule_off(45) 3311PROCscreen_list 3312pitch$=FNpitch("0") 3313PROClit(menu%(18),1,FALSE) 3314ENDPROC 3315: 3316DEF FNtable_number(N$) 3317LOCAL T%,P% 3318IF N$="" THEN=-1 3319T%=-1 3320REPEAT 3321 T%+=1 3322UNTIL table$(T%)=N$ OR T%>LastTable% 3323IF T%>LastTable% THEN=-1 ELSE=T% 3324: 3325DEF FNtable_info(T%,RETURN R%,RETURN F%,RETURN RL%,L%()) 3326LOCAL P%,I% 3327P%=!tabanchor%(T%) 3328R%=VAL($P%):P%+=LEN($P%)+1 3329F%=VAL($P%):P%+=LEN($P%)+1 3330RL%=0 3331FOR I%=0 TO F% 3332 L%(I%)=VAL($P%):P%+=LEN($P%)+1 3333 RL%+=L%(I%)+1 3334NEXT I% 3335=$P% 3336: 3337DEF FNtable_field(F%,L%()) 3338LOCAL I%,P% 3339WHILE I%<F% 3340 P%+=L%(I%)+1 3341 I%+=1 3342ENDWHILE 3343=P% 3344: 3345DEF PROCdrag_table(f$) 3346LOCAL pos%,name$,d% 3347Tablenumber%=-1 3348name$=FNleaf(f$) 3349IF INSTR(TabsLoaded$,name$)>0 THEN ENDPROC 3350SYS "OS_File",5,f$ TO d%,,,,tablen% 3351IF LastTable%=MaxTabs% THEN 3352 IF INSTR(extratabs$,name$)=0 THEN extratabs$+=name$+"," 3353 ELSE 3354 LastTable%+=1 3355 PROCcreate_named_sliding_block(tabanchor%(LastTable%),(tablen%+3) AND NOT 3) 3356 SYS "OS_File",255,f$,!tabanchor%(LastTable%) 3357 table$(LastTable%)=name$ 3358 Tablenumber%=LastTable% 3359 TabsLoaded$+=","+name$ 3360 IF menu%(5)>0 THEN menu_ptr%=menu%(5) 3361 menu%(5)=FNcreate_menu(menu_ptr%,140,TabsLoaded$) 3362 ptr%=menu%(2)+52:ptr%!4=menu%(5):PROClit(menu%(2),1,TRUE) 3363 ENDIF 3364ENDIF 3365ENDPROC 3366: 3367DEF PROClink_to_table 3368LOCAL icon% 3369CASE b% AND %111 OF 3370 WHEN 2,4: 3371 IF ic%=13 THEN 3372 PROCtick_one(menu%(5),0,LastTable%,Tablenumber%) 3373 PROCshow_menu(menu%(5),oldx%+32,oldy%) 3374 ENDIF 3375ENDCASE 3376CASE b% AND %111 OF 3377 WHEN 1,4: 3378 IF (b% AND %111)=4 THEN z%=1 ELSE z%=-1 3379 CASE ic% OF 3380 WHEN 5:PROCtcycle(z%) 3381 WHEN 6:PROCtcycle(-z%) 3382 WHEN 7:PROCfcycle(z%,fieldnum%) 3383 WHEN 8:PROCfcycle(-z%,fieldnum%) 3384 WHEN 11:PROCfcycle(z%,expand%) 3385 WHEN 12:PROCfcycle(-z%,expand%) 3386 WHEN 9: 3387 FOR icon%=10 TO 12 3388 PROCicon_bit(22,linkW%,icon%,FNselected(linkW%,9)) 3389 NEXT icon% 3390 WHEN 3: 3391 icon%=field%(Fieldnumber%) 3392 IF FNselected(linkW%,4) AND $Tablename%<>"" THEN 3393 link$(Fieldnumber%)=$Tablename%+$fieldnum% 3394 PROCset_icon_cols(mainW%,icon%,fcol%(6)) 3395 IF FNselected(linkW%,9) THEN link$(Fieldnumber%)=$expand%+link$(Fieldnumber%) 3396 ELSE 3397 link$(Fieldnumber%)="" 3398 PROCset_icon_cols(mainW%,icon%,7) 3399 ENDIF 3400 link$(0)="LOADED" 3401 IF (b% AND %111)=4 THEN PROCclose_window(linkW%) 3402 ENDCASE 3403ENDCASE 3404ENDPROC 3405: 3406DEF PROCtcycle(z%) 3407IF LastTable%=-1 THEN ENDPROC 3408Tablenumber%+=z% 3409IF Tablenumber%>LastTable% THEN Tablenumber%=0 3410IF Tablenumber%<0 THEN Tablenumber%=LastTable% 3411$Tablename%=table$(Tablenumber%) 3412PROCredraw_icon(linkW%,0) 3413ENDPROC 3414: 3415DEF PROCfcycle(z%,column%) 3416T$=FNtable_info(Tablenumber%,Rows%,TabFields%,Rec%,tabfieldlen%()) 3417field%=VAL($column%) 3418field%+=z% 3419IF field%>TabFields% THEN field%=0 3420IF field%<0 THEN field%=TabFields% 3421$column%=STR$(field%) 3422PROCredraw_icon(linkW%,2) 3423PROCredraw_icon(linkW%,10) 3424ENDPROC 3425: 3426DEF PROClink_status 3427LOCAL name$,name1$,field$,expand$,ic% 3428name$=link$(Fieldnumber%) 3429IF ASC(name$)<58 AND ASC(name$)<>-1 THEN expand$=LEFT$(name$,1):name$=MID$(name$,2) 3430field$=RIGHT$(name$):name1$=LEFT$(name$) 3431IF (name1$<>"" AND INSTR(TabsLoaded$,name1$)>0) THEN 3432 $Tablename%=name1$:$fieldnum%=field$:$expand%=expand$ 3433 Tablenumber%=FNtable_number(name1$) 3434 PROCselect(linkW%,4) 3435 ELSE 3436 Tablenumber%=0 3437 $Tablename%=table$(Tablenumber%) 3438 PROCdeselect(linkW%,4):$fieldnum%="0" 3439ENDIF 3440IF expand$<>"" THEN 3441 PROCselect(linkW%,9):$expand%=expand$ 3442 ELSE PROCdeselect(linkW%,9):$expand%="0" 3443ENDIF 3444FOR ic%=10 TO 12 3445 PROCicon_bit(22,linkW%,ic%,FNselected(linkW%,9)) 3446NEXT ic% 3447PROCredraw_icon(linkW%,0):PROCredraw_icon(linkW%,2):PROCredraw_icon(linkW%,10) 3448ENDPROC 3449: 3450REM End of Validation table routines ------------------------------------ 3451: 3452DEF PROCchanges(key%) 3453LOCAL M$,K%,index% 3454Search$=FNparse($FNtext(changeW%,3),FNselected(changeW%,5)) 3455New$=$FNtext(changeW%,1) 3456IF New$="" THEN n$="<null>" ELSE n$=New$ 3457IF New$<>"" AND INSTR("+-*/",LEFT$(New$,1))>0 THEN 3458 numeric%=TRUE 3459 ELSE numeric%=FALSE 3460ENDIF 3461K%=FNis_a_key(Fieldnumber%) 3462IF K%=key% THEN PROCsofterror("",12):SYS "Wimp_CreateMenu",,-1:ENDPROC 3463IF K%>=0 THEN M$=" NOTE! Index on this field will NO LONGER BE VALID and will be deleted." ELSE M$="" 3464P%=INSTR(Title$,". "):Title$=MID$(Title$,P%+2) 3465IF Title$<>"All records" THEN Title$=" when "+Title$ ELSE Title$=" for "+Title$ 3466Title$="Change "+Fieldname$+" to "+n$+Title$+". "+M$ 3467IF FNconfirm(Title$)=TRUE THEN 3468 subtotal%=FNcount_recs(key%,zero%) 3469 SYS "Hourglass_On" 3470 dbasehandle%=OPENUP($database%+".Database") 3471 P%=FNneighbour(key%,top,1) 3472 PROCscan_file("P%<>top",key%,5) 3473 PROCclose_file(dbasehandle%) 3474 $Date%(file%)=FNdate 3475 date%?file%=1 3476 PROCdisplay(key%,addr) 3477 SYS "Hourglass_Off" 3478 IF K%>=0 THEN 3479 FOR index%=K% TO Keys% 3480 Index$(K%)=Index$(K%+1) 3481 NEXT index% 3482 PROCscrap_sliding_block(keyanchor%(K%)) 3483 Keys%-=1 3484 ENDIF 3485 IF FNselected(passW%,16) THEN BPUT#loghandle%,Title$ 3486ENDIF 3487SYS "Wimp_CreateMenu",,-1 3488ENDPROC 3489: 3490DEF FNis_a_key(F%) 3491LOCAL key%,flag% 3492flag%=-1 3493FOR key%=0 TO Keys% 3494 IF KF%(key%,0)=F% OR KF%(key%,1)=F% THEN flag%=key% 3495NEXT key% 3496=flag% 3497: 3498DEF PROCread(N%,K%,R%,f$) 3499LOCAL I%,key%,dbasehandle% 3500dbasehandle%=OPENIN(f$+".Database") 3501$Rf%(0)="":field$(0)="":key$()="" 3502PTR#dbasehandle%=ABS(R%)*Length% 3503FOR I%=1 TO N% 3504 field$(I%)=GET$#dbasehandle% 3505 IF chartype%(I%)<>40 AND chartype%(I%)<>59 THEN $Rf%(I%)=field$(I%) 3506 CASE chartype%(I%) OF 3507 WHEN 36,37,38:PROCset_blob_sprite(R%,I%,chartype%(I%)) 3508 WHEN 39:PROCshow_text_block(I%) 3509 WHEN 40:PROCshow_picture(I%) 3510 WHEN 41,42,43,44,45: 3511 IF field$(I%)=" " THEN PROCselect(mainW%,field%(I%)) ELSE PROCdeselect(mainW%,field%(I%)) 3512 WHEN 46:IF R%=RA% THEN $Rf%(I%)=STR$(nextrec%) 3513 WHEN 47:IF R%=RA% THEN PROCsplit_link(I%,R$,V$):$Rf%(I%)=R$ 3514 WHEN 48:IF R%=RA% THEN $Rf%(I%)=RIGHT$(TIME$,8) 3515 WHEN 49:IF R%=RA% THEN $Rf%(I%)=LEFT$(TIME$,15) 3516 WHEN 50:IF R%=RA% THEN $Rf%(I%)=FNconvert_date(2) 3517 WHEN 51:IF R%=RA% THEN $Rf%(I%)=FNconvert_date(4) 3518 WHEN 52:IF R%=RA% THEN $Rf%(I%)=TIME$ 3519 WHEN 53:IF R%=RA% THEN $Rf%(I%)=LEFT$(TIME$,3) 3520 WHEN 54:IF R%=RA% THEN $Rf%(I%)=MID$(TIME$,5,2) 3521 WHEN 55:IF R%=RA% THEN $Rf%(I%)=MID$(TIME$,8,3) 3522 WHEN 56:IF R%=RA% THEN M$=MID$(TIME$,8,3):P%=INSTR(months$,M$):$Rf%(I%)=STR$((P%+2) DIV 3) 3523 WHEN 57:IF R%=RA% THEN $Rf%(I%)=MID$(TIME$,12,4) 3524 ENDCASE 3525NEXT I% 3526IF K% THEN 3527 FOR key%=0 TO Keys% 3528 key$(key%)=FNkey(key%) 3529 NEXT key% 3530ENDIF 3531PROCclose_file(dbasehandle%) 3532ENDPROC 3533: 3534DEF PROCupdate_calcs(N%) 3535IF design% THEN ENDPROC 3536LOCAL I%,C%,L%,F,F$,Form$,S$,SF$ 3537Form$=update$(N%) 3538IF LEN Form$=0 THEN ENDPROC 3539FOR I%=1 TO LEN(Form$)-1 STEP 2 3540 F%=FNfnum(MID$(Form$,I%,2)) 3541 PROCsplit_link(F%,real$,visible$) 3542 LOCAL ERROR 3543 ON ERROR LOCAL:RESTORE ERROR:PROCcalc_error:ENDPROC 3544 CASE chartype%(F%) OF 3545 WHEN 6: 3546 F=EVAL(real$):F$=STR$(F):IF fix%(F%)>0 THEN F$=FNfix_point(F$,F%) 3547 WHEN 7: 3548 F$=EVAL(real$) 3549 IF N%=0 THEN S$=FNexpand(F$,link$(F%),L%,SF$):F$=SF$ 3550 ENDCASE 3551 RESTORE ERROR 3552 IF LEN(F$)<=len%(F%) THEN $Rf%(F%)=F$:PROCredraw_icon(mainW%,field%(F%)) 3553 PROCupdate_calcs(F%) 3554NEXT I% 3555ENDPROC 3556: 3557DEF PROCcalc_error 3558IF calcerror%=FALSE THEN 3559 PROCwimp_error(TRUE,ERR,ERL,REPORT$) 3560 REM PROCsofterror(calc$(I%),73) 3561 calcerror%=TRUE 3562 ELSE calcerror=FALSE 3563ENDIF 3564ENDPROC 3565; 3566DEF PROCcheck_change 3567LOCAL F%,flag% 3568WHILE F%<fields% AND flag%=FALSE 3569 F%+=1 3570 CASE chartype%(F%) OF 3571 WHEN 0,1,2,3,4,5,6,7,8,41,42,43,44,45: 3572 IF $Rf%(F%)<>field$(F%) THEN flag%=TRUE 3573 ENDCASE 3574ENDWHILE 3575IF flag% THEN PROCwrite(fields%,key%):warn%=TRUE 3576ENDPROC 3577: 3578DEF PROCwrite(N%,k%) 3579LOCAL key%,newrec%,alter% 3580IF NOT Access% THEN PROCsofterror("",14):ENDPROC 3581PROCclose_file(dbasehandle%) 3582IF template%=2 THEN PROCwrite_dbase(RA%,N%):template%=0:ENDPROC 3583PRI$=FNkey(0) 3584IF PRI$<>"" THEN 3585 kl%=KL%(0):val$=FNtype(0) 3586 IF key$(0)="" THEN 3587 PROCinsert(TRUE,PRI$,0) 3588 IF PRI$<>"*Failed*" THEN 3589 newrec%=TRUE 3590 IF k%=0 THEN addr=F% 3591 ENDIF 3592 ELSE 3593 IF PRI$=key$(0) THEN 3594 alter%=TRUE 3595 ELSE 3596 IF FNconfirm(FNmsg(48))=TRUE THEN 3597 alter%=TRUE 3598 PROCdelete(key$(0),0) 3599 PROCinsert(TRUE,PRI$,0) 3600 IF k%=0 THEN addr=F% 3601 ENDIF 3602 ENDIF 3603 ENDIF 3604ENDIF 3605IF NOT newrec% AND NOT alter% THEN ENDPROC 3606WHILE key%<Keys% 3607 key%+=1 3608 KEY$=FNkey(key%) 3609 IF KEY$<>key$(key%) OR key$(key%)="" THEN 3610 kl%=KL%(key%):val$=FNtype(key%) 3611 IF NOT newrec% THEN PROCdelete(key$(key%),key%) 3612 PROCinsert(FALSE,KEY$,key%) 3613 IF key%=k% THEN addr=F% 3614 ENDIF 3615ENDWHILE 3616$Date%(file%)=FNdate 3617date%?file%=1 3618IF NOT newtree% THEN PROCwrite_dbase(REC%,N%) 3619IF newrec% AND autobalance% THEN 3620 added%+=1 3621 IF added%=balint% THEN 3622 FOR key%=0 TO Keys% 3623 PROCbalance(key%) 3624 NEXT key% 3625 added%=0 3626 ENDIF 3627ENDIF 3628ENDPROC 3629: 3630DEF PROCwrite_dbase(R%,N%) 3631LOCAL I%,F$,dbasehandle%,flag% 3632dbasehandle%=OPENUP($database%+".Database") 3633PTR#dbasehandle%=R%*Length% 3634IF FNselected(passW%,16) THEN 3635 IF newrec% THEN 3636 BPUT#loghandle%,"New record: Subfile "+STR$(file%)+" "+$Rf%(KF%(0,0))+" "+$Rf%(KF%(0,1)) 3637 ELSE BPUT#loghandle%,logentry$:flag%=TRUE 3638 ENDIF 3639ENDIF 3640FOR I%=1 TO N% 3641 CASE chartype%(I%) OF 3642 WHEN 39,40:F$="" 3643 WHEN 47:F$=$Rf%(I%):PROCsplit_link(I%,R$,V$):S%=VAL(R$):S%+=1:calc$(I%)=V$+"|"+STR$(S%) 3644 WHEN 58:F$=TIME$ 3645 OTHERWISE:F$=$Rf%(I%) 3646 ENDCASE 3647 BPUT#dbasehandle%,F$ 3648 IF flag% AND F$<> field$(I%) THEN 3649 IF F$="" THEN D$="<null>" ELSE D$=F$ 3650 IF field$(I%)="" THEN S$="<null>" ELSE S$=field$(I%) 3651 BPUT#loghandle%,Tag$(I%)+": "+S$+" ---> "+D$ 3652 ENDIF 3653 field$(I%)=F$ 3654NEXT I% 3655PROCclose_file(dbasehandle%) 3656ENDPROC 3657: 3658DEF PROCsplit_link(F%,RETURN R$,RETURN V$) 3659LOCAL L$,P%,F 3660L$=calc$(F%) 3661CASE TRUE OF 3662 WHEN LEFT$(L$,1)="#": 3663 P%=INSTR(L$,"#",2):V$=MID$(L$,P%+1):R$=MID$(L$,2,P%-2) 3664 WHEN INSTR(L$,"|")>0: 3665 P%=INSTR(L$,"|"):V$=LEFT$(L$,P%-1):R$=MID$(L$,P%+1) 3666 OTHERWISE:R$="":V$="" 3667ENDCASE 3668ENDPROC 3669: 3670DEF FNkey(key%) 3671=FNkey2(key%,0) 3672: 3673DEF FNkey2(key%,loc%) 3674LOCAL I%,N%,P%,S%,S$,T$,f0%,f1% 3675P%=1:f0%=KF%(key%,0):f1%=KF%(key%,1) 3676CASE loc% OF 3677 WHEN 0: 3678 S$=$Rf%(f0%)+" "+$Rf%(f1%) 3679 OTHERWISE 3680 S$=F$(f0%)+" "+F$(f1%) 3681ENDCASE 3682IF S$=" " THEN="" 3683IF RIGHT$(S$)<>" " THEN S$+=" " 3684FOR I%=0 TO 3 3685 N%=KW%(key%,I%) 3686 IF N%<>0 AND P%<>LEN(S$) THEN 3687 S%=INSTR(S$," ",P%+1) 3688 IF S%-P%<N% THEN N%=S%-P% 3689 T$+=MID$(S$,P%,N%) 3690 P%=S%+1 3691 ENDIF 3692NEXT I% 3693T$+=STRING$(KL%(key%)-LEN(T$),"#") 3694CASE chartype%(f0%) OF 3695 WHEN 5,51,52:T$=FNreverse_date(T$) 3696ENDCASE 3697IF case%(key%) THEN=T$ ELSE=FNu(T$) 3698: 3699DEF FNu(N$) 3700LOCAL I%,B% 3701$key=N$ 3702FOR I%=0 TO LEN(N$)-1 3703 B%=key?I% 3704 IF B%>96 AND B%<123 THEN key?I%=B% AND 223 3705NEXT I% 3706=$key 3707: 3708DEF FNdate 3709LOCAL Y$,M$,D$,M%,date$ 3710Y$=MID$(TIME$,14,2) 3711D$=MID$(TIME$,5,2) 3712M$=MID$(TIME$,8,3) 3713M%=(INSTR("JanFebMarAprMayJunJulAugSepOctNovDec",M$)+2) DIV 3 3714IF M%<10 THEN M$="0"+STR$(M%) ELSE M$=STR$(M%) 3715date$=D$+"-"+M$+"-"+Y$ 3716=date$ 3717: 3718DEF PROCdate(key%) 3719IF !keyanchor%(key%)=0 THEN ENDPROC 3720LOCAL I% 3721FOR I%=0 TO 5 3722 IF date%?I%=1 THEN 3723 $(!keyanchor%(key%)+8+9*I%)=FNdate 3724 $Date%(I%)=FNdate 3725 ENDIF 3726NEXT I% 3727ENDPROC 3728: 3729DEF FNcheck_date(D$,place%,RETURN date$) 3730LOCAL I%,D%,M%,Y%,L%,P%,Q%,U$,d$,m$,y$ 3731L%=LEN(D$) 3732IF L%=0 THEN=TRUE 3733FOR I%=1 TO L% 3734 C$=MID$(D$,I%,1) 3735 IF C$<"0" OR C$>"9" THEN 3736 IF P%=0 THEN P%=I% ELSE Q%=I% 3737 ENDIF 3738NEXT I% 3739IF P%=0 OR Q%=0 THEN PROCrestore(Fieldnumber%," (day, month & year must be separated by non-numeral)",4):=FALSE 3740D%=VAL(LEFT$(D$,P%-1)) 3741M%=VAL(MID$(D$,P%+1,Q%-P%-1)) 3742Y%=VAL(MID$(D$,Q%+1)) 3743IF Y%<0 OR D%<1 THEN PROCrestore(Fieldnumber%,"",4):=FALSE 3744IF M%<1 OR M%>12 THEN PROCrestore(Fieldnumber%," (month out of range)",4):=FALSE 3745CASE TRUE OF 3746 WHEN Y% MOD 400=0:U$="312931303130313130313031" 3747 WHEN Y% MOD 100<>0 AND Y% MOD 4=0:U$="312931303130313130313031" 3748 OTHERWISE:U$="312831303130313130313031" 3749ENDCASE 3750DM$=MID$(U$,2*M%-1,2) 3751IF D%>VAL(DM$) THEN PROCrestore(Fieldnumber%," (day out of range - max="+DM$+")",4):=FALSE 3752d$=STR$(D%):IF LEN(d$)=1 THEN d$="0"+d$ 3753m$=STR$(M%):IF LEN(m$)=1 THEN m$="0"+m$ 3754y$=STR$(Y%):IF LEN(y$)=1 THEN y$="0"+y$ 3755IF LEN(y$)<>2 AND LEN(y$)<>4 THEN PROCrestore(Fieldnumber%," (year not 2 or 4 digits)",4):=FALSE 3756IF LEN(y$)=4 AND len%(Fieldnumber%)<10 THEN y$=RIGHT$(y$,2) 3757date$=d$+datesep$+m$+datesep$+y$ 3758IF place%=0 AND LEN(date$)>len%(Fieldnumber%) THEN PROCrestore(Fieldnumber%," (too long for field)",4):=FALSE 3759CASE place% OF 3760 WHEN 0: 3761 $Rf%(Fieldnumber%)=date$:PROCredraw_icon(mainW%,field%(Fieldnumber%)) 3762 WHEN 1: 3763 $FNtext(keypadW%,27)=date$:PROCredraw_icon(keypadW%,27) 3764ENDCASE 3765=TRUE 3766: 3767DEF FNconvert_date(L%) 3768LOCAL d$,m$,y$,M$,M% 3769d$=MID$(TIME$,5,2) 3770M$=MID$(TIME$,8,3) 3771P%=INSTR(months$,M$) 3772M%=(P%+2) DIV 3 3773m$=STR$(M%):IF M%<10 THEN m$="0"+m$ 3774y$=MID$(TIME$,16-L%,L%) 3775=d$+datesep$+m$+datesep$+y$ 3776: 3777DEF FNreverse_date(K$) 3778LOCAL sep$ 3779CASE LEN(K$) OF 3780 WHEN 8: 3781 sep$=MID$(K$,3,1) 3782 K$=RIGHT$(K$,2)+sep$+MID$(K$,4,2)+sep$+LEFT$(K$,2) ELSE=K$ 3783 WHEN 10: 3784 IF VAL(K$)<100 THEN 3785 sep$=MID$(K$,3,1) 3786 K$=RIGHT$(K$,4)+sep$+MID$(K$,4,2)+sep$+LEFT$(K$,2) 3787 ELSE 3788 sep$=MID$(K$,5,1) 3789 K$=RIGHT$(K$,2)+sep$+MID$(K$,6,2)+sep$+LEFT$(K$,4) 3790 ENDIF 3791ENDCASE 3792=K$ 3793: 3794DEF FNseconds(time$,place%) 3795LOCAL I%,L%,P%,Q%,H%,M%,S%,secs%,h$,m$,s$,C$ 3796L%=LEN(time$) 3797IF L%=0 THEN=0 3798FOR I%=1 TO L% 3799 C$=MID$(time$,I%,1) 3800 IF C$<"0" OR C$>"9" THEN 3801 IF P%=0 THEN P%=I% ELSE Q%=I% 3802 ENDIF 3803NEXT I% 3804IF P%=0 OR Q%=0 THEN PROCrestore(Fieldnumber%," (hours, minutes and seconds must be separated by a non-numeral).",94):=-1 3805H%=VAL(LEFT$(time$,P%-1)):IF H%<0 OR H%>23 THEN PROCrestore(Fieldnumber%," (hours out of range).",94):=-1 3806M%=VAL(MID$(time$,P%+1,Q%-P%-1)):IF M%<0 OR M%>59 THEN PROCrestore(Fieldnumber%," (minutes out of range).",94):=-1 3807S%=VAL(MID$(time$,Q%+1)):IF S%<0 OR S%>59 THEN PROCrestore(Fieldnumber%," (seconds out of range).",94):=-1 3808h$=STR$(H%):IF LEN(h$)=1 THEN h$="0"+h$ 3809m$=STR$(M%):IF LEN(m$)=1 THEN m$="0"+m$ 3810s$=STR$(S%):IF LEN(s$)=1 THEN s$="0"+s$ 3811time$=h$+timesep$+m$+timesep$+s$ 3812secs%=H%*3600+M%*60+S% 3813IF place%=0 THEN $Rf%(Fieldnumber%)=time$:PROCredraw_icon(mainW%,field%(Fieldnumber%)) 3814=secs% 3815: 3816DEF FNtime(secs%) 3817LOCAL H%,M%,S%,h$,m$,s$ 3818H%=secs% DIV 3600:secs%=secs% MOD 3600 3819M%=secs% DIV 60 3820S%=secs% MOD 60 3821h$=STR$(H%):IF LEN(h$)=1 THEN h$="0"+h$ 3822m$=STR$(M%):IF LEN(m$)=1 THEN m$="0"+m$ 3823s$=STR$(S%):IF LEN(s$)=1 THEN s$="0"+s$ 3824=h$+timesep$+m$+timesep$+s$ 3825: 3826DEF FNvalidate(F%,RETURN TabFields%,RETURN name$) 3827IF NOT validate% THEN=TRUE 3828LOCAL row%,field%,Rows%,Rec%,ind%,eind%,pos%,start%,rel%,exp%,epos%,date$ 3829IF fix%(F%)>0 THEN $Rf%(F%)=FNfix_point($Rf%(F%),F%):PROCredraw_icon(mainW%,field%(F%)) 3830IF chartype%(F%)=3 THEN=FNcheck_val(calc$(F%),$Rf%(F%)) 3831IF chartype%(F%)=5 THEN=FNcheck_date($Rf%(F%),0,date$) 3832IF chartype%(F%)=8 THEN=(FNseconds($Rf%(F%),0)>=0) 3833IF $Rf%(F%)=field$(F%) AND TabFields%=0 THEN=TRUE 3834name$=link$(F%):Tablenumber%=-1:rel%=TabFields% 3835IF name$="" OR LEFT$(name$,1)="#" THEN=TRUE 3836field%=VAL(RIGHT$(name$)):name$=LEFT$(name$) 3837exp%=-1:IF ASC(name$)<58 AND ASC(name$)<>-1 THEN exp%=VAL(name$):name$=MID$(name$,2) 3838T%=FNtable_number(name$):IF T%<0 THEN=TRUE 3839T$=FNtable_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) 3840pos%=FNtable_field(field%,tabfieldlen%()) 3841IF exp%<0 THEN epos%=pos% ELSE epos%=FNtable_field(exp%,tabfieldlen%()) 3842start%=!tabanchor%(T%)+160-Rec% 3843ind%=start%+pos%:eind%=start%+epos% 3844REPEAT row%+=1 3845 ind%+=Rec%:eind%+=Rec% 3846UNTIL row%>Rows% OR $ind%=$Rf%(F%) OR $eind%=$Rf%(F%) 3847IF row%>Rows% AND rel%=0 THEN PROCrestore(F%," ("+name$+")",5):=FALSE ELSE IF row%>Rows% THEN=FALSE 3848ind%=start%+row%*Rec% 3849FOR I%=0 TO TabFields% 3850 rel%(I%)=ind%:ind%+=tabfieldlen%(I%)+1 3851NEXT I% 3852IF exp%>=0 THEN expand$=$eind%:IF LEN(expand$)<=len%(F%) THEN $Rf%(F%)=expand$:PROCredraw_icon(mainW%,field%(F%)) 3853=row% 3854: 3855DEF FNcheck_val(C$,N$) 3856LOCAL min$,max$,P%,V,ok% 3857ok%=TRUE 3858IF N$="" THEN=ok% 3859IF C$<>"" THEN 3860 V=VAL(N$) 3861 P%=INSTR(C$,"|") 3862 IF P%>0 THEN 3863 min$=LEFT$(C$,P%-1) 3864 max$=MID$(C$,P%+1) 3865 IF min$<>"" AND V<VAL(min$) THEN ok%=FALSE:PROCrestore(F%," (min="+min$+")",58) 3866 IF max$<>"" AND V>VAL(max$) THEN ok%=FALSE:PROCrestore(F%," (max="+max$+")",59) 3867 ENDIF 3868ENDIF 3869=ok% 3870: 3871DEF PROCrestore_rec 3872LOCAL F% 3873FOR F%=1 TO fields% 3874 $Rf%(F%)=field$(F%) 3875NEXT F% 3876PROCredraw(mainW%) 3877ENDPROC 3878: 3879DEF PROCrestore(F%,E$,E%) 3880IF E%>=0 THEN PROCsofterror(E$,E%) 3881$Rf%(F%)=field$(F%) 3882PROCredraw_icon(mainW%,field%(F%)) 3883PROCset_caret(mainW%,field%(F%)) 3884ENDPROC 3885: 3886DEF PROCrelations(menu%) 3887LOCAL F%,I%,W%,L%,N$,row%,col%,flags% 3888F%=-1 3889row%=FNvalidate(Fieldnumber%,F%,N$) 3890col%=VAL(RIGHT$(link$(Fieldnumber%))) 3891IF row%>0 THEN 3892 PROCdelete_icons(relateW%,0) 3893 FOR I%=0 TO F% 3894 IF I%=col% THEN flags%=&0B000531 ELSE flags%=&07000531 3895 L%=LEN($rel%(I%)) 3896 R%=FNcreate_icon(relateW%,0,-I%*36-36,L%*16+16,32,flags%,"",rel%(I%),-1,L%+1) 3897 IF L%>W% THEN W%=L% 3898 NEXT I% 3899 $RelTitle%=N$ 3900 IF menu% THEN 3901 xmax%=x%-32:ymax%=y% 3902 ELSE 3903 !block%=keypadW%:SYS "Wimp_GetWindowState",,block% 3904 xmax%=block%!12+2:ymax%=block%!16 3905 ENDIF 3906 !block%=relateW%:SYS "Wimp_GetWindowState",,block% 3907 width%=W%*16+16:height%=F%*36+36 3908 block%!4=xmax%:block%!12=xmax%+width% 3909 block%!8=ymax%-height%:block%!16=ymax% 3910 block%!28=-1 3911 IF menu% THEN 3912 SYS "Wimp_OpenWindow",,block% 3913 SYS "Wimp_CreateMenu",,relateW%,x%-32,y% 3914 ELSE 3915 SYS "Wimp_OpenWindow",,block% 3916 PROCredraw(relateW%) 3917 ENDIF 3918 ELSE PROCclose_window(relateW%) 3919ENDIF 3920ENDPROC 3921: 3922DEF FNfix_point(F$,F%) 3923IF F$="" THEN="" 3924@%=&01020009+fix%(F%)*256 3925F$=STR$(VAL(F$)) 3926@%=&90A 3927=LEFT$(F$,len%(F%)) 3928: 3929DEF FNmoveto(key%,P%,D%) 3930D%=(D%+1) DIV 2 3931IF filter% THEN 3932 P%=FNnext_match(P%,D%,Filter$) 3933 ELSE 3934 P%=FNneighbour(key%,P%,D%) 3935 IF P%=top THEN VDU 7:P%=FNneighbour(key%,P%,D%) 3936ENDIF 3937PROCdisplay(key%,P%) 3938=P% 3939: 3940DEF FNnext_match(P%,D%,S$) 3941LOCAL REC% 3942dbasehandle%=OPENIN($database%+".Database") 3943REPEAT 3944 P%=FNneighbour(key%,P%,D%) 3945 IF P%<>top THEN 3946 REC%=FNrec_no(k$,key%,P%) 3947 PROCreadsmarray(dbasehandle%,REC%) 3948 ENDIF 3949UNTIL EVAL(S$)=TRUE OR P%=top 3950IF P%=top THEN PROCsofterror("",38) 3951PROCclose_file(dbasehandle%) 3952=P% 3953: 3954DEF PROCdisplay(key%,P%) 3955PROCcheck_change 3956IF template%=1 THEN template%=2 ELSE template%=0 3957LOCAL I%,L%,S%,S$,k$,ok%,nextrec% 3958CASE P% OF 3959 WHEN -1: 3960 keybase%=!keyanchor%(key%):A%=!keybase%:nextrec%=!(keybase%+A%+8+KL%(0)+1) 3961 CASE TRUE OF 3962 WHEN !(keybase%+A%)>0,template%=2,design%=TRUE:ok%=TRUE 3963 OTHERWISE: 3964 incr%=VAL($Increment%) 3965 IF incr%>0 THEN 3966 PROCchange_length(RA%+incr%,FALSE):ok%=TRUE 3967 ELSE PROCsofterror("",2) 3968 ENDIF 3969 ENDCASE 3970 IF ok% THEN 3971 CASE TRUE OF 3972 WHEN design%:$RecInfo%="Make adjustments to fields" 3973 WHEN template%=2:$RecInfo%="Enter data which you want to appear by default on new records" 3974 OTHERWISE:$RecInfo%="New record" 3975 ENDCASE 3976 REC%=RA%:PROCread(fields%,FALSE,REC%,$database%) 3977 ENDIF 3978 WHEN top: 3979 REC%=RA%:PROCread(fields%,FALSE,REC%,$database%) 3980 $RecInfo%="Subfile="+STR$(file%) 3981 IF NOT filter% THEN VDU 7:$RecInfo%+=". (Empty)" 3982 OTHERWISE: 3983 REC%=FNrec_no(k$,key%,P%) 3984 PROCread(fields%,TRUE,REC%,$database%) 3985 key$(key%)=k$ 3986 $RecInfo%="Subfile="+STR$(file%)+". Record="+STR$(REC%)+". Key="+key$(key%) 3987ENDCASE 3988L%=FNtext_length(mainW%,starthere%) 3989IF Access% THEN PROCset_caret(mainW%,starthere%) 3990PROCidentify_field(starthere%) 3991PROCupdate_calcs(0) 3992IF FNselected(passW%,16) THEN logentry$="Subfile "+STR$(file%)+" "+$Rf%(KF%(0,0))+" "+$Rf%(KF%(0,1)) 3993PROCredraw(mainW%) 3994ENDPROC 3995: 3996: 3997REM -------------------- Icon colours ------------------------------- 3998: 3999DEF PROCcolour(key%,type%) 4000PROCchange_field_cols(key%,type%,0) 4001IF KF%(key%,1)>0 THEN PROCchange_field_cols(key%,type%,1) 4002ENDPROC 4003: 4004DEF PROCchange_field_cols(key%,type%,fld%) 4005col%=fcol%(type%*2) 4006IF type%=0 OR key%>0 OR (key%=0 AND fcol%(0)=&17) THEN PROCset_icon_cols(mainW%,desc%(KF%(key%,fld%)),col%) 4007col%=fcol%(type%*2+1) 4008col2%=FNget_icon_cols(mainW%,field%(KF%(key%,fld%))) 4009IF (col2% AND %1111)<>fcol%(6) THEN 4010 IF type%=0 OR key%>0 OR (key%=0 AND fcol%(1)=&07) THEN PROCset_icon_cols(mainW%,field%(KF%(key%,fld%)),col%) 4011ENDIF 4012ENDPROC 4013: 4014DEF FNget_icon_cols(wi%,ic%) 4015!block%=wi%:block%!4=ic%:SYS "Wimp_GetIconState",,block% 4016=block%?27 4017: 4018DEF PROCset_icon_cols(wi%,ic%,col%) 4019!block%=wi%:block%!4=ic%:block%!8=(col%<<24):block%!12=&FF000000 4020SYS "Wimp_SetIconState",,block% 4021ENDPROC 4022: 4023DEF PROCdcolour(wi%,ic%,col%,fb%) 4024!block%=wi%:block%!4=ic%:SYS "Wimp_GetIconState",,block% 4025CASE fb% OF 4026 WHEN 0:block%!8=col%<<28:block%!12=&F0000000 4027 WHEN 1:block%!8=col%<<24:block%!12=&0F000000 4028ENDCASE 4029SYS "Wimp_SetIconState",,block% 4030ENDPROC 4031: 4032DEF PROCread_colours(f$) 4033LOCAL ic% 4034F=OPENIN(f$) 4035FOR ic%=0 TO 6 4036 INPUT#F,fcol%(ic%) 4037NEXT ic% 4038ncol%()=fcol%() 4039PROCclose_file(F) 4040ENDPROC 4041: 4042DEF PROCwrite_colours 4043LOCAL ic% 4044F=OPENUP($database%+".Colours") 4045FOR ic%=0 TO 6 4046 PRINT#F,fcol%(ic%) 4047NEXT ic% 4048PROCclose_file(F) 4049ENDPROC 4050: 4051DEF FNfind(S$,key%,m%,disp%) 4052LOCAL P%,F%,H%,num%,abort%,cond$ 4053IF NOT case%(key%) THEN S$=FNu(S$) 4054IF LEFT$(S$,1)="#" THEN 4055 PROCcheck_change 4056 REC%=VAL(MID$(S$,2)) 4057 IF REC%>=0 AND REC%<RA% THEN 4058 PROCread(fields%,TRUE,REC%,$database%) 4059 S$=key$(key%):H%=1:num%=TRUE 4060 PROCselect(keypadW%,25):PROCdeselect(keypadW%,24) 4061 ELSE PROCsofterror(" ("+S$+")",56):abort%=TRUE 4062 ENDIF 4063ENDIF 4064IF abort% THEN=addr 4065val$=FNtype(key%) 4066IF val$="VAL" THEN 4067 kl%=KL%(key%) 4068 ELSE 4069 P%=INSTR(S$," ") 4070 IF P%>0 THEN S$=LEFT$(S$,P%-1) 4071 kl%=LEN(S$) 4072ENDIF 4073P%=FNsearch(S$,key%,1+H%) 4074IF P%<0 AND FNselected(keypadW%,25) THEN 4075 F%=file% 4076 REPEAT 4077 file%=(file%+1) MOD 6 4078 top=8*file%+LH% 4079 P%=FNsearch(S$,key%,1+H%) 4080 UNTIL P%>0 OR file%=F% 4081ENDIF 4082IF val$="VAL" THEN cond$="VAL($(!keyanchor%(key%)+P%+8))=VAL(S$)" ELSE cond$="LEFT$($(!keyanchor%(key%)+P%+8),kl%)=S$" 4083matches%=0 4084CASE TRUE OF 4085 WHEN P%>=0 AND num%:RecF%=TRUE:addr=P% 4086 WHEN P%>=0:RecF%=TRUE 4087 WHILE EVAL(cond$) 4088 P%=FNneighbour(key%,P%,0) 4089 ENDWHILE 4090 P%=FNneighbour(key%,P%,1):addr=P%:REM ### Scan back to FIRST match & point addr at it ### 4091 WHILE EVAL(cond$) 4092 matches%+=1 4093 P%=FNneighbour(key%,P%,1) 4094 ENDWHILE 4095 WHEN num%:PROCsofterror(" (#"+STR$(REC%)+")",55) 4096 OTHERWISE:VDU 7:flash%=KF%(key%,0):addr=ABS(P%) 4097ENDCASE 4098$FNtext(keypadW%,36)=STR$(matches%)+" found":PROCredraw_icon(keypadW%,36) 4099IF disp% THEN PROCdisplay(key%,addr) 4100=addr 4101: 4102DEF PROCget_it_in(filename$) 4103SYS "OS_File",5,filename$ TO d%,,ftype% 4104ftype%=(ftype%>>8) AND &FFF:wi%=block%!20:ic%=block%!24 4105CASE ftype% OF 4106 WHEN &7f1:IF LastTable%=MaxTabs% THEN PROCsofterror(STR$(MaxTabs%+1),32) ELSE PROCdrag_table(filename$):PROCshow_table(Tablenumber%) 4107 WHEN &7f3:PROCdrag_selection(filename$) 4108 WHEN &7f4:PROCdrag_query(filename$) 4109 WHEN &7f5:PROCdrag_options(filename$) 4110 WHEN &dfe:PROCstart_import("CSV",block%!20) 4111 WHEN &ff9,&aff:PROCtransfer_blob(block%!20,block%!24,REC%,filename$,ftype%) 4112 WHEN &fff: 4113 F=OPENIN(filename$):header$=GET$#F:PROCclose_file(F) 4114 CASE wi% OF 4115 WHEN mainW%,-1: 4116 CASE TRUE OF 4117 WHEN header$="!SCRIPT POWERBASE": 4118 IF present%=7:PROCexecute_file(filename$) 4119 WHEN ic%>0:PROCtransfer_blob(block%!20,block%!24,REC%,filename$,ftype%) 4120 OTHERWISE:PROCstart_import("text",wi%) 4121 ENDCASE 4122 OTHERWISE:IF customise% THEN PROCspecial_drop 4123 ENDCASE 4124 OTHERWISE: 4125 CASE wi% OF 4126 WHEN reformW%: 4127 CASE reform$ OF 4128 WHEN "Merge":PROCmerge_files(filename$,file%) 4129 WHEN "Reformat":PROCreformat(filename$) 4130 ENDCASE 4131 OTHERWISE: 4132 IF d%=2 THEN 4133 CASE LEFT$(FNleaf(filename$),1) OF 4134 WHEN "!": 4135 REM ### Is it an Impression document? ### 4136 SYS "OS_File",5,filename$+".!DocData" TO d% 4137 IF d%=1 THEN 4138 document$=FNleaf(filename$) 4139 IF LEFT$(document$,1)="!" THEN document$=MID$(document$,2) 4140 block%!0=256:block%!12=0:block%!16=5:block%!20=0 4141 block%!24=0:block%!28=0:block%!32=0:block%!36=0 4142 block%!40=&2000:$(block%+44)=filename$ 4143 SYS "Wimp_SendMessage",18,block%,0 4144 mergewith$="Impression":Impref%=block%!8 4145 $MergeTitle%="Data merge with "+mergewith$ 4146 ELSE 4147 REM ### Is it a Powerbase application? ### 4148 SYS "OS_File",5,filename$+".Indices" TO d% 4149 IF d%=2 THEN 4150 IF present%>0 THEN PROCexit(0) 4151 $Title%=FNleaf(filename$) 4152 PROCopen_files(filename$) 4153 ENDIF 4154 ENDIF 4155 OTHERWISE: 4156 REM ### It's an ordinary directory folder ### 4157 PROCtransfer_blob(block%!20,block%!24,REC%,filename$,-1) 4158 ENDCASE 4159 ENDIF 4160 ENDCASE 4161ENDCASE 4162ENDPROC 4163: 4164DEF PROCopen_files(f$) 4165LOCAL I%,J%,F%,A$ 4166SYS "OS_File",5,f$+".Dbase" TO d% 4167IF d%=1 THEN ERROR fatal_err%,FNmsg(42) 4168SYS "OS_File",5,f$+".Database" TO d% 4169IF d%=1 THEN present%=present% OR 4 4170SYS "OS_File",5,f$+".PrimaryKey" TO d% 4171IF d%=1 THEN present%=present% OR 2 4172SYS "OS_File",5,f$+".Form" TO d% 4173IF d%=1 THEN present%=present% OR 1 4174SYS "OS_File",5,f$+".UsrSprites" TO d%,,,,len% 4175IF d%=1 THEN 4176 PROCcreate_named_sliding_block(logoanchor%,len%+8) 4177 base%=!logoanchor%:!base%=len%+4 4178 SYS "OS_File",255,f$+".UsrSprites",base%+4 4179 logosloaded%=TRUE 4180ENDIF 4181SYS "OS_CLI","Set DBase$Dir "+f$ 4182$database%=f$ 4183CASE present% OF 4184 WHEN 0,1,5:Access%=TRUE:Modify%=TRUE:PROCresume_opening 4185 WHEN 7:PROCaccess(f$) 4186 OTHERWISE:PROCwimp_error(TRUE,254,0,FNmsg(24)) 4187ENDCASE 4188ENDPROC 4189: 4190DEF PROCaccess(f$) 4191LOCAL L%,P%,keybase% 4192F=OPENIN(f$+".Colours") 4193IF F=0 THEN ERROR fatal_err%,f$+"."+FNmsg(18) 4194PTR#F=35 4195INPUT#F,S$:$Read%=FNencrypt(S$,FALSE) 4196INPUT#F,S$:$Write%=FNencrypt(S$,FALSE) 4197INPUT#F,S$:$Manager%=FNencrypt(S$,FALSE) 4198FOR I%=9 TO 15 4199 PROCselect(passW%,I%) 4200NEXT I% 4201PROCdeselect(passW%,16) 4202I%=9 4203WHILE I%<17 AND NOT EOF#F 4204 INPUT#F,Z%:PROCset_icon(passW%,I%,Z%) 4205 I%+=1 4206ENDWHILE 4207IF NOT EOF#F THEN INPUT#F,logpath$ 4208PROCclose_file(F) 4209IF $Manager%="" THEN 4210 Access%=TRUE:Modify%=TRUE:pw%=0 4211 PROCresume_opening 4212 ELSE 4213 $AccessTitle%="!Powerbase opening "+FNleaf($database%) 4214 PROCopen_window(accessW%) 4215 $Password%="" 4216 PROCset_caret(accessW%,0) 4217 SYS "Wimp_GetWindowState",,block% 4218 MOUSE RECTANGLE block%!4,block%!8,block%!12-block%!4,block%!16-block%!8 4219 REPEAT 4220 act%=0 4221 REPEAT 4222 PROCpoll 4223 UNTIL accessbutton%>0 4224 CASE accessbutton% OF 4225 WHEN 2:PROCclose_window(accessW%) 4226 present%=FALSE:accessbutton%=0:act%=1 4227 WHEN 3: 4228 password$=FNu($Password%) 4229 CASE password$ OF 4230 WHEN $Manager%:Access%=TRUE:Modify%=TRUE:act%=2:pw%=3 4231 WHEN $Write%:Access%=TRUE:Modify%=FALSE:act%=2:pw%=2 4232 WHEN $Read%:Access%=FALSE:Modify%=FALSE:act%=2:pw%=1 4233 OTHERWISE:accessbutton%=0:VDU 7 4234 $FNtext(accessW%,1)="Password not known" 4235 PROCdcolour(accessW%,1,11,1) 4236 delay%=TIME+150 4237 REPEAT 4238 PROCpoll 4239 UNTIL TIME>delay% 4240 $Password%="":PROCredraw_icon(accessW%,0):PROCset_caret(accessW%,0) 4241 $FNtext(accessW%,1)="Type in your password" 4242 PROCdcolour(accessW%,1,7,1) 4243 ENDCASE 4244 ENDCASE 4245 UNTIL act%>0 4246 PROCclose_window(accessW%) 4247 PROCgetscreensize(W%,H%) 4248 MOUSE RECTANGLE 0,0,W%,H% 4249 IF act%=2 THEN PROCresume_opening 4250ENDIF 4251ENDPROC 4252: 4253DEF PROCresume_opening 4254SYS "Hourglass_On" 4255IF FNselected(passW%,16) THEN PROCopen_log 4256SYS "OS_File",5,f$+".UserFuncs" TO d% 4257IF d%=1 THEN LIBRARY f$+".UserFuncs" 4258PROCread_colours($database%+".Colours") 4259SYS "OS_File",5,f$+".PrintRes.PrintOpts" TO d% 4260IF d%=1 THEN 4261 PROCdrag_options(f$+".PrintRes.PrintOpts") 4262 ELSE PROCdrag_options("<Pbase$Dir>.Resources.PrintOpts") 4263ENDIF 4264IF LEFT$(f$,3)="RAM" THEN ram%=TRUE 4265*Set Alias$Tables Filer_OpenDir <Dbase$Dir>.ValTables 4266*Set Alias$Resources Filer_OpenDir <Dbase$Dir>.PrintRes 4267*Set Alias$JobsDone Filer_OpenDir <Dbase$Dir>.PrintJobs 4268PROClit(menu%(0),1,FALSE) 4269PROClit(menu%(0),3,TRUE) 4270PROClit(menu%(0),4,TRUE) 4271PROClit(menu%(1),6,FNselected(passW%,9)) 4272PROClit(menu%(3),8,FNselected(passW%,15)) 4273PROClit(menu%(7),0,Access%) 4274PROClit(menu%(7),1,Modify%) 4275PROClit(menu%(7),2,Access%) 4276PROClit(menu%(7),3,Access%) 4277PROClit(menu%(7),4,Access%) 4278PROClit(menu%(2),0,Access%) 4279PROClit(menu%(0),2,Modify%) 4280PROClit(menu%(10),0,Access%) 4281PROClit(menu%(10),2,Access%) 4282PROClit(menu%(10),3,Access%) 4283PROClit(menu%(13),0,Access%) 4284PROClit(menu%(17),0,Modify%) 4285PROClit(menu%(3),0,((present% AND 4)>0)) 4286PROClit(menu%(9),1,((present% AND 4)=0)) 4287FOR I%=1 TO 6 4288 PROClit(menu%(3),I%,(present%=7)) 4289NEXT I% 4290PROClimit_actions(Access%) 4291IF present%<4 THEN design%=TRUE 4292IF present%=5 THEN PROCadjust_on(TRUE) 4293PROClit(menu%(9),5,FALSE) 4294fields%=FNget_form(Fptr%) 4295IF fields%>0 THEN 4296 starthere%=field%(FNfirst_field) 4297 PROCfield_menu(fieldmenu%,fields%) 4298 PROCcreate_named_sliding_block(transanchor%,Length%+1) 4299ENDIF 4300IF NOT adjust% THEN PROClit(menu%(9),2,(fields%>0)) 4301PROCload_calcs 4302CASE present% OF 4303 WHEN 0: 4304 $RecInfo%="No record design exists yet" 4305 FOR I%=1 TO 4 4306 PROClit(menu%(9),I%,FALSE) 4307 NEXT I% 4308 PROCopen_window(mainW%) 4309 IF !formanchor%=0 THEN 4310 PROCextend_named_sliding_block(formanchor%,0) 4311 Fptr%=!formanchor% 4312 fields%=0:Fieldnumber%=0 4313 ENDIF 4314 WHEN 1: 4315 $RecInfo%="Record design exists, but no datafiles" 4316 IF FNfirst_field>0 THEN 4317 PROClit(menu%(9),3,TRUE) 4318 PROClit(menu%(9),4,TRUE) 4319 ENDIF 4320 PROCopen_window(mainW%) 4321 WHEN 5: 4322 $RecInfo%="No primary key index file exists yet" 4323 SYS "OS_File",5,$database%+".Database" TO ,,,,len% 4324 RA%=(len% DIV Length%)-1:$Records%=STR$(RA%) 4325 IF FNfirst_field>0 THEN PROCopen_window(mainW%) 4326 WHEN 7: 4327 PROClit(menu%(1),7,FNselected(passW%,13)) 4328 PROClit(menu%(1),8,FNselected(passW%,13)) 4329 PROClit(menu%(1),2,FNselected(passW%,14)) 4330 SYS "OS_File",5,$database%+".Database" TO ,,,,len% 4331 RA%=(len% DIV Length%)-1:$Records%=STR$(RA%) 4332 PROCopen_index($database%+".PrimaryKey",0) 4333 key%=0:file%=0:top=8*file%+LH% 4334 PROCset_keydata(key%) 4335 keybase%=!keyanchor%(0):IF keybase%!4<=100 AND keybase%!4>0 THEN $Increment%=STR$(keybase%!4) ELSE $Increment%="0" 4336 f$=$database%+".Indices":R4%=0:Keys%=0 4337 WHILE R4%<>-1 4338 Keys%+=1 4339 SYS "OS_GBPB",9,f$,block%,1,R4%,11 TO ,,K$,,R4% 4340 IF R4%<>-1 THEN PROCopen_index(f$+"."+K$,Keys%):PROCcolour(Keys%,2) 4341 ENDWHILE 4342 Keys%-=1 4343 IF extrakeys$<>"" THEN PROCsofterror(LEFT$(extrakeys$),96) 4344 PROCcolour(0,0):PROCcolour(0,1) 4345 PROCget_tables 4346 key%=0 4347 PROCcount(key%,RU%) 4348 PROCjoke 4349 PROCshow_windows 4350ENDCASE 4351SYS "Hourglass_Off" 4352$dbase%=MID$($Title%,2) 4353PROCredraw_icon(-2,pbaseicon%) 4354f$=$database%+".Choices" 4355SYS "OS_File",5,f$ TO d% 4356IF d%=1 THEN PROCget_choices(f$) 4357SYS "OS_File",5,$database%+".Special" TO d% 4358IF d%=1 THEN LIBRARY $database%+".Special":PROCcustomise 4359ENDPROC 4360: 4361DEF PROCjoke 4362S$=$FNval(keypadW%,17) 4363IF MID$(TIME$,5,6)="01 Apr" AND MID$(TIME$,17,2)<"12" THEN 4364 S$="Stoilet"+MID$($block%!32,8) 4365 ELSE S$="Sdelete"+MID$($block%!32,8) 4366ENDIF 4367$FNval(keypadW%,17)=S$ 4368ENDPROC 4369: 4370DEF PROCget_choices(f$) 4371LOCAL F,S$,C$,P% 4372F=OPENIN(f$) 4373REPEAT 4374 S$=GET$#F:P%=INSTR(S$," "):C$=MID$(S$,P%+1):S$=LEFT$(S$,P%-1) 4375 CASE S$ OF 4376 WHEN "Validate":validate%=(C$="ON"):PROCtick(menu%(2),3,validate%) 4377 WHEN "Relations":relations%=(C$="ON"):PROCtick(menu%(2),4,relations%) 4378 WHEN "Warning":delwarn%=(C$="ON"):PROCtick(menu%(10),7,delwarn%) 4379 WHEN "Autosave": 4380 CASE LEFT$(C$,4) OF 4381 WHEN "OFF ":mode%=0:$Interval%="10 min" 4382 WHEN "WARN":mode%=1:$Interval%=MID$(C$,5) 4383 WHEN "AUTO":mode%=2:$Interval%=MID$(C$,5) 4384 ENDCASE 4385 PROCset_auto(mode%) 4386 WHEN "Autobalance": 4387 CASE LEFT$(C$,4) OF 4388 WHEN "OFF ":PROCset_autobalance(FALSE) 4389 WHEN "AUTO":$Every%=MID$(C$,5):PROCset_autobalance(TRUE) 4390 ENDCASE 4391 WHEN "Separator": 4392 $Delim%="" 4393 CASE C$ OF 4394 WHEN "Comma":sep$=",":P%=0 4395 WHEN "TAB":sep$=CHR$(9):P%=1 4396 WHEN "CR":sep$=CHR$(13):P%=2 4397 WHEN "LF":sep$=CHR$(10):P%=3 4398 OTHERWISE $Delim%=C$:sep$=C$:P%=4 4399 ENDCASE 4400 PROCtick_one(menu%(15),0,3,P%) 4401 $FNtext(csvW%,14)=C$:PROCredraw_icon(csvW%,14) 4402 WHEN "Terminator": 4403 $Termin%="" 4404 CASE C$ OF 4405 WHEN "CR":term$=CHR$(13):P%=0 4406 WHEN "LF":term$=CHR$(10):P%=1 4407 WHEN "CR LF":term$=CHR$(13)+CHR$(10):P%=2 4408 WHEN "LF CR":term$=CHR$(10)+CHR$(13):P%=3 4409 WHEN "CR CR":term$=CHR$(13)+CHR$(13):P%=4 4410 WHEN "LF LF":term$=CHR$(10)+CHR$(10):P%=5 4411 OTHERWISE: $Termin%=C$:term$=C$:P%=6 4412 ENDCASE 4413 PROCtick_one(menu%(20),0,5,P%) 4414 $FNtext(csvW%,15)=C$:PROCredraw_icon(csvW%,15) 4415 WHEN "Quotes":PROCset_icon(csvW%,0,C$="ON") 4416 WHEN "Header":PROCset_icon(csvW%,1,C$="ON") 4417 WHEN "Blanks":PROCset_icon(csvW%,2,C$="ON") 4418 WHEN "Key":PROCset_icon(csvW%,3,C$="ON") 4419 WHEN "Data":PROCset_icon(csvW%,4,(C$="ON" AND FNselected(csvW%,1))) 4420 WHEN "Display":PROCset_icon(csvW%,11,C$="ON") 4421 WHEN "Strip":PROCset_icon(csvW%,16,C$="ON") 4422 WHEN "CaseSpecific": 4423 PROCset_icon(matchW%,16,(C$="ON")) 4424 PROCset_icon(savesubW%,5,(C$="ON")) 4425 PROCset_icon(changeW%,5,(C$="ON")) 4426 PROCset_icon(moveW%,9,(C$="ON")) 4427 PROCset_icon(mergeW%,12,(C$="ON")) 4428 PROCset_icon(keypadW%,32,(C$="ON")) 4429 WHEN "Duplication": 4430 dup%=(C$="ON"):PROCtick(menu%(3),8,dup%) 4431 ENDCASE 4432UNTIL EOF#F 4433PROCicon_bit(22,csvW%,4,(FNselected(csvW%,1))) 4434PROCclose_file(F) 4435ENDPROC 4436: 4437DEF PROCsave_choices(f$) 4438LOCAL F,C$ 4439F=OPENOUT(f$) 4440IF validate%=TRUE THEN C$="ON" ELSE C$="OFF" 4441BPUT#F,"Validate "+C$ 4442IF relations%=TRUE THEN C$="ON" ELSE C$="OFF" 4443BPUT#F,"Relations "+C$ 4444IF delwarn%=TRUE THEN C$="ON" ELSE C$="OFF" 4445BPUT#F,"Warning "+C$ 4446CASE autosave% OF 4447 WHEN 0:C$="OFF " 4448 WHEN 1:C$="WARN"+$Interval% 4449 WHEN 2:C$="AUTO"+$Interval% 4450ENDCASE 4451BPUT#F,"Autosave "+C$ 4452CASE autobalance% OF 4453 WHEN 0:C$="OFF " 4454 WHEN 1:C$="AUTO"+$Every% 4455ENDCASE 4456BPUT#F,"Autobalance "+C$ 4457IF FNselected(csvW%,0) THEN C$="ON" ELSE C$="OFF" 4458BPUT#F,"Quotes "+C$ 4459IF FNselected(csvW%,1) THEN C$="ON" ELSE C$="OFF" 4460BPUT#F,"Header "+C$ 4461IF FNselected(csvW%,2) THEN C$="ON" ELSE C$="OFF" 4462BPUT#F,"Blanks "+C$ 4463IF FNselected(csvW%,3) THEN C$="ON" ELSE C$="OFF" 4464BPUT#F,"Key "+C$ 4465IF FNselected(csvW%,4) THEN C$="ON" ELSE C$="OFF" 4466BPUT#F,"Data "+C$ 4467CASE sep$ OF 4468 WHEN ",":C$="Comma" 4469 WHEN CHR$(9):C$="TAB" 4470 WHEN CHR$(10):C$="LF" 4471 WHEN CHR$(13):C$="CR" 4472 OTHERWISE:C$=sep$ 4473ENDCASE 4474BPUT#F,"Separator "+C$ 4475CASE term$ OF 4476 WHEN CHR$(13):C$="CR" 4477 WHEN CHR$(10):C$="LF" 4478 WHEN CHR$(13)+CHR$(10):C$="CR LF" 4479 WHEN CHR$(10)+CHR$(13):C$="LF CR" 4480 WHEN CHR$(13)+CHR$(13):C$="CR CR" 4481 WHEN CHR$(10)+CHR$(10):C$="LF LF" 4482 OTHERWISE:C$=term$ 4483ENDCASE 4484BPUT#F,"Terminator "+C$ 4485IF FNselected(csvW%,11) THEN C$="ON" ELSE C$="OFF" 4486BPUT#F,"Display "+C$ 4487IF FNselected(csvW%,16) THEN C$="ON" ELSE C$="OFF" 4488BPUT#F,"Strip "+C$ 4489CASE TRUE OF 4490 WHEN FNselected(matchW%,16),FNselected(savesubW%,5),FNselected(changeW%,5),FNselected(moveW%,9),FNselected(mergeW%,12),FNselected(keypadW%,32):C$="ON" 4491 OTHERWISE:C$="OFF" 4492ENDCASE 4493BPUT#F,"CaseSpecific "+C$ 4494IF dup% THEN C$="ON" ELSE C$="OFF" 4495BPUT#F,"Duplication "+C$ 4496PROCclose_file(F) 4497SYS "OS_File",18,f$,&fff 4498ENDPROC 4499: 4500DEF PROCopen_index(f$,key%) 4501LOCAL keybase%,I% 4502IF key%>MaxKeys% THEN extrakeys$+=FNleaf(f$)+",":Keys%-=1:ENDPROC 4503IF keyanchor%(key%) THEN PROCscrap_sliding_block(keyanchor%(key%)) 4504SYS "OS_File",5,f$ TO ,,,,len% 4505PROCcreate_named_sliding_block(keyanchor%(key%),len%) 4506SYS "OS_File",255,f$,!keyanchor%(key%) 4507Index$(key%)=FNleaf(f$) 4508keybase%=!keyanchor%(key%) 4509IF key%=0 THEN 4510 FOR I%=0 TO 5 4511 $Date%(I%)=$(keybase%+8+9*I%) 4512 NEXT I% 4513ENDIF 4514KF%(key%,0)=keybase%!62 4515KF%(key%,1)=keybase%!66 4516KL%(key%)=keybase%?70 4517case%(key%)=(keybase%?71=255) 4518FOR I%=0 TO 3 4519 KW%(key%,I%)=!(keybase%+74+I%*4) 4520NEXT I% 4521ENDPROC 4522: 4523DEF PROCget_tables 4524LOCAL lk,F%,d%,R4%,f$,name$ 4525f$=$database%+".ValTables":R4%=0 4526SYS "OS_File",5,$database%+".Tables" TO d% 4527IF d%=2 THEN ERROR fatal_err%,FNmsg(18) 4528LOCAL ERROR 4529ON ERROR LOCAL:PROCclose_file(lk):PROCwimp_error(FALSE,ERR,ERL,REPORT$) 4530lk=OPENIN($database%+".Link") 4531IF lk>0 THEN 4532 !block%=mainW% 4533 WHILE NOT EOF#lk 4534 F%+=1 4535 INPUT#lk,link$(F%) 4536 name$=LEFT$(link$(F%)) 4537 IF LEFT$(name$,1)<>"@" THEN 4538 IF name$<>"" THEN 4539 IF ASC(name$)<58 THEN name$=MID$(name$,2) 4540 PROCset_icon_cols(mainW%,field%(F%),fcol%(6)) 4541 IF d%=0 THEN PROCdrag_table(f$+"."+name$) 4542 ENDIF 4543 ENDIF 4544 ENDWHILE 4545 link$(0)="LOADED" 4546 PROCclose_file(lk) 4547ENDIF 4548REM ### Force loading of unlinked but flagged tables ### 4549WHILE R4%<>-1 4550 SYS "OS_GBPB",9,f$,block%,1,R4%,11 TO ,,name$,,R4% 4551 IF R4%<>-1 THEN IF RIGHT$(name$)="!" THEN PROCdrag_table(f$+"."+name$) 4552ENDWHILE 4553RESTORE ERROR 4554IF extratabs$<>"" THEN PROCsofterror(LEFT$(extratabs$),97) 4555ENDPROC 4556: 4557DEF PROCload_calcs 4558LOCAL F%,F1%,P%,calc$ 4559update$()="" 4560cl=OPENIN($database%+".Calc") 4561IF cl>0 THEN 4562 WHILE NOT EOF#cl 4563 F%+=1:F$=STR$~(F%):IF F%<16 THEN F$="0"+F$ 4564 INPUT#cl,calc$:calc$(F%)=calc$ 4565 CASE chartype%(F%) OF 4566 WHEN 6,7: 4567 REPEAT 4568 P%=INSTR(calc$,"$Rf%(",P%) 4569 IF P%>0 THEN F1%=VAL(MID$(calc$,P%+5)):update$(F1%)+=F$:P%+=5 4570 UNTIL P%=0 4571 REPEAT 4572 P%=INSTR(calc$,"FNn(",P%) 4573 IF P%>0 THEN F1%=VAL(MID$(calc$,P%+4)):update$(F1%)+=F$:P%+=4 4574 UNTIL P%=0 4575 IF INSTR(calc$,"TIME$")>0 THEN update$(0)+=F$ 4576 ENDCASE 4577 ENDWHILE 4578 calc$(0)="LOADED" 4579 PROCclose_file(cl) 4580ENDIF 4581ENDPROC 4582: 4583DEF FNget_form(RETURN Fptr%) 4584LOCAL F,L%,N%,I%,V%,x%,y%,xlim%,ylim%,text% 4585buttonfield%()=0 4586IF design% THEN dflg%=(winback%<<28)+&7016731:dval%=hand%:func%=1 ELSE dflg%=(winback%<<28)+&7010731:dval%=-1:func%=0 4587F=OPENIN($database%+".Form") 4588IF F>0 THEN 4589 INPUT#F,N% 4590 IF N%>127 THEN ERROR fatal_err%,FNmsg(98) 4591 formlen%=&100:forminc%=formlen%:form_incs%=0 4592 PROCextend_named_sliding_block(formanchor%,formlen%) 4593 Fptr%=!formanchor%:Rf%(0)=Fptr%:$Rf%(0)="":Fptr%+=1 4594 Length%=0 4595 FOR I%=1 TO N% 4596 INPUT#F,Desc$,Tag$(I%),xd%,yd%,xf%,yf%,len%,char%,fix%,bbox% 4597 CASE TRUE OF 4598 WHEN bbox%=0 AND len%=0:width%=0:height%=0 4599 WHEN bbox%=0:width%=len%*16+16:height%=48 4600 WHEN bbox%<&10000:width%=bbox%*16+16:height%=48 4601 OTHERWISE:width%=bbox% AND &FFFF:height%=bbox%>>16 4602 ENDCASE 4603 IF design% THEN 4604 CASE char% OF 4605 WHEN 0,1,2,3,4,5,6,7,8,39,40:fval%=hand% 4606 OTHERWISE:fval%=hvalid%(char%) 4607 ENDCASE 4608 ELSE 4609 CASE TRUE OF 4610 WHEN char%>8 AND char%<32:fval%=FNval(keypadW%,char%-9) 4611 OTHERWISE:fval%=valid%(char%) 4612 ENDCASE 4613 ENDIF 4614 x%=xf%+width%+32:y%=yf%-16 4615 IF x%>xlim% THEN xlim%=x% 4616 IF y%<ylim% THEN ylim%=y% 4617 y%=yd%-16:IF y%<ylim% THEN ylim%=y% 4618 Length%+=len%+1 4619 IF design%=FALSE AND char%=39 THEN len%=(height% DIV 40)*((width% DIV 16)-4) 4620 len%(I%)=len%:chartype%(I%)=char%:fix%(I%)=fix% 4621 L%=LEN(Desc$) 4622 IF Fptr%-!formanchor%+L%+len%+2>formlen% THEN 4623 form_incs%+=1:formlen%+=forminc% 4624 PROCextend_named_sliding_block(formanchor%,formlen%) 4625 ENDIF 4626 $Fptr%=Desc$ 4627 desc%(I%)=FNcreate_icon(mainW%,xd%,yd%,L%*16+8,48,dflg%,"",Fptr%,dval%,L%) 4628 Fptr%+=L%+1:Rf%(I%)=Fptr%:$Rf%(I%)="" 4629 PROCicon_design(char%,func%,width%,height%) 4630 IF char%=59 AND NOT design% THEN $Fptr%=Tag$(I%):len%=LEN(Tag$(I%)):fval%=!logoanchor% 4631 field%(I%)=FNcreate_icon(mainW%,xf%,yf%,width%,height%,iflags%,"",Fptr%,fval%,len%+1) 4632 CASE char% OF 4633 WHEN 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31:buttonfield%(char%-9)=I% 4634 WHEN 40:Rf%(I%)=FNcreate_anchor("Picture"+STR$(I%)) 4635 WHEN 3,6,46,47,54,56,57:PROCicon_bit(9,mainW%,field%(I%),FALSE) 4636 ENDCASE 4637 Fptr%+=len%+1 4638 NEXT I% 4639 PROCclose_file(F) 4640 PROCextend_named_sliding_block(formanchor%,Fptr%-!formanchor%):form_incs%+=1 4641 PROCsetup_select(N%) 4642 ELSE N%=0 4643ENDIF 4644IF (present% AND 4)=0 THEN xlim%=1279:ylim%=-1023 4645!block%=0:block%!4=ylim% 4646block%!8=xlim%:block%!12=0 4647SYS "Wimp_SetExtent",mainW%,block% 4648!block%=mainW% 4649SYS "Wimp_GetWindowState",,block% 4650block%!4=0 4651IF ylim%>-840 THEN block%!8=900+ylim% ELSE block%!8=184 4652IF xlim%<1240 THEN block%!12=xlim% ELSE block%!12=1240 4653block%!16=900 4654SYS "Wimp_OpenWindow",,block% 4655=N% 4656: 4657DEF PROCsetup_select(fields%) 4658LOCAL S$,I%,J%,Fptr%,rows% 4659selectlen%=&200:selinc%=selectlen% 4660PROCcreate_named_sliding_block(selanchor%,selectlen%) 4661Fptr%=!selanchor% 4662FOR I%=1 TO fields% 4663 IF Fptr%-!selanchor%+144>selectlen% THEN 4664 selectlen%+=selinc% 4665 PROCextend_named_sliding_block(selanchor%,selectlen%) 4666 ENDIF 4667 CASE chartype%(I%) OF 4668 WHEN 3,6,8,46,47,54,56,57: 4669 rows%+=1:PROClit(menu%(6),6,TRUE) 4670 handle%=FNcreate_icon(pselectW%,16,-rows%*48-56,240,48,&17000531,"",Fptr%,-1,15) 4671 S$=$FNtext(mainW%,desc%(I%)) 4672 IF LEN(S$)>8 THEN S$=LEFT$(S$,8)+" " ELSE S$+=STRING$(10-LEN(S$)," ") 4673 $Fptr%=S$+Tag$(I%):Fptr%+=LEN($Fptr%)+1 4674 FOR J%=0 TO 3 4675 handle%=FNcreate_icon(pselectW%,278+J%*112,-rows%*48-52,44,44,&0740B13B,"",Fptr%,tick%,1) 4676 $Fptr%="":Fptr%+=1 4677 NEXT J% 4678 calcrow%?I%=rows% 4679 OTHERWISE:calcrow%?I%=0 4680 ENDCASE 4681NEXT I% 4682!block%=0:block%!4=-rows%*48-56 4683block%!8=700:block%!12=0 4684SYS "Wimp_SetExtent",pselectW%,block% 4685ENDPROC 4686: 4687DEF PROCenable_row(R%,on%) 4688LOCAL I% 4689IF R%>0 THEN 4690 FOR I%=R%*5-3 TO R%*5 4691 PROCicon_bit(22,pselectW%,I%,on%) 4692 NEXT I% 4693ENDIF 4694ENDPROC 4695: 4696DEF PROCsave_form(f$) 4697LOCAL F,I%,xd%,yd%,xf%,yf%,w%,h%,bbox%,type% 4698IF fields%=0 THEN ENDPROC 4699Length%=0 4700!block%=mainW% 4701F=OPENOUT(f$) 4702PRINT#F,fields% 4703FOR I%=1 TO fields% 4704 dicon%=desc%(I%):ficon%=field%(I%) 4705 block%!4=dicon%:SYS "Wimp_GetIconState",,block% 4706 xd%=block%!8:yd%=block%!12 4707 Desc$=$(block%!28) 4708 block%!4=ficon%:SYS "Wimp_GetIconState",,block% 4709 xf%=block%!8:yf%=block%!12 4710 w%=block%!16-block%!8:h%=block%!20-block%!12 4711 bbox%=(h%<<16)+w% 4712 PRINT#F,Desc$,Tag$(I%),xd%,yd%,xf%,yf%,len%(I%),chartype%(I%),fix%(I%),bbox% 4713 Length%+=len%(I%)+1 4714 field$(I%)="":IF Rf%(I%)>0 AND chartype%(I%)<>40 THEN $Rf%(I%)="" 4715NEXT I% 4716PROCclose_file(F) 4717SYS "OS_File",18,f$,&7f2 4718PROClit(menu%(0),3,TRUE) 4719PROClit(menu%(0),4,TRUE) 4720ENDPROC 4721: 4722DEF PROCmake_empty_index(RA%,key%,Z%) 4723LOCAL I%,K%,P%,KLM%,S$ 4724SYS "Hourglass_On" 4725S$=STRING$(KL%(key%),".") 4726KLM%=KL%(key%)+13 4727P%=LH%+48+(RA%+1)*KLM% 4728IF Z% THEN PROCcreate_named_sliding_block(keyanchor%(key%),P%) 4729keybase%=!keyanchor%(key%) 4730keybase%!0=138 4731keybase%!4=VAL($Increment%) 4732$date%=STRING$(6,CHR$(1)):PROCdate(key%) 4733keybase%!62=KF%(key%,0) 4734keybase%!66=KF%(key%,1) 4735keybase%?70=KL%(key%) 4736keybase%?71=FNselected(keyW%,20) 4737keybase%?72=0:keybase%?73=0 4738FOR I%=0 TO 3 4739 !(keybase%+74+(I%*4))=KW%(key%,I%) 4740NEXT I% 4741FOR I%=0 TO 5 4742 P%=I%*8+LH% 4743 !(keybase%+P%)=-P% 4744 !(keybase%+P%+4)=P% 4745NEXT I% 4746P%=!keybase% 4747FOR I%=0 TO RA%-1 4748 SYS "Hourglass_Percentage",(I%*100) DIV RA% 4749 !(keybase%+P%)=P%+KLM% 4750 !(keybase%+P%+4)=0 4751 $(keybase%+P%+8)=S$ 4752 !(keybase%+P%+KL%(key%)+9)=I% 4753 P%+=KLM% 4754NEXT I% 4755!(keybase%+P%)=0 4756!(keybase%+P%+4)=0 4757$(keybase%+P%+8)=S$ 4758!(keybase%+P%+KL%(key%)+9)=0 4759SYS "Hourglass_Off" 4760ENDPROC 4761: 4762DEF PROCsave_recs(f$,RA%) 4763LOCAL dbasehandle%,I%,J%,rec$ 4764rec$=STRING$(fields%-1,CHR$(10)) 4765SYS "Hourglass_On" 4766dbasehandle%=OPENOUT(f$) 4767FOR I%=0 TO RA% 4768 PTR#dbasehandle%=I%*Length% 4769 BPUT#dbasehandle%,rec$ 4770 SYS "Hourglass_Percentage",(I%*100) DIV RA% 4771NEXT I% 4772EXT#dbasehandle%=(RA%+1)*Length% 4773PROCclose_file(dbasehandle%) 4774SYS "OS_File",18,f$,&7f2 4775SYS "Hourglass_Off" 4776ENDPROC 4777: 4778DEF PROCclear 4779LOCAL REC%,action$,ex%,ptr% 4780Search$=FNparse($FNtext(moveW%,7),FNselected(moveW%,9)) 4781SYS "Wimp_WhichIcon",moveW%,block%,&003F0000,&00210000 4782movetype%=!block%-1 4783P%=INSTR(Title$,". ")+2:Title$=MID$(Title$,P%) 4784IF Title$<>"All records" THEN Title$=" when "+Title$ ELSE Title$=" "+Title$ 4785action$=MID$("Move �DeleteMove �",movetype%*6+7,6)+Title$ 4786IF NOT FNconfirm(action$) THEN ENDPROC 4787SYS "Hourglass_On" 4788dbasehandle%=OPENIN($database%+".Database") 4789PROCearmark 4790PROCclose_file(dbasehandle%) 4791ptr%=!tempanchor% 4792subtotal%=FNcount_recs(key%,zero%) 4793FOR REC%=0 TO RA%-1 4794 ex%+=1:SYS "Hourglass_Percentage",(ex%*100) DIV subtotal% 4795 IF ptr%?REC%=255 THEN 4796 PROCread(fields%,TRUE,REC%,$database%) 4797 addr=FNshift(movetype%,key%,0) 4798 ENDIF 4799NEXT REC% 4800PROCscrap_sliding_block(tempanchor%) 4801SYS "Hourglass_Off" 4802SYS "Wimp_CreateMenu",,-1 4803addr=FNmoveto(key%,top,1) 4804ENDPROC 4805: 4806DEF PROCexport_subset(f$) 4807LOCAL I%,F,R%,recs%,ptr%,count%,subtotal%,blobs%,ex%,Z%,len%,source$,dest$,O$ 4808SYS "OS_CLI","Copy "+$database%+".Form "+f$+".Form ~C~V" 4809IF link$(0)="LOADED" THEN SYS "OS_CLI","Copy "+$database%+".Link "+f$+".Link ~C~V" 4810IF calc$(0)="LOADED" THEN SYS "OS_CLI","Copy "+$database%+".Calc "+f$+".Calc ~C~V" 4811SYS "OS_CLI","Copy "+$database%+".ValTables "+f$+".Valtables ~C~VR" 4812SYS "OS_CLI","Copy "+$database%+".Colours "+f$+".Colours ~CF~V" 4813SYS "OS_File",5,$database%+".UserFuncs" TO d% 4814IF d%=1 THEN SYS "OS_CLI","Copy "+$database%+".UserFuncs "+f$+".UserFuncs ~CF~V" 4815SYS "OS_File",5,$database%+".UsrSprites" TO d% 4816IF d%=1 THEN SYS "OS_CLI","Copy "+$database%+".UsrSprites "+f$+".UsrSprites ~CF~V" 4817SYS "Hourglass_On" 4818blobs%=FNfind_blobs($database%) 4819Search$=FNparse($FNtext(savesubW%,0),FNselected(savesubW%,5)) 4820dbasehandle%=OPENIN($database%+".Database") 4821PROCearmark 4822F=OPENOUT(f$+".Database") 4823ptr%=!tempanchor% 4824subtotal%=FNcount_recs(key%,zero%) 4825FOR I%=0 TO RA%-1 4826 IF ptr%?I%=255 THEN 4827 ex%=-1 4828 WHILE ex%<blobs% 4829 ex%+=1:F%=Ext%(ex%) 4830 PROCcopy_blob($database%,f$,I%,recs%,F%,F%,chartype%(F%)) 4831 ENDWHILE 4832 PROCreadsmarray(dbasehandle%,I%):PROCwritesmarray(F,recs%) 4833 count%+=1 4834 SYS "Hourglass_Percentage",(count%*100) DIV subtotal% 4835 ENDIF 4836NEXT I% 4837PROCscrap_sliding_block(tempanchor%) 4838F$()="":PROCwritesmarray(F,recs%):EXT#F=Length%*recs%:recs%-=1 4839FOR K%=0 TO Keys% 4840 KL%(MaxKeys%+1)=KL%(K%):val$=FNtype(K%) 4841 KF%(MaxKeys%+1,0)=KF%(K%,0) 4842 KF%(MaxKeys%+1,1)=KF%(K%,1) 4843 FOR I%=0 TO 3 4844 KW%(MaxKeys%+1,I%)=KW%(K%,I%) 4845 NEXT I% 4846 PROCmake_empty_index(recs%,MaxKeys%+1,TRUE) 4847 FOR I%=0 TO recs%-1 4848 PROCreadsmarray(F,I%) 4849 KEY$=FNkey2(K%,1) 4850 PROCinsert(TRUE,KEY$,MaxKeys%+1) 4851 SYS "Hourglass_Percentage",(I%*100) DIV recs% 4852 NEXT I% 4853 keybase%=!keyanchor%(MaxKeys%+1) 4854 SYS "SlidingHeap_DescribeBlock",slidingheapbase%,keyanchor%(MaxKeys%+1) TO ,,filelength% 4855 IF K%>0 THEN index$="Indices." ELSE index$="" 4856 SYS "OS_File",10,f$+"."+index$+Index$(K%),&7f0,,keybase%,keybase%+filelength% 4857 PROCscrap_sliding_block(keyanchor%(MaxKeys%+1)) 4858NEXT K% 4859PROCclose_file(F) 4860PROCclose_file(dbasehandle%) 4861SYS "OS_File",18,f$+".Database",&7f2 4862export%=FALSE 4863SYS "Hourglass_Off" 4864ENDPROC 4865: 4866DEF FNfind_blobs(f$) 4867LOCAL N%,R4%,S$ 4868N%=-1 4869WHILE R4%<>-1 4870 SYS "OS_GBPB",9,f$,block%,1,R4%,11 TO ,,S$,,R4% 4871 CASE LEFT$(S$,4) OF 4872 WHEN "Memo":N%+=1:Ext%(N%)=VAL(MID$(S$,5)) 4873 WHEN "Draw":N%+=1:Ext%(N%)=VAL(MID$(S$,5)) 4874 WHEN "Spri":N%+=1:Ext%(N%)=VAL(MID$(S$,7)) 4875 ENDCASE 4876ENDWHILE 4877=N% 4878: 4879DEF PROCearmark 4880LOCAL I%,P% 4881IF tempanchor% THEN PROCscrap_sliding_block(tempanchor%) 4882PROCcreate_named_sliding_block(tempanchor%,RA%) 4883ptr%=!tempanchor% 4884FOR I%=0 TO RA%-1 4885 ptr%?I%=0 4886NEXT I% 4887P%=FNneighbour(key%,top,1) 4888PROCscan_file("P%<>top",key%,2) 4889ENDPROC 4890: 4891DEF PROCrotate 4892IF NOT Access% THEN ENDPROC 4893IF FNconfirm(FNmsg(49))=FALSE THEN ENDPROC 4894LOCAL keybase% 4895LOCAL I%,L%,Z%,Q%,R%,S%,key% 4896FOR key%=0 TO Keys% 4897 keybase%=!keyanchor%(key%) 4898 S%=LH%+40 4899 Z%=keybase%!S% 4900 FOR I%=S%-8 TO S%-40 STEP-8 4901 L%=keybase%!I%:R%=keybase%!(I%+4) 4902 IF L%>0 THEN keybase%!(I%+8)=L% ELSE keybase%!(I%+8)=-(I%+8) 4903 NEXT I% 4904 IF Z%>0 THEN keybase%!(S%-40)=Z% ELSE keybase%!(S%-40)=-(S%-40) 4905 FOR I%=S%-40 TO S% STEP 8 4906 Q%=I%-8 4907 IF Q%=S%-48 THEN Q%=S% 4908 PR%=FNneighbour(key%,I%,0) 4909 SU%=FNneighbour(key%,I%,1) 4910 IF PR%>S% THEN keybase%!(PR%+4)=-I% 4911 IF SU%>S% THEN keybase%!SU%=-I% 4912 NEXT I% 4913NEXT key% 4914$date%=STRING$(6,CHR$(1)) 4915warn%=TRUE 4916ENDPROC 4917: 4918DEF PROCcreate_index 4919IF indexing% OR printing% THEN ENDPROC 4920IF Keys%=MaxKeys% THEN PROCsofterror(STR$(Keys%),95):ENDPROC 4921LOCAL file%,top,P%,KEY$,REC%,val$,zero%,abort%,replace% 4922newkey%=0 4923f$=Tag$(Keyfld0%):IF Keyfld1%>0 THEN f$+="+"+Tag$(Keyfld1%) 4924REPEAT 4925 newkey%+=1 4926UNTIL Index$(newkey%)=f$ OR newkey%>Keys% 4927CASE TRUE OF 4928 WHEN newkey%<=Keys%: 4929 IF FNconfirm(FNmsg(50))=TRUE THEN 4930 PROCscrap_sliding_block(keyanchor%(newkey%)) 4931 replace%=TRUE 4932 ELSE abort%=TRUE 4933 ENDIF 4934 WHEN Keys%>MaxKeys%:Keys%-=1:PROCsofterror("",31):abort%=TRUE 4935 OTHERWISE:Keys%=newkey% 4936ENDCASE 4937IF abort% THEN ENDPROC 4938block%!8=0:block%!12=keyW%:block%!16=7 4939SYS "Interface_SlabButton",,block% 4940PROCcopy_keydata(newkey%) 4941Index$(newkey%)=f$ 4942f$=$database%+".Indices."+Index$(newkey%) 4943PROCmake_empty_index(RA%,newkey%,TRUE) 4944PROClit(menu%(0),2,FALSE) 4945PROClimit_actions(FALSE) 4946LOCAL ERROR 4947ON ERROR LOCAL:RESTORE ERROR:PROCabort_index(f$):ENDPROC 4948dbasehandle%=OPENIN($database%+".Database") 4949indexing%=TRUE 4950PROCupdate_stats 4951FOR file%=0 TO 5 4952 top=file%*8+LH% 4953 P%=FNneighbour(key%,top,1) 4954 val$=FNtype(newkey%) 4955 SYS "Hourglass_On" 4956 PROCscan_file("P%<>top",key%,4) 4957NEXT file% 4958PROCend_index 4959PROCcolour(newkey%,2) 4960warn%=TRUE 4961RESTORE ERROR 4962IF FNselected(passW%,16) THEN BPUT#loghandle%,"Index "+Index$(newkey%)+" created" 4963ENDPROC 4964: 4965DEF PROCabort_index(f$) 4966PROCend_index 4967IF replace% THEN 4968 PROCopen_index(f$,newkey%) 4969 ELSE 4970 FOR index%=newkey% TO Keys% 4971 Index$(newkey%)=Index$(newkey%+1) 4972 NEXT index% 4973 PROCscrap_sliding_block(keyanchor%(newkey%)) 4974 Keys%-=1 4975 newkey%=0 4976ENDIF 4977IF ERR=17 THEN 4978 PROCsofterror("",43) 4979 ELSE PROCwimp_error(TRUE,ERR,ERL,REPORT$) 4980ENDIF 4981ENDPROC 4982: 4983DEF PROCend_index 4984SYS "Hourglass_Smash" 4985indexing%=FALSE 4986PROClimit_actions(Access%) 4987SYS "Wimp_CreateMenu",,-1 4988PROClit(menu%(0),2,Modify%) 4989PROCclose_file(dbasehandle%) 4990ENDPROC 4991: 4992DEF FNshift(t%,k%,m%) 4993LOCAL a%,key%,fi%,I%,F$ 4994IF NOT Access% THEN=addr 4995IF REC%=RA% THEN=addr 4996IF t%=0 AND m%=1 THEN IF FNconfirm(FNmsg(51))=FALSE THEN=addr 4997FOR key%=0 TO Keys% 4998 N$=FNkey(key%):kl%=KL%(key%):val$=FNtype(key%) 4999 PROCdelete(N$,key%) 5000 IF N$="*Failed*" THEN=addr 5001 IF key%=k% THEN a%=SU% 5002 IF t%=1 THEN fi%=(file%+1) MOD 6 5003 IF t%=-1 THEN fi%=(file%-1-6*(file%=0)) 5004 top=8*fi%+LH% 5005 CASE t% OF 5006 WHEN 0: 5007 FOR I%=1 TO fields% 5008 V%=chartype%(I%) 5009 CASE V% OF 5010 WHEN 36,39: 5011 IF FNblob_path(FALSE,$database%,REC%,I%,V%,F$)>=0 THEN:SYS "OS_CLI","Delete "+F$ 5012 WHEN 9,37: 5013 IF FNblob_path(FALSE,$database%,REC%,I%,V%,F$)>=0 THEN:SYS "OS_CLI","Delete "+F$ 5014 WHEN 38: 5015 IF FNblob_path(FALSE,$database%,REC%,I%,V%,F$)>=0 THEN:SYS "OS_CLI","Delete "+F$ 5016 ENDCASE 5017 NEXT I% 5018 OTHERWISE: 5019 PROCinsert(FALSE,N$,key%):date%?fi%=1:$Date%(fi%)=FNdate 5020 ENDCASE 5021 top=8*file%+LH% 5022 date%?file%=1 5023 $Date%(file%)=FNdate 5024NEXT key% 5025IF FNselected(passW%,16) THEN 5026 IF t%=0 THEN 5027 BPUT#loghandle%,logentry$+" Deleted" 5028 ELSE BPUT#loghandle%,logentry$+" ===> subfile "+STR$(fi%) 5029 ENDIF 5030ENDIF 5031warn%=TRUE 5032=a% 5033: 5034DEF FNtype(key%) 5035LOCAL F%,V$ 5036IF key%>=0 THEN F%=KF%(key%,0) ELSE F%=-key% 5037CASE chartype%(F%) OF 5038 WHEN 3,6,46,47,54,56,57:V$="VAL" 5039ENDCASE 5040=V$ 5041: 5042DEF FNconfirm(string$) 5043!block%=255 5044$(block%+4)=string$ 5045SYS "Wimp_ReportError",block%,(1<<0)+(1<<1)+(1<<4),"Powerbase: please confirm:" TO ,result% 5046=result%=1 5047: 5048DEF PROCgetscreensize(RETURN S_Width%,RETURN S_Height%) 5049LOCAL H1%,V1%,H2%,V2%,End% 5050H1%=0:V1%=4:H2%=8:V2%=12:End%=16 5051Mi%!H1%=4:Mi%!V1%=5:Mi%!H2%=11:Mi%!V2%=12:Mi%!End%=-1 5052SYS "OS_ReadVduVariables",Mi%,Mo% 5053S_Width%=(1<<(Mo%!H1%))*((Mo%!H2%)+1) 5054S_Height%=(1<<(Mo%!V1%))*((Mo%!V2%)+1) 5055ENDPROC 5056: 5057DEF PROCmatch 5058PROCcheck_change 5059IF NOT common% THEN $FNtext(matchW%,0)="" 5060PROCredraw_icon(matchW%,0) 5061PROCopen_window(matchW%) 5062PROCset_caret(matchW%,0) 5063$FNtext(matchW%,3)=Tag$(Match_tag%) 5064PROCtick_one(fieldmenu%,0,fields%-1,Match_tag%-1) 5065PROCredraw_icon(matchW%,3) 5066$FNtext(matchW%,14)="" 5067PROCredraw_icon(matchW%,14) 5068IF FNselected(matchW%,27) THEN $FNtext(matchW%,25)="Number found" ELSE $FNtext(matchW%,25)="Time taken" 5069PROCredraw_icon(matchW%,25) 5070fieldfunc$="match":matching%=TRUE 5071ENDPROC 5072: 5073REM List printing ----------------------------------------------------- 5074: 5075DEF PROCprint_this 5076f$=$database%+".PrintRes.Default" 5077SYS "OS_File",5,f$ TO d% 5078IF d%=1 THEN PROCdrag_selection(f$) 5079old%=FNselected_esg(printW%,3) 5080PROCdeselect(printW%,old%) 5081PROCselect(printW%,24) 5082PROCmouse(0,0,4,matchW%,24) 5083PROCclear_selection 5084PROCdeselect(printW%,24) 5085PROCselect(printW%,old%) 5086ENDPROC 5087: 5088DEF PROCdo_it(Search$,displayed%) 5089IF printing% THEN ENDPROC 5090LOCAL zero%,P%,rec% 5091LOCAL ERROR 5092Form$=printorder$ 5093IF Form$="" THEN 5094 FOR W%=0 TO 1 5095 IF KF%(0,W%)>0 THEN 5096 F$=STR$~(KF%(0,W%)):IF LEN(F$)=1 THEN F$="0"+F$:Form$+=F$ 5097 IF NOT FNselected(matchW%,27) THEN PROCselect(mainW%,field%(KF%(0,W%))):printorder$+=F$:PROClit(menu%(6),7,TRUE):PROClit(menu%(6),8,TRUE) 5098 ENDIF 5099 NEXT W% 5100ENDIF 5101Heading$="":Hlongest%=0:Sum()=0 5102Count%=0:examined%=0:printed%=0:sums%=0 5103PROCread_print_options 5104IF FNselected(printW%,40) THEN PROCfind_max_lengths(displayed%) ELSE maxlen%()=len%() 5105LenLine%=FNinclude_fields 5106numfirst%=FNmargin_warn:IF numfirst%<0 THEN ENDPROC 5107PROClist_head(0) 5108SYS "Wimp_GetPointerInfo",,block% 5109PROClimit_actions(FALSE) 5110PROClit(menu%(0),2,0) 5111printing%=TRUE 5112SYS "OS_ReadMonotonicTime" TO stime% 5113ON ERROR LOCAL:RESTORE ERROR:PROCabort_printing:ENDPROC 5114dbasehandle%=OPENIN($database%+".Database") 5115SYS "Hourglass_On" 5116CASE TRUE OF 5117 WHEN displayed%: 5118 PROCreadsmarray(dbasehandle%,REC%) 5119 PROCprint_record(REC%) 5120 WHEN usekey%=-1 OR FNselected(matchW%,23)=FALSE: 5121 P%=FNneighbour(key%,top,1):PROCscan_file("P%<>top",key%,1) 5122 OTHERWISE: 5123 P%=FNsearch(useval$,usekey%,1) 5124 IF P%>=0 THEN k$=useval$:PROCscan_file("P%<>top AND k$=useval$",usekey%,1) 5125ENDCASE 5126RESTORE ERROR 5127PROCend_printing 5128ENDPROC 5129: 5130DEF PROCabort_printing 5131PROCend_printing 5132IF ERR=17 THEN 5133 PROCsofterror("",29) 5134 ELSE PROCwimp_error(TRUE,ERR,ERL,REPORT$) 5135ENDIF 5136ENDPROC 5137: 5138DEF PROCend_printing 5139LOCAL time% 5140IF format$="label" AND thislab%>0 THEN PROCprint_labels 5141SYS "OS_ReadMonotonicTime" TO etime% 5142time%=etime%-stime% 5143IF FNselected(matchW%,27) THEN $FNtext(matchW%,14)=STR$(printed%) ELSE $FNtext(matchW%,14)=STR$(time% DIV 100)+"."+STR$(time% MOD 100)+" sec" 5144PROCredraw_icon(matchW%,14) 5145SYS "Hourglass_Smash" 5146IF format$<>"label" AND displayed%=FALSE THEN PROCtotal_list 5147CASE reportdest$ OF 5148 WHEN "Window": 5149 IF (NOT scripton%) AND (NOT FNselected(matchW%,27)) THEN PROCscreen_list 5150 PROCextend_named_sliding_block(textanchor%,Count%*LenLine%) 5151 WHEN "File": 5152 PROCclose_file(texthandle%):SYS "OS_File",18,f$,&fff 5153 PROCclose_window(saveW%) 5154 WHEN "Printer": 5155 PROCextend_named_sliding_block(textanchor%,Count%*LenLine%+1) 5156 Start%=!textanchor%:End%=Start%+Count%*LenLine%+1:Type%=&fff 5157 $Start%=pitch$:?(End%-1)=0:?End%=12 5158 block%!0=256:block%!12=0:block%!16=&80142:block%!20=0 5159 block%!24=0:block%!28=0:block%!32=0:block%!36=0:block%!40=&fff 5160 $(block%+44)="List" 5161 SYS "Wimp_SendMessage",18,block%,0 5162ENDCASE 5163printing%=FALSE:scripton%=FALSE:savetofile%=FALSE 5164PROClit(menu%(0),2,Modify%) 5165PROClimit_actions(Access%) 5166PROCclose_file(dbasehandle%) 5167ENDPROC 5168: 5169DEF PROCfind_max_lengths(displayed%) 5170LOCAL P%,k$ 5171LOCAL ERROR 5172ON ERROR LOCAL:RESTORE ERROR:PROCend_find_max:ENDPROC 5173maxlen%()=0 5174dbasehandle%=OPENIN($database%+".Database") 5175SYS "Hourglass_On" 5176SYS "Hourglass_LEDs",%11 5177IF displayed% THEN 5178 PROCreadsmarray(dbasehandle%,REC%) 5179 PROCget_lengths 5180 ELSE 5181 IF usekey%=-1 OR FNselected(matchW%,23)=FALSE THEN 5182 P%=FNneighbour(key%,top,1) 5183 PROCscan_file("P%<>top",key%,0) 5184 ELSE 5185 P%=FNsearch(useval$,usekey%,1) 5186 IF P%>=0 THEN 5187 k$=useval$ 5188 PROCscan_file("P%<>top AND k$=useval$",usekey%,0) 5189 ENDIF 5190 ENDIF 5191ENDIF 5192SYS "Hourglass_LEDs",%00 5193SYS "Hourglass_Off" 5194PROCclose_file(dbasehandle%) 5195ENDPROC 5196: 5197DEF PROCget_lengths 5198LOCAL I%,L%,F%,l%,F$ 5199I%=-1:L%=LEN(Form$)-1 5200WHILE I%<L% 5201 I%+=2:F%=FNfnum(MID$(Form$,I%,2)):F$=F$(F%):l%=LEN(F$) 5202 IF l%>maxlen%(F%) THEN maxlen%(F%)=l% 5203ENDWHILE 5204ENDPROC 5205: 5206DEF PROCend_find_max 5207SYS "Hourglass_Smash" 5208PROCclose_file(dbasehandle%) 5209maxlen%()=len%() 5210IF ERR=17 THEN 5211 PROCsofterror("",70) 5212 ELSE PROCwimp_error(TRUE,ERR,ERL,REPORT$) 5213ENDIF 5214ENDPROC 5215: 5216DEF PROCprint_record(REC%) 5217LOCAL I%,F%,N%,F$,SF$,Tab%,n$,y$,base%,pos% 5218IF format$<>"label" THEN printed%+=1 5219IF FNselected(matchW%,27) THEN ENDPROC 5220thisrow%=-1:base%=!lineanchor%:pos%=base% 5221PROCheap_store(lineanchor%,LenLine%,0,pos%,0,margin$) 5222FOR I%=1 TO LEN(Form$)-1 STEP 2 5223 F%=FNfnum(MID$(Form$,I%,2)) 5224 IF format$="label" THEN newline%=NOT newline% 5225 N%+=1 5226 IF FNselected(printW%,11) THEN 5227 F$=FNexpand(F$(F%),link$(F%),Len%,SF$) 5228 ELSE 5229 F$=F$(F%):Len%=len%(F%)+2 5230 CASE chartype%(F%) OF 5231 WHEN 41,42,43,44,45: 5232 Z%=FNno_yes(F%,n$,y$) 5233 IF F$=" " THEN F$=y$ ELSE F$=n$ 5234 WHEN 3,6,8,46,47,54,56,57: 5235 PROCsums(F$,calcrow%?F%,chartype%(F%)) 5236 IF format$="vert" THEN 5237 F$=STRING$(len%(F%)-LEN(F$)," ")+F$ 5238 ELSE F$=FNjustify(F$,N%,N%-1) 5239 ENDIF 5240 ENDCASE 5241 ENDIF 5242 IF FNselected(printW%,12) THEN F$=FNu(F$) 5243 CASE chartype%(F%) OF 5244 WHEN 37:F$="<Sprite>" 5245 WHEN 38:F$="<Drawfile>" 5246 ENDCASE 5247 CASE format$ OF 5248 WHEN "horiz","table": 5249 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,FNtab(F$,N%)) 5250 WHEN "vert": 5251 IF FNselected(printW%,2) THEN Head$=$FNtext(mainW%,(desc%(F%))) ELSE Head$=Tag$(F%) 5252 Head$=margin$+STRING$(Tab%(1)-LEN(Head$)," ")+Head$+" : " 5253 pos%=base%:L%=LEN(Head$)+LEN(F$) 5254 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,Head$) 5255 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,F$) 5256 PROClist_line(REC%,lineanchor%,L%,32) 5257 IF chartype%(F%)=36 OR chartype%(F%)=39 THEN PROCprint_memo(REC%,F%) 5258 PROCextra_lines(linefeed%-1,0) 5259 WHEN "label": 5260 IF newline% THEN 5261 IF (F$<>"" OR FNselected(labelW%,16)=FALSE) AND thisrow%<=labrepl% THEN thisrow%+=1:Label$(thisrow%,thislab%)=F$ 5262 ELSE 5263 Label$(thisrow%,thislab%)+=spacer$+F$ 5264 ENDIF 5265 ENDCASE 5266NEXT I% 5267CASE format$ OF 5268 WHEN "horiz": 5269 PROClist_line(REC%,lineanchor%,pos%-base%,32) 5270 PROCextra_lines(linefeed%-1,0) 5271 WHEN "vert": 5272 PROCrule_off(45) 5273 WHEN "table": 5274 colpos%=pos%-base% 5275 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,column$) 5276 PROClist_line(REC%,lineanchor%,pos%-base%,32) 5277 PROCextra_lines(linefeed%-1,colpos%) 5278 WHEN "label": 5279 Label$(labrepl%+1,thislab%)=FNkey2(0,1) 5280 thislab%+=1:IF thislab%>labup% THEN PROCprint_labels 5281ENDCASE 5282IF format$<>"label" THEN 5283 IF (printed% MOD LinesPerPage%)=0 AND FNselected(printW%,10)=FALSE AND displayed%=FALSE THEN 5284 $(!lineanchor%)=margin$+CHR$(12):PROClist_line(-1,lineanchor%,Lmargin%+1,32) 5285 PROClist_head(1) 5286 ENDIF 5287ENDIF 5288ENDPROC 5289: 5290DEF PROCextra_lines(ex%,tab%) 5291LOCAL base%,pos% 5292WHILE ex%>0 5293 CASE tab% OF 5294 WHEN 0:PROCrule_off(32) 5295 OTHERWISE: 5296 base%=!lineanchor%:pos%=base% 5297 FOR I%=0 TO tab%-1 5298 pos%?I%=32 5299 NEXT I% 5300 pos%+=tab% 5301 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,column$) 5302 PROClist_line(REC%,lineanchor%,pos%-base%,32) 5303 ENDCASE 5304 ex%-=1 5305ENDWHILE 5306ENDPROC 5307: 5308DEF PROCprint_memo(R%,F%) 5309LOCAL text%,B%,F$,sp%,L%,rem$,base%,pos%,Line$ 5310IF FNblob_path(FALSE,$database%,R%,F%,36,F$)>=0 THEN 5311 text%=OPENIN(F$) 5312 WHILE NOT EOF#text% 5313 Line$=margin$+rem$:L%=LEN(Line$) 5314 REPEAT 5315 B%=BGET#text% 5316 Line$+=CHR$(B%):L%+=1 5317 IF B%=32 THEN sp%=L% 5318 UNTIL B%=10 OR L%=LenLine%-3 OR EOF#text% 5319 CASE TRUE OF 5320 WHEN B%=10:rem$="":Line$=LEFT$(Line$) 5321 WHEN EOF#text%:rem$="" 5322 OTHERWISE:rem$=MID$(Line$,sp%+1):Line$=LEFT$(Line$,sp%-1) 5323 ENDCASE 5324 pos%=!lineanchor% 5325 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,Line$) 5326 PROClist_line(REC%,lineanchor%,LEN(Line$),32) 5327 ENDWHILE 5328 PROCclose_file(text%) 5329ENDIF 5330ENDPROC 5331: 5332DEF PROCprint_labels 5333LOCAL I%,Line$,S$,linesprinted%,pos% 5334FOR I%=0 TO labrepl%-1 5335 Line$=margin$ 5336 FOR K%=0 TO thislab%-1 5337 S$=Label$(I%,K%) 5338 IF FNselected(labelW%,11) THEN 5339 IF I%=labsubst% AND S$="" THEN S$=Label$(labrepl%,K%) 5340 ENDIF 5341 IF K%=thislab%-1 THEN W%=longestfield% ELSE W%=labwidth% 5342 IF LEN(S$)>W% THEN S$=LEFT$(S$,W%) 5343 Line$+=S$+STRING$(W%-LEN(S$)," ") 5344 NEXT K% 5345 pos%=!lineanchor% 5346 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,Line$) 5347 PROClist_line(REC%,lineanchor%,LEN(Line$),32) 5348 linesprinted%+=1 5349NEXT I% 5350IF FNselected(labelW%,13) THEN 5351 PROCrule_off(32) 5352 Line$="" 5353 FOR K%=0 TO thislab%-1 5354 S$="("+Label$(labrepl%+1,K%)+")" 5355 Line$+=S$+STRING$(labwidth%-LEN(S$)," ") 5356 NEXT K% 5357 pos%=!lineanchor% 5358 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,Line$) 5359 PROClist_line(REC%,lineanchor%,LEN(Line$),32) 5360 linesprinted%+=1 5361ENDIF 5362rows_printed%+=1 5363IF rows_printed%=labrows% THEN 5364 $(!lineanchor%)=margin$+CHR$(12):PROClist_line(-1,lineanchor%,Lmargin%+1,32) 5365 PROClist_head(1) 5366 rows_printed%=0 5367 ELSE 5368 REPEAT 5369 PROCrule_off(32) 5370 linesprinted%+=1 5371 UNTIL linesprinted%=labdepth% 5372ENDIF 5373thislab%=0:thisrow%=-1:Label$()="" 5374ENDPROC 5375: 5376DEF PROCread_print_options 5377LOCAL S$ 5378thislab%=0:LinesPerPage%=0 5379IF usekey%=-1 THEN S$=Index$(key%) ELSE S$=Index$(usekey%)+" index" 5380Title1$="Ordered by "+S$ 5381IF FNselected(printW%,19) THEN Title1$+=" ("+TIME$+")" 5382Title2$=$FNtext(printW%,18) 5383PROClit(menu%(18),1,FNselected(printW%,10)) 5384CASE FNselected_esg(printW%,2) OF 5385 WHEN 4:cpi%=5:p$="3" 5386 WHEN 7:cpi%=10:p$="0" 5387 WHEN 8:cpi%=12:p$="1" 5388 WHEN 6:cpi%=17:p$="2" 5389ENDCASE 5390pitch$=FNpitch(p$) 5391Lmargin%=VAL($FNtext(printW%,30)):Tab%(0)=Lmargin% 5392margin$=STRING$(Lmargin%," ") 5393Tmargin%=VAL($FNtext(printW%,32)) 5394TextLine%=VAL($FNtext(printW%,34)) 5395linefeed%=VAL($FNtext(printW%,17)) 5396colwidth%=VAL($FNtext(printW%,45)) 5397s$=$FNtext(printW%,43):s%=VAL(s$):c$=RIGHT$(s$) 5398CASE TRUE OF 5399 WHEN s%=0:spacer$=s$ 5400 WHEN c$<"0" OR c$>"9":spacer$=STRING$(s%,c$) 5401 OTHERWISE:spacer$=STRING$(s%," ") 5402ENDCASE 5403IF linefeed%=0 THEN linefeed%=1:$FNtext(printW%,17)=STR$(linefeed%) 5404pagelength%=VAL($FNtext(printW%,16)) 5405IF pagelength%=0 THEN pagelength%=70:$FNtext(printW%,16)=STR$(pagelength%) 5406CASE FNselected_esg(printW%,3) OF 5407 WHEN 23: 5408 format$="horiz" 5409 LinesPerPage%=(pagelength%-Tmargin%-15) DIV linefeed% 5410 WHEN 24:format$="vert" 5411 LinesPerPage%=(pagelength%-Tmargin%-15) DIV (linefeed%*(LEN(Form$) DIV 2)) 5412 WHEN 25: 5413 format$="table" 5414 columns%=VAL($FNtext(printW%,15)) 5415 column$=STRING$(columns%,"|"+STRING$(colwidth%," "))+"|" 5416 LinesPerPage%=(pagelength%-Tmargin%-15) DIV linefeed% 5417 WHEN 26: 5418 format$="label" 5419 labwidth%=VAL($FNtext(labelW%,4))*cpi% 5420 labdepth%=VAL($FNtext(labelW%,6))*6 5421 labrows%=(pagelength%-Tmargin%) DIV labdepth% 5422 rows_printed%=0 5423 labup%=FNselected_esg(labelW%,1) 5424 labrepl%=VAL($FNtext(labelW%,10)) 5425 labsubst%=VAL($FNtext(labelW%,12))-1 5426 Title$="":Title1$="":Title2$="" 5427ENDCASE 5428CASE FNselected_esg(printW%,4) OF 5429 WHEN 38:reportdest$="Window" 5430 WHEN 39:reportdest$="File" 5431 WHEN 41:reportdest$="Printer" 5432ENDCASE 5433IF LinesPerPage%=0 THEN LinesPerPage%=1 5434ENDPROC 5435: 5436DEF FNpitch(p$) 5437IF FNselected(printW%,42) THEN=CHR$(31)+"9"+p$+"01" ELSE="" 5438: 5439DEF PROClist_head(place%) 5440IF place%=0 THEN 5441 CASE reportdest$ OF 5442 WHEN "Window","Printer": 5443 RU%=VAL($used%) 5444 IF RU%<5 THEN textblocksize%=5*LenLine% ELSE textblocksize%=(RU% DIV 5)*LenLine% 5445 textblockinc%=textblocksize% 5446 PROCextend_named_sliding_block(textanchor%,textblocksize%) 5447 TextPtr%=!textanchor% 5448 recblocksize%=400 5449 PROCextend_named_sliding_block(recanchor%,recblocksize%) 5450 WHEN "File"::BPUT#texthandle%,pitch$ 5451 ENDCASE 5452ENDIF 5453PROCextra_lines(Tmargin%,0) 5454IF NOT displayed% THEN 5455 PROCsend_title(Title$) 5456 PROCsend_title(Title1$) 5457 PROCsend_title(Title2$) 5458ENDIF 5459CASE format$ OF 5460 WHEN "horiz": 5461 CASE FNselected(printW%,29) OF 5462 WHEN TRUE: 5463 IF FNselected(printW%,42) THEN $(!lineanchor%)=uon$:PROClist_line(-1,lineanchor%,2,32) 5464 PROClist_line(-1,headanchor%,LenLine%,32) 5465 WHEN FALSE: 5466 PROCrule_off(45) 5467 PROClist_line(-1,headanchor%,LenLine%,32) 5468 PROCrule_off(45) 5469 ENDCASE 5470 WHEN "table": 5471 PROCrule_off(32):$(TextPtr%-3)=uon$ 5472 PROCrule_off(32) 5473 PROClist_line(-1,headanchor%,LenLine%,32) 5474 PROCrule_off(32) 5475 WHEN "vert":PROCrule_off(45) 5476ENDCASE 5477header_lines%=Count% 5478ENDPROC 5479: 5480DEF PROClist_line(REC%,anchor%,length%,char%) 5481Count%+=1 5482CASE reportdest$ OF 5483 WHEN "Window","Printer": 5484 PROCpad_line(LenLine%-length%-1,char%) 5485 PROCheap_store(textanchor%,textblocksize%,textblockinc%,TextPtr%,LenLine%,"") 5486 SYS "Wimp_TransferBlock",mytask%,!anchor%,mytask%,TextPtr%,LenLine% 5487 IF Count%*4>=recblocksize% THEN 5488 recblocksize%+=400 5489 PROCextend_named_sliding_block(recanchor%,recblocksize%) 5490 ENDIF 5491 !(!recanchor%+Count%*4)=REC% 5492 TextPtr%+=LenLine% 5493 WHEN "File": 5494 PROCpad_line(LenLine%-length%-1,char%) 5495 SYS "OS_GBPB",2,texthandle%,!anchor%,LenLine% 5496ENDCASE 5497PROCpoll 5498ENDPROC 5499: 5500DEF PROCpad_line(bytes%,char%) 5501LOCAL base%,ptr%,I% 5502base%=!anchor%:ptr%=base%+LenLine%-bytes%-1 5503IF bytes%>0 THEN 5504 FOR I%=0 TO bytes%-2 5505 ptr%?I%=char% 5506 NEXT I% 5507ENDIF 5508ptr%?(bytes%-1)=32 5509ptr%?bytes%=10 5510ENDPROC 5511: 5512DEF PROCrule_off(char%) 5513LOCAL base% 5514base%=!lineanchor% 5515$base%=margin$ 5516PROClist_line(-1,lineanchor%,Lmargin%,char%) 5517ENDPROC 5518: 5519DEF PROCtotal_list 5520LOCAL C%,L%,base%,pos%,L$ 5521L$=margin$+"Total "+STR$(printed%) 5522base%=!lineanchor%:pos%=base% 5523CASE format$ OF 5524 WHEN "horiz": 5525 IF NOT FNselected(printW%,29) THEN PROCrule_off(45) 5526 PROCctotals(numfirst%) 5527 IF LEN(L$)>LenLine%-2 THEN L$=margin$+STR$(printed%) 5528 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,L$) 5529 PROClist_line(REC%,lineanchor%,pos%-base%,32) 5530 IF NOT FNselected(printW%,29) THEN PROCrule_off(45) 5531 WHEN "table": 5532 PROCrule_off(32) 5533 PROCextra_lines(linefeed%,colpos%) 5534 PROCctotals(numfirst%) 5535ENDCASE 5536PROClit(menu%(6),7,TRUE) 5537ENDPROC 5538: 5539DEF PROCsend_title(T$) 5540LOCAL C$,L$,P%,L% 5541IF T$="" THEN ENDPROC 5542L%=LenLine%-Lmargin%-1 5543WHILE LEN(T$)>=L% 5544 P%=LEN(T$) 5545 REPEAT 5546 P%-=1:C$=MID$(T$,P%,1) 5547 UNTIL (INSTR("= ,.;:",C$)>0 AND P%<L%) OR P%=0 5548 IF P%=0 THEN 5549 L$=margin$+LEFT$(T$,L%-1):T$=MID$(T$,L%) 5550 ELSE L$=margin$+LEFT$(T$,P%):T$=MID$(T$,P%+1) 5551 ENDIF 5552 $(!lineanchor%)=L$ 5553 PROClist_line(-1,lineanchor%,LEN(L$),32) 5554ENDWHILE 5555$(!lineanchor%)=margin$+T$ 5556PROClist_line(-1,lineanchor%,Lmargin%+LEN(T$),32) 5557ENDPROC 5558: 5559DEF PROCscreen_list 5560!block%=0:block%!4=-Count%*32 5561block%!8=(LenLine%-1)*16:block%!12=0 5562SYS "Wimp_SetExtent",listW%,block% 5563!block%=listW% 5564SYS "Wimp_GetWindowState",,block% 5565x%=(block%!12+block%!4) DIV 2:y%=(block%!16+block%!8) DIV 2 5566block%!12=block%!4+LenLine%*16 5567IF Count%<28 THEN 5568 block%!16=block%!8+Count%*32 5569 ELSE 5570 block%!16=block%!8+32*28 5571ENDIF 5572SYS "Wimp_CloseWindow",,block% 5573PROCopen_window(listW%) 5574Listed%=TRUE 5575PROCshow_menu(menu%(18),x%,y%) 5576ENDPROC 5577: 5578DEF PROCsort_list 5579LOCAL I% 5580ind%=!textanchor%+LenLine%*header_lines%-1 5581FOR I%=0 TO printed%-1 5582 ind%+=LenLine% 5583 block%!(I%*4)=ind% 5584NEXT I% 5585SYS "OS_HeapSort",printed%,(block% OR (1<<30) OR (1<<31)),4,,!textanchor%+LenLine%*header_lines%,LenLine% 5586PROCredraw(listW%) 5587ENDPROC 5588: 5589DEF PROClose_list 5590PROCclose_window(listW%) 5591PROCscrap_sliding_block(textanchor%) 5592PROCscrap_sliding_block(recanchor%) 5593Listed%=FALSE 5594ENDPROC 5595: 5596DEF FNparse(S$,case%) 5597LOCAL val%,I%,P%,F%,f%,t%,flag%,left%,right%,search$,field$,op$,bo$,target$,targ$,f$,t$,E$,E1$,TitFd$,TitTg$,simple%,date$,SF$ 5598usekey%=-1:useval$="" 5599IF S$="" OR FNu(S$)="ALL" THEN Title$=MID$(FNleaf($database%),2)+". All records":="TRUE" 5600simple%=FNsimple(S$) 5601S$+=" ":Title$="" 5602WHILE LEN(S$)>0 5603 W$=FNword(S$," ") 5604 IF W$="NOT" AND LEFT$(S$,1)<>"(" THEN ERROR moan_err%,FNmsg(60) 5605 PROCstrip_brackets 5606 IF LEN(W$)>0 THEN 5607 flag%=FALSE:TitFd$="":TitTg$="":op$="" 5608 CASE W$ OF 5609 WHEN "AND","OR","NOT":E$=W$:Title$+=" "+E$+" " 5610 WHEN "&":E$="AND":Title$+=" "+E$+" " 5611 OTHERWISE: 5612 E$="" 5613 PROCsplit 5614 WHILE LEN(field$)>0 5615 f$=FNu(FNword(field$,",")) 5616 f%=FNfield(f$,TRUE) 5617 f$="F$("+STR$(f%)+")" 5618 IF NOT case% THEN f$="FNu("+f$+")" 5619 IF val% THEN f$="VAL("+f$+")" 5620 CASE chartype%(f%) OF 5621 WHEN 5,51,52:f$="FNreverse_date("+f$+")" 5622 ENDCASE 5623 targ$=target$ 5624 WHILE LEN(targ$)>0 5625 t$=FNword(targ$,","):u$=t$ 5626 IF NOT flag% THEN TitTg$+=FNexpand(t$,link$(f%),L%,SF$)+"," 5627 IF chartype%(f%)>40 THEN t$=FNpos_neg(t$) 5628 CASE chartype%(f%) OF 5629 WHEN 5,51,52: 5630 IF FNcheck_date(t$,2,date$)=TRUE THEN t$=FNreverse_date(date$):u$=t$ 5631 ENDCASE 5632 t$=""""+t$+"""" 5633 IF val% THEN t$="VAL("+t$+")" 5634 IF f%=0 THEN 5635 CASE op$ OF 5636 WHEN "{","=":E1$="FNany("+t$+","""+op$+""")" 5637 WHEN "}{":ERROR moan_err%,FNmsg(100) 5638 WHEN "<>":ERROR moan_err%,FNmsg(101) 5639 OTHERWISE:ERROR moan_err%,""""+op$+""""+FNmsg(102) 5640 ENDCASE 5641 ELSE 5642 CASE op$ OF 5643 WHEN "{":E1$="INSTR("+f$+","+t$+")>0" 5644 WHEN "}{":E1$="INSTR("+f$+","+t$+")=0" 5645 WHEN "=": 5646 E1$=f$+op$+t$ 5647 IF simple%=TRUE AND usekey%=-1 THEN 5648 foundkey%=FNis_a_key(f%) 5649 IF foundkey%>=0 THEN IF KL%(foundkey%)=len%(f%) THEN 5650 usekey%=foundkey%:useval$=u$ 5651 ENDIF 5652 ENDIF 5653 OTHERWISE:E1$=f$+op$+t$ 5654 ENDCASE 5655 ENDIF 5656 IF LEN(E$)+LEN(E1$)>255 THEN ERROR moan_err%,FNmsg(6) ELSE E$+=E1$ 5657 IF LEN(E$)+LEN(bo$)>255 THEN ERROR moan_err%,FNmsg(6) ELSE E$+=bo$ 5658 ENDWHILE 5659 flag%=TRUE 5660 ENDWHILE 5661 E$=LEFT$(E$,LEN(E$)-LEN(bo$)) 5662 IF INSTR(E$,bo$)>0 THEN 5663 IF LEN(E$)>253 THEN ERROR moan_err%,FNmsg(6) ELSE E$="("+E$+")" 5664 ENDIF 5665 ENDCASE 5666 ENDIF 5667 PROCadd_brackets 5668 E$+=" " 5669 IF LEN(search$)+LEN(E$)>255 THEN 5670 ERROR moan_err%,FNmsg(6) 5671 ELSE search$+=E$ 5672 PROCbuild_title 5673 ENDIF 5674ENDWHILE 5675Title$=MID$(FNleaf($database%),2)+". "+Title$ 5676IF usekey%>=0 THEN 5677 kl%=KL%(usekey%):val$=FNtype(usekey%) 5678 ELSE PROCdeselect(matchW%,23) 5679ENDIF 5680=search$ 5681: 5682DEF FNpos_neg(s$) 5683CASE s$ OF 5684 WHEN "+","y","Y","*","�","T","t":s$=" " 5685 WHEN "-","n","N","x","X","F","f":s$="" 5686ENDCASE 5687=s$ 5688: 5689DEF FNsimple(S$) 5690IF INSTR(S$,"=")>0 AND (INSTR(S$,",")=0 AND INSTR(S$,"-")=0 AND INSTR(S$,"OR")=0 AND INSTR(S$,"NOT")=0) THEN=TRUE ELSE=FALSE 5691: 5692DEF FNword(RETURN S$,sep$) 5693LOCAL P%,W$,Q1%,Q2% 5694REPEAT 5695 Q1%=INSTR(S$,""""):Q2%=INSTR(S$,"""",Q1%+1) 5696 P%=INSTR(S$,sep$,P%) 5697 CASE TRUE OF 5698 WHEN (P%>Q1% AND P%<Q2%),(P%>Q2% AND Q2%>0): 5699 S$=LEFT$(S$,Q1%-1)+MID$(S$,Q1%+1,Q2%-Q1%-1)+MID$(S$,Q2%+1) 5700 P%=Q2%-2:REM ### S$ is now 2 characters shorter ### 5701 WHEN Q1%>0 AND Q2%=0:PROCsofterror("",93) 5702 S$=LEFT$(S$,Q1%-1)+MID$(S$,Q1%+1) 5703 ENDCASE 5704UNTIL Q1%+Q2%=0 OR P%<Q1% 5705W$=LEFT$(S$,P%-1) 5706S$=MID$(S$,P%+1) 5707=W$ 5708: 5709DEF FNany(targ$,op$) 5710LOCAL F%,found%,case%,F$ 5711case%=FNselected(matchW%,16) 5712REPEAT 5713 F%+=1:F$=F$(F%) 5714 IF NOT case% THEN F$=FNu(F$) 5715 CASE op$ OF 5716 WHEN "{":IF INSTR(F$,targ$)>0 THEN found%=TRUE 5717 WHEN "=":IF F$=targ$ THEN found%=TRUE 5718 ENDCASE 5719UNTIL found% OR F%=fields% 5720=found% 5721: 5722DEF PROCsplit 5723LOCAL X$,Q%,I% 5724X$=">=>=,<=<=,<>,}{,>=,<=,==,>>,<<,{{,=,<,>,{,":P%=0 5725WHILE LEN(X$)>0 AND P%=0 5726 Q%=INSTR(X$,","):op$=LEFT$(X$,Q%-1):X$=MID$(X$,Q%+1) 5727 P%=INSTR(W$,op$) 5728ENDWHILE 5729IF P%>0 THEN 5730 field$=LEFT$(W$,P%-1) 5731 target$=MID$(W$,P%+LEN(op$))+"," 5732 IF NOT case% THEN target$=FNu(target$) 5733 field$=FNexp_field 5734 CASE op$ OF 5735 WHEN "<>","}{":bo$="AND" 5736 WHEN "<=",">=":bo$="OR" 5737 WHEN "<=<=",">=>=": 5738 op$=LEFT$(op$,2):bo$="AND" 5739 WHEN "==","<<",">>","{{": 5740 op$=LEFT$(op$,1):bo$="AND" 5741 OTHERWISE:bo$="OR" 5742 ENDCASE 5743 ELSE ERROR moan_err%,FNmsg(40) 5744ENDIF 5745ENDPROC 5746: 5747DEF FNexp_field 5748LOCAL P%,I%,F1%,F2%,F$ 5749P%=INSTR(field$,"-") 5750IF P%=0 THEN 5751 F$=field$+"," 5752 ELSE 5753 F1%=FNfield(LEFT$(field$,P%-1),FALSE) 5754 F2%=FNfield(MID$(field$,P%+1),FALSE) 5755 IF F1%>F2% THEN SWAP F1%,F2% 5756 FOR I%=F1% TO F2% 5757 F$+=Tag$(I%)+"," 5758 NEXT I% 5759ENDIF 5760=F$ 5761: 5762DEF FNfnum(S$) 5763LOCAL N% 5764N%=EVAL("&"+S$) 5765newline%=((N% AND 128)>0) 5766=(N% AND 127) 5767: 5768DEF FNfield(f$,Z%) 5769LOCAL I%,F%,desc$ 5770IF f$="@" THEN TitFd$="Any field ":=0 5771val%=FALSE 5772IF LEFT$(f$,1)="[" AND RIGHT$(f$)="]" THEN f$=MID$(LEFT$(f$),2):val%=TRUE 5773WHILE I%<fields% 5774 I%+=1 5775 IF FNu(Tag$(I%))=FNu(f$) THEN F%=I% 5776ENDWHILE 5777IF F%>0 AND Z%=TRUE THEN 5778 desc$=$FNtext(mainW%,desc%(F%)) 5779 IF desc$<>"" THEN TitFd$+=desc$+"," ELSE TitFd$+=f$+"," 5780 ELSE IF F%=0 THEN ERROR moan_err%,FNmsg(8)+" ("+f$+")"+CHR$(0) 5781ENDIF 5782CASE chartype%(F%) OF 5783 WHEN 3,6,46,47,54,56,57:val%=TRUE 5784ENDCASE 5785=F% 5786: 5787DEF FNfind_fields(S$,sep$,RETURN length%) 5788LOCAL f$,F$,C$,P%,Q%,F% 5789Q%=1:length%=0 5790REPEAT 5791 P%=INSTR(S$,sep$,Q%) 5792 IF P%>0 THEN f$=MID$(S$,Q%,P%-Q%) 5793 F%=FNfield(f$,FALSE) 5794 length%+=len%(F%)+1 5795 F$=STR$~(F%) 5796 IF LEN(F$)=1 THEN F$="0"+F$ 5797 C$+=F$ 5798 Q%=P%+1 5799UNTIL P%=LEN(S$) 5800length%+=LEN(STR$(RA%))+1 5801=C$ 5802: 5803DEF PROCstrip_brackets 5804WHILE LEFT$(W$,1)="(" 5805 left%+=1:W$=MID$(W$,2) 5806ENDWHILE 5807WHILE RIGHT$(W$)=")" 5808 right%+=1:W$=LEFT$(W$) 5809ENDWHILE 5810ENDPROC 5811: 5812DEF PROCadd_brackets 5813WHILE left%>0 5814 E$="("+E$:left%-=1 5815ENDWHILE 5816WHILE right%>0 5817 E$+=")":right%-=1 5818ENDWHILE 5819ENDPROC 5820: 5821DEF PROCbuild_title 5822LOCAL change% 5823TitFd$=LEFT$(TitFd$):TitTg$=LEFT$(TitTg$) 5824IF INSTR(TitFd$,",")>0 THEN 5825 CASE bo$ OF 5826 WHEN "OR":TitFd$="One of:"+TitFd$ 5827 WHEN "AND": 5828 CASE op$ OF 5829 WHEN "<>":TitFd$="None of:"+TitFd$:op$="=":change%=TRUE 5830 WHEN "}{":TitFd$="None of:"+TitFd$:op$="{":change%=TRUE 5831 OTHERWISE:TitFd$="All of:"+TitFd$ 5832 ENDCASE 5833 ENDCASE 5834ENDIF 5835IF INSTR(TitTg$,",")>0 THEN 5836 CASE bo$ OF 5837 WHEN "OR":TitTg$="One of:"+TitTg$ 5838 WHEN "AND": 5839 CASE op$ OF 5840 WHEN "<>":TitTg$="None of:"+TitTg$:op$="=" 5841 WHEN "}{":TitTg$="None of:"+TitTg$:op$="{" 5842 OTHERWISE:IF change% THEN TitTg$="Any of:"+TitTg$ ELSE TitTg$="All of:"+TitTg$ 5843 ENDCASE 5844 ENDCASE 5845ENDIF 5846CASE op$ OF 5847 WHEN "{":op$=" contains " 5848 WHEN "}{":op$=" does not contain " 5849ENDCASE 5850Title$+=TitFd$+op$+TitTg$ 5851ENDPROC 5852: 5853DEF FNexpand(string$,table$,RETURN ExpLen%,RETURN subst$) 5854LOCAL p$,s$,start%,F%,I%,T%,ind%,row%,Rec%,Rows%,TabFields%,field%,sfield%,pos%,spos% 5855subst$=string$ 5856IF table$="" THEN ExpLen%=0:=string$:REM ### Not linked ### 5857field%=VAL(RIGHT$(table$)):table$=LEFT$(table$) 5858IF ASC(table$)<58 AND ASC(table$)<>-1 THEN sfield%=VAL(table$):table$=MID$(table$,2) ELSE sfield%=-1 5859T%=FNtable_number(table$) 5860IF T%<0 THEN ExpLen%=0:=string$:REM ### Table not found ### 5861p$=printrel$(T%) 5862T$=FNtable_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) 5863pos%=FNtable_field(field%,tabfieldlen%()) 5864IF sfield%>=0 THEN spos%=FNtable_field(sfield%,tabfieldlen%()) 5865IF p$<>"" THEN 5866 ExpLen%=0 5867 FOR I%=1 TO LEN(p$) 5868 F%=VAL(MID$(p$,I%,1)) 5869 ExpLen%+=tabfieldlen%(F%)+2 5870 NEXT I% 5871 ExpLen%-=2 5872 ELSE ExpLen%=tabfieldlen%(1) 5873ENDIF 5874start%=!tabanchor%(T%)+160-Rec%:ind%=start%+pos% 5875REPEAT 5876 row%+=1:ind%+=Rec% 5877UNTIL row%>Rows% OR $ind%=string$ 5878IF row%>Rows% THEN subst$="":=string$:REM ## String not in table ### 5879ind%=start%+row%*Rec%:IF sfield%>=0 THEN subst$=$(ind%+spos%) 5880IF p$<>"" THEN 5881 FOR I%=1 TO LEN(p$) 5882 F%=VAL(MID$(p$,I%,1)) 5883 pos%=FNtable_field(F%,tabfieldlen%()) 5884 s$+=FNpad($(ind%+pos%),tabfieldlen%(F%))+" " 5885 NEXT I% 5886 s$=LEFT$(LEFT$(s$)) 5887 ELSE ind%+=tabfieldlen%(0)+1:s$=$ind%:REM ### Return 2nd field ### 5888ENDIF 5889=s$ 5890: 5891DEF FNn(F%) 5892LOCAL T%,row%,ind%,start%,Rows%,Rec%,TabFields%,pos%,valpos%,N%,field%,name$,table$,S$ 5893IF link$(F%)="" THEN=0 5894S$=$Rf%(F%) 5895name$=link$(F%) 5896field%=VAL(RIGHT$(name$)):table$=LEFT$(name$) 5897IF ASC(table$)<58 AND ASC(table$)<>-1 THEN table$=MID$(table$,2) 5898table%=FNtable_number(table$):IF table%<0 THEN=0 5899T$=FNtable_info(table%,Rows%,TabFields%,Rec%,tabfieldlen%()) 5900IF TabFields%=field% THEN PROCsofterror("",54):=0 5901pos%=FNtable_field(field%,tabfieldlen%()) 5902valpos%=FNtable_field(field%+1,tabfieldlen%()) 5903start%=!tabanchor%(table%)+160-Rec% 5904REPEAT row%+=1 5905 ind%=start%+row%*Rec%+pos% 5906UNTIL row%>Rows% OR S$=$ind% 5907IF row%<=Rows% THEN 5908 ind%=start%+row%*Rec%+valpos% 5909 N%=VAL($ind%) 5910 ELSE N%=0 5911ENDIF 5912=N% 5913: 5914DEF FNpad(s$,L%) 5915WHILE LEN(s$)<L% 5916 s$+=" " 5917ENDWHILE 5918=s$ 5919: 5920DEF FNinclude_fields 5921LOCAL Hdlen%,Datlen%,hlm%,dlm%,I%,F%,f$,Head$,limit%,pad%,col%,fail%,n$,y$,SF$,memo%,base%,pos%,blocksize%,blockinc% 5922blocksize%=256:blockinc%=blocksize% 5923PROCextend_named_sliding_block(headanchor%,blocksize%) 5924base%=!headanchor%:pos%=base% 5925PROCheap_store(headanchor%,blocksize%,blockinc%,pos%,0,margin$) 5926FOR I%=1 TO LEN(Form$)-1 STEP 2 5927 F%=FNfnum(MID$(Form$,I%,2)) 5928 CASE chartype%(F%) OF 5929 WHEN 36,39:dlm%=TextLine%:memo%=TRUE:PROCset_vert 5930 WHEN 41,42,43,44,45: 5931 Datlen%=FNno_yes(F%,n$,y$) 5932 REM ### Get data length for strings printed for check boxes ### 5933 ENDCASE 5934 IF FNselected(printW%,11) THEN 5935 f$=FNexpand("@#*",link$(F%),Datlen%,SF$) 5936 IF Datlen%=0 THEN Datlen%=maxlen%(F%) 5937 ELSE 5938 Datlen%=maxlen%(F%) 5939 ENDIF 5940 IF Datlen%>dlm% THEN dlm%=Datlen% 5941 IF FNselected(printW%,2) THEN Head$=$FNtext(mainW%,(desc%(F%))) ELSE Head$=Tag$(F%) 5942 Hdlen%=LEN(Head$) 5943 IF Hdlen%>hlm% THEN hlm%=Hdlen% 5944 CASE format$ OF 5945 WHEN "horiz","table": 5946 pad%=Datlen%-Hdlen%:IF pad%<0 THEN pad%=0 5947 CASE chartype%(F%) OF 5948 WHEN 3,6,46,47,54,56,57:IF FNselected(printW%,11) THEN Head$+=STRING$(pad%," ") ELSE Head$=STRING$(pad%," ")+Head$ 5949 REM ### Right justify numbers unless Expand option on ### 5950 OTHERWISE:Head$+=STRING$(pad%," ") 5951 ENDCASE 5952 PROCheap_store(headanchor%,blocksize%,blockinc%,pos%,0,Head$+spacer$) 5953 Tab%((I%+1) DIV 2)=pos%-base% 5954 ENDCASE 5955NEXT I% 5956CASE format$ OF 5957 WHEN "horiz":L%=pos%-base%+2 5958 WHEN "vert": 5959 IF memo% THEN 5960 L%=TextLine%+5 5961 ELSE L%=Lmargin%+hlm%+dlm%+6 5962 ENDIF 5963 Tab%(1)=hlm% 5964 WHEN "table": 5965 col%=LEN(column$) 5966 PROCheap_store(headanchor%,blocksize%,blockinc%,pos%,0,column$+" ") 5967 ?pos%=10:L%=pos%-base%+1 5968 WHEN "label": 5969 longestfield%=dlm% 5970 L%=labup%*labwidth%+dlm%+Lmargin%+1 5971ENDCASE 5972PROCextend_named_sliding_block(lineanchor%,L%+8) 5973=L% 5974: 5975DEF FNno_yes(F%,RETURN no$,RETURN yes$) 5976LOCAL P%,V$,L% 5977V$=$FNval(mainW%,field%(F%)) 5978P%=INSTR(V$,"Q") 5979IF P%>0 THEN 5980 V$=MID$(V$,P%+1) 5981 P%=INSTR(V$,",") 5982 no$=LEFT$(V$,P%-1) 5983 yes$=MID$(V$,P%+1) 5984 ELSE no$="N":yes$="Y" 5985ENDIF 5986L%=LEN(no$) 5987IF LEN(yes$)>L% THEN L%=LEN(yes$) 5988=L% 5989: 5990DEF PROCheap_store(anchor%,RETURN size%,inc%,RETURN ptr%,L%,string$) 5991IF string$<>"" THEN L%=LEN(string$) 5992IF ptr%-!anchor%+L%+1>size% THEN 5993 size%+=inc% 5994 PROCextend_named_sliding_block(anchor%,size%) 5995ENDIF 5996IF string$<>"" THEN $ptr%=string$:ptr%+=L%:?ptr%=10 5997ENDPROC 5998: 5999DEF PROCset_vert 6000PROCdeselect(printW%,23) 6001PROCdeselect(printW%,25) 6002PROCdeselect(printW%,26) 6003PROCselect(printW%,24) 6004format$="vert" 6005LinesPerPage%=(pagelength%-10) DIV (linefeed%*(LEN(Form$) DIV 2)) 6006IF LinesPerPage%=0 THEN LinesPerPage%=1 6007ENDPROC 6008: 6009DEF PROCdrag_selection(f$) 6010LOCAL F%,I%,T%,F 6011F=OPENIN(f$) 6012printorder$=GET$#F 6013T%=-1 6014WHILE NOT EOF#F 6015 T%+=1 6016 printrel$(T%)=GET$#F 6017ENDWHILE 6018PROCclose_file(F) 6019FOR F%=1 TO fields% 6020 IF chartype%(F%)>40 THEN 6021 col%=FNget_icon_cols(mainW%,field%(F%)) 6022 IF (col% AND %1111)<2 THEN col%=((col%>>4) OR (col%<<4)) AND %11111111 6023 PROCset_icon_cols(mainW%,field%(F%),col%) 6024 ELSE PROCdeselect(mainW%,field%(F%)) 6025 ENDIF 6026NEXT F% 6027FOR I%=1 TO LEN(printorder$)-1 STEP 2 6028 F%=FNfnum(MID$(printorder$,I%,2)) 6029 IF chartype%(F%)>40 THEN 6030 col%=FNget_icon_cols(mainW%,field%(F%)) 6031 col%=((col%>>4) OR (col%<<4)) AND %11111111 6032 PROCset_icon_cols(mainW%,field%(F%),col%) 6033 ELSE PROCselect(mainW%,field%(F%)) 6034 ENDIF 6035NEXT I% 6036PROClit(menu%(6),7,TRUE) 6037PROClit(menu%(6),8,TRUE) 6038ENDPROC 6039: 6040DEF PROCselect_all 6041LOCAL F%,T%,F$ 6042printorder$="" 6043FOR F%=1 TO fields% 6044 CASE chartype%(F%) OF 6045 WHEN 41,42,43,44,45: 6046 col%=FNget_icon_cols(mainW%,field%(F%)) 6047 IF (col% AND %1111)>=2 THEN col%=((col%>>4) OR (col%<<4)) AND %11111111 6048 PROCset_icon_cols(mainW%,field%(F%),col%) 6049 F$=STR$~(F%):IF LEN(F$)=1 THEN F$="0"+F$ 6050 printorder$+=F$ 6051 WHEN 0,1,2,4,5,7,8: 6052 IF len%(F%)>0 THEN 6053 F$=STR$~(F%):IF LEN(F$)=1 THEN F$="0"+F$ 6054 printorder$+=F$ 6055 PROCselect(mainW%,field%(F%)) 6056 ENDIF 6057 WHEN 36,39,48,49,50,51,52,53,55,58: 6058 F$=STR$~(F%):IF LEN(F$)=1 THEN F$="0"+F$ 6059 printorder$+=F$ 6060 PROCselect(mainW%,field%(F%)) 6061 WHEN 3,6,46,47,54,56,57: 6062 F$=STR$~(F%):IF LEN(F$)=1 THEN F$="0"+F$ 6063 printorder$+=F$ 6064 PROCselect(mainW%,field%(F%)) 6065 PROCenable_row(calcrow%?F%,TRUE) 6066 ENDCASE 6067NEXT F% 6068PROClit(menu%(6),7,TRUE) 6069PROClit(menu%(6),8,TRUE) 6070ENDPROC 6071: 6072DEF PROCclear_selection 6073LOCAL F%,T% 6074FOR F%=1 TO fields% 6075 CASE chartype%(F%) OF 6076 WHEN 41,42,43,44,45: 6077 col%=FNget_icon_cols(mainW%,field%(F%)) 6078 IF (col% AND %1111)<2 THEN col%=((col%>>4) OR (col%<<4)) AND %11111111 6079 PROCset_icon_cols(mainW%,field%(F%),col%) 6080 WHEN 3,6,8,46,47,54,56,57:PROCenable_row(calcrow%?F%,FALSE):PROCdeselect(mainW%,field%(F%)) 6081 OTHERWISE:PROCdeselect(mainW%,field%(F%)) 6082 ENDCASE 6083NEXT F% 6084printorder$="" 6085FOR T%=0 TO LastTable% 6086 printrel$(T%)="" 6087NEXT T% 6088PROClit(menu%(6),7,FALSE) 6089PROClit(menu%(6),8,FALSE) 6090ENDPROC 6091: 6092DEF PROCdrag_query(f$) 6093LOCAL F%,I%,Q$ 6094IF FNselected(keypadW%,22) THEN 6095 SYS "OS_File",255,f$,FNtext(keypadW%,29) 6096 PROCset_caret(keypadW%,29) 6097 PROCredraw_icon(keypadW%,29) 6098 ELSE 6099 SYS "OS_File",255,f$,FNtext(matchW%,0) 6100 PROCopen_window(matchW%) 6101 PROCset_caret(matchW%,0) 6102 PROCredraw_icon(matchW%,0) 6103ENDIF 6104ENDPROC 6105: 6106DEF PROCdrag_options(f$) 6107LOCAL F,I%,set%,ic% 6108F=OPENIN(f$) 6109LOCAL ERROR 6110ON ERROR LOCAL:RESTORE ERROR:PROCend_load:ENDPROC 6111RESTORE +0 6112FOR I%=1 TO 13 6113 READ ic% 6114 INPUT#F,set%:PROCset_icon(printW%,ic%,set%) 6115NEXT I% 6116FOR I%=1 TO 9 6117 READ ic% 6118 INPUT#F,$FNtext(printW%,ic%) 6119 PROCredraw_icon(printW%,ic%) 6120NEXT I% 6121FOR I%=1 TO 7 6122 READ ic% 6123 INPUT#F,set%:PROCset_icon(printW%,ic%,set%) 6124NEXT I% 6125FOR I%=1 TO 3 6126 READ ic% 6127 INPUT#F,set%:PROCset_icon(labelW%,ic%,set%) 6128NEXT I% 6129FOR I%=1 TO 4 6130 READ ic% 6131 INPUT#F,$FNtext(labelW%,ic%) 6132NEXT I% 6133FOR I%=1 TO 3 6134 READ ic% 6135 INPUT#F,set%:PROCset_icon(labelW%,ic%,set%) 6136NEXT I% 6137PROCclose_file(F) 6138PROCicon_bit(22,printW%,15,FNselected(printW%,25)) 6139PROCicon_bit(22,printW%,45,FNselected(printW%,25)) 6140PROCicon_bit(22,labelW%,12,FNselected(labelW%,11)) 6141: 6142DATA 1,2,4,6,7,8,23,24,25,26,38,39,41:REM Radio buttons 6143DATA 15,16,17,18,30,32,34,43,45:REM Writable fields 6144DATA 10,11,12,19,29,40,42:REM Option switches 6145REM In Label Definition window 6146DATA 0,1,2:REM Radio buttons 6147DATA 4,6,10,12:REM Writeable fields 6148DATA 11,13,16:REM Option switches 6149: 6150ENDPROC 6151: 6152DEF PROCend_load 6153PROCclose_file(F) 6154CASE ERR OF 6155 WHEN 222:PROCwimp_error(TRUE,fatal_err%,ERL,f$+" not found") 6156 WHEN 6: 6157 PROCwimp_error(TRUE,moan_err%,ERL,f$+" is too old and is being deleted") 6158 SYS "OS_CLI","Delete "+f$ 6159 IF FNleaf(f$)="PrintOpts" THEN PROCdrag_options("<Pbase$Dir>.Resources.PrintOpts") 6160 OTHERWISE:PROCwimp_error(TRUE,moan_err%,ERL,REPORT$) 6161ENDCASE 6162ENDPROC 6163: 6164DEF PROCdesign_field 6165LOCAL w%,h% 6166posx%=x%:posy%=y% 6167!block%=mainW%:SYS "Wimp_GetWindowState",,block% 6168x%+=block%!20-block%!4 6169y%+=block%!24-block%!16 6170CASE b% AND %1111111 OF 6171 WHEN 16: 6172 IF (ic% MOD 2)=1 THEN drag%=6:dragbutt%=16 ELSE drag%=5:dragbutt%=64 6173 PROCinit_drag(mainW%,ic%,drag%) 6174 WHEN 2: 6175 $InsText%="" 6176 PROCdeselect(createW%,FNselected_esg(createW%,1)) 6177 IF ic%>=0 THEN 6178 PROClit(menu%(9),0,TRUE) 6179 !block%=mainW%:block%!4=ic%:SYS "Wimp_GetIconState",,block% 6180 x%=block%!8:y%=block%!12:w%=block%!16-block%!8:h%=block%!20-block%!12 6181 Fieldnumber%=FNget_field(ic%) 6182 type%=chartype%(Fieldnumber%) 6183 CASE type% OF 6184 WHEN 0,1,2,3,4,5,6,7,8: 6185 PROCselect(createW%,21) 6186 PROCset_limits(1,0,8,8) 6187 WHEN 36,37,38,39,40: 6188 PROCselect(createW%,22) 6189 PROCset_limits(36,36,40,11) 6190 WHEN 41,42,43,44,45: 6191 PROCselect(createW%,24) 6192 PROCset_limits(41,41,45,14) 6193 WHEN 46,47,48,49,50,51,52,53,54,55,56,57,58,59: 6194 PROCselect(createW%,35) 6195 PROCset_limits(46,46,59,16) 6196 OTHERWISE: 6197 PROCselect(createW%,23) 6198 PROCset_limits(9,9,35,19) 6199 ENDCASE 6200 fieldtype%=type% 6201 PROCtick_one(menu%(menunumber%),0,lasttype%-firsttype%,fieldtype%-firsttype%) 6202 $FtitleText%="Modify field "+STR$(Fieldnumber%) 6203 $DescText%=$FNtext(mainW%,desc%(Fieldnumber%)) 6204 $TagText%=Tag$(Fieldnumber%) 6205 $LenText%=STR$(len%(Fieldnumber%)) 6206 $ValText%=vname$(fieldtype%) 6207 IF fix%(Fieldnumber%)>0 THEN $Fixpt%=STR$(fix%(Fieldnumber%)):PROCselect(createW%,14) ELSE PROCdeselect(createW%,14) 6208 PROCicon_bit(22,createW%,13,(FNselected(createW%,14))) 6209 PROCicon_bit(22,createW%,14,(fieldtype%=3 OR fieldtype%=6)) 6210 PROCicon_bit(22,createW%,18,FALSE) 6211 PROCicon_bit(22,createW%,6,(fieldtype%<9 OR fieldtype%=46 OR fieldtype%=47) AND NOT adjust%) 6212 PROCicon_bit(22,createW%,30,NOT adjust%) 6213 PROCicon_bit(22,createW%,29,TRUE) 6214 PROCicon_bit(22,createW%,15,(fieldtype%=3 OR fieldtype%=47)) 6215 PROCicon_bit(22,createW%,25,(fieldtype%=3)) 6216 C$=calc$(Fieldnumber%):P%=INSTR(C$,"|") 6217 IF P%>0 THEN $mintext%=LEFT$(C$,P%-1):$maxtext%=MID$(C$,P%+1) 6218 FOR I%=21 TO 24 6219 PROCicon_bit(22,createW%,I%,NOT adjust%) 6220 NEXT I% 6221 PROCicon_bit(22,createW%,35,NOT adjust%) 6222 PROCicon_bit(22,createW%,39,NOT adjust%) 6223 PROCicon_bit(22,createW%,40,NOT adjust%) 6224 ELSE 6225 PROClit(menu%(9),0,NOT adjust%) 6226 PROCselect(createW%,21) 6227 PROCset_limits(1,0,8,8) 6228 $FtitleText%="New field "+STR$(fields%+1) 6229 $DescText%="":$TagText%="":$LenText%="" 6230 $Fixpt%="2":$mintext%="":$maxtext%="" 6231 PROCdeselect(createW%,14) 6232 PROCicon_bit(22,createW%,13,FALSE) 6233 PROCicon_bit(22,createW%,14,FALSE) 6234 PROCicon_bit(22,createW%,15,FALSE) 6235 PROCicon_bit(22,createW%,25,FALSE) 6236 PROCicon_bit(22,createW%,29,FALSE) 6237 PROCicon_bit(22,createW%,30,FALSE) 6238 PROCicon_bit(22,createW%,39,FALSE) 6239 PROCicon_bit(22,createW%,40,FALSE) 6240 PROCicon_bit(22,createW%,18,NOT adjust%) 6241 ENDIF 6242 $boxX%=STR$(x%):$boxY%=STR$(y%):$boxW%=STR$(w%):$boxH%=STR$(h%) 6243 PROCclose_window(createW%) 6244 PROCshow_menu(menu%(9),posx%-64,posy%-20) 6245 WHEN 64:PROCinit_drag(mainW%,ic%,5):dragbutt%=64 6246ENDCASE 6247ENDPROC 6248: 6249DEF PROCremove_field(Field%,con%,RETURN Calc$) 6250LOCAL F% 6251IF con% THEN IF FNconfirm(FNmsg(53))=FALSE THEN ENDPROC 6252!block%=mainW%:block%!4=desc%(Field%) 6253SYS "Wimp_GetIconState",,block% 6254posx%=block%!8:posy%=block%!12 6255SYS "Wimp_DeleteIcon",,block% 6256block%!4=field%(Field%):SYS "Wimp_DeleteIcon",,block% 6257fields%-=1 6258Calc$=calc$(Field%) 6259FOR F%=Field% TO fields% 6260 desc%(F%)=desc%(F%+1):field%(F%)=field%(F%+1):Tag$(F%)=Tag$(F%+1):len%(F%)=len%(F%+1):chartype%(F%)=chartype%(F%+1):fix%(F%)=fix%(F%+1):calc$(F%)=calc$(F%+1) 6261NEXT F% 6262!block%=mainW% 6263SYS "Wimp_GetWindowState",,block% 6264posx%-=block%!20-block%!4:posy%-=block%!24-block%!16-48 6265SYS "Wimp_ForceRedraw",-1,block%!4,block%!8,block%!12,block%!16 6266ENDPROC 6267: 6268DEF PROCcreate_field(Before%,x%,y%,Calc$) 6269LOCAL Desc%,Field%,F%,tag$,Len%,Char%,F%,L%,LF%,x%,y%,width%,height% 6270IF fields%=MaxFields% THEN PROCsofterror(STR$(MaxFields%),23):ENDPROC 6271IF $DescText%="" AND $TagText%="" AND fieldtype%<=8 THEN ENDPROC 6272L%=LEN($DescText%):LF%=VAL($LenText%) 6273IF LF%>246 THEN PROCsofterror("",64):ENDPROC 6274x%=VAL($boxX%):y%=VAL($boxY%):width%=VAL($boxW%):height%=VAL($boxH%) 6275CASE fieldtype% OF 6276 WHEN 39,40,59: 6277 LF%=0 6278 IF width%=0 THEN width%=48 6279 IF height%=0 THEN height%=48 6280 WHEN 41,42,43,44,45:LF%=1 6281 WHEN 8,48,50:LF%=8 6282 WHEN 49:LF%=15 6283 WHEN 51:LF%=10 6284 WHEN 52,58:LF%=24 6285 WHEN 53,55:LF%=3 6286 WHEN 54,56:LF%=2 6287 WHEN 57:LF%=4 6288ENDCASE 6289IF LF%>0 AND $TagText%="" THEN PROCsofterror("",16):ENDPROC 6290REPEAT F%+=1 6291UNTIL $TagText%=Tag$(F%) OR F%>fields% 6292IF F%<=fields% AND $TagText%<>"" THEN PROCsofterror("",20):ENDPROC 6293fields%+=1:Tag$(fields%)=$TagText%:len%(fields%)=LF% 6294IF width%=0 AND $TagText%<>"" THEN 6295 IF len%(fields%)<70 THEN width%=len%(fields%)*16+16 ELSE width%=70*16+16 6296ENDIF 6297IF height%=0 AND width%>0 THEN height%=48 6298chartype%(fields%)=fieldtype% 6299IF FNselected(createW%,14) THEN fix%(fields%)=VAL($Fixpt%) ELSE fix%(fields%)=0 6300PROCextend_named_sliding_block(formanchor%,Fptr%-!formanchor%+L%+6) 6301desc%(fields%)=FNcreate_icon(mainW%,x%-L%*16-16,y%,L%*16+8,48,(winback%<<28)+&7016731,"",Fptr%,hand%,L%) 6302$Fptr%=$DescText%:Fptr%+=L%+1 6303$Fptr%="" 6304CASE fieldtype% OF 6305 WHEN 3: 6306 min$=$FNtext(createW%,15) 6307 max$=$FNtext(createW%,25) 6308 IF min$<>"" OR max$<>"" THEN calc$(fields%)=min$+"|"+max$:calc$(0)="LOADED" 6309 WHEN 47: 6310 min$=$FNtext(createW%,15):IF min$="" THEN min$="0" 6311 calc$(fields%)=min$+"|"+min$:calc$(0)="LOADED" 6312ENDCASE 6313CASE fieldtype% OF 6314 WHEN 0,1,2,3,4,5,6,7,8,39,40,46,47,48,49,50,51,52,53,54,55,56,57:valptr%=hand% 6315 OTHERWISE:valptr%=hvalid%(fieldtype%) 6316ENDCASE 6317PROCicon_design(fieldtype%,1,width%,height%) 6318field%(fields%)=FNcreate_icon(mainW%,x%,y%,width%,height%,iflags%,"",Fptr%,valptr%,4) 6319IF fieldtype%=40 THEN Rf%(fields%)=FNcreate_anchor("Picture"+STR$(fields%)) 6320Fptr%+=5 6321PROCredraw_icon(mainW%,desc%(fields%)):PROCredraw_icon(mainW%,field%(fields%)) 6322IF Before%<fields% AND Before%>0 THEN PROCre_sequence(fields%,Before%,-1) 6323ENDPROC 6324: 6325DEF PROCadjust_field(b%) 6326LOCAL Dptr%,Fptr% 6327SYS "Wimp_GetPointerInfo",,block% 6328newx%=!block%:newy%=block%!4 6329Fieldnumber%=FNget_field(ficon%) 6330IF (ficon% MOD 2)=0 THEN 6331 !block%=mainW%:block%!4=ficon%:SYS "Wimp_GetIconState",,block% 6332 Dptr%=block%!28:Desc$=$Dptr%:L%=LEN(Desc$) 6333 SYS "Wimp_DeleteIcon",,block% 6334 SYS "Wimp_GetWindowState",,block% 6335 x%=block%!20-block%!4+newx%-oldx%+minx% 6336 y%=block%!24-block%!16+miny%+newy%-oldy% 6337 desc%(Fieldnumber%)=FNcreate_icon(mainW%,x%,y%,L%*16+8,48,&17016731,"",Dptr%,hand%,L%) 6338 ELSE 6339 !block%=mainW%:block%!4=ficon%:SYS "Wimp_GetIconState",,block% 6340 Fptr%=block%!28 6341 CASE b% OF 6342 WHEN 16: 6343 SYS "Wimp_DeleteIcon",,block% 6344 SYS "Wimp_GetWindowState",,block% 6345 x%=block%!20-block%!4+minx% 6346 y%=block%!24-block%!16+miny%+newy%-oldy% 6347 width%=maxx%-minx%+newx%-oldx%:height%=maxy%-miny%+oldy%-newy% 6348 WHEN 64: 6349 !block%=mainW%:block%!4=ficon%-1:SYS "Wimp_GetIconState",,block% 6350 Dptr%=block%!28:Desc$=$Dptr%:L%=LEN(Desc$) 6351 SYS "Wimp_DeleteIcon",,block% 6352 !block%=mainW%:block%!4=ficon%:SYS "Wimp_DeleteIcon",,block% 6353 SYS "Wimp_GetWindowState",,block% 6354 x%=block%!20-block%!4+newx%-oldx%+minx%-L%*16-16 6355 y%=block%!24-block%!16+miny%+newy%-oldy% 6356 desc%(Fieldnumber%)=FNcreate_icon(mainW%,x%,y%,L%*16+8,48,(winback%<<28)+&7016731,"",Dptr%,hand%,L%) 6357 SYS "Wimp_GetWindowState",,block% 6358 x%=block%!20-block%!4+newx%-oldx%+minx% 6359 y%=block%!24-block%!16+miny%+newy%-oldy% 6360 width%=maxx%-minx%:height%=maxy%-miny% 6361 ENDCASE 6362 fieldtype%=chartype%(Fieldnumber%) 6363 CASE fieldtype% OF 6364 WHEN 0,1,2,3,4,5,6,7,8,39,40,46,47,48,49,50,51,52,53,54,55,56,57,58:valptr%=hand% 6365 WHEN 59:valptr%=!logoanchor% 6366 OTHERWISE:valptr%=hvalid%(fieldtype%) 6367 ENDCASE 6368 PROCicon_design(fieldtype%,1,width%,height%) 6369 field%(Fieldnumber%)=FNcreate_icon(mainW%,x%,y%,width%,height%,iflags%,"",Fptr%,valptr%,4) 6370 IF fieldtype%=40 THEN Rf%(Fieldnumber%)=FNcreate_anchor("Picture"+STR$(Fieldnumber%)) 6371ENDIF 6372$boxX%=STR$(x%):$boxY%=STR$(y%):$boxW%=STR$(width%):$boxH%=STR$(height%) 6373!block%=mainW% 6374SYS "Wimp_GetWindowState",,block% 6375SYS "Wimp_ForceRedraw",-1,block%!4,block%!8,block%!12,block%!16 6376ENDPROC 6377: 6378DEF PROCswap_fields(F1%,F2%) 6379IF F2%>0 AND F2%<=fields% THEN 6380 SWAP desc%(F1%),desc%(F2%) 6381 SWAP Tag$(F1%),Tag$(F2%) 6382 SWAP field%(F1%),field%(F2%) 6383 SWAP len%(F1%),len%(F2%) 6384 SWAP chartype%(F1%),chartype%(F2%) 6385 SWAP fix%(F1%),fix%(F2%) 6386 SWAP calc$(F1%),calc$(F2%) 6387 PROCclose_window(createW%) 6388ENDIF 6389ENDPROC 6390: 6391DEF PROCre_sequence(F1%,F2%,Z%) 6392D%=desc%(F1%):T$=Tag$(F1%):F%=field%(F1%):L%=len%(F1%):C%=chartype%(F1%):f%=fix%(F1%):IF Calc$="" THEN Calc$=calc$(F1%) 6393FOR I%=F1%+Z% TO F2% STEP Z% 6394 desc%(I%-Z%)=desc%(I%):Tag$(I%-Z%)=Tag$(I%):field%(I%-Z%)=field%(I%):len%(I%-Z%)=len%(I%):chartype%(I%-Z%)=chartype%(I%):fix%(I%-Z%)=fix%(I%):calc$(I%-Z%)=calc$(I%) 6395NEXT I% 6396desc%(F2%)=D%:Tag$(F2%)=T$:field%(F2%)=F%:len%(F2%)=L%:chartype%(F2%)=C%:fix%(F2%)=f%:calc$(F2%)=Calc$ 6397ENDPROC 6398: 6399DEF PROCicon_design(char%,func%,RETURN w%,RETURN h%) 6400CASE func% OF 6401 WHEN 0:bfg%=&1700A53B:ffg%=&0700A535:IF logosloaded% THEN lfg%=&0000011A ELSE lfg%=ffg% 6402 WHEN 1:bfg%=&1700653B:ffg%=&07006535:IF logosloaded% THEN lfg%=&0000611E ELSE lfg%=ffg% 6403ENDCASE 6404CASE char% OF 6405 WHEN 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30: 6406 !block%=keypadW%:block%!4=char%-9:SYS "Wimp_GetIconState",,block% 6407 w%=block%!16-block%!8:h%=block%!20-block%!12:iflags%=bfg% 6408 WHEN 32,33,34:w%=112:h%=44:iflags%=bfg% 6409 WHEN 35:w%=80:h%=64:iflags%=bfg% 6410 WHEN 31:w%=44:h%=44:iflags%=&1700B53B 6411 WHEN 36,37,38:w%=48:h%=44:iflags%=bfg% 6412 WHEN 39:iflags%=ffg% 6413 WHEN 40:IF func%=0 THEN iflags%=&0700A53E ELSE iflags%=ffg% 6414 WHEN 41,42,43,44,45:w%=52:h%=52:iflags%=&1700B53B 6415 WHEN 59:iflags%=lfg% 6416 OTHERWISE:iflags%=ffg% 6417ENDCASE 6418IF w%=0 AND h%=0 THEN iflags%=&00000000 6419ENDPROC 6420: 6421DEF FNget_field(ic%) 6422LOCAL F% 6423REPEAT F%+=1 6424UNTIL field%(F%)=ic% OR desc%(F%)=ic% 6425=F% 6426: 6427DEF PROCadjust_on(on%) 6428design%=on%:adjust%=on% 6429PROClit(menu%(9),5,on%) 6430PROClit(menu%(9),1,NOT on%) 6431PROClit(menu%(9),2,NOT on%) 6432PROClit(menu%(9),3,NOT on%) 6433PROClit(menu%(9),4,NOT on%) 6434PROCicon_bit(22,createW%,6,NOT on%) 6435ENDPROC 6436: 6437DEF PROCchange_length(NL%,msg%) 6438LOCAL EX%,klm%,S$,N% 6439EX%=NL%-RA% 6440IF EX%=0 THEN ENDPROC 6441dbasehandle%=OPENUP($database%+".Database") 6442PROCreadsmarray(dbasehandle%,RA%) 6443CASE TRUE OF 6444 WHEN NOT msg%:PROCextend_dbase 6445 WHEN (EX%>0): 6446 IF FNconfirm("Extend file from "+STR$(RA%)+" to "+STR$(NL%)+" records")=TRUE THEN PROCextend_dbase 6447 WHEN (EX%<0): 6448 IF FNconfirm("Shorten file from "+STR$(RA%)+" to "+STR$(NL%)+" records")=TRUE THEN PROCshorten_dbase 6449ENDCASE 6450$Records%=STR$(RA%):N%=RA% 6451PROCwritesmarray(dbasehandle%,N%) 6452PROCclose_file(dbasehandle%) 6453IF msg% THEN addr=FNmoveto(key%,top,1) 6454ENDPROC 6455: 6456DEF PROCextend_dbase 6457LOCAL end%,P%,I%,key%,keybase%,KLM%,S$ 6458FOR key%=0 TO Keys% 6459 S$=STRING$(KL%(key%),".") 6460 KLM%=KL%(key%)+13 6461 P%=LH%+48+(NL%+1)*KLM% 6462 PROCextend_named_sliding_block(keyanchor%(key%),P%) 6463 keybase%=!keyanchor%(key%) 6464 P%=LH%+48+RA%*KLM% 6465 FOR I%=RA% TO EX%+RA%-1 6466 !(keybase%+P%)=P%+KLM% 6467 !(keybase%+P%+4)=0 6468 $(keybase%+P%+8)=S$ 6469 !(keybase%+P%+KL%(key%)+9)=I% 6470 P%+=KLM% 6471 NEXT I% 6472 !(keybase%+P%)=0 6473 !(keybase%+P%+4)=0 6474 $(keybase%+P%+8)=S$ 6475 !(keybase%+P%+KL%(key%)+9)=0 6476NEXT key% 6477end%=EXT#dbasehandle% 6478FOR I%=0 TO EX%-1 6479 PTR#dbasehandle%=end%+I%*Length% 6480 FOR J%=1 TO fields% 6481 BPUT#dbasehandle%,"" 6482 NEXT J% 6483NEXT I% 6484PTR#dbasehandle%=end%+EX%*Length% 6485RA%=NL% 6486ENDPROC 6487: 6488DEF PROCshorten_dbase 6489LOCAL P%,L%,R%,s$,key%,keybase%,S$ 6490FOR key%=0 TO Keys% 6491 S$=STRING$(KL%(key%),".") 6492 KLM%=KL%(key%)+13 6493 keybase%=!keyanchor%(key%) 6494 s$=$(keybase%+LH%+56+NL%*KLM%) 6495 IF s$<>S$ THEN IF FNconfirm(FNmsg(52))=FALSE THEN ENDPROC 6496 P%=LH%+48+NL%*KLM% 6497 !(keybase%+P%)=0 6498 !(keybase%+P%+4)=0 6499 $(keybase%+P%+8)=S$ 6500 !(keybase%+P%+KL%(key%)+9)=0 6501NEXT key% 6502EXT#dbasehandle%=Length%*(NL%+1) 6503RA%=NL% 6504ENDPROC 6505: 6506DEF PROCcopy_database_spritefile(path$,leaf$) 6507LOCAL sprites% 6508PROCcreate_named_sliding_block(sprsanchor%,1024) 6509REM ### This is a temporary sprite area used simply to hold ### 6510REM ### the sprite 'new_appl' whilst it is renamed and saved ### 6511sprites%=!sprsanchor% 6512!sprites%=1024 6513sprites%!8=16 6514REM ### Initialise sprite area ### 6515SYS "OS_SpriteOp",&109,sprites% 6516REM ### Load !Sprites file from Resources ### 6517SYS "OS_SpriteOp",&10A,sprites%,"<PBase$Dir>.Resources.Temp.!Sprites" 6518REM ### Rename sprite 'new_appl' to new database name ### 6519SYS "OS_SpriteOp",&11A,sprites%,"new_appl",leaf$ 6520REM ### Save spritefile (with renamed new_appl) as !Sprites ### 6521SYS "OS_SpriteOp",&10C,sprites%,path$+".!Sprites" 6522REM ### Do same for hi-res sprite ### 6523SYS "OS_SpriteOp",&109,sprites% 6524SYS "OS_SpriteOp",&10A,sprites%,"<PBase$Dir>.Resources.Temp.!Sprites22" 6525SYS "OS_SpriteOp",&11A,sprites%,"new_appl",leaf$ 6526SYS "OS_SpriteOp",&10C,sprites%,path$+".!Sprites22" 6527PROCscrap_sliding_block(sprsanchor%) 6528ENDPROC 6529: 6530DEF PROCdefaults(f$,N%,key%) 6531$Records%=STR$(N%) 6532PROCmake_empty_index(N%,key%,TRUE) 6533PROCsave_recs(f$+".Database",N%) 6534present%=7:PROCsave_keys 6535design%=FALSE 6536PROCget_it_in(f$) 6537PROClit(menu%(0),2,TRUE) 6538ENDPROC 6539: 6540DEF PROCdefault_key 6541LOCAL F% 6542F%=FNfirst_field 6543CASE TRUE OF 6544 WHEN chartype%(F%)=3:KL%(0)=len%(F%) 6545 WHEN len%(F%)>3:KL%(0)=4 6546 OTHERWISE:KL%(0)=len%(F%) 6547ENDCASE 6548Index$(0)="PrimaryKey" 6549key%=0 6550KW%()=0:KW%(key%,0)=KL%(key%) 6551KF%(key%,0)=F%:KF%(key%,1)=0 6552PROCset_keydata(key%) 6553ENDPROC 6554: 6555DEF PROCnew_tree(f%) 6556LOCAL REC%,I%,ptr%,file%,old$ 6557old$="Length: "+STR$(KL%(0))+", Field(s): "+Tag$(KF%(0,0))+" "+Tag$(KF%(0,1))+", Chars: "+STR$(KW%(0,0))+","+STR$(KW%(0,1))+","+STR$(KW%(0,2))+","+STR$(KW%(0,3)) 6558d%=FNselected(keyW%,9):s%=FNselected(keyW%,8) 6559IF d% THEN f%=0 6560M$="Build index with " 6561IF s% THEN M$+="records in same subfiles" ELSE M$+="all records in subfile "+STR$(f%) 6562M$+=" of current database" 6563IF d% THEN M$+=", also restoring 'deleted' records." 6564IF d% OR NOT s% THEN M$+=" WARNING! Other indices will need rebuilding!" 6565IF NOT FNconfirm(M$)=TRUE THEN ENDPROC 6566PROCmark_files(0,RA%,NOT d%,s%,f%) 6567PROCcopy_keydata(0) 6568RA%=VAL($Records%):f$=$database% 6569PROCscrap_sliding_block(keyanchor%(0)) 6570PROCmake_empty_index(RA%,0,TRUE) 6571PROCclose_window(keyW%) 6572PROCredraw(keypadW%) 6573ptr%=!tempanchor% 6574PROCpoll:PROCpoll 6575SYS "Hourglass_On" 6576dbasehandle%=OPENIN($database%+".Database") 6577FOR REC%=0 TO RA%-1 6578 file%=ptr%?REC% 6579 IF file%<>255 THEN 6580 top=8*file%+LH% 6581 PROCreadsmarray(dbasehandle%,REC%) 6582 KEY$=FNkey2(0,1) 6583 kl%=KL%(0):val$=FNtype(0) 6584 IF KEY$<>"" THEN PROCinsert(FALSE,KEY$,0) 6585 ENDIF 6586 SYS "Hourglass_Percentage",(REC%*100) DIV RA% 6587NEXT REC% 6588PROCclose_file(dbasehandle%) 6589newtree%=FALSE:design%=FALSE:adjust%=FALSE 6590PROCscrap_sliding_block(tempanchor%) 6591SYS "Hourglass_Off" 6592present%=7 6593IF FNselected(passW%,16) THEN 6594 BPUT#loghandle%,"Primary key altered. Previous structure was:" 6595 BPUT#loghandle%,old$ 6596ENDIF 6597SYS "Wimp_CreateMenu",,-1 6598block%!8=0:block%!12=wi%:block%!16=ic% 6599SYS "Interface_SlabButton",,block% 6600PROCget_it_in($database%) 6601ENDPROC 6602: 6603DEF PROCreformat(f$) 6604LOCAL I%,F,REC%,dfields%,DLength%,chdd,z%,blobs%,ex% 6605LOCAL DTag$(),F%(),F1%(),L%(),l$(),c$() 6606F$(0)="" 6607SYS "OS_File",5,f$+".Form" TO z% 6608CASE TRUE OF 6609 WHEN z%<>1:PROCsofterror("",19) 6610 WHEN f$=$database%:PROCsofterror("",36) 6611 OTHERWISE 6612 blobs%=FNfind_blobs($database%) 6613 F=OPENIN(f$+".Form") 6614 INPUT#F,dfields% 6615 DIM DTag$(dfields%),F%(dfields%),F1%(fields%),L%(dfields%),l$(dfields%),c$(dfields%) 6616 FOR I%=1 TO dfields% 6617 INPUT#F,Desc$,DTag$(I%),xd%,yd%,xf%,yf%,L%(I%),char%,extra%,extra% 6618 DLength%+=L%(I%)+1 6619 NEXT I% 6620 CLOSE#F 6621 chdd=OPENOUT(f$+".Database") 6622 PROCcompare 6623 SYS "Hourglass_On" 6624 FOR REC%=0 TO RA% 6625 PTR#chdd=REC%*DLength% 6626 PROCread(fields%,FALSE,REC%,$database%) 6627 FOR I%=1 TO dfields% 6628 S$=field$(F%(I%)) 6629 IF LEN(S$)>L%(I%) THEN S$=LEFT$(S$,L%(I%)) 6630 BPUT#chdd,S$ 6631 NEXT I% 6632 ex%=-1 6633 WHILE ex%<blobs% 6634 ex%+=1:F%=Ext%(ex%) 6635 PROCcopy_blob($database%,f$,REC%,REC%,F%,F1%(F%),chartype%(F%)) 6636 ENDWHILE 6637 SYS "Hourglass_Percentage",(REC%*100) DIV RA% 6638 NEXT REC% 6639 SYS "Hourglass_Off" 6640 PROCclose_file(chdd) 6641 SYS "OS_File",18,f$+".Database",&7f2 6642 SYS "OS_CLI","Copy "+$database%+".PrimaryKey "+f$+".PrimaryKey ~C~V" 6643 SYS "OS_CLI","Copy "+$database%+".Colours "+f$+".Colours ~C~V" 6644 SYS "OS_CLI","Copy "+$database%+".ValTables "+f$+".ValTables ~CR~V" 6645 SYS "OS_CLI","Copy "+$database%+".Indices "+f$+".Indices ~CR~V" 6646 SYS "OS_CLI","Copy "+$database%+".PrintRes "+f$+".PrintRes ~CR~V" 6647 IF link$(0)="LOADED" THEN 6648 lk=OPENOUT(f$+".Link") 6649 FOR F%=1 TO dfields% 6650 PRINT#lk,l$(F%) 6651 NEXT F% 6652 PROCclose_file(lk) 6653 ENDIF 6654 IF calc$(0)="LOADED" THEN 6655 cl=OPENOUT(f$+".Calc") 6656 FOR F%=1 TO dfields% 6657 PRINT#cl,c$(F%) 6658 NEXT F% 6659 PROCclose_file(cl) 6660 ENDIF 6661 PROCclose_window(reformW%) 6662ENDCASE 6663reform$="" 6664IF FNselected(passW%,16) THEN BPUT#loghandle%,"Record structure changed" 6665ENDPROC 6666: 6667DEF PROCcompare 6668LOCAL source%,dest% 6669FOR dest%=1 TO dfields% 6670 source%=fields%+1 6671 REPEAT 6672 source%-=1 6673 UNTIL source%=0 OR Tag$(source%)=DTag$(dest%) 6674 F%(dest%)=source%:F1%(source%)=dest% 6675 IF source%>0 THEN 6676 l$(dest%)=link$(source%) 6677 c$(dest%)=calc$(source%) 6678 ENDIF 6679NEXT dest% 6680ENDPROC 6681: 6682DEF PROCmerge_files(f$,fi%) 6683LOCAL Rec%,ptr%,file%,d%,s%,z%,RUM%,RAM%,NL%,ex%,blobs% 6684SYS "OS_File",5,f$+".Database" TO z% 6685CASE TRUE OF 6686 WHEN z%<>1:PROCsofterror("",29) 6687 WHEN f$=$database%:PROCsofterror("",15) 6688 WHEN NOT FNidentical:PROCsofterror("",21) 6689 OTHERWISE 6690 s%=FNselected(reformW%,2):d%=FNselected(reformW%,3) 6691 IF d% THEN fi%=0 6692 M$="Merge "+f$+" with " 6693 IF s% THEN M$+="corresponding subfiles" ELSE M$+="subfile "+STR$(fi%) 6694 M$+=" of current database" 6695 IF d% THEN M$+=", also restoring deleted records" 6696 IF d% OR NOT s% THEN M$+=". WARNING! Indices will need rebuilding!" 6697 IF FNconfirm(M$)=TRUE THEN 6698 SYS "OS_File",5,f$+".Database" TO ,,,,len% 6699 RAM%=(len% DIV Length%)-1 6700 PROCopen_index(f$+".PrimaryKey",MaxKeys%+1) 6701 PROCmark_files(MaxKeys%+1,RAM%,NOT d%,s%,fi%) 6702 keybase%=!keyanchor%(MaxKeys%+1) 6703 PROCcount(MaxKeys%+1,RUM%):PROCcount(0,RU%) 6704 NL%=RU%+RUM% 6705 SYS "Hourglass_On" 6706 IF NL%>RA% THEN PROCchange_length(NL%,FALSE) 6707 blobs%=FNfind_blobs($database%) 6708 ptr%=!tempanchor% 6709 FOR Rec%=0 TO RAM%-1 6710 file%=ptr%?Rec% 6711 IF file%<>255 THEN 6712 top=8*file%+LH% 6713 PROCread(fields%,FALSE,Rec%,f$) 6714 PROCwrite(fields%,key%) 6715 ex%=-1 6716 WHILE ex%<blobs% 6717 ex%+=1:F%=Ext%(ex%) 6718 PROCcopy_blob(f$,$database%,Rec%,REC%,F%,F%,chartype%(F%)) 6719 ENDWHILE 6720 SYS "Hourglass_Percentage",(Rec%*100) DIV RUM% 6721 ENDIF 6722 NEXT Rec% 6723 SYS "Hourglass_Off" 6724 PROCclose_window(reformW%) 6725 PROCscrap_sliding_block(tempanchor%) 6726 PROCscrap_sliding_block(keyanchor%(MaxKeys%+1)) 6727 file%=fi%:top=8*file%+LH% 6728 addr=FNmoveto(key%,top,1) 6729 ENDIF 6730ENDCASE 6731reform$="" 6732IF FNselected(passW%,16) THEN BPUT#loghandle%,"Records merged from "+f$ 6733ENDPROC 6734: 6735DEF FNidentical 6736LOCAL I%,F,dfields%,different% 6737F=OPENIN(f$+".Form") 6738INPUT#F,dfields% 6739IF dfields%<>fields% THEN different%=TRUE 6740WHILE I%<fields% AND NOT different% 6741 I%+=1 6742 INPUT#F,Desc$,Tag$,xd%,yd%,xf%,yf%,len%,char%,extra%,extra% 6743 IF len%<>len%(I%) THEN different%=TRUE 6744ENDWHILE 6745CLOSE#F 6746=NOT different% 6747: 6748DEF PROCmark_files(key%,RA%,d%,s%,f%) 6749LOCAL P%,I%,M,file%,top,ptr% 6750PROCcreate_named_sliding_block(tempanchor%,RA%+1) 6751SYS "Hourglass_On" 6752ptr%=!tempanchor% 6753FOR I%=0 TO RA%-1 6754 ptr%?I%=d% 6755NEXT I% 6756IF d% THEN 6757 FOR file%=0 TO 5 6758 top=8*file%+LH% 6759 P%=FNneighbour(key%,top,1) 6760 WHILE P%<>top 6761 S%=FNrec_no(k$,key%,P%) 6762 IF s% THEN ptr%?S%=file% ELSE ptr%?S%=f% 6763 P%=FNneighbour(key%,P%,1) 6764 ENDWHILE 6765 NEXT file% 6766ENDIF 6767SYS "Hourglass_Off" 6768ENDPROC 6769: 6770DEF PROCprint_tree(key%,file%,PR$) 6771LOCAL L%(),COL%,levels%,depth% 6772PROCread_print_options 6773reportdest$="Window" 6774keybase%=!keyanchor%(key%) 6775P%=!(keybase%+top) 6776SYS "Hourglass_On" 6777PROCtraverse(P%,FALSE) 6778levels%=depth%-2:COL%=0 6779DIM L%(levels%) 6780PROCtree_heading 6781P%=!(keybase%+top) 6782PROCtraverse(P%,TRUE) 6783H$=" No. nodes 1" 6784H1$=" Max nodes 1" 6785FOR L%=1 TO levels% 6786 IF L%<40 THEN 6787 L$=STR$(L%(L%)) 6788 L$=STRING$(6-LEN(L$)," ")+L$ 6789 M$=STR$(2^L%) 6790 IF LEN(M$)>5 THEN M$=BL$ ELSE M$=STRING$(6-LEN(M$)," ")+M$ 6791 H$+=L$:H1$+=M$ 6792 ENDIF 6793NEXT L% 6794PROCrule_off(45) 6795$(!lineanchor%)=H$:PROClist_line(-1,lineanchor%,LEN(H$),32) 6796$(!lineanchor%)=H1$:PROClist_line(-1,lineanchor%,LEN(H1$),32) 6797$(!lineanchor%)=LH$:PROClist_line(-1,lineanchor%,LEN(LH$),32) 6798PROCrule_off(45) 6799SYS "Hourglass_Off" 6800format$="tree":tkey%=key% 6801PROCscreen_list 6802pitch$=FNpitch("2") 6803PROClit(menu%(18),1,FALSE) 6804ENDPROC 6805: 6806DEF PROCtree_heading 6807LOCAL zero%,len% 6808BL$=STRING$(6," ") 6809LH$=" Level No. Root" 6810FOR L%=1 TO levels% 6811 L$=STR$(L%) 6812 IF L%<10 THEN L$="0"+L$ 6813 IF L%<40 THEN 6814 LH$+=" "+L$ 6815 len%=LEN(LH$) 6816 ENDIF 6817NEXT L% 6818U$=" "+STRING$(len%-1,"-") 6819LenLine%=len%+4 6820Count%=0 6821count%=FNcount_recs(key%,zero%) 6822textblocksize%=(count%+11)*LenLine%:textblockinc%=textblocksize% 6823PROCextend_named_sliding_block(textanchor%,textblocksize%) 6824PROCextend_named_sliding_block(lineanchor%,LenLine%+4) 6825TextPtr%=!textanchor% 6826recblocksize%=400 6827PROCextend_named_sliding_block(recanchor%,recblocksize%) 6828PROCrule_off(32) 6829PROCrule_off(45) 6830PROCsend_title("Tree Analysis (subfile:"+STR$(file%)+", key:"+STR$(key%)+", "+Index$(key%)+")") 6831PROCrule_off(32) 6832$(!lineanchor%)=LH$:PROClist_line(-1,lineanchor%,LEN(LH$),32) 6833PROCrule_off(45) 6834ENDPROC 6835: 6836DEF PROCtraverse(P%,Z%) 6837LOCAL string$ 6838COL%=COL%+1 6839IF COL%>depth% THEN depth%=COL% 6840IF P%<0 THEN ENDPROC 6841L%=!(keybase%+P%) 6842R%=!(keybase%+P%+4) 6843S$=$(keybase%+P%+8) 6844IF S$="" THEN S$="<null>" 6845rec%=!(keybase%+P%+8+KL%(key%)+1) 6846IF Z% THEN 6847 L%(COL%-1)=L%(COL%-1)+1 6848 IF PR$="ALL" THEN 6849 IF COL%<=40 THEN 6850 string$=STRING$(COL%*6+10-LEN(S$)," ")+S$ 6851 $(!lineanchor%)=string$:PROClist_line(rec%,lineanchor%,LEN(string$),32) 6852 ELSE 6853 string$=" "+S$+" (level "+STR$(COL%-1)+")" 6854 $(!lineanchor%)=string$:PROClist_line(rec%,lineanchor%,LEN(string$),32) 6855 ENDIF 6856 ENDIF 6857ENDIF 6858PROCtraverse(L%,Z%) 6859COL%=COL%-1 6860L%=!(keybase%+P%) 6861R%=!(keybase%+P%+4) 6862S$=$(keybase%+P%+8) 6863rec%=!(keybase%+P%+8+KL%(key%)+1) 6864PROCtraverse(R%,Z%) 6865COL%=COL%-1 6866ENDPROC 6867: 6868DEF PROCbalance(key%) 6869LOCAL recptr%,top,file%,flagptr%,balptr%,I%,N%,A%,max%,done%,highest%,avail%,seglen% 6870LOCAL recs%(),ptr%() 6871DIM recs%(5),ptr%(5) 6872newtree%=TRUE 6873seglen%=KL%(key%)+5 6874PROCextend_named_sliding_block(recanchor%,seglen%*RA%) 6875PROCcreate_named_sliding_block(balanchor%,seglen%*RA%) 6876PROCcreate_named_sliding_block(flaganchor%,RA%) 6877recptr%=!recanchor%:flagptr%=!flaganchor%:balptr%=!balanchor% 6878FOR I%=0 TO RA%-1 6879 flagptr%?I%=255 6880NEXT I% 6881REM Bytes are changed from 255 to 0 where records are in use 6882SYS "Hourglass_On" 6883FOR file%=0 TO 5 6884 ptr%(file%)=recptr% 6885 top=8*file%+LH% 6886 recs%(file%)=FNcount_recs(key%,recptr%)-1 6887 max%+=recs%(file%)+1 6888NEXT file% 6889PROCmake_empty_index(RA%,key%,FALSE) 6890SYS "Hourglass_LEDs",%11 6891FOR file%=0 TO 5 6892 top=8*file%+LH% 6893 IF recs%(file%)>=0 THEN 6894 recptr%=ptr%(file%) 6895 N%=1 6896 REPEAT 6897 N%=N%+N% 6898 UNTIL N%>recs%(file%)+2 6899 step%=N% 6900 N%=(N% DIV 2)-1 6901 start%=N% 6902 C%=0 6903 REPEAT 6904 start%=start% DIV 2 6905 end%=N%-start%-1 6906 step%=step% DIV 2 6907 FOR I%=start% TO end% STEP step% 6908 A%=recptr%+seglen%*(I%*(recs%(file%)+1) DIV N%) 6909 balptr%!C%=!A%:$(balptr%+C%+4)=$(A%+4):!A%=-!A%-1 6910 C%+=seglen% 6911 NEXT I% 6912 UNTIL step%=2 6913 kl%=KL%(key%):val$=FNtype(key%) 6914 FOR I%=0 TO C%-seglen% STEP seglen% 6915 REC%=balptr%!I%:KEY$=$(balptr%+I%+4) 6916 PROCinsert(FALSE,KEY$,key%) 6917 done%+=1 6918 SYS "Hourglass_Percentage",(done%*100) DIV max% 6919 NEXT I% 6920 FOR I%=0 TO recs%(file%) 6921 REC%=recptr%!(seglen%*I%) 6922 IF REC%>=0 THEN 6923 KEY$=$(recptr%+seglen%*I%+4) 6924 PROCinsert(FALSE,KEY$,key%) 6925 done%+=1 6926 SYS "Hourglass_Percentage",(done%*100) DIV max% 6927 ENDIF 6928 NEXT I% 6929 ENDIF 6930NEXT file% 6931SYS "Hourglass_LEDs",%00 6932keybase%=!keyanchor%(key%) 6933nodesize%=8+KL%(key%)+1+4 6934avail%=!keybase% 6935FOR I%=0 TO highest% 6936 IF flagptr%?I%=255 THEN 6937 !(keybase%+avail%+8+KL%(key%)+1)=I% 6938 avail%+=nodesize% 6939 ENDIF 6940NEXT I% 6941SYS "Hourglass_Off" 6942PROCscrap_sliding_block(balanchor%) 6943PROCscrap_sliding_block(recanchor%) 6944PROCscrap_sliding_block(flaganchor%) 6945PROCsave_keys 6946newtree%=FALSE 6947IF FNselected(passW%,16) THEN BPUT#loghandle%,"Index "+Index$(key%)+" balanced" 6948ENDPROC 6949: 6950DEF PROCduplicates(dkey%,dfile%) 6951LOCAL P$,S$,RP$,RS$,daddr,dtop,RP%,RS%,count%,examined% 6952LOCAL ERROR 6953ON ERROR LOCAL:RESTORE ERROR:PROCabort_dup:ENDPROC 6954count%=FNcount_recs(key%,zero%) 6955PROCread_print_options 6956reportdest$="Window":format$="dup":Count%=0:LenLine%=KL%(0)+23 6957textblocksize%=100*LenLine%:textblockinc%=textblocksize% 6958PROCextend_named_sliding_block(textanchor%,textblocksize%) 6959PROCextend_named_sliding_block(lineanchor%,LenLine%+4) 6960TextPtr%=!textanchor% 6961recblocksize%=400 6962PROCextend_named_sliding_block(recanchor%,recblocksize%) 6963PROCclose_window(datadicW%) 6964PROCrule_off(32) 6965line$=" Duplicated primary keys":$(!lineanchor%)=line$:PROClist_line(-1,lineanchor%,LEN(line$),32) 6966PROCrule_off(45) 6967dtop=8*dfile%+LH% 6968daddr=FNneighbour(dkey%,dtop,1) 6969SYS "Hourglass_On" 6970WHILE daddr<>dtop 6971 SYS "OS_Byte",229,0 6972 S$=$(!keyanchor%(dkey%)+daddr+8):RS%=!(!keyanchor%(dkey%)+daddr+9+KL%(dkey%)) 6973 RS$=STR$(RS%):RS$=" Record No."+STRING$(7-LEN(RS$)," ")+RS$+" " 6974 IF S$=P$ THEN 6975 line$=RP$+P$ 6976 $(!lineanchor%)=line$:PROClist_line(RP%,lineanchor%,LEN(line$),32) 6977 line$=RS$+S$ 6978 $(!lineanchor%)=line$:PROClist_line(RS%,lineanchor%,LEN(line$),32) 6979 ENDIF 6980 P$=S$:RP%=RS%:RP$=RS$ 6981 examined%+=1 6982 SYS "Hourglass_Percentage",examined%*100 DIV count% 6983 daddr=FNneighbour(dkey%,daddr,1) 6984 PROCpoll 6985ENDWHILE 6986PROCrule_off(32) 6987SYS "Hourglass_Off" 6988PROCscreen_list 6989ENDPROC 6990: 6991DEF PROCabort_dup 6992SYS "Hourglass_Off" 6993PROCscreen_list 6994IF ERR=17 THEN 6995 PROCsofterror("",67) 6996 ELSE PROCwimp_error(TRUE,ERR,ERL,REPORT$) 6997ENDIF 6998ENDPROC 6999: 7000DEF FNstripspaces(s$) 7001WHILE RIGHT$(s$)=" " 7002 s$=LEFT$(s$) 7003ENDWHILE 7004=s$ 7005: 7006REM >RAMtree 7007: 7008REM Index handling ------------------------------------------------------ 7009: 7010DEF FNneighbour(key%,addr%,d%) 7011LOCAL R%,S%,p%,keybase% 7012keybase%=!keyanchor%(key%) 7013p%=d%*4 7014R%=!(keybase%+addr%+p%) 7015IF R%<0 THEN =-R% 7016p%=4-p% 7017REPEAT 7018 addr%=R% 7019 S%=!(keybase%+addr%+p%) 7020 IF S%>0 THEN R%=S% 7021UNTIL S%<=0 7022=R% 7023: 7024DEF FNrec_no(RETURN k$,key%,addr%) 7025k$=$(!keyanchor%(key%)+addr%+8) 7026=!(!keyanchor%(key%)+addr%+8+KL%(key%)+1) 7027: 7028DEF PROCscan_file(c$,key%,action%) 7029LOCAL REC%,examined%,subtotal%,X%,Y%,n$ 7030n$="0123456789." 7031subtotal%=FNcount_recs(key%,zero%) 7032WHILE EVAL(c$)=TRUE 7033 SYS "OS_Byte",229,0 7034 REC%=FNrec_no(k$,key%,P%) 7035 PROCreadsmarray(dbasehandle%,REC%) 7036 examined%+=1 7037 IF EVAL(Search$)=TRUE THEN 7038 CASE action% OF 7039 WHEN 0:PROCget_lengths 7040 WHEN 1:PROCprint_record(REC%) 7041 WHEN 2:ptr%?REC%=255:REM ### earmark ### 7042 WHEN 3:PROCwrite_csv_rec(REC%) 7043 WHEN 4:KEY$=FNkey2(newkey%,1):PROCinsert(FALSE,KEY$,newkey%) 7044 REM ### create index ### 7045 WHEN 5: 7046 S$=F$(Fieldnumber%) 7047 IF numeric% THEN 7048 X%=0:Y%=0 7049 REPEAT X%+=1 7050 UNTIL X%>LEN(S$) OR INSTR(n$,MID$(S$,X%,1))>0 7051 IF X%<=LEN(S$) THEN 7052 Y%=X% 7053 REPEAT Y%+=1 7054 UNTIL Y%>LEN(S$) OR INSTR(n$,MID$(S$,Y%,1))=0 7055 ENDIF 7056 S$=LEFT$(S$,X%-1)+STR$(EVAL(MID$(S$,X%,Y%-X%)+New$))+MID$(S$,Y%) 7057 ELSE S$=New$ 7058 ENDIF 7059 IF LEN(S$)>TextLength% THEN 7060 PROCsofterror("",10) 7061 ELSE 7062 F$(Fieldnumber%)=S$ 7063 PROCwritesmarray(dbasehandle%,REC%) 7064 ENDIF 7065 REM ### global change ### 7066 ENDCASE 7067 ENDIF 7068 P%=FNneighbour(key%,P%,1) 7069 SYS "Hourglass_Percentage",(examined%*100) DIV subtotal% 7070ENDWHILE 7071ENDPROC 7072: 7073DEF FNsearch(S$,key%,M%) 7074LOCAL P%,found%,info$,keybase% 7075keybase%=!keyanchor%(key%) 7076Z%=0:P%=top:ident%=FALSE 7077REPEAT 7078 L%=P% 7079 P%=!(keybase%+L%+Z%) 7080 IF P%<=0 THEN P%=-L%:found%=TRUE 7081 info$=$(keybase%+P%+8) 7082 rec%=FNrec_no(k$,key%,P%) 7083 IF EVAL(val$+"(S$)="+val$+"LEFT$(info$,kl%)") THEN 7084 CASE M% OF 7085 WHEN 0:ident%=(key%=0) 7086 WHEN 1:found%=TRUE 7087 WHEN 2:IF rec%=REC% THEN found%=TRUE 7088 ENDCASE 7089 ENDIF 7090 IF NOT found% THEN Z%=-EVAL(val$+"(S$)>="+val$+"(info$)")*4 7091UNTIL found% 7092=P% 7093: 7094REM ### M%=0 - Find leaf position at which to insert ### 7095REM ### M%=1 - Find first match in tree (if there is one) ### 7096REM ### M%=2 - Find exact matching record, checking for record no. ### 7097: 7098DEF PROCinsert(R%,RETURN S$,key%) 7099LOCAL P%,A%,kl%,keybase%,abort% 7100keybase%=!keyanchor%(key%) 7101kl%=KL%(key%) 7102A%=!keybase%:F%=A% 7103P%=-FNsearch(S$,key%,0) 7104IF ident% THEN 7105 CASE TRUE OF 7106 WHEN NOT FNselected(passW%,15): 7107 PROCsofterror(" ("+S$+")",37):abort%=TRUE 7108 OTHERWISE: 7109 IF dup% THEN IF NOT FNconfirm(FNmsg(45)+" ("+S$+")") THEN abort%=TRUE 7110 ENDCASE 7111ENDIF 7112IF abort% THEN S$="*Failed*":ENDPROC 7113IF !(keybase%+F%)>0 THEN 7114 A%=!(keybase%+F%) 7115 ELSE 7116 incr%=VAL($Increment%) 7117 IF incr%>0 THEN 7118 PROCchange_length(RA%+incr%,FALSE) 7119 keybase%=!keyanchor%(key%) 7120 A%=!keybase%:F%=A% 7121 ELSE S$="*Failed*" 7122 ENDIF 7123ENDIF 7124IF S$="*Failed*" THEN PROCsofterror("",2):ENDPROC 7125IF R% THEN REC%=!(keybase%+F%+8+kl%+1) 7126!(keybase%+F%+Z%)=!(keybase%+P%+Z%) 7127!(keybase%+F%+(4-Z%))=-P% 7128$(keybase%+F%+8)=S$ 7129!(keybase%+F%+8+KL%(key%)+1)=REC% 7130!(keybase%+P%+Z%)=F% 7131!keybase%=A% 7132IF key%=0 THEN RU%+=1 7133ENDPROC 7134: 7135DEF PROCdelete(RETURN S$,key%) 7136LOCAL P%,A%,kl%,keybase% 7137keybase%=!keyanchor%(key%) 7138A%=!keybase% 7139kl%=KL%(key%) 7140P%=FNsearch(S$,key%,2) 7141IF P%<0 THEN PROCsofterror(" ("+S$+": "+Index$(key%)+" index)",1):S$="*Failed*":ENDPROC 7142PR%=FNneighbour(key%,P%,0) 7143SU%=FNneighbour(key%,P%,1) 7144!(keybase%+L%+Z%)=!(keybase%+P%+Z%) 7145Q%=P% 7146ZL%=4-Z% 7147P1%=!(keybase%+P%+ZL%) 7148IF P1%>0 THEN 7149 info$=$(keybase%+P1%+8) 7150 P%=-FNsearch(info$,key%,0) 7151 !(keybase%+P%+Z%)=P1% 7152ENDIF 7153IF !(keybase%+PR%+4)<=0 THEN !(keybase%+PR%+4)=-SU% 7154IF !(keybase%+SU%+0)<=0 THEN !(keybase%+SU%+0)=-PR% 7155!(keybase%+Q%)=A% 7156!keybase%=Q% 7157IF key%=0 THEN RU%-=1 7158ENDPROC 7159: 7160DEF PROCsave_keys 7161LOCAL keyN% 7162IF present%<>7 THEN ENDPROC 7163SYS "Hourglass_On" 7164keybase%=!keyanchor%(0):keybase%!4=VAL($Increment%) 7165WHILE !keyanchor%(keyN%)>0 7166 keybase%=!keyanchor%(keyN%) 7167 keybase%?72=0:keybase%?73=0 7168 SYS "SlidingHeap_DescribeBlock",slidingheapbase%,keyanchor%(keyN%) TO ,,filelength% 7169 IF keyN% THEN index$="Indices." ELSE index$="" 7170 SYS "OS_File",10,$database%+"."+index$+Index$(keyN%),&7F0,,keybase%,keybase%+filelength% 7171 keyN%+=1 7172 SYS "Hourglass_Percentage",keyN%*100 DIV (Keys%+1) 7173ENDWHILE 7174SYS "Hourglass_Off" 7175ENDPROC 7176: 7177DEF PROCreadsmarray(filehandle%,REC%) 7178LOCAL loop% 7179PTR#filehandle%=REC%*Length% 7180FOR loop%=1 TO fields% 7181 F$(loop%)=GET$#filehandle% 7182NEXT loop% 7183ENDPROC 7184: 7185DEF PROCwritesmarray(F,RETURN R%) 7186LOCAL loop% 7187PTR#F=R%*Length% 7188FOR loop%=1 TO fields% 7189 BPUT#F,F$(loop%) 7190NEXT loop% 7191R%+=1 7192ENDPROC 7193: 7194DEF PROCcheck_save(T%) 7195LOCAL time% 7196SYS "OS_ReadMonotonicTime" TO time% 7197IF (time% MOD T%)<10 THEN 7198IF buttonfield%(19)>0 THEN wi%=mainW%:ic%=buttonfield%(19) ELSE wi%=keypadW%:ic%=19 7199 CASE autosave% OF 7200 WHEN 1: 7201 delay%=TIME 7202 FOR loop%=0 TO 2 7203 delay%+=50 7204 block%!8=1:block%!12=wi%:block%!16=ic% 7205 SYS "Interface_SlabButton",,block% 7206 REPEAT UNTIL TIME>delay% 7207 SOUND 1,-15,180,5 7208 block%!8=0 7209 SYS "Interface_SlabButton",,block% 7210 delay%+=50 7211 REPEAT UNTIL TIME>delay% 7212 NEXT loop% 7213 WHEN 2:PROCmouse(0,0,4,wi%,ic%) 7214 ENDCASE 7215ENDIF 7216ENDPROC 7217: 7218DEF PROCset_auto(mode%) 7219PROCtick_one(menu%(12),0,2,2-mode%) 7220autosave%=mode% 7221saveint%=VAL($Interval%):$Interval%=STR$(saveint%)+" min" 7222ENDPROC 7223: 7224DEF PROCset_autobalance(status%) 7225PROCtick(menu%(21),0,status%) 7226autobalance%=status% 7227IF NOT autobalance% THEN $Every%="25 recs" 7228balint%=VAL($Every%):$Every%=STR$(balint%)+" recs":added%=0 7229ENDPROC 7230: 7231REM Calculations --------------------------------------------------------- 7232: 7233DEF PROCcalc_link(T$,type%) 7234REM ### Sets up calculation formula window & menu entry ### 7235$CalcFunc%=T$ 7236$CalcTitle%=T$:calclink%=Fieldnumber% 7237PROCsplit_link(calclink%,real$,visible$) 7238CASE type% OF 7239 WHEN 6,7:$CalcForm%=Tag$(calclink%)+"="+visible$ 7240 WHEN 47: 7241 $CalcForm%=visible$ 7242 PROCicon_bit(22,calcW%,2,off%) 7243 PROCdeselect(calcW%,2) 7244ENDCASE 7245ENDPROC 7246: 7247DEF PROCcalc_formula(S$) 7248REM ### Parses calculation formula (S$) & builds calc$(I%) ### 7249LOCAL I%,P%,t$,s$,C$,time% 7250C$=STR$~(calclink%):IF calclink%<16 THEN C$="0"+C$ 7251IF $CalcFunc%="Set base value" THEN 7252 IF S$="" THEN S$="0" 7253 calc$(calclink%)=S$+"|"+S$ 7254 calc$(0)="LOADED" 7255 ELSE 7256 P%=INSTR(S$,"="):S$=MID$(S$,P%+1):visible$=S$ 7257 FOR I%=1 TO fields% 7258 t$=Tag$(I%) 7259 IF t$<>"" THEN 7260 P%=0 7261 REPEAT 7262 P%=INSTR(S$,t$,P%+1) 7263 IF P%>0 THEN 7264 CASE chartype%(I%) OF 7265 WHEN 3,6,46,47,54,56,57:s$="VAL($Rf%("+STR$(I%)+"))" 7266 WHEN 8:s$="FNseconds($Rf%("+STR$(I%)+"),1)":time%=TRUE 7267 OTHERWISE: 7268 CASE chartype%(calclink%) OF 7269 WHEN 6:s$="FNn("+STR$(I%)+")" 7270 WHEN 7:s$="$Rf%("+STR$(I%)+")" 7271 ENDCASE 7272 ENDCASE 7273 S$=LEFT$(S$,P%-1)+s$+MID$(S$,P%+LEN(t$)) 7274 update$(I%)+=C$ 7275 ENDIF 7276 UNTIL P%=0 7277 ENDIF 7278 NEXT I% 7279 IF INSTR(visible$,"TIME$")>0 THEN update$(0)+=C$ 7280 IF time%=TRUE AND chartype%(calclink%)=7 THEN S$="FNtime("+S$+")" 7281 IF LEN(S$)+LEN(visible$)+2<256 THEN 7282 calc$(calclink%)="#"+S$+"#"+visible$ 7283 calc$(0)="LOADED" 7284 IF FNselected(calcW%,2) THEN PROCrecalculate(calclink%) 7285 ELSE PROCsofterror("",44) 7286 ENDIF 7287ENDIF 7288calclink%=0 7289IF (b% AND %111)=4 THEN SYS "Wimp_CreateMenu",,-1 7290ENDPROC 7291: 7292DEF PROCrecalculate(F%) 7293LOCAL F,I%,R%,k$,P%,real$,visible$,subtotal%,zero%,examined% 7294PROCsplit_link(F%,real$,visible$) 7295IF FNconfirm("Recalculate "+Tag$(F%)+"="+visible$+" for existing records?")=FALSE THEN ENDPROC 7296subtotal%=FNcount_recs(key%,zero%) 7297SYS "Hourglass_On" 7298dbasehandle%=OPENUP($database%+".Database") 7299P%=FNneighbour(key%,top,1) 7300WHILE P%<>top 7301 R%=FNrec_no(k$,key%,P%) 7302 PROCreadsmarray(dbasehandle%,R%) 7303 FOR I%=1 TO fields% 7304 $Rf%(I%)=F$(I%) 7305 NEXT I% 7306 CASE chartype%(F%) OF 7307 WHEN 6: 7308 F=EVAL(real$):F$=STR$(F) 7309 IF fix%(F%)>0 THEN F$=FNfix_point(F$,F%) 7310 WHEN 7: 7311 LOCAL ERROR 7312 ON ERROR LOCAL:RESTORE ERROR:PROCsofterror(real$,73):ENDPROC 7313 F$=EVAL(real$) 7314 RESTORE ERROR 7315 ENDCASE 7316 IF LEN(F$)<=len%(F%) THEN F$(F%)=F$ 7317 PROCwritesmarray(dbasehandle%,R%) 7318 P%=FNneighbour(key%,P%,1) 7319 examined%+=1 7320 SYS "Hourglass_Percentage",examined%*100 DIV subtotal% 7321ENDWHILE 7322SYS "Hourglass_Off" 7323PROCclose_file(dbasehandle%) 7324FOR I%=1 TO fields% 7325 $Rf%(I%)=field$(I%) 7326NEXT I% 7327PROCdisplay(key%,addr) 7328ENDPROC 7329: 7330DEF PROCsums(RETURN F$,R%,type%) 7331LOCAL V 7332IF F$<>"" THEN 7333 CASE type% OF 7334 WHEN 8:V=FNseconds(F$,1) 7335 OTHERWISE:V=VAL(F$) 7336 ENDCASE 7337 Sum(R%,0)+=1 7338 Sum(R%,1)+=V 7339 Sum(R%,3)+=V*V 7340ENDIF 7341ENDPROC 7342: 7343DEF PROCctotals(flag%) 7344LOCAL F%,I%,J%,N%,R%,S%,base%,pos%,F$ 7345LOCAL S$(),f%() 7346DIM S$(3),f%(3) 7347base%=!lineanchor% 7348S$()="Items","Sum","Mean","St.Dev." 7349FOR I%=1 TO LEN(Form$)-1 STEP 2 7350 F%=FNfnum(MID$(Form$,I%,2)) 7351 R%=calcrow%?F% 7352 CASE chartype%(F%) OF 7353 WHEN 3,6,8,46,47,54,56,57: 7354 IF Sum(R%,0)>0 THEN 7355 Sum(R%,2)=Sum(R%,1)/Sum(R%,0) 7356 Sum(R%,3)=SQR(Sum(R%,3)/Sum(R%,0)-Sum(R%,2)^2) 7357 ENDIF 7358 ENDCASE 7359NEXT I% 7360FOR J%=0 TO 3 7361 pos%=base% 7362 IF flag%>0 THEN 7363 N%=0:start%=1:F$=STRING$(Lmargin%-LEN(S$(J%))-1," ")+S$(J%)+" " 7364 ELSE N%=1:start%=3 7365 L%=Tab%(1)-Lmargin%-LEN(spacer$) 7366 IF L%>=7 THEN F$=margin$+FNtab(S$(J%),N%) ELSE F$=margin$+FNtab(LEFT$(S$(J%),L%),N%) 7367 ENDIF 7368 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,F$) 7369 IF LEN(Form$)>2 OR start%=1 THEN 7370 FOR I%=start% TO LEN(Form$)-1 STEP 2 7371 F%=FNfnum(MID$(Form$,I%,2)):F$="" 7372 N%+=1 7373 CASE chartype%(F%) OF 7374 WHEN 3,6,8,46,47,54,56,57: 7375 R%=calcrow%?F% 7376 IF chartype%(F%)=8 THEN result$=FNtime(Sum(R%,J%)) ELSE result$=STR$(Sum(R%,J%)) 7377 IF FNselected(pselectW%,R%*5-3+J%) THEN:F$=FNjustify(result$,N%,N%-1):f%(J%)=1 7378 ENDCASE 7379 PROCheap_store(lineanchor%,LenLine%,0,pos%,0,FNtab(F$,N%)) 7380 NEXT I% 7381 IF f%(J%)=1 THEN PROClist_line(-1,lineanchor%,pos%-base%,32) 7382 ENDIF 7383NEXT J% 7384IF SUM(f%())>0 THEN PROCrule_off(45) 7385ENDPROC 7386: 7387DEF FNmargin_warn 7388LOCAL f%,F%,R%,J% 7389F%=FNfnum(LEFT$(Form$,2)) 7390CASE chartype%(F%) OF 7391 WHEN 3,6,46,47,54,56,57: 7392 R%=calcrow%?F% 7393 FOR J%=0 TO 3 7394 IF FNselected(pselectW%,R%*5-J%) THEN f%=F% 7395 NEXT J% 7396ENDCASE 7397IF f%>0 AND Lmargin%<9 THEN PROCsofterror(" ("+Tag$(f%)+").",92):=-1 7398=f% 7399: 7400DEF FNtab(F$,N%) 7401LOCAL L% 7402L%=LEN(F$)+LEN(spacer$) 7403IF Tab%(N%)-Tab%(N%-1)-L%<=0 THEN=F$+spacer$ 7404=F$+STRING$(Tab%(N%)-Tab%(N%-1)-L%," ")+spacer$ 7405: 7406DEF FNjustify(f$,x%,x1%) 7407LOCAL L% 7408L%=Tab%(x%)-Tab%(x1%)-LEN(spacer$) 7409IF LEN(f$)>L% THEN=LEFT$(f$,L%) ELSE=STRING$(L%-LEN(f$)," ")+f$ 7410: 7411DEF PROCexecute_file(f$) 7412LOCAL F,P%,name$,command$,finished%,firstquery%,state% 7413IF NOT FNconfirm(FNmsg(68)) THEN ENDPROC 7414LOCAL ERROR 7415IF FNselected(printW%,39) THEN reportdest$="File" ELSE reportdest$="Window" 7416F=OPENIN(f$) 7417REM Script file signature 7418junk$=GET$#F 7419ON ERROR LOCAL:RESTORE ERROR:PROCabort_script:ENDPROC 7420WHILE NOT(EOF#F OR finished%) 7421 SYS "OS_Byte",229,0 7422 line$=GET$#F 7423 space%=INSTR(line$," ") 7424 IF space%=0 THEN command$=line$:params$="" ELSE command$=LEFT$(line$,space%-1):params$=MID$(line$,space%+1):state%=(params$="ON") 7425 CASE command$ OF 7426 WHEN "!COMMENT": 7427 WHEN "!SCRIPT": 7428 ImpCom$="" 7429 IF params$="END" THEN 7430 finished%=TRUE 7431 ELSE PROCexecute_file($database%+".PrintRes."+params$) 7432 ENDIF 7433 WHEN "!DELETE": 7434 IF present%=7 THEN 7435 RecF%=FALSE 7436 IF params$="" THEN key$=GET$#F ELSE key$=params$ 7437 PROCselect(keypadW%,25):PROCdeselect(keypadW%,24) 7438 addr=FNfind(key$,0,0,TRUE) 7439 IF RecF%=TRUE THEN 7440 addr=FNshift(0,0,0) 7441 addr=FNmoveto(key%,top,1) 7442 ENDIF 7443 ENDIF 7444 WHEN "!INSERT": 7445 IF present%=7 THEN 7446 subfile%=VAL(params$) 7447 PROCread(fields%,FALSE,RA%,$database%) 7448 FOR loop%=1 TO fields% 7449 $Rf%(loop%)=LEFT$(GET$#F,len%(loop%)) 7450 NEXT 7451 PROCwrite(fields%,key%) 7452 ENDIF 7453 WHEN "!QUERY": 7454 IF params$<>"" THEN 7455 P%=INSTR(params$,",") 7456 formula$=MID$(params$,P%+1) 7457 name$=LEFT$(params$,P%-1) 7458 name$=LEFT$(name$,10) 7459 Search$=FNparse(formula$,TRUE) 7460 $FNtext(matchW%,0)=formula$ 7461 PROCredraw_icon(matchW%,0) 7462 SYS "Hourglass_On" 7463 scripton%=TRUE 7464 PROCdo_it(Search$,FALSE) 7465 IF FNselected(printW%,38) THEN 7466 filename$=$database%+".PrintJobs."+name$:Type%=&FFF 7467 Start%=!textanchor%:End%=Start%+Count%*LenLine% 7468 CASE TRUE OF 7469 WHEN ImpCom$="":$Start%=pitch$ 7470 WHEN ImpCom$<>"" AND firstquery%=TRUE:firstquery%=FALSE 7471 OTHERWISE:$Start%=ImpCom$ 7472 ENDCASE 7473 PROCsave(filename$,Type%,Start%,End%) 7474 ENDIF 7475 ENDIF 7476 WHEN "!SELECTION": 7477 IF params$<>"" THEN 7478 filename$=$database%+".PrintRes."+params$ 7479 SYS "OS_File",5,filename$ TO ,,ftype% 7480 ftype%=(ftype%>>8) AND &FFF 7481 IF ftype%=&7F3 THEN PROCdrag_selection(filename$) 7482 ELSE PROCclear_selection 7483 ENDIF 7484 WHEN "!PRINTOPTS": 7485 IF params$<>"" THEN 7486 filename$=$database%+".PrintRes."+params$ 7487 SYS "OS_File",5,filename$ TO ,,ftype% 7488 ftype%=(ftype%>>8) AND &FFF 7489 IF ftype%=&7F5 THEN PROCdrag_options(filename$) 7490 ELSE PROCdrag_options("<Pbase$Dir>.Resources.PrintOpts") 7491 ENDIF 7492 WHEN "!CASE":PROCset_icon(matchW%,16,state%) 7493 WHEN "!INDEX":PROCset_icon(matchW%,23,state%) 7494 WHEN "!EXPAND":PROCset_icon(printW%,11,state%) 7495 WHEN "!DATE":PROCset_icon(printW%,19,state%) 7496 WHEN "!UPPER":PROCset_icon(printW%,12,state%) 7497 WHEN "!FIRST":PROCset_icon(printW%,10,state%) 7498 WHEN "!UNDERLINE":PROCset_icon(printW%,29,state%) 7499 WHEN "!SHRINK":PROCset_icon(printW%,40,state%) 7500 WHEN "!TITLE":$FNtext(printW%,18)=params$ 7501 WHEN "!PAGE":$FNtext(printW%,16)=params$ 7502 WHEN "!LINESPACE":$FNtext(printW%,17)=params$ 7503 WHEN "!LMARGIN":$FNtext(printW%,30)=params$ 7504 WHEN "!TMARGIN":$FNtext(printW%,32)=params$ 7505 WHEN "!SPACER":$FNtext(printW%,43)=params$ 7506 WHEN "!COLWIDTH":$FNtext(printW%,45)=params$ 7507 WHEN "!HEADINGS": 7508 CASE FNu(params$) OF 7509 WHEN "D":PROCselect(printW%,2):PROCdeselect(printW%,1) 7510 OTHERWISE:PROCselect(printW%,1):PROCdeselect(printW%,2) 7511 ENDCASE 7512 WHEN "!PITCH": 7513 PROCdeselect(printW%,FNselected_esg(printW%,2)) 7514 CASE VAL(params$) OF 7515 WHEN 5:PROCselect(printW%,4) 7516 WHEN 10:PROCselect(printW%,7) 7517 WHEN 12:PROCselect(printW%,8) 7518 OTHERWISE:PROCselect(printW%,6) 7519 ENDCASE 7520 WHEN "!FORMAT": 7521 PROCdeselect(printW%,FNselected_esg(printW%,3)) 7522 PROCicon_bit(22,printW%,15,FALSE) 7523 P%=INSTR(params$," "):IF P%>0 THEN cols$=MID$(params$,P%+1):params$=LEFT$(params$,P%-1) 7524 CASE params$ OF 7525 WHEN "VERTICAL":PROCselect(printW%,24) 7526 WHEN "TABLE":PROCselect(printW%,25) 7527 $FNtext(printW%,15)=cols$ 7528 PROCicon_bit(22,printW%,15,TRUE) 7529 WHEN "LABEL":PROCselect(printW%,26) 7530 OTHERWISE:PROCselect(printW%,23) 7531 ENDCASE 7532 WHEN "!DESTINATION": 7533 PROCdeselect(printW%,FNselected_esg(printW%,4)) 7534 CASE params$ OF 7535 WHEN "FILE":PROCselect(printW%,39):reportdest$="File" 7536 WHEN "PRINTER":PROCselect(printW%,41):reportdest$="Printer" 7537 OTHERWISE:PROCselect(printW%,38):reportdest$="Window" 7538 ENDCASE 7539 WHEN "!LABEL": 7540 params$+="," 7541 FOR I%=1 TO 7 7542 P%=INSTR(params$,",") 7543 par$=LEFT$(params$,P%-1):params$=MID$(params$,P%+1) 7544 CASE I% OF 7545 WHEN 1: 7546 PROCdeselect(labelW%,FNselected_esg(labelW%,1)) 7547 CASE par$ OF 7548 WHEN "1":PROCselect(labelW%,0) 7549 WHEN "2":PROCselect(labelW%,1) 7550 OTHERWISE:PROCselect(labelW%,2) 7551 ENDCASE 7552 WHEN 2:$FNtext(labelW%,4)=par$ 7553 WHEN 3:$FNtext(labelW%,6)=par$ 7554 WHEN 4:$FNtext(labelW%,10)=par$ 7555 WHEN 5:$FNtext(labelW%,12)=par$ 7556 PROCset_icon(labelW%,11,(par$<>"")) 7557 PROCicon_bit(22,labelW%,12,FNselected(labelW%,11)) 7558 WHEN 6:PROCset_icon(labelW%,13,(FNu(par$)="ON")) 7559 WHEN 7:PROCset_icon(labelW%,16,(FNu(par$)="ON")) 7560 ENDCASE 7561 NEXT I% 7562 WHEN "!IMPRESSION": 7563 P%=INSTR(params$," ") 7564 IF P%>0 THEN 7565 ImpCom$=LEFT$(params$,P%-1):modifier$=MID$(params$,P%+1) 7566 CASE FNu(modifier$) OF 7567 WHEN "NOT FIRST":firstquery%=TRUE 7568 ENDCASE 7569 ELSE ImpCom$=params$ 7570 ENDIF 7571 OTHERWISE 7572 PROCsofterror("",46) 7573 finished%=TRUE 7574 ENDCASE 7575ENDWHILE 7576SYS "Hourglass_Smash" 7577PROCclose_file(F) 7578RESTORE ERROR 7579ENDPROC 7580: 7581DEF PROCabort_script 7582PROCclose_file(F) 7583IF ERR=17 THEN 7584 PROCsofterror("",57) 7585 ELSE PROCwimp_error(TRUE,ERR,ERL,REPORT$) 7586ENDIF 7587ENDPROC 7588: 7589REM "Impulse" handling ----------------------------------------------- 7590: 7591DEF PROCImpulse_command(token%,params%,object%) 7592LOCAL SF$ 7593param$=FNgetstr(params%):object$=FNgetstr(object%) 7594IF object$="" THEN object$=FNleaf($database%) 7595CASE token% OF 7596 WHEN 1:REM ### GetPathname. Returns full pathname of object ### 7597 CASE FNleaf($database%) OF 7598 WHEN object$: 7599 SYS "Impulse_SendMessage",&202,$database%,,,,,mytask% 7600 WHEN "No data": 7601 SYS "Impulse_SendMessage",&202,"No database open",,,,,mytask% 7602 OTHERWISE: 7603 SYS "Impulse_SendMessage",&202,"Current database is not "+object$,,,,,mytask% 7604 ENDCASE 7605 WHEN 2:REM ### Selection. Returns maximum data length ### 7606 ClientSep$=RIGHT$(param$,1) 7607 ClientForm$=FNfind_fields(param$,ClientSep$,ClientLength%) 7608 PROCextend_named_sliding_block(transanchor%,ClientLength%+1) 7609 SYS "Impulse_SendMessage",&202,STR$(ClientLength%),,,,,mytask% 7610 WHEN 3:REM ### ParseQuery. Returns title generated by FNparse ### 7611 ClientSearch$=FNparse(param$,TRUE) 7612 SYS "Impulse_SendMessage",&202,Title$,,,,,mytask% 7613 WHEN 4:REM ### GetRecord. Returns data specified in Selection according to criteria specified in ParseQuery ### 7614 datalength%=FNprepare_next_record(param$,!transanchor%) 7615 SYS "Impulse_SendMessage",&202,"Ready to receive?",-1,,,transtag%,mytask%,Length% 7616 WHEN 5:REM ### PutRecord ### 7617 SYS "Impulse_SendMessage",&201,"GetRecord",,,,getrec%,mytask% 7618 WHEN 6:REM ### ExpandCode ### 7619 P%=INSTR(param$," ") 7620 code$=LEFT$(param$,P%-1):table$=MID$(param$,P%+1) 7621 SYS "Impulse_SendMessage",&202,FNexpand(code$,table$,L%,SF$),,,,,mytask% 7622 WHEN 7,8:REM ### GetField, GetExpanded ### 7623 IF params%<>-1 THEN 7624 datalength%=FNprepare_next_field(token%,param$,!transanchor%) 7625 SYS "Impulse_SendMessage",&202,"Ready to receive?",-1,,,transtag%,mytask%,datalength% 7626 REM Max. length for a Powerbase field is 246 7627 ENDIF 7628ENDCASE 7629ENDPROC 7630: 7631DEF PROCImpulse_reply(replytag%,reply%) 7632LOCAL ERROR 7633ON ERROR LOCAL:RESTORE ERROR:PROCabort_merge:ENDPROC 7634reply$=FNgetstr(reply%) 7635CASE replytag% OF 7636 WHEN getrec%: 7637 REM ### Reply to GetRecord command. ### 7638 SYS "Impulse_FetchData",!transanchor%,Length%,,,,,mytask% 7639 WHEN mergetag%: 7640 REM ### Merging application replies when all data in document merged ### 7641 IF FNselected(mergeW%,6) THEN SYS "Impulse_SendMessage",&201,":"+mergewith$+"."+document$+" Print",,,,printtag%,mytask% 7642 WHEN printtag%: 7643 REM ### Merging application has printed the current document ### 7644 SYS "OS_Byte",229,0 7645 mergenum%+=1:$FNtext(mergeW%,14)=STR$(mergenum%) 7646 PROCredraw_icon(mergeW%,14) 7647 IF FNselected(mergeW%,6) AND ClientPtr%<>top THEN 7648 ClientPtr%=FNmerge_next(ClientPtr%,1) 7649 ELSE PROCdeselect(mergeW%,6) 7650 ENDIF 7651 PROCpoll 7652ENDCASE 7653ENDPROC 7654: 7655DEF PROCabort_merge 7656PROCclose_file(dbasehandle%) 7657ClientPtr%=top 7658PROCdeselect(mergeW%,6) 7659PROCperform_close(mergeW%) 7660IF ERR=17 THEN 7661 PROCsofterror("",27) 7662 ELSE PROCwimp_error(TRUE,ERR,ERL,REPORT$) 7663ENDIF 7664ENDPROC 7665: 7666DEF PROCImpulse_send(tag%,maxsize%) 7667SYS "Impulse_TransmitData",!transanchor%,datalength%,,,,,mytask% 7668datalength%=0 7669ENDPROC 7670: 7671DEF PROCImpulse_receive(replytag%,expected%,received%) 7672LOCAL I%,F%,P% 7673transbuff%=!transanchor% 7674transbuff%?received%=13 7675data$=$transbuff% 7676REM ### Acknowledge data received (get reason code 19 otherwise!) ### 7677SYS "Impulse_SendMessage",&202,,,,,replytag%,mytask% 7678IF data$<>"" THEN 7679 P%=INSTR(data$,"#") 7680 REC%=VAL(LEFT$(data$,P%-1)) 7681 data$=MID$(data$,P%+1) 7682 IF REC%=-1 THEN REC%=RA% 7683 PROCread(fields%,REC%<>RA%,REC%,$database%) 7684 FOR I%=1 TO LEN(ClientForm$) STEP 2 7685 F%=FNfnum(MID$(ClientForm$,I%,2)) 7686 IF data$<>"" THEN $Rf%(F%)=FNget_string(data$,ClientSep$) 7687 NEXT I% 7688 PROCwrite(fields%,key%) 7689 IF received%=0 THEN SYS "Impulse_SendMessage",&201,"GetRecord",,,,getrec%,mytask% 7690ENDIF 7691ENDPROC 7692: 7693DEF FNget_string(RETURN S$,sep$) 7694LOCAL P%,F$ 7695P%=INSTR(S$,sep$) 7696IF P%>0 THEN 7697 F$=LEFT$(S$,P%-1) 7698 S$=MID$(S$,P%+1) 7699ENDIF 7700=F$ 7701: 7702DEF FNprepare_next_record(key$,transbuff%) 7703LOCAL ok%,I%,F%,P% 7704IF dbasehandle%=0 THEN 7705 dbasehandle%=OPENIN($database%+".Database") 7706 ClientPtr%=FNneighbour(key%,top,1) 7707ENDIF 7708P%=transbuff% 7709CASE key$ OF 7710 WHEN "***": 7711 PROCclose_file(dbasehandle%) 7712 $P%=key$:P%+=LEN($P%)+1 7713 WHEN "": 7714 WHILE ok%=FALSE AND ClientPtr%<>top 7715 REC%=FNrec_no(k$,key%,ClientPtr%) 7716 PROCreadsmarray(dbasehandle%,REC%) 7717 IF EVAL(ClientSearch$)=TRUE THEN 7718 $P%=STR$(REC%)+"#":P%+=LEN($P%) 7719 FOR I%=1 TO LEN(ClientForm$) STEP 2 7720 F%=FNfnum(MID$(ClientForm$,I%,2)) 7721 $P%=F$(F%)+ClientSep$:P%+=LEN($P%) 7722 NEXT I% 7723 $P%+=ClientSep$:P%+=1 7724 ok%=TRUE 7725 ENDIF 7726 ClientPtr%=FNneighbour(key%,ClientPtr%,1) 7727 ENDWHILE 7728 IF P%=transbuff% THEN PROCclose_file(dbasehandle%) 7729 OTHERWISE: 7730 val$=FNtype(key%):kl%=LEN(key$) 7731 ClientPtr%=FNsearch(key$,key%,1) 7732 IF ClientPtr%>=0 THEN 7733 REC%=FNrec_no(k$,key%,ClientPtr%) 7734 PROCreadsmarray(dbasehandle%,REC%) 7735 $P%=STR$(REC%)+"#":P%+=LEN($P%) 7736 FOR I%=1 TO LEN(ClientForm$) STEP 2 7737 F%=FNfnum(MID$(ClientForm$,I%,2)) 7738 $P%=F$(F%)+ClientSep$:P%+=LEN($P%) 7739 NEXT I% 7740 $P%+=ClientSep$:P%+=1 7741 ENDIF 7742ENDCASE 7743=P%-transbuff% 7744: 7745DEF FNprepare_next_field(method%,S$,transbuff%) 7746LOCAL L%,F%,P%,len%,T$,F$,V%,R%,b$,k$,SF$ 7747CASE token% OF 7748 WHEN 7: 7749 F%=FNfield(S$,FALSE):V%=chartype%(F%) 7750 CASE V% OF 7751 WHEN 0,1,2,3,4,5,6,7,8,46,47,48,49,50,51,52,53,54,55,56,57,58: 7752 L%=LEN(F$(F%)) 7753 PROCextend_named_sliding_block(transanchor%,(L%+4) AND &FFFFFFFC) 7754 transbuff%=!transanchor% 7755 $transbuff%=F$(F%):transbuff%?L%=0 7756 WHEN 36,39: 7757 R%=FNrec_no(k$,key%,ClientPtr%) 7758 L%=FNblob_path(FALSE,$database%,R%,F%,V%,b$) 7759 IF L%>0 THEN 7760 PROCextend_named_sliding_block(transanchor%,(L%+4) AND &FFFFFFFC) 7761 transbuff%=!transanchor% 7762 SYS "OS_File",255,b$,transbuff% 7763 ELSE L%=1 7764 PROCextend_named_sliding_block(transanchor%,256) 7765 transbuff%=!transanchor% 7766 ?transbuff%=0 7767 ENDIF 7768 transbuff%?L%=0 7769 ENDCASE 7770 WHEN 8: 7771 P%=INSTR(S$," "):T$=MID$(S$,P%+1):S$=LEFT$(S$,P%-1) 7772 F%=FNfield(S$,FALSE):F$=FNexpand(F$(F%),T$,L%,SF$) 7773 PROCextend_named_sliding_block(transanchor%,L%+1) 7774 transbuff%=!transanchor% 7775 $transbuff%=F$:L%=LEN($transbuff%):transbuff%?L%=0 7776ENDCASE 7777len%=(L%+4) AND &FFFFFFFC 7778=len% 7779: 7780DEF PROCready_to_merge 7781Imp_wait%=FALSE:merging%=TRUE 7782$FNtext(mergeW%,1)=document$ 7783IF NOT common% THEN $FNtext(mergeW%,3)="" 7784PROCopen_window(mergeW%) 7785PROCset_caret(mergeW%,3) 7786SYS "Impulse_SendMessage",&200,":"+mergewith$+"."+document$+" Edit Off",,,,-1,mytask% 7787ENDPROC 7788: 7789DEF FNmerge_next(P%,D%) 7790D%=(D%+1) DIV 2 7791P%=FNnext_match(P%,D%,ClientSearch$) 7792IF P%<>top THEN 7793 S$=F$(KF%(key%,0))+" "+F$(KF%(key%,1)) 7794 $FNtext(mergeW%,13)=LEFT$(S$,80) 7795 PROCredraw_icon(mergeW%,13) 7796 SYS "Impulse_SendMessage",&201,":"+mergewith$+"."+document$+" Merge",,,,mergetag%,mytask% 7797ENDIF 7798=P% 7799: 7800REM End of "Impulse" handling ------------------------------------------- 7801: 7802REM Import/Export CSV files --------------------------------------------- 7803: 7804DEF PROCstart_import(type$,wi%) 7805LOCAL OK% 7806CASE present% OF 7807 WHEN 0: 7808 IF fields%=0 THEN OK%=TRUE ELSE PROCsofterror("",69) 7809 WHEN 7:IF Modify% THEN OK%=TRUE ELSE PROCsofterror("",14) 7810 OTHERWISE:PROCsofterror("",69) 7811ENDCASE 7812IF OK% THEN 7813 $FNtext(csvW%,13)=filename$ 7814 PROCicon_bit(22,csvW%,0,FALSE) 7815 !block%=csvW%:SYS "Wimp_GetWindowState",,block% 7816 block%!4=800:block%!12=block%!4+390 7817 block%!8=150:block%!16=block%!8+716 7818 $CSVTitle%="Import "+type$+" file" 7819 SYS "Wimp_OpenWindow",,block% 7820 PROCset_caret(csvW%,13) 7821ENDIF 7822ENDPROC 7823: 7824DEF PROCwrite_csv(Filename$) 7825IF writingcsv% THEN ENDPROC 7826IF printorder$<>"" THEN Form$=printorder$ ELSE PROCsofterror("",34):ENDPROC 7827LOCAL P%,rec%,examined%,subtotal% 7828LOCAL ERROR 7829ON ERROR LOCAL:RESTORE ERROR:PROCend_csv:ENDPROC 7830csvhandle%=OPENOUT(Filename$) 7831IF FNselected(csvW%,1) THEN PROCcsv_head 7832dbasehandle%=OPENIN($database%+".Database") 7833Search$=FNparse($FNtext(savesubW%,0),FNselected(savesubW%,5)) 7834SYS "Hourglass_On" 7835P%=FNneighbour(key%,top,1) 7836PROCscan_file("P%<>top",key%,3) 7837SYS "Hourglass_Off" 7838PROCclose_file(csvhandle%) 7839PROCclose_file(dbasehandle%) 7840IF sep$="," THEN type%=&dfe ELSE type%=&fff 7841SYS "OS_File",18,Filename$,type% 7842writingcsv%=FALSE 7843ENDPROC 7844: 7845DEF PROCend_csv 7846SYS "Hourglass_Smash" 7847PROCclose_file(csvhandle%) 7848PROCclose_file(dbasehandle%) 7849PROCclose_file(F) 7850SYS "OS_File",18,Filename$,&dfe 7851writingcsv%=FALSE 7852IF ERR=17 THEN 7853 PROCsofterror("",41) 7854 ELSE PROCwimp_error(TRUE,ERR,ERL,REPORT$) 7855ENDIF 7856ENDPROC 7857: 7858DEF PROCcsv_head 7859LOCAL I%,F%,f$,H$,Head$,N% 7860I%=-1 7861WHILE I%<LEN(Form$)-1 7862 I%+=2:F%=FNfnum(MID$(Form$,I%,2)):N%+=1 7863 IF FNselected(printW%,2) THEN Head$=$FNtext(mainW%,(desc%(F%))) ELSE Head$=Tag$(F%) 7864 IF FNselected(csvW%,4) THEN Head$=STR$(len%(F%))+"�"+Head$+"�"+STR$(chartype%(F%)) 7865 IF chartype%(F%)<>3 AND chartype%(F%)<>6 AND FNselected(csvW%,0) THEN Head$=""""+Head$+"""" 7866 IF N%>1 THEN Head$=sep$+Head$ 7867 BPUT#csvhandle%,Head$; 7868ENDWHILE 7869BPUT#csvhandle%,term$; 7870ENDPROC 7871: 7872DEF PROCwrite_csv_rec(R%) 7873LOCAL I%,F%,f$,F$,L%,N%,filename$,len%,base%,SF$ 7874IF FNselected(csvW%,3) THEN 7875 F$=FNkey2(0,1) 7876 IF FNselected(csvW%,0) THEN F$=""""+F$+"""" 7877 BPUT#csvhandle%,F$+sep$; 7878ENDIF 7879I%=-1:L%=LEN(Form$)-1 7880WHILE I%<L% 7881 I%+=2:F%=FNfnum(MID$(Form$,I%,2)) 7882 CASE chartype%(F%) OF 7883 WHEN 36,39: 7884 len%=FNload_blob($database%,R%,F%,36) 7885 IF len%>0 OR FNselected(csvW%,2) THEN 7886 N%+=1:IF N%>1 THEN BPUT#csvhandle%,sep$; 7887 IF FNselected(csvW%,0) THEN BPUT#csvhandle%,""""; 7888 PROCblob_to_file(csvhandle%,len%) 7889 IF FNselected(csvW%,0) THEN BPUT#csvhandle%,""""; 7890 ENDIF 7891 WHEN 3,6,46,47,54,56,57: 7892 F$=F$(F%):N%+=1 7893 IF F$<>"" OR FNselected(csvW%,2) THEN 7894 IF N%>1 THEN F$=sep$+F$ 7895 BPUT#csvhandle%,F$; 7896 ENDIF 7897 OTHERWISE: 7898 IF FNselected(printW%,11) THEN 7899 F$=FNexpand(F$(F%),link$(F%),Len%,SF$) 7900 ELSE F$=F$(F%) 7901 ENDIF 7902 N%+=1 7903 IF F$<>"" OR FNselected(csvW%,2) THEN 7904 IF FNselected(csvW%,0) THEN F$=""""+F$+"""" 7905 IF N%>1 THEN F$=sep$+F$ 7906 BPUT#csvhandle%,F$; 7907 ENDIF 7908 ENDCASE 7909ENDWHILE 7910BPUT#csvhandle%,term$; 7911ENDPROC 7912: 7913DEF PROCconvert_csv(f$) 7914LOCAL k$,B%,J%,fld%,csvhandle%,toobighandle%,S$,sep%,sep2%,term%,term2%,F$,A%,F%,keybase%,base%,base2%,show%,done% 7915LOCAL ERROR 7916ON ERROR LOCAL:RESTORE ERROR:PROCstop_reading:ENDPROC 7917size%=&100:inc%=size% 7918PROCextend_named_sliding_block(tempanchor%,size%) 7919sep%=ASC(sep$):IF LEN(sep$)=2 THEN sep2%=ASC(RIGHT$(sep$)) ELSE sep2%=255 7920term%=ASC(term$):IF LEN(term$)=2 THEN term2%=ASC(RIGHT$(term$)) ELSE term2%=255 7921csvhandle%=OPENIN(f$) 7922IF present%=0 THEN PROCcsv_to_dbase(f$) 7923Form$=FNcsv_importform 7924toobighandle%=OPENOUT($database%+".PrintJobs.TooBig") 7925SYS "Hourglass_On" 7926REPEAT 7927 CASE TRUE OF 7928 WHEN FNselected(csvW%,3): 7929 PROCread_bytes 7930 addr=FNfind(LEFT$($base%,KL%(key%)),0,1,FALSE) 7931 REC%=FNrec_no(k$,key%,addr) 7932 PROCread(fields%,TRUE,REC%,$database%) 7933 OTHERWISE: 7934 keybase%=!keyanchor%(0):A%=!keybase%:F%=A% 7935 IF !(keybase%+F%)>0 THEN 7936 A%=!(keybase%+F%):REC%=!(keybase%+F%+8+KL%(0)+1) 7937 ELSE 7938 incr%=VAL($Increment%) 7939 IF incr%>0 THEN 7940 PROCchange_length(RA%+incr%,FALSE) 7941 keybase%=!keyanchor%(0):A%=!keybase%:F%=A% 7942 A%=!(keybase%+F%):REC%=!(keybase%+F%+8+KL%(0)+1) 7943 ELSE ERROR moan_err%,FNmsg(66) 7944 ENDIF 7945 ENDIF 7946 PROCread(fields%,FALSE,RA%,$database%) 7947 ENDCASE 7948 endline%=FALSE:J%=-1 7949 WHILE J%<LEN(Form$)-2 AND endline%=FALSE 7950 J%+=2:fld%=FNfnum(MID$(Form$,J%,2)) 7951 PROCtransfer_csv_field(fld%) 7952 ENDWHILE 7953 IF fld%<fields% AND NOT endline% THEN PROCnext_csv_rec 7954 PROCpoll 7955 PROCwrite(fields%,key%) 7956 IF FNselected(csvW%,11) THEN PROCredraw(mainW%) 7957 SYS "Hourglass_Percentage",PTR#csvhandle%*100 DIV EXT#csvhandle% 7958 SYS "OS_Byte",229,0 7959UNTIL EOF#csvhandle% 7960SYS "Hourglass_Off" 7961PROCclose_file(csvhandle%) 7962PROCclose_file(toobighandle%) 7963PROCscrap_sliding_block(tempanchor%) 7964SYS "OS_File",18,$database%+".PrintJobs.TooBig",&fff 7965addr=FNmoveto(key%,top,1) 7966PROCclear_selection 7967PROCclose_window(csvW%) 7968IF FNselected(passW%,16) THEN BPUT#loghandle%,"CSV data imported from "+f$ 7969ENDPROC 7970: 7971DEF PROCtransfer_csv_field(RETURN fld%) 7972CASE chartype%(fld%) OF 7973 WHEN 36,39: 7974 PROCread_bytes 7975 Z%=FNblob_path(TRUE,$database%,REC%,fld%,36,F$) 7976 Start%=base%:End%=base%+ptr% 7977 PROCsave(F$,&fff,Start%,End%) 7978 IF FNselected(csvW%,11) AND chartype%(fld%)=39 THEN PROCshow_text_block(fld%) 7979 WHEN 0,1,2,3,4,5,6,7,8,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57: 7980 PROCread_bytes 7981 IF FNselected(csvW%,16) THEN $base%=FNstripspaces($base%) 7982 CASE TRUE OF 7983 WHEN ptr%<=len%(fld%):$Rf%(fld%)=$base% 7984 WHEN ptr%<247: 7985 BPUT#toobighandle%,"Rec."+STR$(REC%)+",Fld."+STR$(fld%)+","+$base% 7986 $Rf%(fld%)="@" 7987 OTHERWISE: 7988 BPUT#toobighandle%,"Rec."+STR$(REC%+1)+",Fld."+STR$(fld%)+" is more than 246 characters long. Data not saved. External field suggested." 7989 $Rf%(fld%)="@" 7990 ENDCASE 7991 OTHERWISE:fld%+=1 7992 REM ### Can't put CSV data into Button, Sprite or Draw fields! ### 7993ENDCASE 7994ENDPROC 7995: 7996DEF PROCread_bytes 7997LOCAL end$,flag%,B%,nq% 7998base%=!tempanchor%:ptr%=-1 7999B%=BGET#csvhandle% 8000IF B%=34 THEN 8001 flag%=TRUE:nq%=1 8002 end$="(base%?(ptr%-1)=34 AND (nq% MOD 2)=0) AND (B%=sep% OR B%=term% OR EOF#csvhandle%=TRUE)" 8003 ELSE 8004 PTR#csvhandle%=PTR#csvhandle%-1 8005 end$="B%=sep% OR B%=term% OR EOF#csvhandle%=TRUE" 8006ENDIF 8007REPEAT 8008 B%=BGET#csvhandle%:ptr%+=1:base%?ptr%=B% 8009 IF B%=34 THEN nq%+=1 8010 IF ptr%=size% THEN size%+=inc%:PROCextend_named_sliding_block(tempanchor%,size%) 8011UNTIL EVAL(end$) 8012IF flag% THEN ptr%-=1 8013base%?ptr%=13 8014CASE B% OF 8015 WHEN sep%:PROCskip_sep 8016 WHEN term%:PROCskip_term 8017ENDCASE 8018ENDPROC 8019: 8020DEF PROCnext_csv_rec 8021REPEAT 8022 B%=BGET#csvhandle% 8023UNTIL B%=term% 8024PROCskip_term 8025ENDPROC 8026: 8027DEF PROCskip_sep 8028IF sep2%<>255 THEN 8029 B%=BGET#csvhandle% 8030 IF B%<>sep2% THEN PTR#csvhandle%=PTR#csvhandle%-1 8031ENDIF 8032ENDPROC 8033: 8034DEF PROCskip_term 8035IF term2%<>255 THEN 8036 B%=BGET#csvhandle% 8037 IF B%<>term2% THEN PTR#csvhandle%=PTR#csvhandle%-1 ELSE endline%=TRUE 8038 ELSE endline%=TRUE 8039ENDIF 8040ENDPROC 8041: 8042DEF PROCstop_reading 8043SYS "Hourglass_Off" 8044PROCclose_file(csvhandle%):PROCclose_file(toobighandle%) 8045PROCscrap_sliding_block(tempanchor%) 8046IF ERR =17 THEN 8047 PROCsofterror("",74) 8048 ELSE PROCwimp_error(TRUE,ERR,ERL,REPORT$) 8049ENDIF 8050IF present%=7 THEN 8051 addr=FNmoveto(key%,top,1) 8052 PROCclear_selection 8053ENDIF 8054ENDPROC 8055: 8056DEF FNcsv_importform 8057LOCAL F%,f$,F$ 8058endline%=FALSE 8059CASE TRUE OF 8060 WHEN FNselected(csvW%,1): 8061 REM ### Use header record to build form ### 8062 REPEAT 8063 PROCread_bytes 8064 F%=FNfield($base%,FALSE) 8065 IF F%=0 THEN ERROR moan_err%,FNmsg(87) 8066 f$=STR$~(F%) 8067 IF LEN(f$)=1 THEN f$="0"+f$ 8068 F$+=f$ 8069 PROCinvert(mainW%,field%(F%)) 8070 UNTIL endline% 8071 WHEN printorder$<>"": 8072 REM ### Build form from highlighted fields, as in printing ### 8073 F$=printorder$ 8074 OTHERWISE: 8075 REM ### Assume entry into all fields, beginning with first ### 8076 FOR F%=1 TO fields% 8077 f$=STR$~(F%) 8078 IF LEN(f$)=1 THEN f$="0"+f$ 8079 F$+=f$ 8080 NEXT F% 8081ENDCASE 8082=F$ 8083: 8084DEF PROCcsv_to_dbase(f$) 8085LOCAL F%,P%,Q%,FH%,S$,readpos% 8086IF NOT (FNselected(csvW%,4) AND FNselected(csvW%,1)) THEN ERROR moan_err%,FNmsg(88) 8087PROCread_bytes:S$=$base%:PTR#csvhandle%=0 8088IF INSTR(S$,"�")=0 THEN ERROR moan_err%,FNmsg(89) 8089leaf$=FNleaf(f$):csvconv%=TRUE 8090IF $database%="No data" THEN $database%=dbasepath$+".!"+leaf$ 8091PROCsave($database%,0,0,0) 8092fields%=0:endline%=FALSE 8093REPEAT 8094 fields%+=1 8095 PROCread_bytes:S$=$base% 8096 P%=INSTR(S$,"�"):Q%=INSTR(S$,"�",P%+1) 8097 Tag$(fields%)=MID$(S$,P%+1,Q%-P%-1) 8098 len%(fields%)=VAL(LEFT$(S$,P%-1)) 8099 chartype%(fields%)=VAL(MID$(S$,Q%+1)) 8100UNTIL endline% 8101PROCscrap_sliding_block(tempanchor%) 8102FH%=OPENOUT($database%+".Form") 8103PRINT#FH%,fields% 8104FOR F%=1 TO fields% 8105 xd%=16:xf%=96 8106 yd%=-(F%*52):yf%=yd% 8107 PRINT#FH%,Tag$(F%),Tag$(F%),xd%,yd%,xf%,yf%,len%(F%),chartype%(F%),0,0 8108NEXT F% 8109PROCclose_file(FH%) 8110SYS "OS_File",18,$database%+".Form",&7f2 8111fields%=0:Fieldnumber%=0 8112fields%=FNget_form(Fptr%) 8113PROCdefault_key 8114readpos%=PTR#csvhandle% 8115RA%=FNno_of_recs 8116PROCdefaults($database%,RA%,0) 8117PROCsave_keys 8118PROCdeselect(csvW%,1) 8119PROCcreate_named_sliding_block(tempanchor%,size%) 8120csvhandle%=OPENIN(f$) 8121PTR#csvhandle%=readpos% 8122ENDPROC 8123: 8124DEF FNno_of_recs 8125LOCAL N%,B% 8126REPEAT 8127 REPEAT B%=BGET#csvhandle% 8128 UNTIL B%=term% OR EOF#csvhandle% 8129 N%+=1 8130 SYS "Hourglass_Percentage",PTR#csvhandle%*100 DIV EXT#csvhandle% 8131UNTIL EOF#csvhandle% 8132=N% 8133: 8134REM --- SLIDING HEAP 2.00 PROCEDURES 8135: 8136REM requires SlidingHeap 2.00 8137: 8138REM module and PROCs 8139REM LEN Steven Haslam 1992 8140: 8141DEF FN_heap_slotsize 8142LOCAL R0% 8143SYS "Wimp_SlotSize",-1,-1 TO R0% 8144=R0% 8145: 8146DEF FN_heap_numtostr(d%,n%)=RIGHT$(STRING$(d%,"0")+STR$~n%,d%) 8147DEF FN_heap_snumtostr(d%,n%)=RIGHT$(STRING$(d%," ")+STR$n%,d%) 8148: 8149DEF PROCheapsinfo 8150SYS "OS_Heap",1,fixedheapbase% TO ,,bigbloc%,totfree% 8151PRINT "Fixed heap" 8152PRINT "----- ----" 8153PRINT "Heap base : &";FN_heap_numtostr(8,fixedheapbase%) 8154PRINT "Heap size : ";FN_heap_bytes2(fixedheapsize%) 8155PRINT "Largest free : ";FN_heap_bytes2(bigbloc%) 8156PRINT "Total free : ";FN_heap_bytes2(totfree%) 8157PRINT 8158PRINT "Sliding heap" 8159PRINT "------- ----" 8160SYS "SlidingHeap_HeapInfo",slidingheapbase% 8161ENDPROC 8162: 8163DEF FN_heap_pageup(n%) 8164LOCAL R0% 8165SYS "OS_ReadMemMapInfo" TO R0% 8166=(n%+R0%-1) AND NOT (R0%-1) 8167: 8168DEF PROCinitheaps(heapsize%,slidingblocks%) 8169fixedheapsize%=heapsize% 8170heap_trigger%=FN_heap_pageup(HIMEM+fixedheapsize%+20+20*slidingblocks%-&8000) 8171PROCsetslotsize(heap_trigger%) 8172IF FN_heap_slotsize<heap_trigger% THEN ERROR 130,"Unable to initialise heap" 8173fixedheapbase%=HIMEM 8174slidingheapbase%=HIMEM+fixedheapsize% 8175SYS "OS_Heap",0,fixedheapbase%,,fixedheapsize% 8176SYS "SlidingHeap_Create",slidingheapbase%,2,slidingblocks% 8177SYS "SlidingHeap_VerifyHeap",slidingheapbase% 8178ENDPROC 8179: 8180DEF FN_heap_nextfree 8181LOCAL nextfree% 8182SYS "SlidingHeap_NextFree",slidingheapbase% TO nextfree% 8183=nextfree% 8184: 8185DEF PROCdestroyheaps 8186PROCsetslotsize(HIMEM-&8000) 8187ENDPROC 8188: 8189DEF FN_heap_wordup(x%)=(x%+3) AND NOT 3 8190: 8191DEF FNcreate_anchor(name$) 8192LOCAL space% 8193DIM space% 4+LENname$+1 8194!space%=0 8195$(space%+4)=name$ 8196=space% 8197: 8198DEF PROCcreate_named_sliding_block(anchor%,size%) 8199LOCAL trysize% 8200size%=FN_heap_wordup(size%) 8201trysize%=FN_heap_pageup(FN_heap_nextfree+size%-&7FF4) 8202IF trysize%>heap_trigger% THEN 8203 PROCsetslotsize(trysize%) 8204 IF FN_heap_slotsize<trysize% THEN 8205 PROCsetslotsize(heap_trigger%) 8206 ERROR 131,"Not enough room to create block """+$(anchor%+4)+"""" 8207 ELSE 8208 heap_trigger%=trysize% 8209 ENDIF 8210ENDIF 8211SYS "SlidingHeap_NewBlock",slidingheapbase%,anchor%,size%,anchor%+4 8212SYS "SlidingHeap_VerifyHeap",slidingheapbase% 8213ENDPROC 8214: 8215DEF PROCscrap_sliding_block(anchor%) 8216IF !anchor%=0 THEN ENDPROC 8217SYS "SlidingHeap_ScrapBlock",slidingheapbase%,anchor% 8218trysize%=FN_heap_pageup(FN_heap_nextfree-&7FFC) 8219IF trysize%<>heap_trigger% THEN 8220 PROCsetslotsize(trysize%) 8221 heap_trigger%=trysize% 8222ENDIF 8223!anchor%=0 8224SYS "SlidingHeap_VerifyHeap",slidingheapbase% 8225ENDPROC 8226: 8227DEF PROCsetslotsize(newsize%) 8228SYS "Wimp_SlotSize",newsize%,-1 8229ENDPROC 8230: 8231DEF PROCextend_named_sliding_block(anchor%,newsize%) 8232IF !anchor%=0 THEN PROCcreate_named_sliding_block(anchor%,newsize%):ENDPROC 8233IF !anchor%>FN_heap_nextfree THEN ERROR 129,"Block beyond heap limits" 8234newsize%=FN_heap_wordup(newsize%) 8235SYS "SlidingHeap_DescribeBlock",slidingheapbase%,anchor% TO ,,oldsize% 8236larger%=newsize%>oldsize% 8237IF larger% THEN 8238 trysize%=FN_heap_pageup(FN_heap_nextfree+(newsize%-oldsize%)-&7FFC) 8239 IF trysize%>heap_trigger% THEN 8240 PROCsetslotsize(trysize%) 8241 IF FN_heap_slotsize<trysize% THEN 8242 PROCsetslotsize(heap_trigger%) 8243 ERROR 132,"Not enough room to extend block #"+STR$~anchor% 8244 ELSE 8245 heap_trigger%=trysize% 8246 ENDIF 8247 ENDIF 8248ENDIF 8249SYS "SlidingHeap_ExtendBlock",slidingheapbase%,anchor%,newsize% 8250trysize%=FN_heap_pageup(FN_heap_nextfree-&7FFC) 8251IF trysize%<>heap_trigger% THEN 8252 PROCsetslotsize(trysize%) 8253 heap_trigger%=trysize% 8254ENDIF 8255SYS "SlidingHeap_VerifyHeap",slidingheapbase% 8256ENDPROC 8257: 8258DEF FN_heap_bytes(b%) 8259LOCAL end% 8260SYS "OS_ConvertFixedFileSize",b%,block%,block%+&100 TO ,end% 8261?end%=13 8262=$block% 8263: 8264DEF FN_heap_bytes2(b%) 8265LOCAL end% 8266SYS "OS_ConvertFileSize",b%,block%,block%+&100 TO ,end% 8267?end%=13 8268=$block% 8269: 8270DEF FNcreate_fixed_block(size%) 8271LOCAL pointer%,flag% 8272SYS "XOS_Heap",2,fixedheapbase%,,size% TO ,,pointer%;flag% 8273WHILE flag% AND 1 8274PROCextendfixedheap 8275SYS "XOS_Heap",2,fixedheapbase%,,size% TO ,,pointer%;flag% 8276ENDWHILE 8277=pointer% 8278: 8279DEF PROCextendfixedheap 8280LOCAL nshb%,extend%,trysize% 8281SYS "OS_ReadMemMapInfo" TO extend% 8282trysize%=FN_heap_slotsize+extend% 8283PROCsetslotsize(trysize%) 8284IF FN_heap_slotsize<trysize% THEN ERROR 255,"No room to extend fixed heap" 8285nshb%=slidingheapbase%+extend% 8286SYS "SlidingHeap_ShiftHeap",slidingheapbase%,nshb% 8287SYS "OS_Heap",5,fixedheapbase%,,extend% 8288fixedheapsize%+=extend% 8289slidingheapbase%=nshb% 8290SYS "SlidingHeap_VerifyHeap",slidingheapbase% 8291ENDPROC
� ><PBase$Dir>.!RunImage � '� !RunImage for !Powerbase database � � D.L. & S.R. Haslam : #� Heap Manager (module + BASIC) � � S.R. Haslam : � Interface Manager (v.2) � � Simon Huntingdon : "version$="4.995 (09-Feb-1994)" ,intversion$="Interface Manager (v.2.00)" : (ș "OS_Byte",202,0,255 � ,kbdstatus% fatal_err%=255:moan_err%=254 present%=� H� �:� � �:� �,"L0 error: "+�$+" during initialisation at line "+�(�) �setup .� buff%>endbuff% � � 0,"No room for defs." 2� menu_ptr%>men_end% � � 0,"No room for menus" � � �wimp_error(�,�,�,�$) ș "OS_GetEnv" � ComString$ � �ComString$,"-database") � 4 File$=�ComString$,�ComString$,"-database")+10) 5 ș "OS_GSTrans",File$,�255,�13),255 � ,File$,L% File$=�File$,L%) �get_it_in(File$) � � � �wimp_error(�,�,�,�$) � �poll !� quit% "�close_down #� $: %� �poll &'ș "OS_Byte",229,1:ș "OS_Byte",124 ')ș "Wimp_Poll",mask%,block% � reason% ((ș "Interface_Poll",reason%,,mytask% )Ȏ reason% � *@ � 0:� autosave%>0 � Access%=� � �check_save(saveint%*6000) +0 � Imp_wait% � � merging% � �ready_to_merge ,0 � flash%>0 � �flash(mainW%,field%(flash%)) - � 1:�redraw(!block%) .& � 2:ș "Wimp_OpenWindow",,block% /! � 3:�perform_close(!block%) 0 � 4:�hourglass(�) 1 � 5:�hourglass(�) 2@ � 6:�mouse(block%!0,block%!4,block%!8,block%!12,block%!16) 3 � 7:�end_drag(Start%,End%) 4 � 8:�process_key 5 � 9:�menu_select 6* � 12:�set_keyboard(!block%,block%!4) 7 � 17,18: 8e ș "Impulse_Decode",reason%,block%,,,,methodtable%,mytask% � reason%,,,,,token%,params%,object% 9 � reason%>=&200 � : Ȏ reason% � ;M � &200,&201:� token%<>-1 � �Impulse_command(token%,params%,object%) </ � &202:�Impulse_reply(token%,params%) =. � &203:�Impulse_send(token%,object%) >9 � &204:�Impulse_receive(token%,params%,object%) ? � @ � �message A � B � 19:�not_acknowledged C� D� E: F� �hourglass(on%) G2� (indexing% � printing%) � !block%=keypadW% � H4 � on% � ș "Hourglass_On" � ș "Hourglass_Off" I� J� K: L� �flash(wi%,ic%) M� time% N%ș "OS_ReadMonotonicTime" � time% O'� (time% � 50)=0 � �invert(wi%,ic%) P� Q: RK� Shutdown routines --------------------------------------------------- S: T� �close_down U� F% V� � W�� � �:$block%="TASK":ș "Wimp_CloseDown",mytask%,!block%:ș "Interface_CloseDown",mytask%,!block%:� � �:� 12:� �,"L0 error: "+�$+" during closedown at line "+�(�):� Xș "Hourglass_Smash" Y�exit(0) Z$ș "Interface_CloseDown",mytask% ["ș "Impulse_CloseDown",mytask% \$block%="TASK" ]'ș "Wimp_CloseDown",mytask%,!block% ^ș "OS_Byte",202,kbdstatus% _� `� a: b� �exit(exittype%) c� flag% dș "Hourglass_Smash" e � present%=7 � �check_change fȎ exittype% � g= � 0:� warn% � ram% � flag%=�confirm(�msg(63)) � flag%=� h6 � 1:� warn% � flag%=�confirm(�msg(62)) � flag%=� i� j� flag%=� � � k� exittype%=0 � l0 � design% � �save_form($database%+".Form") m � link$(0)="LOADED" � n lk=�($database%+".Link") o � F%=1 � fields% p �#lk,link$(F%) q � F% r � s � calc$(0)="LOADED" � t cl=�($database%+".Calc") u � F%=1 � fields% v �#cl,calc$(F%) w � F% x � y: � Access%=� � present%=7 � �mouse(0,0,4,keypadW%,19) z� {0� menu%(5)>0 � menu_ptr%=menu%(5):menu%(5)=0 |6� ### Menu 5 is the menu of validation tables ### }�close_log ~�close_files �hide_windows ��delete_icons(mainW%,0) ��delete_icons(datadicW%,0) ��delete_icons(pselectW%,1) ��delete_icons(keypadW%,37) ��recover_memory ��init_vars �� I%=0 � MaxTabs% � printrel$(I%)="" �� I% �field$()="" �$Password%="" �present%=� �exit%=� ��lit(menu%(0),1,�) ��lit(menu%(0),2,�) ��lit(menu%(0),3,�) ��lit(menu%(0),4,�) �1�lit(menu%(2),1,�):ptr%=menu%(2)+52:ptr%!4=-1 ��lit(menu%(6),6,�) ��lit(menu%(6),7,�) ��lit(menu%(6),8,�) ��set_auto(�) ��set_autobalance(�) ��tick(menu%(2),3,�) ��tick(menu%(2),4,�) �$dbase%="No data" �$database%="No data" ��redraw_icon(-2,pbaseicon%) �� �: �� �delete_icons(wi%,ic%) �!block%=wi%:block%!4=ic% �� �" ș "Wimp_DeleteIcon",,block% � ic%+=1:block%!4=ic% �$ ș "Wimp_GetIconState",,block% �� ((block%!24) � (1<<23))>0 �� �: �� �close_files � � key% �� key%=0 � Keys% � �date(key%) � � key% ��close_file(lk):link$()="" ��close_file(cl):calc$()="" ��close_file(dbasehandle%) ��close_file(csvhandle%) ��close_file(texthandle%) ��close_file(text%) ��close_file(toobighandle%) ��close_file(F) ��close_file(FH%) ��close_file(V) �� �: � � �close_file(� filehandle%) �� filehandle%>0 � � �#filehandle% � filehandle%=0 �� �� �: �� �recover_memory �� I% �%�scrap_sliding_block(headanchor%) �%�scrap_sliding_block(undoanchor%) �%�scrap_sliding_block(lineanchor%) �%�scrap_sliding_block(textanchor%) �%�scrap_sliding_block(formanchor%) �$�scrap_sliding_block(selanchor%) �%�scrap_sliding_block(tempanchor%) �$�scrap_sliding_block(balanchor%) �%�scrap_sliding_block(flaganchor%) �&�scrap_sliding_block(transanchor%) �%�scrap_sliding_block(sprsanchor%) �$�scrap_sliding_block(recanchor%) �%�scrap_sliding_block(saveanchor%) �%�scrap_sliding_block(logoanchor%) �� I%=0 � MaxTabs% �* �scrap_sliding_block(tabanchor%(I%)) �� I% �� I%=0 � MaxKeys%+1 �* �scrap_sliding_block(keyanchor%(I%)) �� I% �� I%=1 � fields% �8 � chartype%(I%)=40 � �scrap_sliding_block(Rf%(I%)) �� I% �� �: �K� Error handling ------------------------------------------------------ �: �)� �wimp_error(return%,err%,erl%,err$) �� type%,result% �� � �U� � � � � �:�close_down:� �,"L0 error: "+�$+" during error handler at line "+�(�) �ș "Wimp_CommandWindow",-1 �*block%!8=0:block%!12=wi%:block%!16=ic% �%ș "Interface_SlabButton",,block% �block%!0=err% �"� return% � err%<>fatal_err% � � � err%=moan_err% � �< type%=&11:� OK button and no "Error from" in title � � �) type%=3:� OK and Cancel buttons �A err$+=" @ "+�(erl%)+" (OK to continue, Cancel to quit)" � � �� � type%=2:� Cancel buttom �; err$+=" @ "+�(erl%)+" (Powerbase must quit at once)" �� �$(block%+4)=err$+�(0) �=ș "Wimp_ReportError",block%,type%,"Powerbase" � ,result% �9� result=1 means OK selected, 2 means Cancel selected �� result%=2 � � �close_down � � �� �� � �� �: �� �softerror(E$,E%) �$(block%+4)=�msg(E%)+E$ �!block%=255 �<ș "Wimp_ReportError",block%,&11,"Report from Powerbase" �� �: �� �msg(E%) errorblock%=errormsg% ȕ E%>1 $ errorblock%+=�($errorblock%)+1 E%-=1 � =�$errorblock%,4) : K� Program initialisation ---------------------------------------------- : � �setup � F,A%,I%,J%,V%,valid$ 'F=�("<Pbase$Dir>.Resources.Config") MaxFields%=�(�#F) ,� MaxFields%>127 � � fatal_err%,�msg(61) MaxKeys%=�(�#F) MaxTabs%=�(�#F)-1 datesep$=��#F,1) timesep$=��#F,1) 0S$=�#F:P%=�S$," "):kill%=� (�S$,P%-1)="YES") 4S$=�#F:P%=�S$," "):commoncase%=(�S$,P%-1)="YES") 0S$=�#F:P%=�S$," "):common%=(�S$,P%-1)="YES") 2S$=�#F:P%=�S$," "):leftmenu%=(�S$,P%-1)="YES") ?S$=�#F:P%=�S$," "):� �S$,P%-1)="YES" � caps%=128 � caps%=16 winback%=�(�#F) �close_file(F) -�dim_arrays(MaxFields%,MaxKeys%,MaxTabs%) �init_vars E� ------------------ Initialise Wimp ---------------------------- $block%="TASK" mask%=(1<<11) Cș "Wimp_Initialise",200,!block%,"Powerbase" � version%,mytask% +� version%>=316 � RISCOS3=� � RISCOS3=� 6ș "Impulse_Initialise",003,mytask%,"Powerbase",-1 !%ș "Interface_Initialise",mytask% "Mpbaseicon%=�create_icon(-1,0,-16,144,110,&1700312B,"",dbase%,psprite%,10) #D� --------- Set up Heap Manager. Load error messages ----------- $�initheaps(128,128) %>ș "OS_File",5,"<PBase$Dir>.Resources.Messages" � ,,,,len% &'errormsg%=�create_fixed_block(len%) '?ș "OS_File",255,"<PBase$Dir>.Resources.Messages",errormsg% (� I%=0 � len% )) � errormsg%?I%=10 � errormsg%?I%=13 *� I% +ș "OS_Byte",135 �,,mode% ,Ȏ mode% � -& � 12,15,16,17,35,36:f$="Sprites" . :f$="Sprites22" /� 09ș "OS_File",5,"<PBase$Dir>.Resources."+f$ � ,,,,len% 1(sprites%=�create_fixed_block(len%+4) 2!sprites%=len%+4 3;ș "OS_File",255,"<PBase$Dir>.Resources."+f$,sprites%+4 4&undoanchor%=�create_anchor("Undo") 5)headanchor%=�create_anchor("Heading") 6*lineanchor%=�create_anchor("TextLine") 7&textanchor%=�create_anchor("Text") 8&formanchor%=�create_anchor("Form") 9.sprsanchor%=�create_anchor("DbaseSprites") :&tempanchor%=�create_anchor("Temp") ;(balanchor%=�create_anchor("Balance") <'flaganchor%=�create_anchor("Flags") =/transanchor%=�create_anchor("DataTransfer") >)selanchor%=�create_anchor("PrintSel") ?*recanchor%=�create_anchor("RecordNum") @,saveanchor%=�create_anchor("SaveBuffer") A&logoanchor%=�create_anchor("Logo") B� I%=0 � MaxKeys%+1 C3 keyanchor%(I%)=�create_anchor("Key #"+�(I%)) D� I% E� I%=0 � MaxTabs% F6 tabanchor%(I%)=�create_anchor("VTable #"+�(I%)) G� I% HI� --------------- Read validation strings etc ----------------------- I+V=�("<Pbase$Dir>.Resources.ValStrings") Jvstrings%=�(�#V) KO� vname$(vstrings%),valid%(vstrings%),rvalid%(vstrings%),hvalid%(vstrings%) L� I%=0 � vstrings% M vname$(I%)=��#V,4) N valid$=�#V O/ � V% �(valid$)+1:$V%=valid$:valid%(I%)=V% P0 � V% �(valid$)+1:$V%=valid$:rvalid%(I%)=V% QC � V% �(valid$)+16:$V%=valid$+";Pptr_hand,12,8":hvalid%(I%)=V% R� I% S�close_file(V) TE� --------------------------------------------------------------- U� Method structure V� PASS=0 � 2 � 2 WP%=methodtable% X [OPT PASS Y equd 0 Z) �method(0,1,"GetPathname","") [' �method(0,2,"Selection","") \( �method(0,3,"ParseQuery","") ]' �method(0,4,"GetRecord","") ^' �method(0,5,"PutRecord","") _( �method(0,6,"ExpandCode","") `& �method(0,7,"GetField","") a) �method(0,8,"GetExpanded","") b �method(-1,-1,"","") c ] d � PASS e.�getscreensize(ScreenWidth%,ScreenHeight%) f�create_windows g�make_menus h�set_auto(�) i�set_autobalance(�) j1�get_choices("<Pbase$Dir>.Resources.Choices") k� l: m*� �method(Flags,Token,Method$,Syntax$) n [OPT PASS o equd Flags p equd Token q equs Method$+�(0) r equs Syntax$+�(0) s align t] u =PASS v: w� �dim_arrays(F%,K%,T%) x�� desc%(F%),Tag$(F%),field%(F%),F$(F%),Rf%(F%),len%(F%),maxlen%(F%),chartype%(F%),fix%(F%),link$(F%),calc$(F%),Tab%(F%),field$(F%),update$(F%) yd� Date%(5),Index$(K%+1),KL%(K%+1),KF%(K%+1,1),KW%(K%+1,3),key$(K%+1),case%(K%+1),WD%(3),Ext%(10) z� Label$(10,2) {� Sum(30,3) |!� key 256,date% 6,calcrow% F% }� menu%(22),choice$(4) ~4� table$(T%+1),tabfieldlen%(9),fcol%(6),ncol%(6) � rel%(6) �� buttonfield%(22) �MC%=30:� L%(MC%) �J� -------------------- Allocate buffers ------------------------------ �(indirectionmem%=&7000:menumem%=&1400 �� Mi% 20,Mo% 20 �/� block% &1000,savebuff% &100,choices% &100 �:� buff% indirectionmem%:endbuff%=buff%+indirectionmem% �B� menblk% menumem%:men_end%=menblk%+menumem%:menu_ptr%=menblk% �� fieldmenu% 3200 �&� hand% 16:$hand%="Pptr_hand,12,8" �!� paint% 8:$paint%="file_ff9" �*� writep% 16:$writep%="Pptr_write,4,4" �!� tick% 12:$tick%="Snull,yes" �!� dbase% 10:$dbase%="No data" �)� psprite% 15:$psprite%="S!Powerbase" �:� menspr% 15,mentxt% 1:$menspr%="Smenu;Z0":$mentxt%="" �<� winspr% 15,wintxt% 1:$winspr%="Swindow;Z0":$wintxt%="" �� methodtable% 256 �J� ------------- Indirection addresses for Heap Manager --------------- �� keyanchor%(K%+1) �� tabanchor%(T%) �� printrel$(T%) �+� box% 16,box2% 16,matrix% 16,origin% 8 �� �: �� �init_vars �$getrec%=213:ClientSearch$="TRUE" �LImp_wait%=�:Impref%=-1:merging%=�:mergenum%=0:mergewith$="":document$="" �-mergetag%=214:transtag%=215:printtag%=216 �,flash%=�:dup%=�:filter%=�:logosloaded%=� �4accessbutton%=0:stop%=�:scripton%=�:customise%=� �%displayed%=�:scratchpad$="":k$="" �?Search$="TRUE":Filter$="TRUE":REC%=-1:usekey%=-1:useval$="" �_real$="":visible$="":reform$="":val$="":calcfield%=0:savefunc$="":savetofile%=�:startlog%=� �/password$="":myref%=-1:Type%=0:fieldtype%=1 �4printing%=�:indexing%=�:validate%=�:relations%=� �;delwarn%=�:autosave%=�:export%=�:csvconv%=�:saveint%=10 �&autobalance%=0:balint%=25:added%=0 �.present%=0:fields%=0:template%=0:adjust%=� �(Listed%=�:writingcsv%=�:calcerror%=� �tlk=0:cl=0:V=0:F=0:FH%=0:dbasehandle%=0:csvhandle%=0:texthandle%=0:text%=0:toobighandle%=0:loghandle%=0:handle%=0 �$date%=�6,�(0)) �"movetype%=8:movetype$="Move �" �hquit%=�:exit%=�:matching%=�:newrec%=�:val%=�:ram%=�:Access%=�:Modify%=�:warn%=�:design%=�:newtree%=� �/LenLine%=0:Count%=0:Start%=0:End%=0:Fptr%=0 �4Fieldnumber%=0:calclink%=0:Keyfld0%=0:Keyfld1%=0 �BLastTable%=-1:Tablenumber%=-1:TabsLoaded$="Tables":table$()="" �5Rows%=0:TabFields%=0:Rec%=0:Match_tag%=1:fast%=10 �GKeys%=0:keylimit%=1:keylen%=1:LH%=90:file%=0:key%=0:top=8*file%+LH% �+keyfunc$="":fieldfunc$="":Keys%=0:RU%=0 �1printorder$="":Form$="":ImpCom$="":margin$="" �uon$=�(27)+�(%10001000) �8Filename$="":extrakeys$="":extratabs$="":logpath$="" �2months$="JanFebMarAprMayJunJulAugSepOctNovDec" �pitch$=�(31)+"9001" �� �: �K� Window handling ----------------------------------------------------- �: �� �create_windows �=ș "Wimp_OpenTemplate",,"<Pbase$Dir>.Resources.Templates" �'infoW%=�new_window("info",sprites%) �$�text(infoW%,7)=version$ � $�text(infoW%,8)=intversion$ �<keypadW%=�new_window("keypad",sprites%):Title%=block%!72 �zsavesubW%=�new_window("savesub",sprites%):SubName%=�text(savesubW%,3):SubSprite%=�val(savesubW%,1):SubTitle%=block%!72 �UsaveW%=�new_window("save",1):SaveName%=�text(saveW%,0):SaveSprite%=�val(saveW%,1) �AdatadicW%=�new_window("datadic",sprites%):TabTitle%=block%!72 �^accessW%=�new_window("access",sprites%):Password%=�text(accessW%,0):AccessTitle%=block%!72 �qpassW%=�new_window("password",sprites%):Read%=�text(passW%,2):Write%=�text(passW%,3):Manager%=�text(passW%,5) �:mainW%=�new_window("main",sprites%):RecInfo%=block%!72 �?keyW%=�new_window("changekey",sprites%):KeyTitle%=block%!72 �1F1dkey%=�text(keyW%,0):F2dkey%=�text(keyW%,1) �� Wkey%(3) �� word%=0 � 3 �' Wkey%(word%)=�text(keyW%,word%+2) �� word% �KeyNo%=�text(keyW%,6) �BchangeW%=�new_window("change",sprites%):ChangeTitle%=block%!72 �'moveW%=�new_window("move",sprites%) �)tableW%=�new_window("table",sprites%) ъlinkW%=�new_window("link",sprites%):LinkTitle%=block%!72:Tablename%=�text(linkW%,0):fieldnum%=�text(linkW%,2):expand%=�text(linkW%,10) �VmiscW%=�new_window("misc",sprites%):database%=�text(miscW%,1):$database%="No data" �� ic%=2 � 7 �$ Date%(ic%-2)=�text(miscW%,ic%) � � ic% �Oused%=�text(miscW%,17):filesize%=�text(miscW%,18):percent%=�text(miscW%,14) �)printW%=�new_window("print",sprites%) �)matchW%=�new_window("match",sprites%) �'listW%=�new_window("list",sprites%) �XcreateW%=�new_window("create",sprites%):FtitleText%=block%!72:$FtitleText%="Field 0" ۳DescText%=�text(createW%,4):TagText%=�text(createW%,5):LenText%=�text(createW%,6):ValText%=�text(createW%,28):InsText%=�text(createW%,26):Fixpt%=�text(createW%,13):$Fixpt%="2" �;mintext%=�text(createW%,15):maxtext%=�text(createW%,25) �dboxX%=�text(createW%,7):boxY%=�text(createW%,8):boxW%=�text(createW%,9):boxH%=�text(createW%,10) �ArelateW%=�new_window("relation",sprites%):RelTitle%=block%!72 �@reformW%=�new_window("reform",sprites%):RefmTitle%=block%!72 �&colW%=�new_window("cols",sprites%) �VcalcW%=�new_window("calc",sprites%):CalcForm%=�text(calcW%,0):CalcTitle%=block%!72 �)labelW%=�new_window("label",sprites%) �-pselectW%=�new_window("pselect",sprites%) �?mergeW%=�new_window("merge",sprites%):MergeTitle%=block%!72 �PsizeW%=�new_window("size",sprites%):Records%=�text(sizeW%,1):$Records%="100" �.Increment%=�text(sizeW%,3):$Increment%="0" �=csvW%=�new_window("csvfile",sprites%):CSVTitle%=block%!72 �ș "Wimp_CloseTemplate" �� common% � �commonbuffers �� �: �� �commonbuffers �"�common(keypadW%,29,matchW%,0) ��common(moveW%,7,matchW%,0) �!�common(changeW%,3,matchW%,0) �"�common(savesubW%,0,matchW%,0) � �common(mergeW%,3,matchW%,0) �� �: � � �common(wi%,ic%,wic%,icc%) �Formula%=�text(wic%,icc%) �;!block%=wi%:block%!4=ic%:ș "Wimp_GetIconState",,block% � ș "Wimp_DeleteIcon",,block% �#block%!28=Formula%:block%!4=wi% �,ș "Wimp_CreateIcon",,block%+4 � handle% �� �: �� �commoncase(wi%,ic%) � � on% �� � commoncase% � � �on%=�selected(wi%,ic%) �set_icon(matchW%,16,on%) �set_icon(keypadW%,32,on%) �set_icon(moveW%,9,on%) �set_icon(changeW%,5,on%) �set_icon(savesubW%,5,on%) �set_icon(mergeW%,12,on%) � : � �new_window(name$,sp%) � handle% Fș "Wimp_LoadTemplate",,block%,buff%,endbuff%,-1,name$,0 � ,,buff% '� name$="main" � block%?35=winback% block%!64=sp% ,ș "Wimp_CreateWindow",,block% � handle% =handle% : � �show_windows �open_window(mainW%) � (present% � 7)=7 � � �selected(passW%,9) � 9 !block%=keypadW%:ș "Wimp_GetWindowState",,block% 5 block%!12=block%!4+660:block%!8=block%!16-328 , block%!20=0:block%!24=0:block%!28=-1 $ ș "Wimp_OpenWindow",,block% � addr=�moveto(key%,top,1) � $� Listed% � �open_window(listW%) � : � �open_window(whandle%) block%!0=whandle% $ș "Wimp_GetWindowState",,block% !block%!28=-1 " ș "Wimp_OpenWindow",,block% #� $: %"� �set_height(handle%,height%) &4!block%=handle%:ș "Wimp_GetWindowState",,block% 'block%!16=block%!8+height% ( ș "Wimp_OpenWindow",,block% )� *: +� �perform_close(wi%) ,Ȏ wi% � -& � mainW%:�close_window(keypadW%) . � matchW%:matching%=� / � calcW%:calclink%=0 0 � keyW%: 1 design%=�:newtree%=� 2 !block%=0:block%!4=-700 3 block%!8=506:block%!12=0 4& ș "Wimp_SetExtent",keyW%,block% 5 !block%=keyW% 6 � mergeW%: 7l � mergewith$<>"" � ș "Impulse_SendMessage",&200,":"+mergewith$+"."+document$+" Edit On",,,,-1,mytask% 8 merging%=� 9� :�close_window(wi%) ;� <: =� �hide_windows >�perform_close(mainW%) ?�perform_close(keypadW%) @�perform_close(datadicW%) A�perform_close(listW%) B�perform_close(matchW%) C�perform_close(relateW%) D�perform_close(keyW%) E�perform_close(reformW%) F�perform_close(calcW%) G�perform_close(mergeW%) H�perform_close(csvW%) I� J: K� �close_window(whandle%) L!block%=whandle% M!ș "Wimp_CloseWindow",,block% N� O: P� �redraw(handle%) Q� L% RL%=�(margin$) S!block%=handle% T*ș "Wimp_RedrawWindow",,block% � more% U�get_origin(block%,x0%,y0%) Vȕ more% W �draw(x0%,y0%) XB � handle%<>datadicW% � ș "Interface_Render3dWindow",,block% Y, ș "Wimp_GetRectangle",,block% � more% Z� [� \: ]%� �get_origin(block%,� x0%,� y0%) ^x0%=block%!4-block%!20 _y0%=block%!16-block%!24 `� a: b� �draw(x0%,y0%) c � TextPtr%,y1%,y2%,I%,chars% dȎ handle% � e � listW% f y1%=-(block%!40-y0%) g y2%=-(block%!32-y0%) h y1%=y1% � 32+1 i y2%=y2% � 32+1 j. TextPtr%=(!textanchor%)+(y1%-1)*LenLine% k � y2%>Count% � y2%=Count% l � I%=y1% � y2% m �draw_line(I%) n TextPtr%+=LenLine% o � I% p� q� r: s� �draw_line(Line%) t� x0%,y0%-(Line%-1)*32-4 u� TextPtr%?L%=12 � � v$ș "OS_WriteN",TextPtr%,LenLine% w� x: yK� Menu handling ------------------------------------------------------- z: {� �make_menus |� I% }�menu%(10)=�create_menu(menu_ptr%,260,"Field,Index field...,Analyse months,Global changes>"+�(changeW%)+",Link to table...,Combine fields>"+�(calcW%)+",Start editing,Clear contents,Warn of delete,Save contents>"+�(saveW%)+",Undo changes") ~Omenic%=menu%(10)+28+(1*24):AnalyseFunc%=menic%!12:menic%!16=-1:menic%!20=14 Lmenic%=menu%(10)+28+(4*24):CalcFunc%=menic%!12:menic%!16=-1:menic%!20=14 �?menu%(13)=�create_menu(menu_ptr%,120,"Interval:,"+�13,"0")) �menic%=menu%(13)+28 �>Interval%=menic%!12:menic%!16=buff%:$buff%="A0-9":buff%+=5 �0?menic%=?menic% � (1<<2):$Interval%="10 min" �smenu%(12)=�create_menu(menu_ptr%,160,"Save indices,Automatic>"+�(menu%(13))+",Warning>"+�(menu%(13))+",Manual") ��menu%(2)=�create_menu(menu_ptr%,265,"Validation,Create table...,~Display table,Show table files,Validate input,Show relations") ��tick(menu%(2),3,�) ��tick(menu%(10),7,�) ��menu%(7)=�create_menu(menu_ptr%,260,"Misc.,Batch delete!"+�(moveW%)+",Set passwords...,Colours!"+�(colW%)+",Save indices>"+�(menu%(12))+",Edit template") �Nmenu%(15)=�create_menu(menu_ptr%,90,"Separator,Comma,TAB,CR,LF,"+�13,"0")) �menic%=menu%(15)+28+(4*24) �-Delim%=menic%!12:menic%!16=-1:menic%!20=3 �'?menic%=?menic% � (1<<2):$Delim%="" �]menu%(20)=�create_menu(menu_ptr%,90,"Terminator,CR,LF,LF CR,CR LF,CR CR,LF LF,"+�13,"0")) �menic%=menu%(20)+28+(6*24) �.Termin%=menic%!12:menic%!16=-1:menic%!20=3 �(?menic%=?menic% � (1<<2):$Termin%="" ��string$="Print,Match,Show resources,Show jobs done,Options...,Save options!"+�(saveW%)+",Save query!"+�(saveW%)+",~Numeric fields>"+�(pselectW%)+",~Save selection!"+�(saveW%)+",~Clear selection" �>menu%(6)=�create_menu(menu_ptr%,260,string$+",Select all") �zstring$="Powerbase,Information!"+�(miscW%)+",Field: ''>"+�(menu%(10))+",Print>"+�(menu%(6))+",Validation>"+�(menu%(2)) ��string2$=",Current key...,Miscellaneous>"+�(menu%(7))+",Show keypad,Export subset!"+�(savesubW%)+",Export CSV!"+�(savesubW%)+",CSV options...,Save choices,Undo changes,Help" �9menu%(1)=�create_menu(menu_ptr%,236,string$+string2$) �#Fieldpos%=menu%(1)+28+(1*24)+12 �Jmenu%(4)=�create_menu(menu_ptr%,200,"Print tree,Complete,Totals only") �<menu%(22)=�create_menu(menu_ptr%,120,"Every:,"+�13,"0")) �menic%=menu%(22)+28 �;Every%=menic%!12:menic%!16=buff%:$buff%="A0-9":buff%+=5 �.?menic%=?menic% � (1<<2):$Every%="25 recs" �Xmenu%(21)=�create_menu(menu_ptr%,160,"Balance,Automatic>"+�(menu%(22))+",Right now") ��menu%(3)=�create_menu(menu_ptr%,300,"Utilities,New primary key...,Adjust format,New record format,Merge database,~Change length>"+�(sizeW%)+",Balance index>"+�(menu%(21))+",Print index>"+�(menu%(4))+",Find duplicates,Warn of duplicates") ��menu%(0)=�create_menu(menu_ptr%,266,"\Powerbase,Information>"+�(infoW%)+",New database!"+�(saveW%)+",~Utilities>"+�(menu%(3))+",~Close database,~Abandon database,Save choices,Default choices,Help,Quit") ��menu%(9)=�create_menu(menu_ptr%,270,"New database,Design field...,~_Default database,~Save form file!"+�(saveW%)+",~Database size>"+�(sizeW%)+",~Primary key...,~Quit design") �jmenu%(17)=�create_menu(menu_ptr%,200,"Table,Clear,Save!"+�(saveW%)+",Print,Sort,Undo change,Undo all") �Vmenu%(18)=�create_menu(menu_ptr%,250,"List,Save as text!"+�(saveW%)+",Sort,Scrap") �menu$="Data" �� I%=0 � 8 � menu$+=","+vname$(I%) �� I% �Bmenu%(8)=�create_menu(menu_ptr%,200,menu$):�tick(menu%(8),1,�) �menu$="External" �� I%=36 � 40 � menu$+=","+vname$(I%) �� I% �Dmenu%(11)=�create_menu(menu_ptr%,180,menu$):�tick(menu%(11),0,�) �menu$="Check box" �� I%=41 � 45 � menu$+=","+vname$(I%) �� I% �Dmenu%(14)=�create_menu(menu_ptr%,180,menu$):�tick(menu%(14),0,�) �menu$="Stamp" �� I%=46 � 59 � menu$+=","+vname$(I%) �� I% �Dmenu%(16)=�create_menu(menu_ptr%,250,menu$):�tick(menu%(16),0,�) �menu$="Button" �� I%=9 � 35 � menu$+=","+vname$(I%) �� I% �Dmenu%(19)=�create_menu(menu_ptr%,270,menu$):�tick(menu%(19),0,�) �ybar%=96+9*44 �� �: �� �field_menu(menu%,N%) �� F%,P%,L%,D$,F$ �$menu%="Field list" �Smenu%?12=7:menu%?13=2:menu%?14=7:menu%?15=0:menu%!16=270:menu%!20=44:menu%!24=0 �P%=menu%+28 �� F%=1 � N% �" F$=�(F%):F$=�3-�(F$)," ")+F$ �7 D$=�$�text(mainW%,desc%(F%)),7):D$+=�7-�(D$)," ") �& F$+=" "+D$+" "+Tag$(F%):L%=�(F$) �A !P%=0:P%!4=-1:P%!8=&7000121:P%!12=buff%:P%!16=-1:P%!20=L%+1 � $buff%=F$:buff%+=L%+1 � P%+=24 �� F% �P%!-24=P%!-24 � &80 �� �: �(� �create_menu(� menu%,width%,list$) �4� start%,choice$,entries%,item%,P%,Q%,S%,shaded% �start%=menu% �A� �list$,1)="\" � (RISCOS3=� � leftmenu%=�) � list$=�list$,2) �P%=�list$,",") �$menu%=�list$,P%-1) �menu%?12=7:menu%?13=2 �menu%?14=7:menu%?15=0 �*menu%!16=width%:menu%!20=44:menu%!24=0 �item%=menu%+28 �list$+="," �entries%=0 �� � Q%=P%+1 � P%=�list$,",",Q%) � � P%>0 � � !item%=0:shaded%=0 � choice$=�list$,Q%,P%-Q%) �? � �choice$,1)="~" � choice$=�choice$,2):shaded%=(1<<22) �A � �choice$,1)="_" � choice$=�choice$,2):?item%=?item% � 2 � S%=�choice$,"!") �5 � S%>0 � ?item%=?item% � 8:�choice$,S%,1)=">" � S%=�choice$,">") � � S%=0 � � item%!4=-1 � � �# item%!4=�(�choice$,S%+1)) � choice$=�choice$,S%-1) � � � � �(choice$)<=12 � � $(item%+12)=choice$ � item%!8=&7000021 � � � L%=�(choice$)+1 �I item%!12=buff%:$buff%=choice$:buff%+=L%:item%!16=-1:item%!20=L% � item%!8=&7000121 � � �! item%!8=item%!8 � shaded% � item%+=24 � entries%+=1 � � � � P%=0 �item%!-24=item%!-24 � &80 �menu%=item% �Q� menu%>men_end% � � � 0,"Not enough room for menus (internal error code 50)" �=start% �: �� �tick(menu%,item%,on%) �item%=menu%+28+item%*24 �Ȏ on% � � �:?item%=?item% � 1 � �:?item%=?item% � 254 � � : )� �tick_one(menu%,first%,last%,item%) � I% � I%=first% � last% �tick(menu%,I%,(I%=item%)) � I% � : � �ticked(menu%,item%) item%=menu%+28+item%*24 � (?item% � 1) �=� �=� : � �lit(menu%,item%,on%) item%=menu%+28+item%*24 Ȏ on% � & � �: item%!8=item%!8 � � (1<<22) $ � �: item%!8=item%!8 � (1<<22) � � : � �show_menu(menu%,x%,y%) )menuhandle%=menu%:menux%=x%:menuy%=y% %ș "Wimp_CreateMenu",,menu%,x%,y% � : K� Icon handling ------------------------------------------------------- : T� �create_icon(whandle%,xmin%,ymin%,width%,height%,iconflags%,text$,d1%,d2%,d3%) � handle% !block%!0=whandle% "!block%!4=xmin%:block%!8=ymin% #2block%!12=xmin%+width%:block%!16=ymin%+height% $block%!20=iconflags% % � d1%=0 � & $(block%+24)=text$ ' � ( block%!24=d1% ) block%!28=d2% * block%!32=d3% +� ,*ș "Wimp_CreateIcon",,block% � handle% -=handle% .: /� �redraw_icon(wi%,ic%) 0!block%=wi%:block%!4=ic% 1block%!8=0:block%!12=0 2"ș "Wimp_SetIconState",,block% 3*block%!8=0:block%!12=wi%:block%!16=ic% 4� 5: 6!� �icon_bit(bit%,wi%,ic%,on%) 7!block%=wi% 8block%!4=ic% 9Ȏ on% � :& � �:block%!8=0:block%!12=1<<bit% ;, � �:block%!8=1<<bit%:block%!12=1<<bit% <� ="ș "Wimp_SetIconState",,block% >� ?: @� �select(wi%,ic%) A!block%=wi%:block%!4=ic% B"block%!8=1<<21:block%!12=1<<21 C"ș "Wimp_SetIconState",,block% D� E: F� �deselect(wi%,ic%) G!block%=wi%:block%!4=ic% H block%!8=0:block%!12=(1<<21) I"ș "Wimp_SetIconState",,block% J� K: L� �invert(wi%,ic%) M@� �selected(wi%,ic%) � �deselect(wi%,ic%) � �select(wi%,ic%) N� O: P� �set_icon(wi%,ic%,on%) Q1� on% � �select(wi%,ic%) � �deselect(wi%,ic%) R� S: T� �selected(wi%,ic%) U!block%=wi%:block%!4=ic% V"ș "Wimp_GetIconState",,block% W=((block%!24) � (1<<21))>0 X: Y� �shaded(wi%,ic%) Z!block%=wi%:block%!4=ic% ["ș "Wimp_GetIconState",,block% \=((block%!24) � (1<<22))>0 ]; ^� �selected_esg(wi%,esg%) _Aș "Wimp_WhichIcon",wi%,block%,&003F0000,&00200000+(esg%<<16) `=!block% a: b$� �next_writeable(wi%,ic%,d%,r%) c� P%,E%,next% d5ș "Wimp_WhichIcon",wi%,block%,&00C0E000,(14<<12) e� f E%+=4 g� block%!E%=-1 hȕ block%!P%<>ic% � P%<E% i P%+=4 j� k� P%=E% � P%-=4 l� r%=1 � P%+4=E% �=� mȎ d% � n � 0:P%=E% o � 2:P%=-4 p :P%+=4*d% q� rȎ P% � s � E%:next%=!block% t � -4:next%=block%!(E%-4) u :next%=block%!P% v� w�set_caret(wi%,next%) x=� y: z� �text(wi%,ic%) {!block%=wi%:block%!4=ic% |"ș "Wimp_GetIconState",,block% }=block%!28 ~: � �val(wi%,ic%) �!block%=wi%:block%!4=ic% �"ș "Wimp_GetIconState",,block% �=block%!32 �: �� �text_length(wi%,ic%) �!block%=wi%:block%!4=ic% �"ș "Wimp_GetIconState",,block% �=�($(block%!28)) �: �� �set_caret(handle%,ic%) �� ic%=-1 � �, ș "Wimp_SetCaretPosition",handle%,ic% � � �M ș "Wimp_SetCaretPosition",handle%,ic%,0,0,-1,�text_length(handle%,ic%) �� �� �: �"� �alter_flags(dfg%,ffg%,bfg%) �� ic%,F% �!block%=mainW% �� ic%=0 � fields%*2-1 � F%=(ic%+1) � 2 �1 block%!4=ic%:ș "Wimp_GetIconState",,block% � � (ic% � 2)=1 � � Ȏ chartype%(F%) � �U � 0,1,2,3,4,5,6,7,8,40,46,47,48,49,50,51,52,53,54,55,56,57,58:block%!8=ffg% �' � 39:block%!8=ffg%:len%(F%)=0 �B � 59:� logosloaded% � block%!8=&0000611E � block%!8=ffg% � :block%!8=bfg% � � � � block%!8=dfg% � � � block%!12=&FFFFFFFF �$ ș "Wimp_SetIconState",,block% � � ic% �� �: �� �limit_actions(off%) � � ic% �� +0 � � ic% �� �% �icon_bit(22,keypadW%,ic%,off%) �Q � buttonfield%(ic%)>0 � �icon_bit(22,mainW%,field%(buttonfield%(ic%)),off%) � � ic% �� ic%=-1 ��lit(menu%(10),0,off%) ��lit(menu%(10),1,off%) ��lit(menu%(10),2,off%) �: �#� 12,14,15,16,17,18,20,21,22,-1 �: �� �: �� �identify_field(ic%) �.Fieldnumber%=0:Fieldname$="":TextLength%=0 �� (ic% � 2)=1 � �! !block%=mainW%:block%!4=ic% �$ ș "Wimp_GetIconState",,block% � TextLength%=block%!36-1 � Fieldnumber%=(ic%+1) � 2 �3 Fieldname$=$�text(mainW%,desc%(Fieldnumber%)) �5 � Fieldname$="" � Fieldname$=Tag$(Fieldnumber%) �" Ȏ chartype%(Fieldnumber%) � �$ � 2,4:ș "OS_Byte",202,0,239 �! :ș "OS_Byte",202,16,111 � � � ș "OS_Byte",118 �� �� �: �� �first_field �� I% �� I%+=1 �1� (len%(I%)>0 � chartype%(I%)<6) � I%>fields% �� I%>fields% �=0 �=I% �: �K� Mouse_click processing ---------------------------------------------- �: �� �mouse(x%,y%,b%,wi%,ic%) �oldx%=x%:oldy%=y% �Cblock%!0=x%:block%!4=y%:block%!8=b%:block%!12=wi%:block%!16=ic% �R� (b% � 2)<>2 � � (design% � (wi%=mainW%)) � ș "Interface_SlabButton",,block% �Ȏ wi% � � � -2:�iconbar_click �" � accessW%:accessbutton%=ic% � � mainW%:�main_click �* � keypadW%:�keypad_click(wi%,ic%,b%) �0 � saveW%,savesubW%:�save_click(wi%,ic%,b%) � � keyW%:�key_click � � tableW%:�create_table � � linkW%:�link_to_table � � passW%:�passwords � � printW%:�print_click �( � matchW%:�match_click(b%,wi%,ic%) � � createW%:�create_click � � datadicW%:�datadic_click � � changeW%:�change_click � � moveW%:�move_click �( � listW%:�list_click(x%,y%,b%,wi%) � � colW%:�set_colours �2 � calcW%:� ic%=1 � �calc_formula($CalcForm%) � � labelW%: � Ȏ ic% � �; � 11:�icon_bit(22,labelW%,12,�selected(labelW%,11)) �% � 15:ș "Wimp_CreateMenu",,-1 � � � � mergeW%:�merge_click � � sizeW%:�size_click � � csvW%:�csv_click �N � pselectW%,relateW%,reformW%,infoW%,miscW%:� ### No action on these ### � :�special_click �� �*block%!8=0:block%!12=wi%:block%!16=ic% �%ș "Interface_SlabButton",,block% �� �: �� �change_click �� (b% � %111)=4 � � Ȏ ic% � � � 4:�changes(key%) � � 5:�commoncase(wi%,ic%) � � �� �� �: �� �move_click �� (b% � %111)=4 � Ȏ ic% � � 8:�clear � 9:�commoncase(wi%,ic%) � � � : � �csv_click Ȏ (b% � %111) � � 2,4: Ȏ ic% � 0 � 5:�show_menu(menu%(15),oldx%+32,oldy%) 0 � 6:�show_menu(menu%(20),oldx%+32,oldy%) � � Ȏ (b% � %111) � � 4: Ȏ ic% � 6 � 1:�icon_bit(22,csvW%,4,(�selected(csvW%,1))) * � 9:�convert_csv($�text(csvW%,13)) ! � 10:�close_window(csvW%) � � � : � �merge_click "� (b% � %111)=4 � z%=1 � z%=-1 Ȏ ic% � / � 4:ClientPtr%=�merge_next(ClientPtr%,z%) 0 � 9:ClientPtr%=�merge_next(ClientPtr%,-z%) ) � 11:ClientPtr%=�merge_next(top,z%) * � 10:ClientPtr%=�merge_next(top,-z%) � 12:�commoncase(wi%,ic%) ! � 5: "^ ș "Impulse_SendMessage",&201,":"+mergewith$+"."+document$+" Print",,,,printtag%,mytask% # � 7: $ mergenum%=0 %C ClientSearch$=�parse($�text(mergeW%,3),�selected(mergeW%,12)) &# ClientPtr%=�merge_next(top,1) '! � 8:�perform_close(mergeW%) (� )� *: +� �size_click , Ȏ � � - � �($Records%)<=0: . �softerror("",71) /, $Records%="100":�redraw_icon(sizeW%,1) 0 � �($Increment%)<0 1 �softerror("",72) 2- $Increment%="25":�redraw_icon(sizeW%,3) 3 : 43 � present%=7 � �change_length(�($Records%),�) 5 ș "Wimp_CreateMenu",,-1 6� 7� 8: 9� �datadic_click :Ȏ b% � %111 � ; � 4: <8 !block%=datadicW%:ș "Wimp_GetWindowState",,block% =M ș "Wimp_SetCaretPosition",datadicW%,ic%,x%-block%!4+block%!20,y%,-1,-1 >+ � 2:�show_menu(menu%(17),x%-64,y%-20) ? � 1: @ � ic%>=0 � A% field%=(ic% � (TabFields%+1)) B �invert(wi%,field%) C field$=�(field%) D! � �selected(wi%,field%) � E) printrel$(Tablenumber%)+=field$ F � G- P%=�printrel$(Tablenumber%),field$) H_ printrel$(Tablenumber%)=�printrel$(Tablenumber%),P%-1)+�printrel$(Tablenumber%),P%+1) I � J � K� L� M: N� �list_click(x%,y%,b%,wi%) O� N% PȎ (b% � %111) � Q+ � 2:�show_menu(menu%(18),x%-64,y%-20) R � 4: S !block%=wi% T& ș "Wimp_GetWindowState",,block% U, line%=(block%!16-block%!24-y%+32) � 32 V* column%=(x%-block%!4+block%!20) � 16 W RecPtr%=!recanchor% X R%=RecPtr%!(line%*4) Y E%=�(Form$) � 2 Z � R%>=0 � [& addr=�find("#"+�(R%),key%,1,�) \ Ȏ format$ � ] � "horiz","table" ^ � _ N%+=1 `& � Tab%(N%)>column%+1 � N%=E% a$ F%=�fnum(�Form$,N%*2-1,2)) b � "vert": c � d N%+=1:line%-=1 e) � RecPtr%!(line%*4)<>R% � N%=E% f$ F%=�fnum(�Form$,N%*2-1,2)) g" � "tree":F%=KF%(tkey%,0) h � "dup":F%=KF%(0,0) i � j; � chartype%(F%)<=10 � �set_caret(mainW%,field%(F%)) k Fieldnumber%=F% l � m� n� o: p� �match_click(b%,wi%,ic%) q� not%,and%,or% r/� b%=2 � �show_menu(menu%(1),x%-64,y%-20):� s!Ȏ �selected_esg(printW%,4) � t � 38:reportdest$="Window" u � 39:reportdest$="File" v � 41:reportdest$="Printer" w� xȎ ic% � y � 16:�commoncase(wi%,ic%) z � 27: {c � �selected(matchW%,27) � $�text(matchW%,25)="Number found" � $�text(matchW%,25)="Time taken" | �redraw_icon(matchW%,25) } � 1,24: ~o � ic%=24 � Search$="":displayed%=� � Search$=�parse($�text(matchW%,0),�selected(matchW%,16)):displayed%=� � Search$<>"FALSE" � � $�text(matchW%,14)="" � �redraw_icon(matchW%,14) � Ȏ reportdest$ � �9 � "Window","Printer":�do_it(Search$,displayed%) � � "File": � savefunc$="Save list" �1 $SaveName%=$database%+".PrintJobs.List" �4 $SaveSprite%="sfile_fff;Pptr_hand,12,8;B3" �: !block%=matchW%:ș "Wimp_GetWindowState",,block% �, xmin%=block%!4+200:ymax%=block%!16 �9 !block%=saveW%:ș "Wimp_GetWindowState",,block% �; block%!12=xmin%+block%!12-block%!4:block%!4=xmin% �; block%!8=ymax%-block%!16+block%!8:block%!16=ymax% �3 block%!28=-1:ș "Wimp_OpenWindow",,block% � �set_caret(saveW%,0) � � � � �^ � (b% � %111)=4 � � �selected(matchW%,27) � �close_window(matchW%):�set_caret(mainW%,-1) � � 21,22: �6 � (b% � %111)=4 � z%=1 � � (b% � %111)=1 � z%=-1 �0 � ic%=21 � Match_tag%+=z% � Match_tag%-=z% �) � Match_tag%>fields% � Match_tag%=1 �) � Match_tag%<1 � Match_tag%=fields% �( $�text(matchW%,3)=Tag$(Match_tag%) � �redraw_icon(matchW%,3) �4 �tick_one(fieldmenu%,0,fields%-1,Match_tag%-1) �0 � 26:�show_menu(fieldmenu%,oldx%+32,oldy%) � � 10: �" op%=�selected_esg(matchW%,1) � Ȏ op% � � � 5:op$="=" � � 6:op$="{" � � 7:op$="<" � � 8:op$=">" � � 15:op$="<>" � � 18:op$=">=" � � 19:op$="<=" � � 20:op$="}{" � � �4 not%=�selected(matchW%,4):�deselect(matchW%,4) �6 and%=�selected(matchW%,12):�deselect(matchW%,12) �5 or%=�selected(matchW%,13):�deselect(matchW%,13) � tag$=$�text(matchW%,3) �! contents$=$�text(matchW%,9) � new$=tag$+op$+contents$ �$ � not% � new$="NOT ("+new$+")" � � and% � new$+=" AND " � � or% � new$+=" OR " �F $�text(matchW%,0)=$�text(matchW%,0)+new$:�redraw_icon(matchW%,0) �2 $�text(matchW%,9)="":�redraw_icon(matchW%,9) �, � 24:reportdest$="Window":�do_it("",�) �^ � (b% � %111)=4 � � �selected(matchW%,27) � �close_window(matchW%):�set_caret(mainW%,-1) �� �� �: �� �iconbar_click �Ȏ b% � %111 � � � 2: � � �selected(passW%,12) � � �close_window(saveW%) �( �show_menu(menu%(0),x%-64,ybar%) � � � � 4: � � $dbase%="No data" � � $SaveName%="!DataBase" �2 $SaveSprite%="snew_appl;Pptr_hand,12,8;B3" � savefunc$=choice$(1) �1 ș "Wimp_CreateMenu",,saveW%,x%-50,y%+300 � � �show_windows � � �� �� �: �� �main_click �� P%,F%,H$,L%,T%,N$,field$ �b� present%=7 � adjust%=� � � �validate(Fieldnumber%,T%,N$)=� � � � �update_calcs(Fieldnumber%) �8� flash% � �deselect(mainW%,field%(flash%)):flash%=� �Ȏ present% � � � 0,3:�design_field � � 1: �% � �first_field>0 � �default_key � �design_field � � 5,7: � � adjust% � � �design_field � � � �identify_field(ic%) �& � relations%=� � �relations(�) � Ȏ b% � 2047 � � � 2: �, � �selected(passW%,11) � Modify% � � �set_up_field_menu �, �show_menu(menu%(1),x%-64,y%-20) � � � � 1: �& Ȏ chartype%(Fieldnumber%) � � � 41,42,43,44,45: � �invert(wi%,ic%) �( col%=�get_icon_cols(wi%,ic%) �4 col%=((col%>>4) � (col%<<4)) � %11111111 �( �set_icon_cols(wi%,ic%,col%) �% boxon%=((col% � %1111)<2) �% �update_selection(boxon%) � � � � 4: �& Ȏ chartype%(Fieldnumber%) � �9 � 31:�filter(mainW%,field%(buttonfield%(22))) � � 41,42,43,44,45: �& � �(-3) � �invert(wi%,ic%) �Q � �selected(wi%,ic%) � $Rf%(Fieldnumber%)=" " � $Rf%(Fieldnumber%)="" � :�relations(�) � � � � 256: �& Ȏ chartype%(Fieldnumber%) � �J � 0,1,2,3,4,5,6,7,8,36,39,46,47,48,49,50,51,52,53,54,55,56,57: � �invert(wi%,ic%) �1 �update_selection(�selected(wi%,ic%)) �} � 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30:�keypad_click(wi%,chartype%(Fieldnumber%)-9,1) � � � � 1024: � � �(-3) � �. ș "Wimp_GetCaretPosition",,block% �$ wi%=!block%:ic%=block%!4 � Ȏ wi% � �( � matchW%:� ic%<>0 � wi%=0 �* � keypadW%:� ic%<>29 � wi%=0 �( � mergeW%:� ic%<>3 � wi%=0 � :wi%=0 � � wi%<>0 � 1 $�text(wi%,ic%)+=Tag$(Fieldnumber%) ! �set_caret(wi%,ic%) # �redraw_icon(wi%,ic%) � � ( Ȏ chartype%(Fieldnumber%) � � 0,1,2,3,4,5,8: � Fieldnumber%>0 � ? !block%=mainW%:ș "Wimp_GetWindowState",,block% ` � Access% � ș "Wimp_SetCaretPosition",mainW%,ic%,x%-block%!4+block%!20,y%,-1,-1 � { � 35:� �link$(Fieldnumber%),1)="@" � ș "OS_CLI","Filer_OpenDir "+�link$(Fieldnumber%),2) � �softerror("",91) N � 36,37,38:�edit_blob(REC%,Fieldnumber%,chartype%(Fieldnumber%)) � 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30:�keypad_click(wi%,chartype%(Fieldnumber%)-9,4) � 32:�match � 33:�exit(0) � 34:quit%=� � � � � � � : � �set_up_field_menu � I% 1�tick_one(menu%(5),0,LastTable%,LastTable%+1) � Fieldnumber%>0 � �lit(menu%(1),1,�) $AnalyseFunc%="Analyse" - $Fieldpos%="Field: "+Tag$(Fieldnumber%) ! $LinkTitle%=Fieldname$ "' $CalcForm%=Tag$(Fieldnumber%)+"=" # � I%=0 � 9 $ �lit(menu%(10),I%,�) % � I% & V%=chartype%(Fieldnumber%) ' Ȏ V% � ( � 5,50,51: )& isadate%=�:�lit(menu%(10),1,�) *& $AnalyseFunc%="Analyse months" + :isadate%=� , � -$ � �is_a_key(Fieldnumber%)>=0 � . �lit(menu%(10),1,�) /_ � isadate%=� � � �selected(mainW%,field%(Fieldnumber%)) � $AnalyseFunc%="Analyse index" 0 � 1 Ȏ V% � 2 � 0,1,2,3,4,5: 3! �lit(menu%(10),0,Access%) 4! �lit(menu%(10),2,Access%) 5! �lit(menu%(10),3,Access%) 6! �lit(menu%(10),5,Access%) 7! �lit(menu%(10),9,Access%) 84 Keyfld0%=Fieldnumber%:Keyfld1%=0:$F2dkey%="" 9# $F1dkey%=Tag$(Fieldnumber%) :( keylimit%=TextLength%:$KeyNo%="" ;2 WD%()=0:WD%(0)=keylimit%:keylen%=keylimit% < � J%=0 � 3 = $Wkey%(J%)=�(WD%(J%)) > � J% ?* $ChangeTitle%="Field: "+Fieldname$ @ $�text(changeW%,1)="" A+ � � common% � $�text(changeW%,3)="" B �link_status C � 6: D! �lit(menu%(10),4,Modify%) E! �lit(menu%(10),3,Access%) F$ �calc_link("Calculations",6) G �link_status H � 7: I! �lit(menu%(10),4,Modify%) J! �lit(menu%(10),3,Access%) K& �calc_link("Combine fields",7) L �link_status M. � 46,47,48,49,50,51,52,53,54,55,56,57: N � V%=47 � O# �lit(menu%(10),4,Modify%) P) �calc_link("Set base value",47) Q � R! �lit(menu%(10),0,Access%) S4 Keyfld0%=Fieldnumber%:Keyfld1%=0:$F2dkey%="" Tt � Fieldname$<>Tag$(Fieldnumber%) � $F1dkey%=�Fieldname$,8)+" ("+Tag$(Fieldnumber%)+")" � $F1dkey%=Fieldname$ U( keylimit%=TextLength%:$KeyNo%="" V2 WD%()=0:WD%(0)=keylimit%:keylen%=keylimit% W � J%=0 � 3 X $Wkey%(J%)=�(WD%(J%)) Y � J% Z � 36,39: [D � �blob_path(�,$database%,REC%,Fieldnumber%,V%,object$)>=0 � \# �lit(menu%(10),6,Access%) ] �lit(menu%(10),7,�) ^ �lit(menu%(10),8,�) _ $SaveName%="TextFile" `4 $SaveSprite%="sfile_fff;Pptr_hand,12,8;B3" a savefunc$="Save text" b � c � 37,40: dD � �blob_path(�,$database%,REC%,Fieldnumber%,V%,object$)>=0 � e# �lit(menu%(10),6,Access%) f �lit(menu%(10),7,�) g �lit(menu%(10),8,�) h $SaveName%="Sprite" i4 $SaveSprite%="sfile_ff9;Pptr_hand,12,8;B3" j! savefunc$="Save sprite" k � l � 38: mD � �blob_path(�,$database%,REC%,Fieldnumber%,V%,object$)>=0 � n# �lit(menu%(10),6,Access%) o �lit(menu%(10),7,�) p �lit(menu%(10),8,�) q $SaveName%="DrawFile" r4 $SaveSprite%="sfile_aff;Pptr_hand,12,8;B3" s savefunc$="Save draw" t � u � v1 � �lit(menu%(1),1,�):$Fieldpos%="Field: ''" w� x� y: z� �update_selection(add%) {� P%,SP%,F%,SF% |"F%=Fieldnumber%:SF%=(F% � 128) }-field$=�~(F%):� F%<16 � field$="0"+field$ ~2sfield$=�~(SF%):� SF%<16 � sfield$="0"+sfield$ � add% � �; � �(-1) � printorder$+=sfield$ � printorder$+=field$ �* �enable_row(calcrow%?Fieldnumber%,�) � �lit(menu%(6),7,�) � �lit(menu%(6),8,�) � � � � �$ P%=�printorder$,field$,P%+1) � � ((P%-1) � 2)=0 � P%=0 � � P%>0 � �9 printorder$=�printorder$,P%-1)+�printorder$,P%+2) �, �enable_row(calcrow%?Fieldnumber%,�) � � � � �) SP%=�printorder$,sfield$,SP%+1) �! � ((SP%-1) � 2)=0 � SP%=0 � � SP%>0 � �= printorder$=�printorder$,SP%-1)+�printorder$,SP%+2) �. �enable_row(calcrow%?Fieldnumber%,�) � � � � � � printorder$="" � � �lit(menu%(6),7,�) � �lit(menu%(6),8,�) � � �� �� �: �� �print_click �Ȏ (b% � %111) � �E � 2:� �selected(printW%,26) � �show_menu(labelW%,x%-500,y%+200) � � 1,4: � Ȏ ic% � � � 23,24,25: �6 �icon_bit(22,printW%,15,�selected(printW%,25)) �6 �icon_bit(22,printW%,45,�selected(printW%,25)) � � 26: �6 �icon_bit(22,printW%,15,�selected(printW%,25)) �6 �icon_bit(22,printW%,45,�selected(printW%,25)) �) �show_menu(labelW%,x%-500,y%+200) �= � 28:�drag_options("<Pbase$Dir>.Resources.PrintOpts") � � 20: � �close_window(printW%) �6 � (b% � %111)=1 � �open_window(matchW%):�match � � �� �� �: �� �keypad_click(wi%,ic%,b%) �� handle%,icon%,T%,N$,date$ ��close_window(relateW%) �8� flash% � �deselect(mainW%,field%(flash%)):flash%=� �S� ic%<>12 � � �validate(Fieldnumber%,T%,N$)=� � � � �update_calcs(Fieldnumber%) �Ȏ (b% � %111) � � � 1,4: �$ � (b% � %111)=4 � z%=1 � z%=-1 � Ȏ ic% � �, � 0:�scan(z%,�($�text(keypadW%,23))) � � 1:stop%=� �% � 2:addr=�moveto(key%,top,z%) �& � 3:addr=�moveto(key%,top,-z%) �& � 4:addr=�moveto(key%,addr,z%) �' � 5:addr=�moveto(key%,addr,-z%) �( � 6:addr=�fast_wind(top,addr,z%) �) � 7:addr=�fast_wind(top,addr,-z%) � � 8:�key_select(z%) � � 9:�key_select(-z%) � � 10:�subfile(z%) � � 11:�subfile(-z%) �- � 12:�rotate:addr=�moveto(key%,top,1) �" � 13:�allow_search(wi%,z%) � � 14: � �display(key%,-1) �# � 15:addr=�shift(z%,key%,0) � � �(-3) � �* addr=�find("#"+�(REC%),key%,0,�) � � �display(key%,addr) � � �$ � 16:addr=�shift(-z%,key%,0) � � �(-3) � �* addr=�find("#"+�(REC%),key%,0,�) � � �display(key%,addr) � � �6 � 17:addr=�shift(0,key%,1):�display(key%,addr) � � 18:�val_help �6 � 19:�check_change:�save_keys:�save_all_tables � � 20:�store � � 21:�retrieve �! � 22:�filter(keypadW%,22) � � 28: � S$=$�text(keypadW%,27) �# Ȏ chartype%(KF%(key%,0)) � � � 5,50,51: �? � �check_date(S$,1,date$)=� � S$=�reverse_date(date$) � � �6 � S$<>"" � addr=�find(�S$,KL%(key%)),key%,1,�) � � z%=1 � �! � �selected(passW%,9) � �= !block%=keypadW%:ș "Wimp_GetWindowState",,block% �9 block%!12=block%!4+660:block%!16=block%!8+328 �# block%!20=0:block%!24=0 �( ș "Wimp_OpenWindow",,block% �% � �close_window(keypadW%) � � � � � � 30: �# � $�text(keypadW%,29)<>"" � �D Filter$=�parse($�text(keypadW%,29),�selected(keypadW%,32)) � filter%=� �# addr=�moveto(key%,top,z%) � � filter%=� � � �! � 32:�commoncase(wi%,ic%) �H � 37:ș "OS_Byte",202,0,239:�show_menu(specmenu%,oldx%+32,oldy%) �$ � 38:�open_window(specialW%) � � �� �� �: �� �scan(z%,s%) �stop%=� �� � addr=�moveto(key%,addr,z%) � K%=�(s%) � �poll �� stop% �� �: �� �store � wi%,ic% &ș "Wimp_GetCaretPosition",,block% wi%=!block%:ic%=block%!4 .� wi%=mainW% � scratchpad$=$�text(wi%,ic%) � : � �retrieve � wi%,ic%,field% &ș "Wimp_GetCaretPosition",,block% wi%=!block%:ic%=block%!4 $� scratchpad$<>"" � wi%=mainW% � field%=�get_field(ic%) 0 $�text(wi%,ic%)=�scratchpad$,len%(field%)) �redraw_icon(wi%,ic%) � � : .� ### Binary Large Objects (B.L.O.B.s) ### : *� �blob_path(create%,f$,R%,F%,V%,� b$) $� O$,main$,level1$,level2$,d%,L% Ȏ V% � � 36,39:O$=".Memo" � 37,40:O$=".Sprite" � 38:O$=".Draw" � main$=f$+O$+�(F%) "level1$=main$+"."+�(R% � 4900) "level2$=level1$+"."+�(R% � 70) b$=level2$+"."+�(R% � 70) ș "OS_File",5,b$ � d%,,,,L% � d%=0 � create%=� � ș "OS_File",8,main$ ! ș "OS_File",8,level1$ " ș "OS_File",8,level2$ #� $� d%=1 �=L% �=-1 %: &� �load_blob(f$,R%,F%,V%) '� L%,b$ (#L%=�blob_path(�,f$,R%,F%,V%,b$) ) � L%>=0 � *3 �extend_named_sliding_block(tempanchor%,L%+1) +& ș "OS_File",255,b$,!tempanchor% ,� -=L% .: /� �blob_to_file(F,L%) 0-� L%>0 � ș "OS_GBPB",2,F,!tempanchor%,L% 1� 2: 32� �copy_blob(source$,dest$,RS%,RD%,FS%,FD%,V%) 4� L%,Z%,bs$,bd$ 5+L%=�blob_path(�,source$,RS%,FS%,V%,bs$) 6� L%>0 � 7+ Z%=�blob_path(�,dest$,RD%,FD%,V%,bd$) 8/ ș "OS_CLI","Copy "+bs$+" "+bd$+" ~C~V~Q" 9� :� ;: <!� �delete_blob(F%,F$,wi%,ic%) =� flag% >� delwarn%=� � ?& ș "OS_CLI","Delete "+F$:flag%=� @4 � � �confirm("Delete object? Are you sure?") � A( ș "OS_CLI","Delete "+F$:flag%=� B � C� D � flag% � E Ȏ chartype%(F%) � F) � 36:$�val(wi%,ic%)="Z0;Ssm!edit" G* � 37:$�val(wi%,ic%)="Z0;Ssm!paint" H) � 38:$�val(wi%,ic%)="Z0;Ssm!draw" I � 39:$�text(wi%,ic%)="" J � K �redraw_icon(wi%,ic%) L� M� N: O � �set_blob_sprite(R%,F%,V%) P� L%,b$,sprite$ Q>� R%=RA% � L%=-1 � L%=�blob_path(�,$database%,R%,F%,V%,b$) RȎ V% � S< � 36:� L%>=0 � sprite$="small_fff" � sprite$="sm!edit" T= � 37:� L%>=0 � sprite$="small_ff9" � sprite$="sm!paint" U< � 38:� L%>=0 � sprite$="small_aff" � sprite$="sm!draw" V� W8$�val(mainW%,field%(F%))="Z0;Pptr_ext,8,4;S"+sprite$ X#�redraw_icon(mainW%,field%(F%)) Y� Z: [� �edit_blob(R%,F%,V%) \� wi%,ic%,b$,O$,val$ ]2� R%=RA% � �check_change:� REC%<>RA% � R%=REC% ^wi%=mainW%:ic%=field%(F%) _Ȏ V% � `5 � 36:O$="Memo":val$="Z0;Ssmall_fff":ftype%=&fff a7 � 37:O$="Sprite":val$="Z0;Ssmall_ff9":ftype%=&ff9 b5 � 38:O$="Draw":val$="Z0;Ssmall_aff":ftype%=&aff c� d.� �blob_path(�,$database%,R%,F%,V%,b$)<0 � e $�val(wi%,ic%)=val$ fI ș "OS_CLI","Copy <PBase$Dir>.Resources.Objects."+O$+" "+b$+" ~C~V" g �redraw_icon(wi%,ic%) h� i4block%!0=256:block%!12=0:block%!16=5:block%!20=0 j3block%!24=0:block%!28=0:block%!32=0:block%!36=0 k)block%!40=ftype%:$(block%+44)=b$+�(0) l%ș "Wimp_SendMessage",18,block%,0 m� n: o*� �transfer_blob(wi%,ic%,R%,file$,ft%) p� F%,V%,L%,W%,b$ q� wi%<>mainW% � � r2� R%=RA% � �check_change:� REC%<>RA% � R%=REC% s#F%=(ic%+1) � 2:V%=chartype%(F%) tȎ V% � u; � 35:� ft%=-1 � link$(F%)="@"+file$:link$(0)="LOADED" v � 36: w? � ft%=&fff � �install_blob:$�val(wi%,ic%)="Z0;Ssmall_fff" x � 37: y? � ft%=&ff9 � �install_blob:$�val(wi%,ic%)="Z0;Ssmall_ff9" z � 38: {? � ft%=&aff � �install_blob:$�val(wi%,ic%)="Z0;Ssmall_aff" | � 39: }5 � ft%=&fff � �install_blob:�show_text_block(F%) ~ � 40: 2 � ft%=&ff9 � �install_blob:�show_picture(F%) �� ��redraw_icon(wi%,ic%) �� �: �� �install_blob �+L%=�blob_path(�,$database%,R%,F%,V%,b$) �ș "OS_CLI","Remove "+b$ �,ș "OS_CLI","Copy "+file$+" "+b$+" ~C~V" �� �: �� �show_text_block(F%) �� F,b$,I%,L%,base% �� F%=0 � � �base%=Rf%(F%) �-L%=�blob_path(�,$database%,REC%,F%,39,b$) �� L%>0 � �! � L%>len%(F%) � L%=len%(F%) �; � ### Load only as much of file as we can display ### �> F=�(b$):� F>0 � ș "OS_GBPB",4,F,base%,L%:�close_file(F) �J � ### Replace any characters<32 by spaces - but ONLY for display ### � � I%=0 � L%-1 �# � base%?I%<32 � base%?I%=32 � � I% � base%?L%=10 � � $base%="" �� �� �: �� �show_picture(F%) �#� F,f$,I%,max%,len%,x%,y%,w%,h% �� F%=0 � � �/len%=�blob_path(�,$database%,REC%,F%,40,f$) �E!block%=mainW%:block%!4=field%(F%):ș "Wimp_GetIconState",,block% �<x%=block%!8:y%=block%!12:w%=block%!16-x%:h%=block%!20-y% � ș "Wimp_DeleteIcon",,block% �� len%>=0 � �@ �extend_named_sliding_block(Rf%(F%),len%+4):base%=!Rf%(F%) �/ !base%=len%+4:ș "OS_File",255,f$,base%+4 �O field%(F%)=�create_icon(mainW%,x%,y%,w%,h%,&0700A53E,"",base%+16,base%,0) � � �K field%(F%)=�create_icon(mainW%,x%,y%,w%,h%,&0700A53E,"",paint%,1,384) �� �� �: �� �filter(wi%,ic%) �� h%,ox%,oy% �Ȏ wi% � �# � keypadW%:h%=530:ox%=0:oy%=0 �$ � mainW%:h%=200:ox%=0:oy%=-330 �� �� �selected(wi%,ic%) � �7 !block%=keypadW%:ș "Wimp_GetWindowState",,block% �2 block%!12=block%!4+660:block%!8=block%!16-h% �! block%!20=ox%:block%!24=oy% �" ș "Wimp_OpenWindow",,block% �* � � common% � $�text(keypadW%,29)="" � �set_caret(keypadW%,29) �! � $�text(keypadW%,29)<>"" � �B Filter$=�parse($�text(keypadW%,29),�selected(keypadW%,32)) � filter%=� �! addr=�moveto(key%,top,z%) � � filter%=� � � � � � � wi%=keypadW% � �9 !block%=keypadW%:ș "Wimp_GetWindowState",,block% �5 block%!12=block%!4+660:block%!8=block%!16-330 � block%!20=0:block%!24=0 �$ ș "Wimp_OpenWindow",,block% �! � �close_window(keypadW%) � � � filter%=� �� �� �: �� �fast_wind(T%,P%,D%) �� I% � fast%=�($�text(keypadW%,23)) �D%=(D%+1) � 2 �ȕ P%<>T% � I%<fast% �K � filter% � P%=�next_match(P%,D%,Filter$) � P%=�neighbour(key%,P%,D%) � I%+=1 �� �9� P%=T% � � filter% � � 7:P%=�neighbour(key%,P%,1-D%) ��display(key%,P%) �=P% �: �� �subfile(dir%) �file%+=dir% �� file%=6 � file%=0 �� file%=-1 � file%=5 �top=8*file%+LH% �addr=�moveto(key%,top,1) �� �: �� �allow_search(wi%,e%) �� w%,ox%,oy% �Ȏ e% � �5 � 1:�select(keypadW%,24):�deselect(keypadW%,25) �6 � -1:�select(keypadW%,25):�deselect(keypadW%,24) �� ��deselect(keypadW%,22) �E� buttonfield%(22)>0 � �deselect(mainW%,field%(buttonfield%(22))) � filter%=� �1$�text(keypadW%,27)="":$�text(keypadW%,36)="" �$$�text(keypadW%,33)=Index$(key%) �Ȏ wi% � �$ � keypadW%:w%=1000:ox%=0:oy%=0 �# � mainW%:w%=340:ox%=660:oy%=0 �� �5!block%=keypadW%:ș "Wimp_GetWindowState",,block% �0block%!12=block%!4+w%:block%!8=block%!16-328 �block%!20=ox%:block%!24=oy% � ș "Wimp_OpenWindow",,block% ��set_caret(keypadW%,27) �� �: �� �val_help �� name$ �� Fieldnumber%>0 � �! name$=�link$(Fieldnumber%)) �4 � �(name$)<58 � �(name$)<>-1 � name$=�name$,2) �' Tablenumber%=�table_number(name$) �4 � Tablenumber%<>-1 � �show_table(Tablenumber%) �� �� �: �� �val_on_off � I% validate%=� validate% �tick(menu%(2),3,validate%) Ȏ validate% � � �: � I%=1 � vstrings% $valid%(I%)=$rvalid%(I%) � I% � �: � I%=1 � vstrings% $ $valid%(I%)="Pptr_write,4,4" � I% � � : � �save_click(wi%,ic%,b%) � p$,H$ butt%=(b% � %111) Ȏ wi% � � saveW%: Filename$=$SaveName% Ȏ savefunc$ � � "New database": Type%=0 d � �Filename$,1)<>"!" � Filename$="!"+Filename$:Filename$=�Filename$,10):$SaveName%=Filename$ � "Log changes": Type%=&fff:startlog%=� � "Save as text": Type%=&fff 7 Start%=!textanchor%:End%=Start%+Count%*LenLine% $Start%=pitch$ � "Save list": Type%=&fff:savetofile%=� ! � "Save text": " Type%=&fff: #= len%=�blob_path(�,$database%,REC%,Fieldnumber%,36,f$) $7 �extend_named_sliding_block(saveanchor%,len%+1) %( ș "OS_File",255,f$,!saveanchor% &, Start%=!saveanchor%:End%=Start%+len% ' � "Save sprite": ( Type%=&ff9 )= len%=�blob_path(�,$database%,REC%,Fieldnumber%,37,f$) *7 �extend_named_sliding_block(saveanchor%,len%+1) +( ș "OS_File",255,f$,!saveanchor% ,, Start%=!saveanchor%:End%=Start%+len% - � "Save draw": . Type%=&aff /= len%=�blob_path(�,$database%,REC%,Fieldnumber%,38,f$) 07 �extend_named_sliding_block(saveanchor%,len%+1) 1( ș "OS_File",255,f$,!saveanchor% 2, Start%=!saveanchor%:End%=Start%+len% 3 � "Save options": 4 Type%=&7f5 5 � "Save query": 6C Start%=�text(matchW%,0):End%=Start%+�($Start%)+1:Type%=&7f4 7 � "Save selection": 81 P%=savebuff%:$P%=printorder$:P%+=�($P%)+1 9 � T%=0 � LastTable% :' $P%=printrel$(T%):P%+=�($P%)+1 ; � T% <> Start%=savebuff%:End%=Start%+P%-savebuff%+1:Type%=&7F3 = � "Save table": >G $TabTitle%=�table_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) ?D Start%=!tabanchor%(T%):End%=Start%+160+Rows%*Rec%:Type%=&7f1 @ � "Save form file": A Type%=&7f2 B �lit(menu%(9),3,�) C �lit(menu%(9),4,�) D3 � adjust%=� � �first_field>0 � �default_key E � F � savesubW%: G Ȏ savefunc$ � H � "Export subset": I# Filename$=$SubName%:Type%=0 J � "Export CSV": K& Filename$=$SubName%:Type%=&dfe L � M� NȎ ic% � O � 1: P2 � (b% � %11110000)>0 � �init_drag(wi%,ic%,5) Q � 2: R � �Filename$,".")>0 � S7 � butt%<>2 � �save(Filename$,Type%,Start%,End%) T, � butt%=4 � ș "Wimp_CreateMenu",,-1 U � �softerror("",33) V � WB � 12:� butt%=2 � butt%=4 � �show_menu(menu%(15),x%-64,y%-20) XB � 13:� butt%=2 � butt%=4 � �show_menu(menu%(20),x%-64,y%-20) Y � 5:�commoncase(wi%,ic%) Z� [� \: ]� �key_click ^� J% _Ȏ b% � %111 � ` � 4:z%=1 a � 1:z%=-1 b� cȎ ic% � d) � 16:�kcycle(Keyfld0%,F1dkey%,0,z%) e* � 17:�kcycle(Keyfld0%,F1dkey%,0,-z%) f) � 18:�kcycle(Keyfld1%,F2dkey%,1,z%) g* � 19:�kcycle(Keyfld1%,F2dkey%,1,-z%) h � 21: i2 �tick_one(fieldmenu%,0,fields%-1,Keyfld0%-1) j> �show_menu(fieldmenu%,oldx%+32,oldy%):fieldfunc$="first" k � 22: l2 �tick_one(fieldmenu%,0,fields%-1,Keyfld1%-1) m? �show_menu(fieldmenu%,oldx%+32,oldy%):fieldfunc$="second" n � 7: o! � keyfunc$<>"Current key" � p/ keylimit%=len%(Keyfld0%)+len%(Keyfld1%) q � J%=0 � 3 r WD%(J%)=�($Wkey%(J%)) s � J% t Ȏ � � u1 � Ǝ(WD%())>keylimit%:�softerror("",26) v : w Ȏ keyfunc$ � x � "Primary key": y key%=0 z �copy_keydata(key%) {* RA%=�($Records%):f$=$database% |& �make_empty_index(RA%,0,�) }* �save_recs(f$+".Database",RA%) ~! present%=7:�save_keys $ design%=�:�get_it_in(f$) �0 � "New primary key":�new_tree(file%) �) � "Index field":�create_index � � � � � � � keyfunc$="" � �close_window(keyW%) �� �� �: �� �shade_key_icons(on%) �� I%=16 � 20 � �icon_bit(22,keyW%,I%,on%) �� I% �� I%=2 � 5 � �icon_bit(22,keyW%,I%,on%) �� I% �� �: �� �kcycle(� F%,T%,icon%,z%) � F%+=z% �� F%>fields% � F%=0 �� F%<0 � F%=fields% �"� F%>0 � $T%=Tag$(F%) � $T%="" ��redraw_icon(keyW%,icon%) �*�tick_one(fieldmenu%,0,fields%-1,F%-1) �� �: �� �copy_keydata(key%) �-KF%(key%,0)=Keyfld0%:KF%(key%,1)=Keyfld1% �KL%(key%)=Ǝ(WD%()) �� J%=0 � 3 � KW%(key%,J%)=WD%(J%) �� J% �#case%(key%)=�selected(keyW%,20) �� �: �� �set_keydata(key%) �� J%,S$ �-Keyfld0%=KF%(key%,0):Keyfld1%=KF%(key%,1) �$F1dkey%=Tag$(Keyfld0%) �;� KF%(key%,1)>0 � $F2dkey%=Tag$(Keyfld1%) � $F2dkey%="" �keylen%=KL%(key%) �� J%=0 � 3 �0 WD%(J%)=KW%(key%,J%):$Wkey%(J%)=�(WD%(J%)) �� J% �$KeyNo%=�(key%) �#�set_icon(keyW%,20,case%(key%)) �� �: �� �key_select(D%) ��colour(key%,2) �Ȏ D% � �$ � +1:key%=(key%+1) � (Keys%+1) �( � -1:key%-=1:� key%<0 � key%=Keys% �� ��colour(key%,1) ��set_keydata(key%) �>$�text(keypadW%,33)=Index$(key%):�redraw_icon(keypadW%,33) �top=8*file%+LH% �addr=�moveto(key%,top,1) �� �: �� �set_colours �� I% �Ȏ ic% � � � 0,1,2,3,4,5,6: � col%=ncol%(ic%) � fb%=�selected_esg(colW%,2) � Ȏ fb% � �# � 11:col%=(col% � &F):fb%=1 �( � 12:col%=((col%>>4) � &F):fb%=0 � � � Ȏ b% � %111 � � � 1: �" col%-=1:� col%<0 � col%=15 �$ �dcolour(colW%,ic%,col%,fb%) � � 4: � col%=(col%+1) � 16 �$ �dcolour(colW%,ic%,col%,fb%) � � �* ncol%(ic%)=�get_icon_cols(colW%,ic%) � � 9,10: � fcol%()=ncol%() � � I%=0 � Keys% � �colour(I%,2) � � I% � �colour(0,0) � �colour(key%,1) � � I%=1 � fields% �D � link$(I%)<>"" � �set_icon_cols(mainW%,field%(I%),ncol%(6)) � � I% � � ic%=10 � �write_colours � ș "Wimp_CreateMenu",,-1 � � 15: �4 �read_colours("<Pbase$Dir>.Resources.Colours") � � I%=0 � 6 �* �set_icon_cols(colW%,I%,ncol%(I%)) � � I% �� �� �: �� �create_click �� Calc$ �butt%=(b% � %111) �Ȏ butt% � � � 2,4: �> � ic%=36 � �show_menu(menu%(menunumber%),oldx%+32,oldy%) �� �,� butt%=4 � z%=1 � � butt%=1 � z%=-1 � � �Ȏ ic% � � � 21:�set_limits(1,0,8,8) �# � 22:�set_limits(36,36,40,11) �! � 23:�set_limits(9,9,35,19) �# � 24:�set_limits(41,41,45,14) �# � 35:�set_limits(46,46,59,16) �' � 19:�change_type(z%,menunumber%) �( � 20:�change_type(-z%,menunumber%) �8 � 18:�create_field(�($InsText%),posx%,posy%,Calc$) �. � 29:�remove_field(Fieldnumber%,�,Calc$) �3 �create_field(Fieldnumber%,posx%,posy%,Calc$) �. � 30:�remove_field(Fieldnumber%,�,Calc$) �= � 14:�icon_bit(22,createW%,13,(�selected(createW%,14))) � � 39: � F%=�($InsText%) � � F%>0 � F%<=fields% � �( � F%<Fieldnumber% � Z%=-1 � Z%=1 �( �re_sequence(Fieldnumber%,F%,Z%) � �close_window(createW%) 2 � 40:�swap_fields(Fieldnumber%,�($InsText%)) � �update_box 5� (present% � 4)=0 � �lit(menu%(9),1,(fields%>0)) Ȏ ic% � � 18,29,30: � butt%=4 � �close_window(createW%) � # �icon_bit(22,createW%,18,�) + �icon_bit(22,createW%,30,� adjust%) # �icon_bit(22,createW%,29,�) Fieldnumber%=fields% � � � : � �update_box Ȏ fieldtype% � F � 0,1,2,3,4,5,6,7,46,47:� � adjust% � �icon_bit(22,createW%,6,�) " :�icon_bit(22,createW%,6,�) � ;�icon_bit(22,createW%,14,(fieldtype%=3 � fieldtype%=6)) T�icon_bit(22,createW%,13,(fieldtype%=3 � fieldtype%=6) � �selected(createW%,14)) <�icon_bit(22,createW%,15,(fieldtype%=3 � fieldtype%=47)) ,�icon_bit(22,createW%,25,(fieldtype%=3)) '�icon_bit(22,createW%,26,� adjust%) .� � adjust% � �lit(menu%(9),2,(fields%>0)) $ValText%=vname$(fieldtype%) �redraw_icon(createW%,28) � !: "� �set_limits(t%,f%,l%,m%) #fieldtype%=t% $firsttype%=f% %lasttype%=l% &menunumber%=m% '&�tick_one(menu%(m%),0,l%-f%,t%-f%) (�update_box )� *: +� �change_type(d%,m%) ,Ȏ d% � - � 1:fieldtype%+=1 .4 � fieldtype%>lasttype% � fieldtype%=firsttype% / � -1:fieldtype%-=1 04 � fieldtype%<firsttype% � fieldtype%=lasttype% 1� 2E�tick_one(menu%(m%),0,lasttype%-firsttype%,fieldtype%-firsttype%) 3�update_box 4� 5: 6� �passwords 7� F 8Ȏ ic% � 9 � 4: :# � $Write%="" � $Write%=$Read% ;( � $Manager%="" � $Manager%=$Write% < F=�($database%+".Colours") = �#F=35 >" S$=�encrypt($Read%,�):�#F,S$ ?# S$=�encrypt($Write%,�):�#F,S$ @% S$=�encrypt($Manager%,�):�#F,S$ A � I%=9 � 16 B �#F,�selected(passW%,I%) C � I% D �#F,logpath$ E �#F=�#F F �close_file(F) G* �lit(menu%(1),6,�selected(passW%,9)) H+ �lit(menu%(1),7,�selected(passW%,13)) I+ �lit(menu%(1),8,�selected(passW%,13)) J+ �lit(menu%(1),2,�selected(passW%,14)) K+ �lit(menu%(3),8,�selected(passW%,15)) LP � � �selected(passW%,9) � �close_window(keypadW%) � �open_window(keypadW%) M1 �close_window(passW%):�close_window(saveW%) N warn%=� O � 16: P � �selected(passW%,16) � Q savefunc$="Log changes" RJ � logpath$="" � $SaveName%=$database%+".Log" � $SaveName%=logpath$ S2 $SaveSprite%="sfile_fff;Pptr_hand,12,8;B3" T7 !block%=passW%:ș "Wimp_GetWindowState",,block% U* xmin%=block%!4+200:ymax%=block%!16 V7 !block%=saveW%:ș "Wimp_GetWindowState",,block% W9 block%!12=xmin%+block%!12-block%!4:block%!4=xmin% X9 block%!8=ymax%-block%!16+block%!8:block%!16=ymax% Y1 block%!28=-1:ș "Wimp_OpenWindow",,block% Z �set_caret(saveW%,0) [ �open_log \ � �close_log ] � ^� _� `: a� �open_log b� logpath$<>"" � c" ș "OS_File",5,logpath$ � d% d � d%=1 � e8 loghandle%=�(logpath$):�#loghandle%=�#loghandle% f% �#loghandle%,"Log opened "+�$ g3 �#loghandle%,"Password level used: "+�(pw%) h �#loghandle%,�35,"=") i � j �softerror("",99) k �deselect(passW%,16) l logpath$="" m � n� o� p: q� �close_log r� loghandle%<>0 � s �#loghandle%,"" t# �#loghandle%,"Log closed "+�$ u �close_file(loghandle%) v# ș "OS_File",18,logpath$,&fff w� x� y: z� �count(key%,� RU%) {� zero%,file%,top,sum% | RU%=0 }� file%=0 � 5 ~ top=8*file%+LH% " sum%=�count_recs(key%,zero%) � RU%+=sum% �% $�text(miscW%,file%+22)=�(sum%) �� file% �� �: �� �count_recs(key%,� ptr%) �� P%,count%,S%,R%,S$,k$ �ș "Hourglass_On" �P%=�neighbour(key%,top,1) �ȕ P%<>top � count%+=1 � � ptr%>0 � � R%=�rec_no(k$,key%,P%) �# � R%>highest% � highest%=R% �1 !ptr%=R%:$(ptr%+4)=k$:ptr%+=4+KL%(key%)+1 � flagptr%?R%=0 � � � P%=�neighbour(key%,P%,1) �� �ș "Hourglass_Off" �=count% �: �� �analyse(func%) �1� L%,P%,S%,S$,K$,k$,ptr%,pos%,N%,values%,key% �� S$(),N%() ��read_print_options �.� func%<0 � L%=6 � key%=func%:L%=KL%(key%) �8� L%>8 � Tab%(0)=Lmargin%+L%+6 � Tab%(0)=Lmargin%+14 �Tab%(1)=Tab%(0)+6 �� func%<0 � �: Title$="Analysis of date field: "+Tag$(Fieldnumber%) �5 Heading$=�pad(margin$+"Month",Tab%(0))+"Number" � � �/ Title$="Analysis of index: "+Index$(key%) �8 Heading$=�pad(margin$+"Contents",Tab%(0))+"Number" �� �Title1$=�$ �LenLine%=�(Heading$)+2 �7�extend_named_sliding_block(lineanchor%,LenLine%+4) �I�extend_named_sliding_block(headanchor%,LenLine%+4):pos%=!headanchor% �7�heap_store(headanchor%,LenLine%,0,pos%,0,Heading$) �reportdest$="Window" ��close_window(datadicW%) �Count%=0 ��list_head(0) �ș "Hourglass_On" �.� func%<0 � �analyse_date � �analyse_index �ș "Hourglass_Off" ��rule_off(45) �;Line$=�pad(margin$+"Total",Tab%(0))+�justify(�(N%),1,0) �@$(!lineanchor%)=Line$:�list_line(-1,lineanchor%,�(Line$),32) ��rule_off(45) ��screen_list �� �: �� �analyse_index �K$="***" �P%=�neighbour(key%,top,1) �ȕ P%<>top � R%=�rec_no(k$,key%,P%) �# � k$<>K$ � values%+=1:K$=k$ � P%=�neighbour(key%,P%,1) �� �� S$(values%),N%(values%) �K$="***" �P%=�neighbour(key%,top,1) �ȕ P%<>top � R%=�rec_no(k$,key%,P%) �E � k$<>K$ � ptr%+=1:K$=k$:S$(ptr%)=K$:N%(ptr%)=1 � N%(ptr%)+=1 � P%=�neighbour(key%,P%,1) �� �� I%=1 � ptr% �I S$=S$(I%):� S$="" � S$="<null>" � � isadate% � S$=�reverse_date(S$) �H Line$=margin$+S$:Line$=�pad(Line$,Tab%(0))+�justify(�(N%(I%)),1,0) �B $(!lineanchor%)=Line$:�list_line(-1,lineanchor%,�(Line$),32) � N%+=N%(I%) �� I% �� �: �� �analyse_date �� S$(12),N%(12) �YS$()="<null>","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" �*dbasehandle%=�($database%+".Database") �P%=�neighbour(key%,top,1) �ȕ P%<>top � R%=�rec_no(k$,key%,P%) �# �readsmarray(dbasehandle%,R%) � S$=F$(Fieldnumber%) � � S$<>"" � � M%=�(�S$,4,2)) � N%(M%)+=1 � � N%(0)+=1 � � � P%=�neighbour(key%,P%,1) �� ��close_file(dbasehandle%) �� I%=0 � 12 �L Line$=margin$+S$(I%):Line$=�pad(Line$,Tab%(0))+�justify(�(N%(I%)),1,0) �B $(!lineanchor%)=Line$:�list_line(-1,lineanchor%,�(Line$),32) � N%+=N%(I%) �� I% �� �: �� �update_stats �$filesize%=�(RA%) �$Records%=�(RA%) �$used%=�(RU%) �#$percent%=�(�(RU%*100/RA%))+"%" �� �: �L� Keypress processing -------------------------------------------------- �: �� �set_keyboard(wi%,ic%) �Ȏ wi% � � � mainW%: �! Ȏ chartype%((ic%+1) � 2) � �$ � 2,4:ș "OS_Byte",202,0,239 �! :ș "OS_Byte",202,16,111 � � �" :ș "OS_Byte",202,caps%,111 �� �ș "OS_Byte",118 �� �: �� �process_key �� printing% � indexing% � � �� T%,N$ �&ș "Wimp_GetCaretPosition",,block% 4wi%=block%!0:ic%=block%!4:key_pressed%=block%!24 Ȏ wi% � � mainW%:�main_press � keypadW%:�keypad_press � passW%:�dbox_press(4) � changeW%:�dbox_press(4) � tableW%:�dbox_press(26) � saveW%:�dbox_press(2) � datadicW%:�datadic_press � printW%:�dbox_press(20) � labelW%:�dbox_press(15) � createW%:�create_press � accessW%:�dbox_press(3) � keyW%:�dbox_press(7) � savesubW%:�dbox_press(2) � matchW%:�match_press � moveW%:�dbox_press(8) � calcW%:�dbox_press(1) � mergeW%:�dbox_press(7) � sizeW%:�dbox_press(4) � csvW%:�dbox_press(9) � � : � �keypad_press � key_pressed%=13 � Ȏ ic% � ! � 27:�mouse(0,0,4,wi%,28) ! � 29:�mouse(0,0,4,wi%,30) � ) � ș "Wimp_ProcessKey",key_pressed% � � !: "� �main_press #B� � �selected(passW%,10) � ș "Wimp_ProcessKey",key_pressed%:� $� icon% %8� flash% � �deselect(mainW%,field%(flash%)):flash%=� &]� key_pressed%<>392 � � �validate(Fieldnumber%,T%,N$)=� � � � �update_calcs(Fieldnumber%) 'Ȏ key_pressed% � ( � 13: ) Ȏ wi% � * � mainW%: +" � Fieldnumber%=fields% � ,# �close_window(relateW%) - �display(key%,-1) . � / � 0E Fieldnumber%+=1:� Fieldnumber%>fields% � Fieldnumber%=1 1( c%=chartype%(Fieldnumber%) 22 � len%(Fieldnumber%)>0 � (c%<6 � c%=8) 3& icon%=field%(Fieldnumber%) 4$ �set_caret(mainW%,icon%) 5* � relations%=� � �relations(�) 6 � 7 � 8 � 398: 9 � :? Fieldnumber%+=1:� Fieldnumber%>fields% � Fieldnumber%=1 ;" c%=chartype%(Fieldnumber%) <, � len%(Fieldnumber%)>0 � (c%<6 � c%=8) = icon%=field%(Fieldnumber%) > �set_caret(mainW%,icon%) ?$ � relations%=� � �relations(�) @ � 399: A � B? Fieldnumber%-=1:� Fieldnumber%<1 � Fieldnumber%=fields% C" c%=chartype%(Fieldnumber%) D, � len%(Fieldnumber%)>0 � (c%<6 � c%=8) E icon%=field%(Fieldnumber%) F �set_caret(mainW%,icon%) G$ � relations%=� � �relations(�) H4 � 389:� Access% � �show_menu(changeW%,500,600) I � 405: J � �(printorder$)=2 � KB Fieldnumber%=�fnum(printorder$):V%=chartype%(Fieldnumber%) L Ȏ V% � M � 36,39: NF � �blob_path(�,$database%,REC%,Fieldnumber%,V%,object$)>=0 � O �set_up_field_menu P& �show_menu(saveW%,500,600) Q � R � S � T � 408:�val_on_off U$ � 387:�mouse(0,0,4,keypadW%,2) V$ � 403:�mouse(0,0,4,keypadW%,3) W$ � 386:�mouse(0,0,4,keypadW%,4) X$ � 402:�mouse(0,0,4,keypadW%,5) Y$ � 391:�mouse(0,0,4,keypadW%,6) Z$ � 407:�mouse(0,0,4,keypadW%,7) [$ � 393:�mouse(0,0,4,keypadW%,8) \$ � 409:�mouse(0,0,4,keypadW%,9) ]% � 388:�mouse(0,0,4,keypadW%,10) ^% � 404:�mouse(0,0,4,keypadW%,11) _% � 420:�mouse(0,0,4,keypadW%,12) `% � 385:�mouse(0,0,4,keypadW%,13) a% � 401:�mouse(0,0,1,keypadW%,13) b% � 458:�mouse(0,0,4,keypadW%,14) c% � 390:�mouse(0,0,4,keypadW%,15) d% � 406:�mouse(0,0,4,keypadW%,16) e% � 422:�mouse(0,0,4,keypadW%,17) f% � 392:�mouse(0,0,4,keypadW%,18) g � 384:�print_this h � 400:�match i! � 416:�open_window(printW%) j) :ș "Wimp_ProcessKey",key_pressed% k� l Ȏ chartype%(Fieldnumber%) � m" � 2,4:ș "OS_Byte",202,0,239 n :ș "OS_Byte",202,16,111 o� pș "OS_Byte",118 qș "OS_Byte",15,0 r� s: t� �dbox_press(ok%) uȎ key_pressed% � vC � 13:� �next_writeable(wi%,ic%,1,1)=� � �mouse(0,0,4,wi%,ok%) w3 � 27:�close_window(wi%):�set_caret(mainW%,-1) x+ � 398:f%=�next_writeable(wi%,ic%,1,0) y, � 399:f%=�next_writeable(wi%,ic%,-1,0) z) ș "Wimp_ProcessKey",key_pressed% {� |� }: ~� �datadic_press � icons% �icons%=Rows%*(TabFields%+1) �Ȏ key_pressed% � � � 13: �2 � ic%<icons%-1 � �set_caret(datadicW%,ic%+1) � � 398: �H � ic%<icons%-TabFields%-1 � �set_caret(datadicW%,ic%+TabFields%+1) � � 399: �B � ic%>=TabFields%+1 � �set_caret(datadicW%,ic%-TabFields%-1) �) :ș "Wimp_ProcessKey",key_pressed% �� �� �: �� �create_press � Ȏ � � �= � �shaded(wi%,29):� � �shaded(wi%,18) � �dbox_press(18) �- :� � �shaded(wi%,29) � �dbox_press(29) �� �� �: �� �match_press �Ȏ key_pressed% � �" � 13:�mouse(0,0,4,matchW%,1) �F � 27:�close_window(matchW%):ș "Wimp_SetCaretPosition",mainW%,-1 � � 384:�print_this �) :ș "Wimp_ProcessKey",key_pressed% �� �� �: �� �menu_select �� handle%,P%,Q%,I% �&choice1%=!block%:choice2%=block%!4 �(choice3%=block%!8:choice4%=block%!12 �P%=1 �5ș "Wimp_DecodeMenu",,menuhandle%,block%,choices% �� I%=1 � 4 � Q%=�$choices%,".",P%+1) �& choice$(I%)=�$choices%,P%,Q%-P%) � P%=Q%+1 �� I% �$ș "Wimp_GetPointerInfo",,block% �redo%=block%!8=1 �Ȏ menuhandle% � � � menu%(0): � Ȏ choice$(1) � �8 � "Help":ș "Wimp_StartTask","<Pbase$Dir>.!Help" �G � "Save choices":�save_choices("<Pbase$Dir>.Resources.Choices") �J � "Default choices":�get_choices("<Pbase$Dir>.Resources.Defaults") � � "Utilities": � Ȏ choice$(2) � � � "New primary key": � $KeyTitle%=choice$(2) �- keyfunc$=choice$(2):�set_keydata(0) � �shade_key_icons(�) � � (present% � 2)=2 � �/ �select(keyW%,8):�deselect(keyW%,9) �; �icon_bit(22,keyW%,8,�):�icon_bit(22,keyW%,9,�) � � �/ �select(keyW%,9):�deselect(keyW%,8) �; �icon_bit(22,keyW%,8,�):�icon_bit(22,keyW%,9,�) � � �4 �set_height(keyW%,700):�set_caret(keyW%,2) � � "New record format": �! �close_window(reformW%) � � �confirm(�msg(28)) � � reform$="Reformat" �. $RefmTitle%="Change record format" �% �set_height(reformW%,220) � � � � "Adjust format": � �adjust_on(�) � �display(key%,-1) �5 �alter_flags(&17016731,&07006535,&1700653B) � � "Merge database": �! �close_window(reformW%) � reform$="Merge" �& $RefmTitle%="Merge database" �# �set_height(reformW%,360) � � "Balance index": � Ȏ choice$(3) � � � "Automatic": � � choice4%=0 � �! �set_autobalance(�) �8 � �set_autobalance(� �ticked(menu%(21),0)) � � �( � "Right now":�balance(key%) � � � � "Print index": � Ȏ choice$(3) � � � "Complete": �) �print_tree(key%,file%,"ALL") � � "Totals only": �, �print_tree(key%,file%,"TOTALS") � � �5 � "Find duplicates":�duplicates(key%,file%) �C � "Warn of duplicates":dup%=� dup%:�tick(menu%(3),8,dup%) � � �# � "Close database":�exit(0) �% � "Abandon database":�exit(1) � � "Quit":quit%=� � � � � menu%(1): � Ȏ choice$(1) � � � "CSV options" � $CSVTitle%=choice$(1) � �icon_bit(22,csvW%,0,�) �6 !block%=csvW%:ș "Wimp_GetWindowState",,block% �- block%!4=oldx%:block%!12=block%!4+390 �8 block%!8=200:block%!16=block%!8+420:block%!28=-1 �$ ș "Wimp_OpenWindow",,block% � � "Miscellaneous": � Ȏ choice$(2) � �0 � "Set passwords":�open_window(passW%) �9 � "Edit template":template%=1:�display(key%,-1) �0 � "Save indices":�set_auto(2-choice3%) � � � � "Current key": �1 $KeyTitle%=choice$(1):keyfunc$=choice$(1) � �set_keydata(key%) �2 �shade_key_icons(�):�set_height(keyW%,590) � � "Print": � Ȏ choice$(2) � � � "Match":�match �' � "Show resources":*Resources �B � "Options":�open_window(printW%):�set_caret(printW%,16) � � "Save options": �5 $SaveName%=$database%+".PrintRes.PrintOpts" �6 savefunc$=choice$(2):�save_click(saveW%,2,4) � � "Save query": 1 $SaveName%=$database%+".PrintRes.Query" 6 savefunc$=choice$(2):�save_click(saveW%,2,4) � "Save selection": 5 $SaveName%=$database%+".PrintRes.Selection" 6 savefunc$=choice$(2):�save_click(saveW%,2,4) & � "Show jobs done":*JobsDone . � "Clear selection":�clear_selection $ � "Select all":�select_all :�match � � "Validation": Ȏ choice$(2) � F � "Create table":�open_window(tableW%):�set_caret(tableW%,0) � "Display table": � choice3%>=0 � ! Tablenumber%=choice3% % �show_table(Tablenumber%) � & � "Show table files":*Tables ( � "Validate input":�val_on_off Q � "Show relations":relations%=� relations%:�tick(menu%(2),4,relations%) � F � "Show keypad":� �selected(passW%,9) � �open_window(keypadW%) = � "Save choices":�save_choices($database%+".Choices") % � "Undo changes":�restore_rec 8 � "Help":ș "Wimp_StartTask","<Pbase$Dir>.!Help" : Ȏ choice$(2) � � "Index field": 3 $KeyTitle%=choice$(2):keyfunc$=choice$(2) 1 �deselect(keyW%,20):�shade_key_icons(�) 4 �set_height(keyW%,590):�set_caret(keyW%,2) = � "Analyse index":�analyse(�is_a_key(Fieldnumber%)) !) � "Analyse months":�analyse(-1) "0 � "Link to table":�open_window(linkW%) # � "Start editing": $) starthere%=field%(Fieldnumber%) %3 � Access% � �set_caret(mainW%,starthere%) &[ � "Clear contents":�delete_blob(Fieldnumber%,object$,mainW%,field%(Fieldnumber%)) '( � chartype%(Fieldnumber%)=40 � (Q �show_picture(Fieldnumber%):�redraw_icon(mainW%,field%(Fieldnumber%)) ) � *0 � "Warn of delete":delwarn%=� delwarn% +% �tick(menu%(10),7,delwarn%) ,7 � "Undo changes":�restore(Fieldnumber%,"",-1) - � . � / � menu%(9): 0 Ȏ choice$(1) � 1F � "Design field":�open_window(createW%):�set_caret(createW%,4) 2 � "Save form file": 3% $SaveName%=$database%+".Form" 44 savefunc$=choice$(1):�save_click(saveW%,2,4) 5 � "Default database": 6& �save_form($database%+".Form") 7 �get_it_in($database%) 8 � �first_field>0 � 9 �default_key :% �defaults($database%,100,0) ; � �softerror("",35) < � = � "Primary key": > $KeyTitle%=choice$(1) ? keyfunc$=choice$(1) @" case%(0)=�:�set_keydata(0) A0 �deselect(keyW%,20):�shade_key_icons(�): B2 �set_height(keyW%,590):�set_caret(keyW%,2) C � "Quit design": D �adjust_on(�) E& �save_form($database%+".Form") F �get_it_in($database%) G � H � menu%(17): I" T%=�table_number($menu%(17)) J Ȏ choice$(1) � K � "Save": L6 $SaveName%=$database%+".ValTables."+table$(T%) M6 savefunc$="Save table":�save_click(saveW%,2,4) N" � "Clear":�clear_table(T%) O" � "Print":�print_table(T%) P � "Sort":�sort_table(T%) Q/ � "Undo all":�restore_table(T%,tablen%) R) � "Undo change":�restore_tabfield S � T � menu%(18): U Ȏ choice$(1) � V � "Save as text": W/ $SaveName%=$database%+".PrintJobs.List" X4 savefunc$=choice$(1):�save_click(saveW%,2,4) Y � "Sort":�sort_list Z � "Scrap":�lose_list [ � \ � menu%(15): ] Ȏ choice$(1) � ^ � "Comma":sep$="," _ � "TAB":sep$=�(9) ` � "CR":sep$=�(13) a � "LF":sep$=�(10) b sep$=$Delim% c � d) �tick_one(menuhandle%,0,3,choice1%) e! $�text(csvW%,14)=choice$(1) f �redraw_icon(csvW%,14) g � menu%(20): h Ȏ choice$(1) � i � "CR":term$=�(13) j � "LF":term$=�(10) k# � "CR LF":term$=�(13)+�(10) l# � "LF CR":term$=�(10)+�(13) m# � "CR CR":term$=�(13)+�(13) n# � "LF LF":term$=�(10)+�(10) o :term$=$Termin% p � q) �tick_one(menuhandle%,0,5,choice1%) r! $�text(csvW%,15)=choice$(1) s �redraw_icon(csvW%,15) t9 � menu%(8),menu%(11),menu%(14),menu%(16),menu%(19): u$ fieldtype%=firsttype%+choice1% v< �tick_one(menuhandle%,0,lasttype%-firsttype%,choice1%) w �update_box x � menu%(5): y Tablenumber%=choice1% z& $Tablename%=table$(Tablenumber%) {2 �tick_one(menuhandle%,0,LastTable%,choice1%) | �redraw_icon(linkW%,0) } � fieldmenu%: ~ Ȏ fieldfunc$ � � "match": � Match_tag%=choice1%+1 �B $�text(matchW%,3)=Tag$(Match_tag%):�redraw_icon(matchW%,3) �2 �tick_one(fieldmenu%,0,fields%-1,choice1%) � � "first": �# � keyfunc$<>"Current key" � �* � �ticked(fieldmenu%,choice1%) � �8 Keyfld0%=0:$F1dkey%="":�redraw_icon(keyW%,0) �( �tick(fieldmenu%,choice1%,�) � � � Keyfld0%=choice1%+1 �9 $F1dkey%=Tag$(Keyfld0%):�redraw_icon(keyW%,0) �6 �tick_one(fieldmenu%,0,fields%-1,choice1%) � � � � � � "second": �# � keyfunc$<>"Current key" � �* � �ticked(fieldmenu%,choice1%) � �8 Keyfld1%=0:$F2dkey%="":�redraw_icon(keyW%,1) �( �tick(fieldmenu%,choice1%,�) � � � Keyfld1%=choice1%+1 �9 $F2dkey%=Tag$(Keyfld1%):�redraw_icon(keyW%,1) �6 �tick_one(fieldmenu%,0,fields%-1,choice1%) � � � � � � � :�special_select �� �� � quit% � �5 � redo% � �show_menu(menuhandle%,menux%,menuy%) �� �� �: �#� �init_drag(wi%,ic%,dragtype%) ��getscreensize(W%,H%) �!block%=wi% �$ș "Wimp_GetWindowState",,block% �ysize%=block%!16-block%!8 �x%=block%!4-block%!20 �y%=block%!16-block%!24 �block%!4=ic% �"ș "Wimp_GetIconState",,block% �block%!8+=x%:minx%=block%!8 �!block%!12+=y%:miny%=block%!12 �!block%!16+=x%:maxx%=block%!16 �!block%!20+=y%:maxy%=block%!20 �� dragtype%=6 � �5 block%!24=2*minx%-maxx%:block%!36=2*maxy%-miny% � � block%!24=0:block%!36=H% �� �block%!28=0 �block%!32=W% � !block%=0 �block%!4=dragtype% �dragging%=� �Ȏ wi% � � � saveW%,savesubW%: � � RISCOS3 � �M � wi%=saveW% � sprite$=�$SaveSprite%,2,8) � sprite$=�$SubSprite%,2,8) �5 ș "DragASprite_Start",&C5,1,sprite$,block%+8 �# � ș "Wimp_DragBox",,block% � � � : � ș "Wimp_DragBox",,block% �� �� wi%=mainW% � ficon%=ic% �� �: �� �end_drag(start%,end%) � � wi%,ic% �dragging%=� �datasize%=end%-start% �$ș "Wimp_GetPointerInfo",,block% �wi%=block%!12:ic%=block%!16 �7block%!32=block%!4:block%!28=block%!0:block%!24=ic% �block%!20=wi%:block%!16=1 �3block%!12=0:block%!36=datasize%:block%!40=Type% �� design% � � �adjust_field(dragbutt%) � � �% � Filename$<>"" � wi%<>mainW% � �% $(block%+44)=�leaf(Filename$) � !block%=60 �/ ș "Wimp_SendMessage",17,block%,wi%,ic% � ramptr%=start% � ș "Wimp_CreateMenu",,-1 � � �� �� �: �� �encrypt(S$,Z%) �� I%,R% �R%=�(-12817) �� I%=1 � �(S$) � R%=�(58)-1 � � � Z% � R%=58-R% �/ �S$,I%,1)=�((�(�S$,I%,1))-65+R%) � 58+65) �� I% �=S$ �: �� �leaf(s$) � s2$="" �ȕ �s$)<>"." � s$<>"" � s2$=�s$)+s2$ � s$=�s$) �� �dbasepath$=�s$) �=s2$ �: �K� Message handling ---------------------------------------------------- �: �� �not_acknowledged �Ȏ block%!16 � � � 5: �$ � DataOpen failed, so run file �& � block%!8=Impref% � Imp_wait%=� �& ș "Wimp_StartTask",$(block%+44) � � 7: � � RAMTransmit failed �) � � merging% � � moan_err%,�msg(39) � � 3: �6 � DataLoad failed, so delete scrapfile (if ours) �1 � block%!8=myref% � ș "OS_File",6,block+44 � � moan_err%,�msg(39) �# � &80142:� moan_err%,�msg(90) �� �� �: � �message � task%,ref%,myref% task%=block%!4:ref%=block%!8 Ȏ block%!16 � � 0:quit%=� � 1:� ### DataSave ### % � task%<>mytask% � present%=7 � datasize%=block%!36 Ȏ block%!40 � � &fff,&ff9,&aff,&dfe: myref%=ref% > block%!0=256:block%!12=ref%:block%!16=2:block%!36=-1 * $(block%+44)="<Wimp$Scrap>"+�(0) / ș "Wimp_SendMessage",17,block%,task% � � � 2:� ### DataSaveAck ### 1 �save(�getstr(block%+44),Type%,Start%,End%) 8 myref%=ref%:block%!12=ref%:block%!16=3:!block%=256 + ș "Wimp_SendMessage",18,block%,task% ș "Wimp_CreateMenu",,-1 � 3:� ### DataLoad ### , myref%=block%!12:f$=�getstr(block%+44) �get_it_in(f$) 5 � myref%<>0 � ș "OS_CLI","Remove <Wimp$Scrap>" � 4:� ### DataLoadAck ### 8 � block%!12=Impref% � � merging% � �ready_to_merge < � 5:� ### DataOpen - response to file double click ### Ȏ block%!40 � � &7f1,&7f3,&7f4,&7f5: � present%=7 � 0 block%!0=20:block%!12=ref%:block%!16=4 ) ș "Wimp_SendMessage",17,block% !( �get_it_in(�getstr(block%+44)) " � # � &2000: $ � kill% � present%=0 � %* f$=�getstr(block%+44)+".Indices" & ș "OS_File",5,f$ � d% ' � d%=2 � (2 block%!0=20:block%!12=ref%:block%!16=4 )+ ș "Wimp_SendMessage",17,block% ** �get_it_in(�getstr(block%+44)) + � , � - � .L � 6:� savefunc$<>"Save list" � savefunc$<>"Export CSV" � �ram_transmit // � &502:�help_message(block%!32,block%!36) 09 � &400C2:�getscreensize(ScreenWidth%,ScreenHeight%) 1# � &400C0:�message_menu_select 2+ � &80140:� ### PrintFile - ignore ### 3� 4� 5: 6� �ram_transmit 7A� datasize%>block%!24 � tosend%=block%!24 � tosend%=datasize% 8Fș "Wimp_TransferBlock",mytask%,ramptr%,block%!4,block%!20,tosend% 9block%!24=tosend% :datasize%-=tosend% ;ramptr%+=tosend% <block%!12=block%!8 =block%!16=7 >:ș "Wimp_SendMessage",18+(datasize%=0),block%,block%!4 ?� @: A� �message_menu_select B� P%,Q%,I% Ckeyfunc$="":savefunc$="" D5handle%=block%!20:xmin%=block%!24:ymax%=block%!28 EP%=1 F8ș "Wimp_DecodeMenu",,menuhandle%,block%+32,choices% G� I%=1 � 4 H Q%=�$choices%,".",P%+1) I& choice$(I%)=�$choices%,P%,Q%-P%) J P%=Q%+1 K� I% LȎ menuhandle% � M � menu%(0): N Ȏ choice$(1) � O � "New database": P $SaveName%="!DataBase" Q2 $SaveSprite%="snew_appl;Pptr_hand,12,8;B3" R savefunc$=choice$(1) S � T � menu%(1): U Ȏ choice$(1) � V6 � "Information":�count(key%,RU%):�update_stats W � "Print": X Ȏ choice$(2) � Y � "Save options": Z5 $SaveName%=$database%+".PrintRes.PrintOpts" [4 $SaveSprite%="sfile_7f5;Pptr_hand,12,8;B3" \ � "Save query": ]1 $SaveName%=$database%+".PrintRes.Query" ^4 $SaveSprite%="sfile_7f4;Pptr_hand,12,8;B3" _ � "Save selection": `5 $SaveName%=$database%+".PrintRes.Selection" a4 $SaveSprite%="sfile_7f3;Pptr_hand,12,8;B3" b � c savefunc$=choice$(2) d � "Miscellaneous": e Ȏ choice$(2) � f � "Batch delete": gC �select(moveW%,2):�deselect(moveW%,1):�deselect(moveW%,0) h+ � � common% � $�text(moveW%,7)="" i � "Colours": j ncol%()=fcol%() k � I%=0 � 6 l. �set_icon_cols(colW%,I%,ncol%(I%)) m � I% n8 !block%=colW%:ș "Wimp_GetWindowState",,block% o# width%=block%!12-block%!4 p/ block%!4=xmin%:block%!12=xmin%+width% q0 block%!8=ymax%-height%:block%!16=ymax% r � s � "Export subset": tA export%=�:$SubTitle%="Export subset":savefunc$=choice$(1) uV $SubName%=$database%+".PrintJobs.!Subset":� � common% � $�text(savesubW%,0)="" v1 $SubSprite%="snew_appl;Pptr_hand,12,8;B3" w � "Export CSV": x9 $SubTitle%="Export CSV file":savefunc$=choice$(1) y: � sep$="," � t$="dfe":f$="CSV" � t$="fff":f$="Sep" zY $SubName%=$database%+".PrintJobs."+f$+"file":� � common% � $�text(savesubW%,0)="" {4 $SubSprite%="sfile_"+t$+";Pptr_hand,12,8;B3" | � } � menu%(9): ~ Ȏ choice$(1) � � "Save form file": �% $SaveName%=$database%+".Form" �2 $SaveSprite%="sfile_7f2;Pptr_hand,12,8;B3" � savefunc$=choice$(1) � � � � menu%(17): � Ȏ choice$(1) � � � "Save": �& T%=�table_number($menuhandle%) �6 $SaveName%=$database%+".ValTables."+table$(T%) �2 $SaveSprite%="sfile_7f1;Pptr_hand,12,8;B3" � savefunc$="Save table" � � � � menu%(18): � Ȏ choice$(1) � � � "Save as text": �/ $SaveName%=$database%+".PrintJobs.List" �2 $SaveSprite%="sfile_fff;Pptr_hand,12,8;B3" � � � savefunc$=choice$(1) �� �0ș "Wimp_CreateSubMenu",,handle%,xmin%,ymax% �� �: �� �help_message(wi%,ic%) �Ȏ wi% � � � -2:�send_help(75) � � infoW%:�send_help(76) � � miscW%:�send_help(77) � � mainW%: � � � design% � ic%>=0 � � F%=(ic%+1) � 2 � Ȏ chartype%(F%) � �A � 0,1,2,3,4,5,6,7,8,36,39,41,42,43,44,45:�send_help(78) �+ :ș "Interface_SendHelp",,block% � � � � � � pselectW%:�send_help(79) � � relateW%:�send_help(80) � � listW%:�send_help(81) � � datadicW%:�send_help(82) � � saveW%:�send_help(83) � � savesubW%:�send_help(84) � � accessW%:�send_help(85) � � mergeW%:�send_help(86) �' :ș "Interface_SendHelp",,block% �� �� �: �� �send_help(M%) �!block%=256 �block%!12=ref% �block%!16=&503 �$(block%+20)=�msg(M%) �,ș "Wimp_SendMessage",17,block%,block%!4 �� �: �: �J� File saving -------------------------------------------------------- �: �� �save_all_tables �� T% �ș "Hourglass_On" �ȕ T%<=LastTable% �, f$=$database%+".ValTables."+table$(T%) �E $TabTitle%=�table_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) �7 Start%=!tabanchor%(T%):End%=Start%+160+Rows%*Rec% � �save(f$,&7f1,Start%,End%) � T%+=1 �7 ș "Hourglass_Percentage",T%*100 � (LastTable%+1) �� �ș "Hourglass_Off" �� �: �� �save_options �� F,I%,ic% �F=�(f$) �� +0 �� I%=1 � 13 � � ic% � �#F,�selected(printW%,ic%) �� I% �� I%=1 � 9 � � ic% � �#F,$�text(printW%,ic%) �� I% �� I%=1 � 7 � � ic% � �#F,�selected(printW%,ic%) �� I% �� I%=1 � 3 � � ic% � �#F,�selected(labelW%,ic%) �� I% �� I%=1 � 4 � � ic% � �#F,$�text(labelW%,ic%) �� I% �� I%=1 � 3 � � ic% � �#F,�selected(labelW%,ic%) �� I% ��close_file(F) �ș "OS_File",18,f$,&7f5 �: �8� 1,2,4,6,7,8,23,24,25,26,38,39,41:REM Radio buttons �4� 15,16,17,18,30,32,34,43,45:REM Writable fields �.� 10,11,12,19,29,40,42:REM Option switches � � In Label Definition window �� 0,1,2:REM Radio buttons �$� 4,6,10,12:REM Writeable fields �"� 11,13,16:REM Option switches �: �� �: �� �save(f$,ft%,start%,end%) �Ȏ ft% � � � 0: � leaf$=�leaf(f$) �D � �leaf$,1)<>"!" � leaf$="!"+�leaf$,9):f$=dbasepath$+"."+leaf$ � ș "OS_File",8,f$ �" ș "OS_File",8,f$+".Indices" �$ ș "OS_File",8,f$+".ValTables" �# ș "OS_File",8,f$+".PrintRes" �$ ș "OS_File",8,f$+".PrintJobs" �I ș "OS_CLI","Copy <PBase$Dir>.Resources.Temp.!Run "+f$+".!Run ~C~V" �K ș "OS_CLI","Copy <PBase$Dir>.Resources.Temp.!Boot "+f$+".!Boot ~C~V" �H ș "OS_CLI","Copy <PBase$Dir>.Resources.chkspr "+f$+".chkspr ~C~V" �J ș "OS_CLI","Copy <PBase$Dir>.Resources.Colours "+f$+".Colours ~C~V" - �copy_database_spritefile(f$,�leaf(f$)) Ȏ � � $ � export%:�export_subset(f$) � csvconv%: � !formanchor%=0 � 4 �extend_named_sliding_block(formanchor%,0) Fptr%=!formanchor% " fields%=0:Fieldnumber%=0 " fields%=�get_form(Fptr%) � : �lit(menu%(0),1,�) �get_it_in(f$) �open_window(mainW%) � !formanchor%=0 � 4 �extend_named_sliding_block(formanchor%,0) Fptr%=!formanchor% " fields%=0:Fieldnumber%=0 � � � 1: ș "OS_CLI","CDir "+f$: logpath$=f$ �close_window(saveW%) 2 � &7f2:�save_form(f$):�get_it_in($database%) � &7f5:�save_options � &dfe:�write_csv(f$) : Ȏ � � � startlog%: �close_log logpath$=f$ loghandle%=�(logpath$) ! �#loghandle%,$database% "3 �#loghandle%,"Password level used: "+�(pw%) #& �#loghandle%,"Log started "+�$ $ �#loghandle%,�36,"=") % startlog%=� & � savetofile%: ' texthandle%=�(f$) (" �do_it(Search$,displayed%) ) : *+ ș "OS_File",10,f$,ft%,,start%,end% +) �scrap_sliding_block(saveanchor%) , � -� .warn%=� /� 0: 1� �getstr(p%) 2� p$ 3 ȕ ?p%>31 4 p$+=�(?p%) 5 p%+=1 6� 7=p$ 8: 9L� Validation tables ---------------------------------------------------- :: ;� �create_table <� I%,title$,Rec% =Ȏ b% � %111 � > � 4: ? Ȏ ic% � @ � 26: A � LastTable%=MaxTabs% � B& �softerror(�(MaxTabs%+1),32) C � D LastTable%+=1 E! Tablenumber%=LastTable% F! name$=$�text(tableW%,0) G" table$(LastTable%)=name$ H$ Rows%=�($�text(tableW%,1)) I) TabFields%=�($�text(tableW%,2)) J � I%=0 � TabFields% K6 tabfieldlen%(I%)=�($�text(tableW%,I%*2+4)) L$ Rec%+=tabfieldlen%(I%)+1 M � I% N tablen%=160+Rows%*Rec% OO �create_named_sliding_block(tabanchor%(LastTable%),(tablen%+3) � � 3) P) tabptr%=!tabanchor%(LastTable%) Q2 $tabptr%=�(Rows%):tabptr%+=�($tabptr%)+1 R7 $tabptr%=�(TabFields%):tabptr%+=�($tabptr%)+1 S � I%=0 � TabFields% T? $tabptr%=�(tabfieldlen%(I%)):tabptr%+=�($tabptr%)+1 U( head$=$�text(tableW%,I%*2+3) V; title$+=head$+�tabfieldlen%(I%)-�(head$)+2," ") W � I% X= $tabptr%=title$:tabptr%=!tabanchor%(LastTable%)+160 Y � row%=1 � Rows% Z � I%=0 � TabFields% [5 $tabptr%="":tabptr%+=tabfieldlen%(I%)+1 \ � I% ] � row% ^! �show_table(LastTable%) _! Tablenumber%=LastTable% ` TabsLoaded$+=","+name$ a+ � menu%(5)>0 � menu_ptr%=menu%(5) b: menu%(5)=�create_menu(menu_ptr%,140,TabsLoaded$) c= ptr%=menu%(2)+52:ptr%!4=menu%(5):�lit(menu%(2),1,�) d � e �close_window(tableW%) f � g� h� i: j� �clear_table(T%) k� �confirm(�msg(47))=� � � l-� R%,F%,ind%,Rows%,TabFields%,start%,Rec% m;T$=�table_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) n#start%=!tabanchor%(T%)+160-Rec% o� R%=1 � Rows% p ind%=start%+R%*Rec% q � F%=0 � TabFields% r) $ind%="":ind%+=tabfieldlen%(F%)+1 s � F% t� R% u�show_table(T%) v� w: x� �show_table(T%) y$� ind%,start%,iflags%,I%,pos%,p$ z� T%<0 � � {�delete_icons(datadicW%,0) |name$=table$(T%) }$Tablename%=name$ ~$menu%(17)=name$ Aș "OS_File",5,$database%+".ValTables."+name$ � d%,,,,tablen% �6�extend_named_sliding_block(undoanchor%,tablen%+1) �Rș "Wimp_TransferBlock",mytask%,!tabanchor%(T%),mytask%,!undoanchor%,tablen%+1 �C$TabTitle%=�table_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) �ind%=!tabanchor%(T%)+160 �iflags%=&07003531 �ș "Hourglass_On" �� row%=1 � Rows% � pos%=80 � � I%=0 � TabFields% �v R%=�create_icon(datadicW%,pos%,-row%*36,(tabfieldlen%(I%)+1)*16,32,iflags%,"",ind%,writep%,tabfieldlen%(I%)+1) �% pos%+=(tabfieldlen%(I%)+2)*16 � ind%+=tabfieldlen%(I%)+1 � � I% �0 ș "Hourglass_Percentage",row%*100 � Rows% � � row% �ș "Hourglass_Off" �p$=printrel$(T%) �� p$<>"" � � � I%=1 � �(p$) �' �select(datadicW%,�(�p$,I%,1))) � � I% �� �"!block%=0:block%!4=-Rows%*36-4 �%block%!8=(Rec%+10)*16:block%!12=0 �(ș "Wimp_SetExtent",datadicW%,block% �!block%=datadicW% �$ș "Wimp_GetWindowState",,block% �#block%!12=block%!4+(Rec%+10)*16 �� Rows%<20 � �# block%!16=block%!8+Rows%*36+4 � � � block%!16=block%!8+36*20+4 �� � ș "Wimp_OpenWindow",,block% ��redraw(datadicW%) �'� Access% � �set_caret(datadicW%,0) �� �: �� �restore_table(T%,L%) �Mș "Wimp_TransferBlock",mytask%,!undoanchor%,mytask%,!tabanchor%(T%),L%+1 ��redraw(datadicW%) �� �: �� �restore_tabfield �� source%,dest% �?ș "Wimp_GetCaretPosition",,block%:wi%=!block%:ic%=block%!4 �� wi%=datadicW% � � dest%=�text(datadicW%,ic%) �: source%=!undoanchor%+dest%-!tabanchor%(Tablenumber%) � $dest%=$source% �! �redraw_icon(datadicW%,ic%) �� �� �: �� �sort_table(T%) �?title$=�table_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) �!ind%=!tabanchor%(T%)+160-Rec% �� row%=0 � Rows%-1 � ind%+=Rec% � block%!(row%*4)=ind% � � $ind%="" � $ind%="~" � � row% �Sș "OS_HeapSort",Rows%,(block% � (1<<30) � (1<<31)),4,,!tabanchor%(T%)+160,Rec% �!ind%=!tabanchor%(T%)+160-Rec% �� row%=0 � Rows%-1 � ind%+=Rec% � � $ind%="~" � $ind%="" � � row% ��redraw(datadicW%) �� �: �� �print_table(T%) �� printing% � indexing% � � �(� start%,ptr%,Line$,title$,rowsused% ��read_print_options �format$="horiz" �?title$=�table_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) �!LenLine%=Lmargin%+�(title$)+2 �0Heading$=margin$+title$+�Rec%-�(title$)," ") �7�extend_named_sliding_block(lineanchor%,LenLine%+4) �I�extend_named_sliding_block(headanchor%,LenLine%+4):pos%=!headanchor% �7�heap_store(headanchor%,LenLine%,0,pos%,0,Heading$) �Title$="Validation table" �Title1$=table$(T%) �Title2$="" �reportdest$="Window" ��close_window(datadicW%) �Count%=0 ��list_head(0) �ș "Hourglass_On" �� I%=1 � Rows% �% start%=!tabanchor%(T%)+160-Rec% � Line$=margin$ � ptr%=start%+I%*Rec% � � J%=0 � TabFields% �D � $ptr%<>"" � Line$+=$ptr%+�tabfieldlen%(J%)-�($ptr%)+2," ") � ptr%+=tabfieldlen%(J%)+1 � � J% � � Line$<>margin$ � � rowsused%+=1 �D $(!lineanchor%)=Line$:�list_line(-1,lineanchor%,�(Line$),32) � � �. ș "Hourglass_Percentage",I%*100 � Rows% �� I% �ș "Hourglass_Off" ��rule_off(45) �S$=margin$+�(Rows%)+" rows" �:$(!lineanchor%)=S$:�list_line(-1,lineanchor%,�(S$),32) �#S$=margin$+�(rowsused%)+" used" �:$(!lineanchor%)=S$:�list_line(-1,lineanchor%,�(S$),32) ��rule_off(45) ��screen_list �pitch$=�pitch("0") ��lit(menu%(18),1,�) �� �: �� �table_number(N$) �� T%,P% �� N$="" �=-1 � T%=-1 �� � T%+=1 �#� table$(T%)=N$ � T%>LastTable% �� T%>LastTable% �=-1 �=T% �: �*� �table_info(T%,� R%,� F%,� RL%,L%()) �� P%,I% �P%=!tabanchor%(T%) R%=�($P%):P%+=�($P%)+1 F%=�($P%):P%+=�($P%)+1 RL%=0 � I%=0 � F% L%(I%)=�($P%):P%+=�($P%)+1 RL%+=L%(I%)+1 � I% =$P% : � �table_field(F%,L%()) � I%,P% ȕ I%<F% P%+=L%(I%)+1 I%+=1 � =P% : � �drag_table(f$) � pos%,name$,d% Tablenumber%=-1 name$=�leaf(f$) � �TabsLoaded$,name$)>0 � � %ș "OS_File",5,f$ � d%,,,,tablen% � LastTable%=MaxTabs% � 4 � �extratabs$,name$)=0 � extratabs$+=name$+"," � LastTable%+=1 K �create_named_sliding_block(tabanchor%(LastTable%),(tablen%+3) � � 3) 1 ș "OS_File",255,f$,!tabanchor%(LastTable%) table$(LastTable%)=name$ Tablenumber%=LastTable% TabsLoaded$+=","+name$ ' � menu%(5)>0 � menu_ptr%=menu%(5) !6 menu%(5)=�create_menu(menu_ptr%,140,TabsLoaded$) "9 ptr%=menu%(2)+52:ptr%!4=menu%(5):�lit(menu%(2),1,�) # � $� %� &: '� �link_to_table (� icon% )Ȏ b% � %111 � * � 2,4: + � ic%=13 � ,5 �tick_one(menu%(5),0,LastTable%,Tablenumber%) -+ �show_menu(menu%(5),oldx%+32,oldy%) . � /� 0Ȏ b% � %111 � 1 � 1,4: 2$ � (b% � %111)=4 � z%=1 � z%=-1 3 Ȏ ic% � 4 � 5:�tcycle(z%) 5 � 6:�tcycle(-z%) 6! � 7:�fcycle(z%,fieldnum%) 7" � 8:�fcycle(-z%,fieldnum%) 8 � 11:�fcycle(z%,expand%) 9! � 12:�fcycle(-z%,expand%) : � 9: ; � icon%=10 � 12 <8 �icon_bit(22,linkW%,icon%,�selected(linkW%,9)) = � icon% > � 3: ?" icon%=field%(Fieldnumber%) @1 � �selected(linkW%,4) � $Tablename%<>"" � A4 link$(Fieldnumber%)=$Tablename%+$fieldnum% B/ �set_icon_cols(mainW%,icon%,fcol%(6)) CR � �selected(linkW%,9) � link$(Fieldnumber%)=$expand%+link$(Fieldnumber%) D � E link$(Fieldnumber%)="" F( �set_icon_cols(mainW%,icon%,7) G � H link$(0)="LOADED" I/ � (b% � %111)=4 � �close_window(linkW%) J � K� L� M: N� �tcycle(z%) O� LastTable%=-1 � � PTablenumber%+=z% Q.� Tablenumber%>LastTable% � Tablenumber%=0 R.� Tablenumber%<0 � Tablenumber%=LastTable% S$$Tablename%=table$(Tablenumber%) T�redraw_icon(linkW%,0) U� V: W� �fcycle(z%,column%) XET$=�table_info(Tablenumber%,Rows%,TabFields%,Rec%,tabfieldlen%()) Yfield%=�($column%) Zfield%+=z% ["� field%>TabFields% � field%=0 \"� field%<0 � field%=TabFields% ]$column%=�(field%) ^�redraw_icon(linkW%,2) _�redraw_icon(linkW%,10) `� a: b� �link_status c%� name$,name1$,field$,expand$,ic% dname$=link$(Fieldnumber%) eD� �(name$)<58 � �(name$)<>-1 � expand$=�name$,1):name$=�name$,2) f!field$=�name$):name1$=�name$) g-� (name1$<>"" � �TabsLoaded$,name1$)>0) � h; $Tablename%=name1$:$fieldnum%=field$:$expand%=expand$ i( Tablenumber%=�table_number(name1$) j �select(linkW%,4) k � l Tablenumber%=0 m& $Tablename%=table$(Tablenumber%) n( �deselect(linkW%,4):$fieldnum%="0" o� p� expand$<>"" � q( �select(linkW%,9):$expand%=expand$ r( � �deselect(linkW%,9):$expand%="0" s� t� ic%=10 � 12 u2 �icon_bit(22,linkW%,ic%,�selected(linkW%,9)) v � ic% wI�redraw_icon(linkW%,0):�redraw_icon(linkW%,2):�redraw_icon(linkW%,10) x� y: zK� End of Validation table routines ------------------------------------ {: |� �changes(key%) }� M$,K%,index% ~<Search$=�parse($�text(changeW%,3),�selected(changeW%,5)) New$=$�text(changeW%,1) �%� New$="" � n$="<null>" � n$=New$ �&� New$<>"" � �"+-*/",�New$,1))>0 � � numeric%=� � � numeric%=� �� �K%=�is_a_key(Fieldnumber%) �<� K%=key% � �softerror("",12):ș "Wimp_CreateMenu",,-1:� �b� K%>=0 � M$=" NOTE! Index on this field will NO LONGER BE VALID and will be deleted." � M$="" �)P%=�Title$,". "):Title$=�Title$,P%+2) �L� Title$<>"All records" � Title$=" when "+Title$ � Title$=" for "+Title$ �8Title$="Change "+Fieldname$+" to "+n$+Title$+". "+M$ �� �confirm(Title$)=� � �' subtotal%=�count_recs(key%,zero%) � ș "Hourglass_On" �, dbasehandle%=�($database%+".Database") � P%=�neighbour(key%,top,1) �" �scan_file("P%<>top",key%,5) � �close_file(dbasehandle%) � $Date%(file%)=�date � date%?file%=1 � �display(key%,addr) � ș "Hourglass_Off" � � K%>=0 � � � index%=K% � Keys% �! Index$(K%)=Index$(K%+1) � � index% �, �scrap_sliding_block(keyanchor%(K%)) � Keys%-=1 � � �2 � �selected(passW%,16) � �#loghandle%,Title$ �� �ș "Wimp_CreateMenu",,-1 �� �: �� �is_a_key(F%) �� key%,flag% �flag%=-1 �� key%=0 � Keys% �4 � KF%(key%,0)=F% � KF%(key%,1)=F% � flag%=key% � � key% � =flag% �: �� �read(N%,K%,R%,f$) �� I%,key%,dbasehandle% �"dbasehandle%=�(f$+".Database") �%$Rf%(0)="":field$(0)="":key$()="" � �#dbasehandle%=�(R%)*Length% �� I%=1 � N% � field$(I%)=�#dbasehandle% �C � chartype%(I%)<>40 � chartype%(I%)<>59 � $Rf%(I%)=field$(I%) � Ȏ chartype%(I%) � �8 � 36,37,38:�set_blob_sprite(R%,I%,chartype%(I%)) �! � 39:�show_text_block(I%) � � 40:�show_picture(I%) � � 41,42,43,44,45: �T � field$(I%)=" " � �select(mainW%,field%(I%)) � �deselect(mainW%,field%(I%)) �, � 46:� R%=RA% � $Rf%(I%)=�(nextrec%) �9 � 47:� R%=RA% � �split_link(I%,R$,V$):$Rf%(I%)=R$ �' � 48:� R%=RA% � $Rf%(I%)=$,8) �( � 49:� R%=RA% � $Rf%(I%)=��$,15) �1 � 50:� R%=RA% � $Rf%(I%)=�convert_date(2) �1 � 51:� R%=RA% � $Rf%(I%)=�convert_date(4) �# � 52:� R%=RA% � $Rf%(I%)=�$ �' � 53:� R%=RA% � $Rf%(I%)=��$,3) �) � 54:� R%=RA% � $Rf%(I%)=��$,5,2) �) � 55:� R%=RA% � $Rf%(I%)=��$,8,3) �J � 56:� R%=RA% � M$=��$,8,3):P%=�months$,M$):$Rf%(I%)=�((P%+2) � 3) �* � 57:� R%=RA% � $Rf%(I%)=��$,12,4) � � �� I% � � K% � � � key%=0 � Keys% � key$(key%)=�key(key%) � � key% �� ��close_file(dbasehandle%) �� �: �� �update_calcs(N%) �� design% � � � � I%,C%,L%,F,F$,Form$,S$,SF$ �Form$=update$(N%) �� � Form$=0 � � �� I%=1 � �(Form$)-1 � 2 � F%=�fnum(�Form$,I%,2)) �$ �split_link(F%,real$,visible$) � � � � � � �:� �:�calc_error:� � Ȏ chartype%(F%) � � � 6: �> F=�(real$):F$=�(F):� fix%(F%)>0 � F$=�fix_point(F$,F%) � � 7: � F$=�(real$) �7 � N%=0 � S$=�expand(F$,link$(F%),L%,SF$):F$=SF$ � � � � � �E � �(F$)<=len%(F%) � $Rf%(F%)=F$:�redraw_icon(mainW%,field%(F%)) � �update_calcs(F%) �� I% �� �: �� �calc_error �� calcerror%=� � � �wimp_error(�,�,�,�$) �# � PROCsofterror(calc$(I%),73) � calcerror%=� � � calcerror=� �� �� �; �� �check_change �� F%,flag% �ȕ F%<fields% � flag%=� � F%+=1 � Ȏ chartype%(F%) � �+ � 0,1,2,3,4,5,6,7,8,41,42,43,44,45: �( � $Rf%(F%)<>field$(F%) � flag%=� � � �� �*� flag% � �write(fields%,key%):warn%=� �� �: �� �write(N%,k%) �� key%,newrec%,alter% �%� � Access% � �softerror("",14):� ��close_file(dbasehandle%) �6� template%=2 � �write_dbase(RA%,N%):template%=0:� �PRI$=�key(0) � PRI$<>"" � kl%=KL%(0):val$=�type(0) � key$(0)="" � �insert(�,PRI$,0) � PRI$<>"*Failed*" � newrec%=� � k%=0 � addr=F% � � � PRI$=key$(0) � alter%=� � " � �confirm(�msg(48))=� � alter%=� �delete(key$(0),0) �insert(�,PRI$,0) � k%=0 � addr=F% � � � � � � newrec% � � alter% � � ȕ key%<Keys% key%+=1 KEY$=�key(key%) * � KEY$<>key$(key%) � key$(key%)="" � & kl%=KL%(key%):val$=�type(key%) . � � newrec% � �delete(key$(key%),key%) �insert(�,KEY$,key%) � key%=k% � addr=F% � � $Date%(file%)=�date !date%?file%=1 "(� � newtree% � �write_dbase(REC%,N%) #� newrec% � autobalance% � $ added%+=1 % � added%=balint% � & � key%=0 � Keys% ' �balance(key%) ( � key% ) added%=0 * � +� ,� -: .� �write_dbase(R%,N%) /� I%,F$,dbasehandle%,flag% 0*dbasehandle%=�($database%+".Database") 1�#dbasehandle%=R%*Length% 2� �selected(passW%,16) � 3 � newrec% � 4[ �#loghandle%,"New record: Subfile "+�(file%)+" "+$Rf%(KF%(0,0))+" "+$Rf%(KF%(0,1)) 5( � �#loghandle%,logentry$:flag%=� 6 � 7� 8� I%=1 � N% 9 Ȏ chartype%(I%) � : � 39,40:F$="" ;T � 47:F$=$Rf%(I%):�split_link(I%,R$,V$):S%=�(R$):S%+=1:calc$(I%)=V$+"|"+�(S%) < � 58:F$=�$ = :F$=$Rf%(I%) > � ? �#dbasehandle%,F$ @! � flag% � F$<> field$(I%) � A% � F$="" � D$="<null>" � D$=F$ B5 � field$(I%)="" � S$="<null>" � S$=field$(I%) C1 �#loghandle%,Tag$(I%)+": "+S$+" ---> "+D$ D � E field$(I%)=F$ F� I% G�close_file(dbasehandle%) H� I: J� �split_link(F%,� R$,� V$) K � L$,P%,F LL$=calc$(F%) M Ȏ � � N � �L$,1)="#": O/ P%=�L$,"#",2):V$=�L$,P%+1):R$=�L$,2,P%-2) P � �L$,"|")>0: Q+ P%=�L$,"|"):V$=�L$,P%-1):R$=�L$,P%+1) R :R$="":V$="" S� T� U: V� �key(key%) W=�key2(key%,0) X: Y� �key2(key%,loc%) Z� I%,N%,P%,S%,S$,T$,f0%,f1% [(P%=1:f0%=KF%(key%,0):f1%=KF%(key%,1) \ Ȏ loc% � ] � 0: ^ S$=$Rf%(f0%)+" "+$Rf%(f1%) _ ` S$=F$(f0%)+" "+F$(f1%) a� b� S$=" " �="" c� �S$)<>" " � S$+=" " d� I%=0 � 3 e N%=KW%(key%,I%) f � N%<>0 � P%<>�(S$) � g S%=�S$," ",P%+1) h � S%-P%<N% � N%=S%-P% i T$+=�S$,P%,N%) j P%=S%+1 k � l� I% mT$+=�KL%(key%)-�(T$),"#") nȎ chartype%(f0%) � o$ � 5,51,52:T$=�reverse_date(T$) p� q� case%(key%) �=T$ �=�u(T$) r: s� �u(N$) t� I%,B% u$key=N$ v� I%=0 � �(N$)-1 w B%=key?I% x( � B%>96 � B%<123 � key?I%=B% � 223 y� I% z =$key {: |� �date }� Y$,M$,D$,M%,date$ ~Y$=��$,14,2) D$=��$,5,2) �M$=��$,8,3) �:M%=(�"JanFebMarAprMayJunJulAugSepOctNovDec",M$)+2) � 3 �%� M%<10 � M$="0"+�(M%) � M$=�(M%) �date$=D$+"-"+M$+"-"+Y$ � =date$ �: �� �date(key%) �� !keyanchor%(key%)=0 � � �� I% �� I%=0 � 5 � � date%?I%=1 � �) $(!keyanchor%(key%)+8+9*I%)=�date � $Date%(I%)=�date � � �� I% �� �: �$� �check_date(D$,place%,� date$) �&� I%,D%,M%,Y%,L%,P%,Q%,U$,d$,m$,y$ �L%=�(D$) �� L%=0 �=� �� I%=1 � L% � C$=�D$,I%,1) � � C$<"0" � C$>"9" � � � P%=0 � P%=I% � Q%=I% � � �� I% �g� P%=0 � Q%=0 � �restore(Fieldnumber%," (day, month & year must be separated by non-numeral)",4):=� �D%=�(�D$,P%-1)) �M%=�(�D$,P%+1,Q%-P%-1)) �Y%=�(�D$,Q%+1)) �2� Y%<0 � D%<1 � �restore(Fieldnumber%,"",4):=� �H� M%<1 � M%>12 � �restore(Fieldnumber%," (month out of range)",4):=� � Ȏ � � �0 � Y% � 400=0:U$="312931303130313130313031" �< � Y% � 100<>0 � Y% � 4=0:U$="312931303130313130313031" �% :U$="312831303130313130313031" �� �DM$=�U$,2*M%-1,2) �Q� D%>�(DM$) � �restore(Fieldnumber%," (day out of range - max="+DM$+")",4):=� �"d$=�(D%):� �(d$)=1 � d$="0"+d$ �"m$=�(M%):� �(m$)=1 � m$="0"+m$ �"y$=�(Y%):� �(y$)=1 � y$="0"+y$ �S� �(y$)<>2 � �(y$)<>4 � �restore(Fieldnumber%," (year not 2 or 4 digits)",4):=� �1� �(y$)=4 � len%(Fieldnumber%)<10 � y$=�y$,2) �$date$=d$+datesep$+m$+datesep$+y$ �b� place%=0 � �(date$)>len%(Fieldnumber%) � �restore(Fieldnumber%," (too long for field)",4):=� �Ȏ place% � � � 0: �H $Rf%(Fieldnumber%)=date$:�redraw_icon(mainW%,field%(Fieldnumber%)) � � 1: �9 $�text(keypadW%,27)=date$:�redraw_icon(keypadW%,27) �� �=� �: �� �convert_date(L%) �� d$,m$,y$,M$,M% �d$=��$,5,2) �M$=��$,8,3) �P%=�months$,M$) �M%=(P%+2) � 3 � m$=�(M%):� M%<10 � m$="0"+m$ �y$=��$,16-L%,L%) �=d$+datesep$+m$+datesep$+y$ �: �� �reverse_date(K$) � � sep$ �Ȏ �(K$) � � � 8: � sep$=�K$,3,1) �. K$=�K$,2)+sep$+�K$,4,2)+sep$+�K$,2) �=K$ � � 10: � � �(K$)<100 � � sep$=�K$,3,1) �+ K$=�K$,4)+sep$+�K$,4,2)+sep$+�K$,2) � � � sep$=�K$,5,1) �+ K$=�K$,2)+sep$+�K$,6,2)+sep$+�K$,4) � � �� �=K$ �: �� �seconds(time$,place%) �,� I%,L%,P%,Q%,H%,M%,S%,secs%,h$,m$,s$,C$ �L%=�(time$) �� L%=0 �=0 �� I%=1 � L% � C$=�time$,I%,1) � � C$<"0" � C$>"9" � � � P%=0 � P%=I% � Q%=I% � � �� I% �u� P%=0 � Q%=0 � �restore(Fieldnumber%," (hours, minutes and seconds must be separated by a non-numeral).",94):=-1 �^H%=�(�time$,P%-1)):� H%<0 � H%>23 � �restore(Fieldnumber%," (hours out of range).",94):=-1 �hM%=�(�time$,P%+1,Q%-P%-1)):� M%<0 � M%>59 � �restore(Fieldnumber%," (minutes out of range).",94):=-1 �`S%=�(�time$,Q%+1)):� S%<0 � S%>59 � �restore(Fieldnumber%," (seconds out of range).",94):=-1 �"h$=�(H%):� �(h$)=1 � h$="0"+h$ �"m$=�(M%):� �(m$)=1 � m$="0"+m$ �"s$=�(S%):� �(s$)=1 � s$="0"+s$ �$time$=h$+timesep$+m$+timesep$+s$ �secs%=H%*3600+M%*60+S% �S� place%=0 � $Rf%(Fieldnumber%)=time$:�redraw_icon(mainW%,field%(Fieldnumber%)) � =secs% �: �� �time(secs%) �� H%,M%,S%,h$,m$,s$ �&H%=secs% � 3600:secs%=secs% � 3600 �M%=secs% � 60 �S%=secs% � 60 �"h$=�(H%):� �(h$)=1 � h$="0"+h$ �"m$=�(M%):� �(m$)=1 � m$="0"+m$ �"s$=�(S%):� �(s$)=1 � s$="0"+s$ �=h$+timesep$+m$+timesep$+s$ �: �(� �validate(F%,� TabFields%,� name$) �� � validate% �=� �I� row%,field%,Rows%,Rec%,ind%,eind%,pos%,start%,rel%,exp%,epos%,date$ �S� fix%(F%)>0 � $Rf%(F%)=�fix_point($Rf%(F%),F%):�redraw_icon(mainW%,field%(F%)) �6� chartype%(F%)=3 �=�check_val(calc$(F%),$Rf%(F%)) �5� chartype%(F%)=5 �=�check_date($Rf%(F%),0,date$) �1� chartype%(F%)=8 �=(�seconds($Rf%(F%),0)>=0) �,� $Rf%(F%)=field$(F%) � TabFields%=0 �=� �3name$=link$(F%):Tablenumber%=-1:rel%=TabFields% �"� name$="" � �name$,1)="#" �=� �#field%=�(�name$)):name$=�name$) �Hexp%=-1:� �(name$)<58 � �(name$)<>-1 � exp%=�(name$):name$=�name$,2) �&T%=�table_number(name$):� T%<0 �=� �;T$=�table_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) ,pos%=�table_field(field%,tabfieldlen%()) C� exp%<0 � epos%=pos% � epos%=�table_field(exp%,tabfieldlen%()) #start%=!tabanchor%(T%)+160-Rec% 'ind%=start%+pos%:eind%=start%+epos% � row%+=1 ind%+=Rec%:eind%+=Rec% 3� row%>Rows% � $ind%=$Rf%(F%) � $eind%=$Rf%(F%) O� row%>Rows% � rel%=0 � �restore(F%," ("+name$+")",5):=� � � row%>Rows% �=� ind%=start%+row%*Rec% � I%=0 � TabFields% , rel%(I%)=ind%:ind%+=tabfieldlen%(I%)+1 � I% h� exp%>=0 � expand$=$eind%:� �(expand$)<=len%(F%) � $Rf%(F%)=expand$:�redraw_icon(mainW%,field%(F%)) =row% : � �check_val(C$,N$) � min$,max$,P%,V,ok% ok%=� � N$="" �=ok% � C$<>"" � V=�(N$) P%=�C$,"|") � P%>0 � min$=�C$,P%-1) max$=�C$,P%+1) H � min$<>"" � V<�(min$) � ok%=�:�restore(F%," (min="+min$+")",58) H � max$<>"" � V>�(max$) � ok%=�:�restore(F%," (max="+max$+")",59) � � =ok% : � �restore_rec � F% !� F%=1 � fields% " $Rf%(F%)=field$(F%) #� F% $�redraw(mainW%) %� &: '� �restore(F%,E$,E%) (� E%>=0 � �softerror(E$,E%) )$Rf%(F%)=field$(F%) *#�redraw_icon(mainW%,field%(F%)) +!�set_caret(mainW%,field%(F%)) ,� -: .� �relations(menu%) /%� F%,I%,W%,L%,N$,row%,col%,flags% 0 F%=-1 1&row%=�validate(Fieldnumber%,F%,N$) 2!col%=�(�link$(Fieldnumber%))) 3� row%>0 � 4 �delete_icons(relateW%,0) 5 � I%=0 � F% 67 � I%=col% � flags%=&0B000531 � flags%=&07000531 7 L%=�($rel%(I%)) 8T R%=�create_icon(relateW%,0,-I%*36-36,L%*16+16,32,flags%,"",rel%(I%),-1,L%+1) 9 � L%>W% � W%=L% : � I% ; $RelTitle%=N$ < � menu% � = xmax%=x%-32:ymax%=y% > � ?9 !block%=keypadW%:ș "Wimp_GetWindowState",,block% @) xmax%=block%!12+2:ymax%=block%!16 A � B7 !block%=relateW%:ș "Wimp_GetWindowState",,block% C& width%=W%*16+16:height%=F%*36+36 D+ block%!4=xmax%:block%!12=xmax%+width% E, block%!8=ymax%-height%:block%!16=ymax% F block%!28=-1 G � menu% � H$ ș "Wimp_OpenWindow",,block% I/ ș "Wimp_CreateMenu",,relateW%,x%-32,y% J � K$ ș "Wimp_OpenWindow",,block% L �redraw(relateW%) M � N � �close_window(relateW%) O� P� Q: R� �fix_point(F$,F%) S� F$="" �="" T@%=&01020009+fix%(F%)*256 UF$=�(�(F$)) V@%=&90A W=�F$,len%(F%)) X: Y� �moveto(key%,P%,D%) ZD%=(D%+1) � 2 [� filter% � \# P%=�next_match(P%,D%,Filter$) ] � ^ P%=�neighbour(key%,P%,D%) _. � P%=top � � 7:P%=�neighbour(key%,P%,D%) `� a�display(key%,P%) b=P% c: d� �next_match(P%,D%,S$) e � REC% f*dbasehandle%=�($database%+".Database") g� h P%=�neighbour(key%,P%,D%) i � P%<>top � j REC%=�rec_no(k$,key%,P%) k' �readsmarray(dbasehandle%,REC%) l � m� �(S$)=� � P%=top n � P%=top � �softerror("",38) o�close_file(dbasehandle%) p=P% q: r� �display(key%,P%) s�check_change t-� template%=1 � template%=2 � template%=0 u!� I%,L%,S%,S$,k$,ok%,nextrec% vȎ P% � w � -1: xP keybase%=!keyanchor%(key%):A%=!keybase%:nextrec%=!(keybase%+A%+8+KL%(0)+1) y Ȏ � � z6 � !(keybase%+A%)>0,template%=2,design%=�:ok%=� { : | incr%=�($Increment%) } � incr%>0 � ~+ �change_length(RA%+incr%,�):ok%=� � �softerror("",2) � � � � � � ok% � � Ȏ � � �: � design%:$RecInfo%="Make adjustments to fields" �a � template%=2:$RecInfo%="Enter data which you want to appear by default on new records" �" :$RecInfo%="New record" � � �1 REC%=RA%:�read(fields%,�,REC%,$database%) � � � � top: �/ REC%=RA%:�read(fields%,�,REC%,$database%) �# $RecInfo%="Subfile="+�(file%) �. � � filter% � � 7:$RecInfo%+=". (Empty)" � : � REC%=�rec_no(k$,key%,P%) �& �read(fields%,�,REC%,$database%) � key$(key%)=k$ �K $RecInfo%="Subfile="+�(file%)+". Record="+�(REC%)+". Key="+key$(key%) �� �&L%=�text_length(mainW%,starthere%) �-� Access% � �set_caret(mainW%,starthere%) ��identify_field(starthere%) ��update_calcs(0) �a� �selected(passW%,16) � logentry$="Subfile "+�(file%)+" "+$Rf%(KF%(0,0))+" "+$Rf%(KF%(0,1)) ��redraw(mainW%) �� �: �: �G� -------------------- Icon colours ------------------------------- �: �� �colour(key%,type%) �$�change_field_cols(key%,type%,0) �6� KF%(key%,1)>0 � �change_field_cols(key%,type%,1) �� �: �)� �change_field_cols(key%,type%,fld%) �col%=fcol%(type%*2) �d� type%=0 � key%>0 � (key%=0 � fcol%(0)=&17) � �set_icon_cols(mainW%,desc%(KF%(key%,fld%)),col%) �col%=fcol%(type%*2+1) �7col2%=�get_icon_cols(mainW%,field%(KF%(key%,fld%))) �!� (col2% � %1111)<>fcol%(6) � �g � type%=0 � key%>0 � (key%=0 � fcol%(1)=&07) � �set_icon_cols(mainW%,field%(KF%(key%,fld%)),col%) �� �� �: �� �get_icon_cols(wi%,ic%) �;!block%=wi%:block%!4=ic%:ș "Wimp_GetIconState",,block% �=block%?27 �: �"� �set_icon_cols(wi%,ic%,col%) �D!block%=wi%:block%!4=ic%:block%!8=(col%<<24):block%!12=&FF000000 �"ș "Wimp_SetIconState",,block% �� �: � � �dcolour(wi%,ic%,col%,fb%) �;!block%=wi%:block%!4=ic%:ș "Wimp_GetIconState",,block% �Ȏ fb% � �/ � 0:block%!8=col%<<28:block%!12=&F0000000 �/ � 1:block%!8=col%<<24:block%!12=&0F000000 �� �"ș "Wimp_SetIconState",,block% �� �: �� �read_colours(f$) � � ic% �F=�(f$) �� ic%=0 � 6 � �#F,fcol%(ic%) � � ic% �ncol%()=fcol%() ��close_file(F) �� �: �� �write_colours � � ic% �F=�($database%+".Colours") �� ic%=0 � 6 � �#F,fcol%(ic%) � � ic% ��close_file(F) �� �: �� �find(S$,key%,m%,disp%) � � P%,F%,H%,num%,abort%,cond$ �� � case%(key%) � S$=�u(S$) �� �S$,1)="#" � � �check_change � REC%=�(�S$,2)) � � REC%>=0 � REC%<RA% � �( �read(fields%,�,REC%,$database%) �! S$=key$(key%):H%=1:num%=� �3 �select(keypadW%,25):�deselect(keypadW%,24) �- � �softerror(" ("+S$+")",56):abort%=� � � �� �� abort% �=addr �val$=�type(key%) �� val$="VAL" � � kl%=KL%(key%) � � � P%=�S$," ") � � P%>0 � S$=�S$,P%-1) � kl%=�(S$) �� �P%=�search(S$,key%,1+H%) �%� P%<0 � �selected(keypadW%,25) � � F%=file% � � � file%=(file%+1) � 6 � top=8*file%+LH% � P%=�search(S$,key%,1+H%) � � P%>0 � file%=F% �� �s� val$="VAL" � cond$="VAL($(!keyanchor%(key%)+P%+8))=VAL(S$)" � cond$="LEFT$($(!keyanchor%(key%)+P%+8),kl%)=S$" �matches%=0 � Ȏ � � �$ � P%>=0 � num%:RecF%=�:addr=P% � � P%>=0:RecF%=� � ȕ �(cond$) � P%=�neighbour(key%,P%,0) � � �\ P%=�neighbour(key%,P%,1):addr=P%:� ### Scan back to FIRST match & point addr at it ### � ȕ �(cond$) � matches%+=1 � P%=�neighbour(key%,P%,1) � � �- � num%:�softerror(" (#"+�(REC%)+")",55) ) :� 7:flash%=KF%(key%,0):addr=�(P%) � F$�text(keypadW%,36)=�(matches%)+" found":�redraw_icon(keypadW%,36) !� disp% � �display(key%,addr) =addr : � �get_it_in(filename$) )ș "OS_File",5,filename$ � d%,,ftype% 9ftype%=(ftype%>>8) � &FFF:wi%=block%!20:ic%=block%!24 Ȏ ftype% � t � &7f1:� LastTable%=MaxTabs% � �softerror(�(MaxTabs%+1),32) � �drag_table(filename$):�show_table(Tablenumber%) ' � &7f3:�drag_selection(filename$) # � &7f4:�drag_query(filename$) % � &7f5:�drag_options(filename$) + � &dfe:�start_import("CSV",block%!20) K � &ff9,&aff:�transfer_blob(block%!20,block%!24,REC%,filename$,ftype%) � &fff: / F=�(filename$):header$=�#F:�close_file(F) Ȏ wi% � � mainW%,-1: Ȏ � � ( � header$="!SCRIPT POWERBASE": / � present%=7:�execute_file(filename$) K � ic%>0:�transfer_blob(block%!20,block%!24,REC%,filename$,ftype%) % :�start_import("text",wi%) � & :� customise% � �special_drop � : Ȏ wi% � � reformW%: Ȏ reform$ � 1 � "Merge":�merge_files(filename$,file%) !+ � "Reformat":�reformat(filename$) " � # : $ � d%=2 � %# Ȏ ��leaf(filename$),1) � & � "!": '3 � ### Is it an Impression document? ### (5 ș "OS_File",5,filename$+".!DocData" � d% ) � d%=1 � *( document$=�leaf(filename$) +; � �document$,1)="!" � document$=�document$,2) ,> block%!0=256:block%!12=0:block%!16=5:block%!20=0 -= block%!24=0:block%!28=0:block%!32=0:block%!36=0 .4 block%!40=&2000:$(block%+44)=filename$ // ș "Wimp_SendMessage",18,block%,0 06 mergewith$="Impression":Impref%=block%!8 18 $MergeTitle%="Data merge with "+mergewith$ 2 � 36 � ### Is it a Powerbase application? ### 46 ș "OS_File",5,filename$+".Indices" � d% 5 � d%=2 � 6' � present%>0 � �exit(0) 7( $Title%=�leaf(filename$) 8& �open_files(filename$) 9 � : � ; : <7 � ### It's an ordinary directory folder ### =A �transfer_blob(block%!20,block%!24,REC%,filename$,-1) > � ? � @ � A� B� C: D� �open_files(f$) E� I%,J%,F%,A$ F#ș "OS_File",5,f$+".Dbase" � d% G"� d%=1 � � fatal_err%,�msg(42) H&ș "OS_File",5,f$+".Database" � d% I"� d%=1 � present%=present% � 4 J(ș "OS_File",5,f$+".PrimaryKey" � d% K"� d%=1 � present%=present% � 2 L"ș "OS_File",5,f$+".Form" � d% M"� d%=1 � present%=present% � 1 N0ș "OS_File",5,f$+".UsrSprites" � d%,,,,len% O� d%=1 � P5 �create_named_sliding_block(logoanchor%,len%+8) Q& base%=!logoanchor%:!base%=len%+4 R/ ș "OS_File",255,f$+".UsrSprites",base%+4 S logosloaded%=� T� U#ș "OS_CLI","Set DBase$Dir "+f$ V$database%=f$ WȎ present% � X1 � 0,1,5:Access%=�:Modify%=�:�resume_opening Y � 7:�access(f$) Z% :�wimp_error(�,254,0,�msg(24)) [� \� ]: ^� �access(f$) _� L%,P%,keybase% `F=�(f$+".Colours") a(� F=0 � � fatal_err%,f$+"."+�msg(18) b �#F=35 c �#F,S$:$Read%=�encrypt(S$,�) d!�#F,S$:$Write%=�encrypt(S$,�) e#�#F,S$:$Manager%=�encrypt(S$,�) f� I%=9 � 15 g �select(passW%,I%) h� I% i�deselect(passW%,16) jI%=9 kȕ I%<17 � � �#F l$ �#F,Z%:�set_icon(passW%,I%,Z%) m I%+=1 n� o� � �#F � �#F,logpath$ p�close_file(F) q� $Manager%="" � r Access%=�:Modify%=�:pw%=0 s �resume_opening t � u; $AccessTitle%="!Powerbase opening "+�leaf($database%) v �open_window(accessW%) w $Password%="" x �set_caret(accessW%,0) y& ș "Wimp_GetWindowState",,block% zC ȗ ȓ block%!4,block%!8,block%!12-block%!4,block%!16-block%!8 { � | act%=0 } � ~ �poll � accessbutton%>0 � Ȏ accessbutton% � �# � 2:�close_window(accessW%) �) present%=�:accessbutton%=0:act%=1 � � 3: � password$=�u($Password%) � Ȏ password$ � �6 � $Manager%:Access%=�:Modify%=�:act%=2:pw%=3 �4 � $Write%:Access%=�:Modify%=�:act%=2:pw%=2 �3 � $Read%:Access%=�:Modify%=�:act%=2:pw%=1 � :accessbutton%=0:� 7 �1 $�text(accessW%,1)="Password not known" �# �dcolour(accessW%,1,11,1) � delay%=�+150 � � � �poll � � �>delay% �G $Password%="":�redraw_icon(accessW%,0):�set_caret(accessW%,0) �4 $�text(accessW%,1)="Type in your password" �" �dcolour(accessW%,1,7,1) � � � � � � act%>0 � �close_window(accessW%) � �getscreensize(W%,H%) � ȗ ȓ 0,0,W%,H% � � act%=2 � �resume_opening �� �� �: �� �resume_opening �ș "Hourglass_On" �&� �selected(passW%,16) � �open_log �'ș "OS_File",5,f$+".UserFuncs" � d% �� d%=1 � ț f$+".UserFuncs" �(�read_colours($database%+".Colours") �0ș "OS_File",5,f$+".PrintRes.PrintOpts" � d% �� d%=1 � �- �drag_options(f$+".PrintRes.PrintOpts") �8 � �drag_options("<Pbase$Dir>.Resources.PrintOpts") �� �� �f$,3)="RAM" � ram%=� �9*Set Alias$Tables Filer_OpenDir <Dbase$Dir>.ValTables �;*Set Alias$Resources Filer_OpenDir <Dbase$Dir>.PrintRes �;*Set Alias$JobsDone Filer_OpenDir <Dbase$Dir>.PrintJobs ��lit(menu%(0),1,�) ��lit(menu%(0),3,�) ��lit(menu%(0),4,�) �(�lit(menu%(1),6,�selected(passW%,9)) �)�lit(menu%(3),8,�selected(passW%,15)) ��lit(menu%(7),0,Access%) ��lit(menu%(7),1,Modify%) ��lit(menu%(7),2,Access%) ��lit(menu%(7),3,Access%) ��lit(menu%(7),4,Access%) ��lit(menu%(2),0,Access%) ��lit(menu%(0),2,Modify%) ��lit(menu%(10),0,Access%) ��lit(menu%(10),2,Access%) ��lit(menu%(10),3,Access%) ��lit(menu%(13),0,Access%) ��lit(menu%(17),0,Modify%) �'�lit(menu%(3),0,((present% � 4)>0)) �'�lit(menu%(9),1,((present% � 4)=0)) �� I%=1 � 6 �$ �lit(menu%(3),I%,(present%=7)) �� I% ��limit_actions(Access%) �� present%<4 � design%=� � � present%=5 � �adjust_on(�) ��lit(menu%(9),5,�) �fields%=�get_form(Fptr%) �� fields%>0 � �% starthere%=field%(�first_field) �% �field_menu(fieldmenu%,fields%) �9 �create_named_sliding_block(transanchor%,Length%+1) �� �.� � adjust% � �lit(menu%(9),2,(fields%>0)) ��load_calcs �Ȏ present% � � � 0: �- $RecInfo%="No record design exists yet" � � I%=1 � 4 � �lit(menu%(9),I%,�) � � I% � �open_window(mainW%) � � !formanchor%=0 � �2 �extend_named_sliding_block(formanchor%,0) � Fptr%=!formanchor% � fields%=0:Fieldnumber%=0 � � � � 1: �8 $RecInfo%="Record design exists, but no datafiles" � � �first_field>0 � � �lit(menu%(9),3,�) � �lit(menu%(9),4,�) � � � �open_window(mainW%) � � 5: �6 $RecInfo%="No primary key index file exists yet" �6 ș "OS_File",5,$database%+".Database" � ,,,,len% �- RA%=(len% � Length%)-1:$Records%=�(RA%) �- � �first_field>0 � �open_window(mainW%) � � 7: �+ �lit(menu%(1),7,�selected(passW%,13)) �+ �lit(menu%(1),8,�selected(passW%,13)) �+ �lit(menu%(1),2,�selected(passW%,14)) �6 ș "OS_File",5,$database%+".Database" � ,,,,len% �- RA%=(len% � Length%)-1:$Records%=�(RA%) �- �open_index($database%+".PrimaryKey",0) �$ key%=0:file%=0:top=8*file%+LH% � �set_keydata(key%) �l keybase%=!keyanchor%(0):� keybase%!4<=100 � keybase%!4>0 � $Increment%=�(keybase%!4) � $Increment%="0" �, f$=$database%+".Indices":R4%=0:Keys%=0 � ȕ R4%<>-1 � Keys%+=1 �5 ș "OS_GBPB",9,f$,block%,1,R4%,11 � ,,K$,,R4% �A � R4%<>-1 � �open_index(f$+"."+K$,Keys%):�colour(Keys%,2) � � � Keys%-=1 �4 � extrakeys$<>"" � �softerror(�extrakeys$),96) � �colour(0,0):�colour(0,1) � �get_tables � key%=0 � �count(key%,RU%) � �joke � �show_windows �� �ș "Hourglass_Off" $dbase%=�$Title%,2) �redraw_icon(-2,pbaseicon%) f$=$database%+".Choices" ș "OS_File",5,f$ � d% � d%=1 � �get_choices(f$) -ș "OS_File",5,$database%+".Special" � d% 0� d%=1 � ț $database%+".Special":�customise � : � �joke S$=$�val(keypadW%,17) *� ��$,5,6)="01 Apr" � ��$,17,2)<"12" � ! S$="Stoilet"+�$block%!32,8) # � S$="Sdelete"+�$block%!32,8) � $�val(keypadW%,17)=S$ � : � �get_choices(f$) � F,S$,C$,P% F=�(f$) � 2 S$=�#F:P%=�S$," "):C$=�S$,P%+1):S$=�S$,P%-1) Ȏ S$ � D � "Validate":validate%=(C$="ON"):�tick(menu%(2),3,validate%) G � "Relations":relations%=(C$="ON"):�tick(menu%(2),4,relations%) B � "Warning":delwarn%=(C$="ON"):�tick(menu%(10),7,delwarn%) � "Autosave": Ȏ �C$,4) � . � "OFF ":mode%=0:$Interval%="10 min" , � "WARN":mode%=1:$Interval%=�C$,5) , � "AUTO":mode%=2:$Interval%=�C$,5) � ! �set_auto(mode%) " � "Autobalance": # Ȏ �C$,4) � $& � "OFF ":�set_autobalance(�) %5 � "AUTO":$Every%=�C$,5):�set_autobalance(�) & � ' � "Separator": ( $Delim%="" ) Ȏ C$ � *! � "Comma":sep$=",":P%=0 + � "TAB":sep$=�(9):P%=1 , � "CR":sep$=�(13):P%=2 - � "LF":sep$=�(10):P%=3 .# $Delim%=C$:sep$=C$:P%=4 / � 0# �tick_one(menu%(15),0,3,P%) 12 $�text(csvW%,14)=C$:�redraw_icon(csvW%,14) 2 � "Terminator": 3 $Termin%="" 4 Ȏ C$ � 5! � "CR":term$=�(13):P%=0 6! � "LF":term$=�(10):P%=1 7* � "CR LF":term$=�(13)+�(10):P%=2 8* � "LF CR":term$=�(10)+�(13):P%=3 9* � "CR CR":term$=�(13)+�(13):P%=4 :* � "LF LF":term$=�(10)+�(10):P%=5 ;& : $Termin%=C$:term$=C$:P%=6 < � =# �tick_one(menu%(20),0,5,P%) >2 $�text(csvW%,15)=C$:�redraw_icon(csvW%,15) ?- � "Quotes":�set_icon(csvW%,0,C$="ON") @- � "Header":�set_icon(csvW%,1,C$="ON") A- � "Blanks":�set_icon(csvW%,2,C$="ON") B* � "Key":�set_icon(csvW%,3,C$="ON") CB � "Data":�set_icon(csvW%,4,(C$="ON" � �selected(csvW%,1))) D/ � "Display":�set_icon(csvW%,11,C$="ON") E- � "Strip":�set_icon(csvW%,16,C$="ON") F � "CaseSpecific": G' �set_icon(matchW%,16,(C$="ON")) H( �set_icon(savesubW%,5,(C$="ON")) I' �set_icon(changeW%,5,(C$="ON")) J% �set_icon(moveW%,9,(C$="ON")) K' �set_icon(mergeW%,12,(C$="ON")) L( �set_icon(keypadW%,32,(C$="ON")) M � "Duplication": N- dup%=(C$="ON"):�tick(menu%(3),8,dup%) O � P � �#F Q.�icon_bit(22,csvW%,4,(�selected(csvW%,1))) R�close_file(F) S� T: U� �save_choices(f$) V � F,C$ WF=�(f$) X&� validate%=� � C$="ON" � C$="OFF" Y�#F,"Validate "+C$ Z'� relations%=� � C$="ON" � C$="OFF" [�#F,"Relations "+C$ \%� delwarn%=� � C$="ON" � C$="OFF" ]�#F,"Warning "+C$ ^Ȏ autosave% � _ � 0:C$="OFF " ` � 1:C$="WARN"+$Interval% a � 2:C$="AUTO"+$Interval% b� c�#F,"Autosave "+C$ dȎ autobalance% � e � 0:C$="OFF " f � 1:C$="AUTO"+$Every% g� h�#F,"Autobalance "+C$ i-� �selected(csvW%,0) � C$="ON" � C$="OFF" j�#F,"Quotes "+C$ k-� �selected(csvW%,1) � C$="ON" � C$="OFF" l�#F,"Header "+C$ m-� �selected(csvW%,2) � C$="ON" � C$="OFF" n�#F,"Blanks "+C$ o-� �selected(csvW%,3) � C$="ON" � C$="OFF" p�#F,"Key "+C$ q-� �selected(csvW%,4) � C$="ON" � C$="OFF" r�#F,"Data "+C$ s Ȏ sep$ � t � ",":C$="Comma" u � �(9):C$="TAB" v � �(10):C$="LF" w � �(13):C$="CR" x :C$=sep$ y� z�#F,"Separator "+C$ {Ȏ term$ � | � �(13):C$="CR" } � �(10):C$="LF" ~ � �(13)+�(10):C$="CR LF" � �(10)+�(13):C$="LF CR" � � �(13)+�(13):C$="CR CR" � � �(10)+�(10):C$="LF LF" � :C$=term$ �� ��#F,"Terminator "+C$ �.� �selected(csvW%,11) � C$="ON" � C$="OFF" ��#F,"Display "+C$ �.� �selected(csvW%,16) � C$="ON" � C$="OFF" ��#F,"Strip "+C$ � Ȏ � � �� � �selected(matchW%,16),�selected(savesubW%,5),�selected(changeW%,5),�selected(moveW%,9),�selected(mergeW%,12),�selected(keypadW%,32):C$="ON" � :C$="OFF" �� ��#F,"CaseSpecific "+C$ �� dup% � C$="ON" � C$="OFF" ��#F,"Duplication "+C$ ��close_file(F) �ș "OS_File",18,f$,&fff �� �: �� �open_index(f$,key%) �� keybase%,I% �:� key%>MaxKeys% � extrakeys$+=�leaf(f$)+",":Keys%-=1:� �?� keyanchor%(key%) � �scrap_sliding_block(keyanchor%(key%)) � ș "OS_File",5,f$ � ,,,,len% �6�create_named_sliding_block(keyanchor%(key%),len%) �)ș "OS_File",255,f$,!keyanchor%(key%) �Index$(key%)=�leaf(f$) �keybase%=!keyanchor%(key%) �� key%=0 � � � I%=0 � 5 �% $Date%(I%)=$(keybase%+8+9*I%) � � I% �� �KF%(key%,0)=keybase%!62 �KF%(key%,1)=keybase%!66 �KL%(key%)=keybase%?70 �!case%(key%)=(keybase%?71=255) �� I%=0 � 3 �& KW%(key%,I%)=!(keybase%+74+I%*4) �� I% �� �: �� �get_tables �� lk,F%,d%,R4%,f$,name$ �$f$=$database%+".ValTables":R4%=0 �,ș "OS_File",5,$database%+".Tables" � d% �"� d%=2 � � fatal_err%,�msg(18) �� � �/� � �:�close_file(lk):�wimp_error(�,�,�,�$) �lk=�($database%+".Link") �� lk>0 � � !block%=mainW% � ȕ � �#lk � F%+=1 � �#lk,link$(F%) � name$=�link$(F%)) � � �name$,1)<>"@" � � � name$<>"" � �+ � �(name$)<58 � name$=�name$,2) �6 �set_icon_cols(mainW%,field%(F%),fcol%(6)) �. � d%=0 � �drag_table(f$+"."+name$) � � � � � � � link$(0)="LOADED" � �close_file(lk) �� �:� ### Force loading of unlinked but flagged tables ### �ȕ R4%<>-1 �6 ș "OS_GBPB",9,f$,block%,1,R4%,11 � ,,name$,,R4% �; � R4%<>-1 � � �name$)="!" � �drag_table(f$+"."+name$) �� �� � �2� extratabs$<>"" � �softerror(�extratabs$),97) �� �: �� �load_calcs �� F%,F1%,P%,calc$ �update$()="" �cl=�($database%+".Calc") �� cl>0 � � ȕ � �#cl �+ F%+=1:F$=�~(F%):� F%<16 � F$="0"+F$ �" �#cl,calc$:calc$(F%)=calc$ � Ȏ chartype%(F%) � � � 6,7: � � �! P%=�calc$,"$Rf%(",P%) �? � P%>0 � F1%=�(�calc$,P%+5)):update$(F1%)+=F$:P%+=5 � � P%=0 � � � P%=�calc$,"FNn(",P%) �? � P%>0 � F1%=�(�calc$,P%+4)):update$(F1%)+=F$:P%+=4 � � P%=0 �. � �calc$,"TIME$")>0 � update$(0)+=F$ � � � � � calc$(0)="LOADED" � �close_file(cl) �� �� �: �� �get_form(� Fptr%) �+� F,L%,N%,I%,V%,x%,y%,xlim%,ylim%,text% �buttonfield%()=0 �r� design% � dflg%=(winback%<<28)+&7016731:dval%=hand%:func%=1 � dflg%=(winback%<<28)+&7010731:dval%=-1:func%=0 �F=�($database%+".Form") �� F>0 � � �#F,N% �& � N%>127 � � fatal_err%,�msg(98) �2 formlen%=&100:forminc%=formlen%:form_incs%=0 �7 �extend_named_sliding_block(formanchor%,formlen%) �9 Fptr%=!formanchor%:Rf%(0)=Fptr%:$Rf%(0)="":Fptr%+=1 � Length%=0 � � I%=1 � N% �@ �#F,Desc$,Tag$(I%),xd%,yd%,xf%,yf%,len%,char%,fix%,bbox% � Ȏ � � �/ � bbox%=0 � len%=0:width%=0:height%=0 �0 � bbox%=0:width%=len%*16+16:height%=48 �6 � bbox%<&10000:width%=bbox%*16+16:height%=48 �2 :width%=bbox% � &FFFF:height%=bbox%>>16 � � � � design% � � Ȏ char% � �1 � 0,1,2,3,4,5,6,7,8,39,40:fval%=hand% �" :fval%=hvalid%(char%) � � � Ȏ � � = � char%>8 � char%<32:fval%=�val(keypadW%,char%-9) ! :fval%=valid%(char%) � � " x%=xf%+width%+32:y%=yf%-16 � x%>xlim% � xlim%=x% � y%<ylim% � ylim%=y% ' y%=yd%-16:� y%<ylim% � ylim%=y% Length%+=len%+1 F � design%=� � char%=39 � len%=(height% � 40)*((width% � 16)-4) 7 len%(I%)=len%:chartype%(I%)=char%:fix%(I%)=fix% L%=�(Desc$) 1 � Fptr%-!formanchor%+L%+len%+2>formlen% � * form_incs%+=1:formlen%+=forminc% ; �extend_named_sliding_block(formanchor%,formlen%) � $Fptr%=Desc$ Q desc%(I%)=�create_icon(mainW%,xd%,yd%,L%*16+8,48,dflg%,"",Fptr%,dval%,L%) - Fptr%+=L%+1:Rf%(I%)=Fptr%:$Rf%(I%)="" 0 �icon_design(char%,func%,width%,height%) T � char%=59 � � design% � $Fptr%=Tag$(I%):len%=�(Tag$(I%)):fval%=!logoanchor% \ field%(I%)=�create_icon(mainW%,xf%,yf%,width%,height%,iflags%,"",Fptr%,fval%,len%+1) Ȏ char% � h � 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31:buttonfield%(char%-9)=I% 6 � 40:Rf%(I%)=�create_anchor("Picture"+�(I%)) ? � 3,6,46,47,54,56,57:�icon_bit(9,mainW%,field%(I%),�) � Fptr%+=len%+1 � I% �close_file(F) O �extend_named_sliding_block(formanchor%,Fptr%-!formanchor%):form_incs%+=1 ! �setup_select(N%) " � N%=0 #� $/� (present% � 4)=0 � xlim%=1279:ylim%=-1023 %!block%=0:block%!4=ylim% &block%!8=xlim%:block%!12=0 '%ș "Wimp_SetExtent",mainW%,block% (!block%=mainW% )$ș "Wimp_GetWindowState",,block% *block%!4=0 +4� ylim%>-840 � block%!8=900+ylim% � block%!8=184 ,3� xlim%<1240 � block%!12=xlim% � block%!12=1240 -block%!16=900 . ș "Wimp_OpenWindow",,block% /=N% 0: 1� �setup_select(fields%) 2� S$,I%,J%,Fptr%,rows% 3&selectlen%=&200:selinc%=selectlen% 46�create_named_sliding_block(selanchor%,selectlen%) 5Fptr%=!selanchor% 6� I%=1 � fields% 7* � Fptr%-!selanchor%+144>selectlen% � 8 selectlen%+=selinc% 9: �extend_named_sliding_block(selanchor%,selectlen%) : � ; Ȏ chartype%(I%) � < � 3,6,8,46,47,54,56,57: =# rows%+=1:�lit(menu%(6),6,�) >W handle%=�create_icon(pselectW%,16,-rows%*48-56,240,48,&17000531,"",Fptr%,-1,15) ?# S$=$�text(mainW%,desc%(I%)) @7 � �(S$)>8 � S$=�S$,8)+" " � S$+=�10-�(S$)," ") A- $Fptr%=S$+Tag$(I%):Fptr%+=�($Fptr%)+1 B � J%=0 � 3 Cb handle%=�create_icon(pselectW%,278+J%*112,-rows%*48-52,44,44,&0740B13B,"",Fptr%,tick%,1) D $Fptr%="":Fptr%+=1 E � J% F calcrow%?I%=rows% G :calcrow%?I%=0 H � I� I% J#!block%=0:block%!4=-rows%*48-56 Kblock%!8=700:block%!12=0 L(ș "Wimp_SetExtent",pselectW%,block% M� N: O� �enable_row(R%,on%) P� I% Q� R%>0 � R � I%=R%*5-3 � R%*5 S& �icon_bit(22,pselectW%,I%,on%) T � I% U� V� W: X� �save_form(f$) Y,� F,I%,xd%,yd%,xf%,yf%,w%,h%,bbox%,type% Z� fields%=0 � � [ Length%=0 \!block%=mainW% ]F=�(f$) ^�#F,fields% _� I%=1 � fields% `( dicon%=desc%(I%):ficon%=field%(I%) a4 block%!4=dicon%:ș "Wimp_GetIconState",,block% b xd%=block%!8:yd%=block%!12 c Desc$=$(block%!28) d4 block%!4=ficon%:ș "Wimp_GetIconState",,block% e xf%=block%!8:yf%=block%!12 f2 w%=block%!16-block%!8:h%=block%!20-block%!12 g bbox%=(h%<<16)+w% hN �#F,Desc$,Tag$(I%),xd%,yd%,xf%,yf%,len%(I%),chartype%(I%),fix%(I%),bbox% i Length%+=len%(I%)+1 jA field$(I%)="":� Rf%(I%)>0 � chartype%(I%)<>40 � $Rf%(I%)="" k� I% l�close_file(F) mș "OS_File",18,f$,&7f2 n�lit(menu%(0),3,�) o�lit(menu%(0),4,�) p� q: r$� �make_empty_index(RA%,key%,Z%) s� I%,K%,P%,KLM%,S$ tș "Hourglass_On" uS$=�KL%(key%),".") vKLM%=KL%(key%)+13 wP%=LH%+48+(RA%+1)*KLM% x;� Z% � �create_named_sliding_block(keyanchor%(key%),P%) ykeybase%=!keyanchor%(key%) zkeybase%!0=138 {keybase%!4=�($Increment%) |$date%=�6,�(1)):�date(key%) }keybase%!62=KF%(key%,0) ~keybase%!66=KF%(key%,1) keybase%?70=KL%(key%) �#keybase%?71=�selected(keyW%,20) �keybase%?72=0:keybase%?73=0 �� I%=0 � 3 �( !(keybase%+74+(I%*4))=KW%(key%,I%) �� I% �� I%=0 � 5 � P%=I%*8+LH% � !(keybase%+P%)=-P% � !(keybase%+P%+4)=P% �� I% �P%=!keybase% �� I%=0 � RA%-1 �. ș "Hourglass_Percentage",(I%*100) � RA% � !(keybase%+P%)=P%+KLM% � !(keybase%+P%+4)=0 � $(keybase%+P%+8)=S$ �# !(keybase%+P%+KL%(key%)+9)=I% � P%+=KLM% �� I% �!(keybase%+P%)=0 �!(keybase%+P%+4)=0 �$(keybase%+P%+8)=S$ � !(keybase%+P%+KL%(key%)+9)=0 �ș "Hourglass_Off" �� �: �� �save_recs(f$,RA%) �� dbasehandle%,I%,J%,rec$ �rec$=�fields%-1,�(10)) �ș "Hourglass_On" �dbasehandle%=�(f$) �� I%=0 � RA% � �#dbasehandle%=I%*Length% � �#dbasehandle%,rec$ �. ș "Hourglass_Percentage",(I%*100) � RA% �� I% �"�#dbasehandle%=(RA%+1)*Length% ��close_file(dbasehandle%) �ș "OS_File",18,f$,&7f2 �ș "Hourglass_Off" �� �: �� �clear �� REC%,action$,ex%,ptr% �8Search$=�parse($�text(moveW%,7),�selected(moveW%,9)) �9ș "Wimp_WhichIcon",moveW%,block%,&003F0000,&00210000 �movetype%=!block%-1 �)P%=�Title$,". ")+2:Title$=�Title$,P%) �H� Title$<>"All records" � Title$=" when "+Title$ � Title$=" "+Title$ �9action$=�"Move �DeleteMove �",movetype%*6+7,6)+Title$ �� � �confirm(action$) � � �ș "Hourglass_On" �*dbasehandle%=�($database%+".Database") ��earmark ��close_file(dbasehandle%) �ptr%=!tempanchor% �%subtotal%=�count_recs(key%,zero%) �� REC%=0 � RA%-1 �< ex%+=1:ș "Hourglass_Percentage",(ex%*100) � subtotal% � � ptr%?REC%=255 � �( �read(fields%,�,REC%,$database%) �% addr=�shift(movetype%,key%,0) � � � � REC% �%�scrap_sliding_block(tempanchor%) �ș "Hourglass_Off" �ș "Wimp_CreateMenu",,-1 �addr=�moveto(key%,top,1) �� �: �� �export_subset(f$) �M� I%,F,R%,recs%,ptr%,count%,subtotal%,blobs%,ex%,Z%,len%,source$,dest$,O$ �;ș "OS_CLI","Copy "+$database%+".Form "+f$+".Form ~C~V" �Q� link$(0)="LOADED" � ș "OS_CLI","Copy "+$database%+".Link "+f$+".Link ~C~V" �Q� calc$(0)="LOADED" � ș "OS_CLI","Copy "+$database%+".Calc "+f$+".Calc ~C~V" �Fș "OS_CLI","Copy "+$database%+".ValTables "+f$+".Valtables ~C~VR" �Bș "OS_CLI","Copy "+$database%+".Colours "+f$+".Colours ~CF~V" �/ș "OS_File",5,$database%+".UserFuncs" � d% �O� d%=1 � ș "OS_CLI","Copy "+$database%+".UserFuncs "+f$+".UserFuncs ~CF~V" �0ș "OS_File",5,$database%+".UsrSprites" � d% �Q� d%=1 � ș "OS_CLI","Copy "+$database%+".UsrSprites "+f$+".UsrSprites ~CF~V" �ș "Hourglass_On" �"blobs%=�find_blobs($database%) �>Search$=�parse($�text(savesubW%,0),�selected(savesubW%,5)) �*dbasehandle%=�($database%+".Database") ��earmark �F=�(f$+".Database") �ptr%=!tempanchor% �%subtotal%=�count_recs(key%,zero%) �� I%=0 � RA%-1 � � ptr%?I%=255 � � ex%=-1 � ȕ ex%<blobs% � ex%+=1:F%=Ext%(ex%) �@ �copy_blob($database%,f$,I%,recs%,F%,F%,chartype%(F%)) � � �< �readsmarray(dbasehandle%,I%):�writesmarray(F,recs%) � count%+=1 �: ș "Hourglass_Percentage",(count%*100) � subtotal% � � �� I% �%�scrap_sliding_block(tempanchor%) �=F$()="":�writesmarray(F,recs%):�#F=Length%*recs%:recs%-=1 �� K%=0 � Keys% �, KL%(MaxKeys%+1)=KL%(K%):val$=�type(K%) �! KF%(MaxKeys%+1,0)=KF%(K%,0) �! KF%(MaxKeys%+1,1)=KF%(K%,1) � � I%=0 � 3 �% KW%(MaxKeys%+1,I%)=KW%(K%,I%) � � I% �+ �make_empty_index(recs%,MaxKeys%+1,�) � � I%=0 � recs%-1 � �readsmarray(F,I%) � KEY$=�key2(K%,1) �" �insert(�,KEY$,MaxKeys%+1) �2 ș "Hourglass_Percentage",(I%*100) � recs% � � I% �& keybase%=!keyanchor%(MaxKeys%+1) �\ ș "SlidingHeap_DescribeBlock",slidingheapbase%,keyanchor%(MaxKeys%+1) � ,,filelength% �, � K%>0 � index$="Indices." � index$="" �R ș "OS_File",10,f$+"."+index$+Index$(K%),&7f0,,keybase%,keybase%+filelength% �2 �scrap_sliding_block(keyanchor%(MaxKeys%+1)) �� K% ��close_file(F) ��close_file(dbasehandle%) �'ș "OS_File",18,f$+".Database",&7f2 � export%=� �ș "Hourglass_Off" � : � �find_blobs(f$) � N%,R4%,S$ N%=-1 ȕ R4%<>-1 3 ș "OS_GBPB",9,f$,block%,1,R4%,11 � ,,S$,,R4% Ȏ �S$,4) � ) � "Memo":N%+=1:Ext%(N%)=�(�S$,5)) ) � "Draw":N%+=1:Ext%(N%)=�(�S$,5)) ) � "Spri":N%+=1:Ext%(N%)=�(�S$,7)) � � =N% : � �earmark � I%,P% 5� tempanchor% � �scrap_sliding_block(tempanchor%) 0�create_named_sliding_block(tempanchor%,RA%) ptr%=!tempanchor% � I%=0 � RA%-1 ptr%?I%=0 � I% P%=�neighbour(key%,top,1) �scan_file("P%<>top",key%,2) � : � �rotate � � Access% � � � �confirm(�msg(49))=� � � � keybase% � I%,L%,Z%,Q%,R%,S%,key% � key%=0 � Keys% ! keybase%=!keyanchor%(key%) " S%=LH%+40 # Z%=keybase%!S% $ � I%=S%-8 � S%-40 �-8 %) L%=keybase%!I%:R%=keybase%!(I%+4) &= � L%>0 � keybase%!(I%+8)=L% � keybase%!(I%+8)=-(I%+8) ' � I% (> � Z%>0 � keybase%!(S%-40)=Z% � keybase%!(S%-40)=-(S%-40) ) � I%=S%-40 � S% � 8 * Q%=I%-8 + � Q%=S%-48 � Q%=S% ,! PR%=�neighbour(key%,I%,0) -! SU%=�neighbour(key%,I%,1) .' � PR%>S% � keybase%!(PR%+4)=-I% /# � SU%>S% � keybase%!SU%=-I% 0 � I% 1 � key% 2$date%=�6,�(1)) 3warn%=� 4� 5: 6� �create_index 7� indexing% � printing% � � 80� Keys%=MaxKeys% � �softerror(�(Keys%),95):� 97� file%,top,P%,KEY$,REC%,val$,zero%,abort%,replace% : newkey%=0 ;;f$=Tag$(Keyfld0%):� Keyfld1%>0 � f$+="+"+Tag$(Keyfld1%) <� = newkey%+=1 >(� Index$(newkey%)=f$ � newkey%>Keys% ? Ȏ � � @ � newkey%<=Keys%: A � �confirm(�msg(50))=� � B3 �scrap_sliding_block(keyanchor%(newkey%)) C replace%=� D � abort%=� E � F: � Keys%>MaxKeys%:Keys%-=1:�softerror("",31):abort%=� G :Keys%=newkey% H� I� abort% � � J*block%!8=0:block%!12=keyW%:block%!16=7 K%ș "Interface_SlabButton",,block% L�copy_keydata(newkey%) MIndex$(newkey%)=f$ N-f$=$database%+".Indices."+Index$(newkey%) O$�make_empty_index(RA%,newkey%,�) P�lit(menu%(0),2,�) Q�limit_actions(�) R� � S � � �:� �:�abort_index(f$):� T*dbasehandle%=�($database%+".Database") Uindexing%=� V�update_stats W� file%=0 � 5 X top=file%*8+LH% Y P%=�neighbour(key%,top,1) Z val$=�type(newkey%) [ ș "Hourglass_On" \" �scan_file("P%<>top",key%,4) ]� file% ^�end_index _�colour(newkey%,2) `warn%=� a� � bM� �selected(passW%,16) � �#loghandle%,"Index "+Index$(newkey%)+" created" c� d: e� �abort_index(f$) f�end_index g� replace% � h �open_index(f$,newkey%) i � j � index%=newkey% � Keys% k) Index$(newkey%)=Index$(newkey%+1) l � index% m/ �scrap_sliding_block(keyanchor%(newkey%)) n Keys%-=1 o newkey%=0 p� q� �=17 � r �softerror("",43) s � �wimp_error(�,�,�,�$) t� u� v: w� �end_index xș "Hourglass_Smash" yindexing%=� z�limit_actions(Access%) {ș "Wimp_CreateMenu",,-1 |�lit(menu%(0),2,Modify%) }�close_file(dbasehandle%) ~� : �� �shift(t%,k%,m%) �� a%,key%,fi%,I%,F$ �� � Access% �=addr �� REC%=RA% �=addr �1� t%=0 � m%=1 � � �confirm(�msg(51))=� �=addr �� key%=0 � Keys% �2 N$=�key(key%):kl%=KL%(key%):val$=�type(key%) � �delete(N$,key%) � � N$="*Failed*" �=addr � � key%=k% � a%=SU% � � t%=1 � fi%=(file%+1) � 6 �) � t%=-1 � fi%=(file%-1-6*(file%=0)) � top=8*fi%+LH% � Ȏ t% � � � 0: � � I%=1 � fields% � V%=chartype%(I%) � Ȏ V% � � � 36,39: �R � �blob_path(�,$database%,REC%,I%,V%,F$)>=0 �:ș "OS_CLI","Delete "+F$ � � 9,37: �R � �blob_path(�,$database%,REC%,I%,V%,F$)>=0 �:ș "OS_CLI","Delete "+F$ � � 38: �R � �blob_path(�,$database%,REC%,I%,V%,F$)>=0 �:ș "OS_CLI","Delete "+F$ � � � � I% � : �8 �insert(�,N$,key%):date%?fi%=1:$Date%(fi%)=�date � � � top=8*file%+LH% � date%?file%=1 � $Date%(file%)=�date � � key% �� �selected(passW%,16) � � � t%=0 � �) �#loghandle%,logentry$+" Deleted" �8 � �#loghandle%,logentry$+" ===> subfile "+�(fi%) � � �� �warn%=� �=a% �: �� �type(key%) �� F%,V$ �)� key%>=0 � F%=KF%(key%,0) � F%=-key% �Ȏ chartype%(F%) � �# � 3,6,46,47,54,56,57:V$="VAL" �� �=V$ �: �� �confirm(string$) �!block%=255 �$(block%+4)=string$ �]ș "Wimp_ReportError",block%,(1<<0)+(1<<1)+(1<<4),"Powerbase: please confirm:" � ,result% �=result%=1 �: �,� �getscreensize(� S_Width%,� S_Height%) �� H1%,V1%,H2%,V2%,End% �$H1%=0:V1%=4:H2%=8:V2%=12:End%=16 �9Mi%!H1%=4:Mi%!V1%=5:Mi%!H2%=11:Mi%!V2%=12:Mi%!End%=-1 �$ș "OS_ReadVduVariables",Mi%,Mo% �)S_Width%=(1<<(Mo%!H1%))*((Mo%!H2%)+1) �*S_Height%=(1<<(Mo%!V1%))*((Mo%!V2%)+1) �� �: �� �match ��check_change �&� � common% � $�text(matchW%,0)="" ��redraw_icon(matchW%,0) ��open_window(matchW%) ��set_caret(matchW%,0) �&$�text(matchW%,3)=Tag$(Match_tag%) �2�tick_one(fieldmenu%,0,fields%-1,Match_tag%-1) ��redraw_icon(matchW%,3) �$�text(matchW%,14)="" ��redraw_icon(matchW%,14) �a� �selected(matchW%,27) � $�text(matchW%,25)="Number found" � $�text(matchW%,25)="Time taken" ��redraw_icon(matchW%,25) �"fieldfunc$="match":matching%=� �� �: �I� List printing ----------------------------------------------------- �: �� �print_this �%f$=$database%+".PrintRes.Default" �ș "OS_File",5,f$ � d% � � d%=1 � �drag_selection(f$) �!old%=�selected_esg(printW%,3) ��deselect(printW%,old%) ��select(printW%,24) ��mouse(0,0,4,matchW%,24) ��clear_selection ��deselect(printW%,24) ��select(printW%,old%) �� �: � � �do_it(Search$,displayed%) �� printing% � � �� zero%,P%,rec% �� � �Form$=printorder$ �� Form$="" � � � W%=0 � 1 � � KF%(0,W%)>0 � �: F$=�~(KF%(0,W%)):� �(F$)=1 � F$="0"+F$:Form$+=F$ �} � � �selected(matchW%,27) � �select(mainW%,field%(KF%(0,W%))):printorder$+=F$:�lit(menu%(6),7,�):�lit(menu%(6),8,�) � � � � W% �� �#Heading$="":Hlongest%=0:Sum()=0 �+Count%=0:examined%=0:printed%=0:sums%=0 ��read_print_options �N� �selected(printW%,40) � �find_max_lengths(displayed%) � maxlen%()=len%() �LenLine%=�include_fields �,numfirst%=�margin_warn:� numfirst%<0 � � ��list_head(0) �$ș "Wimp_GetPointerInfo",,block% ��limit_actions(�) ��lit(menu%(0),2,0) �printing%=� �&ș "OS_ReadMonotonicTime" � stime% �� � �:� �:�abort_printing:� �*dbasehandle%=�($database%+".Database") �ș "Hourglass_On" � Ȏ � � � � displayed%: �% �readsmarray(dbasehandle%,REC%) � �print_record(REC%) - � usekey%=-1 � �selected(matchW%,23)=�: < P%=�neighbour(key%,top,1):�scan_file("P%<>top",key%,1) : # P%=�search(useval$,usekey%,1) I � P%>=0 � k$=useval$:�scan_file("P%<>top AND k$=useval$",usekey%,1) � � � �end_printing � : � �abort_printing �end_printing � �=17 � �softerror("",29) � �wimp_error(�,�,�,�$) � � : � �end_printing � time% 2� format$="label" � thislab%>0 � �print_labels &ș "OS_ReadMonotonicTime" � etime% time%=etime%-stime% z� �selected(matchW%,27) � $�text(matchW%,14)=�(printed%) � $�text(matchW%,14)=�(time% � 100)+"."+�(time% � 100)+" sec" �redraw_icon(matchW%,14) ș "Hourglass_Smash" 3� format$<>"label" � displayed%=� � �total_list Ȏ reportdest$ � � "Window": @ � (� scripton%) � (� �selected(matchW%,27)) � �screen_list > �extend_named_sliding_block(textanchor%,Count%*LenLine%) � "File": 6 �close_file(texthandle%):ș "OS_File",18,f$,&fff ! �close_window(saveW%) " � "Printer": #@ �extend_named_sliding_block(textanchor%,Count%*LenLine%+1) $B Start%=!textanchor%:End%=Start%+Count%*LenLine%+1:Type%=&fff %) $Start%=pitch$:?(End%-1)=0:?End%=12 &; block%!0=256:block%!12=0:block%!16=&80142:block%!20=0 'D block%!24=0:block%!28=0:block%!32=0:block%!36=0:block%!40=&fff ( $(block%+44)="List" )' ș "Wimp_SendMessage",18,block%,0 *� +)printing%=�:scripton%=�:savetofile%=� ,�lit(menu%(0),2,Modify%) -�limit_actions(Access%) .�close_file(dbasehandle%) /� 0: 1#� �find_max_lengths(displayed%) 2� P%,k$ 3� � 4� � �:� �:�end_find_max:� 5maxlen%()=0 6*dbasehandle%=�($database%+".Database") 7ș "Hourglass_On" 8ș "Hourglass_LEDs",%11 9� displayed% � :% �readsmarray(dbasehandle%,REC%) ; �get_lengths < � =. � usekey%=-1 � �selected(matchW%,23)=� � >! P%=�neighbour(key%,top,1) ?$ �scan_file("P%<>top",key%,0) @ � A% P%=�search(useval$,usekey%,1) B � P%>=0 � C k$=useval$ D8 �scan_file("P%<>top AND k$=useval$",usekey%,0) E � F � G� Hș "Hourglass_LEDs",%00 Iș "Hourglass_Off" J�close_file(dbasehandle%) K� L: M� �get_lengths N� I%,L%,F%,l%,F$ OI%=-1:L%=�(Form$)-1 Pȕ I%<L% Q5 I%+=2:F%=�fnum(�Form$,I%,2)):F$=F$(F%):l%=�(F$) R' � l%>maxlen%(F%) � maxlen%(F%)=l% S� T� U: V� �end_find_max Wș "Hourglass_Smash" X�close_file(dbasehandle%) Ymaxlen%()=len%() Z� �=17 � [ �softerror("",70) \ � �wimp_error(�,�,�,�$) ]� ^� _: `� �print_record(REC%) a+� I%,F%,N%,F$,SF$,Tab%,n$,y$,base%,pos% b$� format$<>"label" � printed%+=1 c� �selected(matchW%,27) � � d-thisrow%=-1:base%=!lineanchor%:pos%=base% e6�heap_store(lineanchor%,LenLine%,0,pos%,0,margin$) f� I%=1 � �(Form$)-1 � 2 g F%=�fnum(�Form$,I%,2)) h- � format$="label" � newline%=� newline% i N%+=1 j � �selected(printW%,11) � k- F$=�expand(F$(F%),link$(F%),Len%,SF$) l � m! F$=F$(F%):Len%=len%(F%)+2 n Ȏ chartype%(F%) � o � 41,42,43,44,45: p Z%=�no_yes(F%,n$,y$) q" � F$=" " � F$=y$ � F$=n$ r! � 3,6,8,46,47,54,56,57: s- �sums(F$,calcrow%?F%,chartype%(F%)) t � format$="vert" � u& F$=�len%(F%)-�(F$)," ")+F$ v% � F$=�justify(F$,N%,N%-1) w � x � y � z) � �selected(printW%,12) � F$=�u(F$) { Ȏ chartype%(F%) � | � 37:F$="<Sprite>" } � 38:F$="<Drawfile>" ~ � Ȏ format$ � � � "horiz","table": �> �heap_store(lineanchor%,LenLine%,0,pos%,0,�tab(F$,N%)) � � "vert": �R � �selected(printW%,2) � Head$=$�text(mainW%,(desc%(F%))) � Head$=Tag$(F%) �8 Head$=margin$+�Tab%(1)-�(Head$)," ")+Head$+" : " �$ pos%=base%:L%=�(Head$)+�(F$) �8 �heap_store(lineanchor%,LenLine%,0,pos%,0,Head$) �5 �heap_store(lineanchor%,LenLine%,0,pos%,0,F$) �* �list_line(REC%,lineanchor%,L%,32) �D � chartype%(F%)=36 � chartype%(F%)=39 � �print_memo(REC%,F%) �# �extra_lines(linefeed%-1,0) � � "label": � � newline% � �n � (F$<>"" � �selected(labelW%,16)=�) � thisrow%<=labrepl% � thisrow%+=1:Label$(thisrow%,thislab%)=F$ � � �/ Label$(thisrow%,thislab%)+=spacer$+F$ � � � � �� I% �Ȏ format$ � � � "horiz": �0 �list_line(REC%,lineanchor%,pos%-base%,32) �! �extra_lines(linefeed%-1,0) � � "vert": � �rule_off(45) � � "table": � colpos%=pos%-base% �8 �heap_store(lineanchor%,LenLine%,0,pos%,0,column$) �0 �list_line(REC%,lineanchor%,pos%-base%,32) �' �extra_lines(linefeed%-1,colpos%) � � "label": �, Label$(labrepl%+1,thislab%)=�key2(0,1) �3 thislab%+=1:� thislab%>labup% � �print_labels �� �� format$<>"label" � �O � (printed% � LinesPerPage%)=0 � �selected(printW%,10)=� � displayed%=� � �N $(!lineanchor%)=margin$+�(12):�list_line(-1,lineanchor%,Lmargin%+1,32) � �list_head(1) � � �� �� �: �� �extra_lines(ex%,tab%) �� base%,pos% �ȕ ex%>0 � Ȏ tab% � � � 0:�rule_off(32) � : �% base%=!lineanchor%:pos%=base% � � I%=0 � tab%-1 � pos%?I%=32 � � I% � pos%+=tab% �: �heap_store(lineanchor%,LenLine%,0,pos%,0,column$) �2 �list_line(REC%,lineanchor%,pos%-base%,32) � � � ex%-=1 �� �� �: �� �print_memo(R%,F%) �.� text%,B%,F$,sp%,L%,rem$,base%,pos%,Line$ �/� �blob_path(�,$database%,R%,F%,36,F$)>=0 � � text%=�(F$) � ȕ � �#text% �& Line$=margin$+rem$:L%=�(Line$) � � � B%=�#text% � Line$+=�(B%):L%+=1 � � B%=32 � sp%=L% �) � B%=10 � L%=LenLine%-3 � �#text% � Ȏ � � �' � B%=10:rem$="":Line$=�Line$) � � �#text%:rem$="" �2 :rem$=�Line$,sp%+1):Line$=�Line$,sp%-1) � � � pos%=!lineanchor% �8 �heap_store(lineanchor%,LenLine%,0,pos%,0,Line$) �0 �list_line(REC%,lineanchor%,�(Line$),32) � � � �close_file(text%) �� �� �: �� �print_labels �$� I%,Line$,S$,linesprinted%,pos% �� I%=0 � labrepl%-1 � Line$=margin$ � � K%=0 � thislab%-1 � S$=Label$(I%,K%) �! � �selected(labelW%,11) � �9 � I%=labsubst% � S$="" � S$=Label$(labrepl%,K%) � � �9 � K%=thislab%-1 � W%=longestfield% � W%=labwidth% � � �(S$)>W% � S$=�S$,W%) � Line$+=S$+�W%-�(S$)," ") � � K% � pos%=!lineanchor% �6 �heap_store(lineanchor%,LenLine%,0,pos%,0,Line$) �. �list_line(REC%,lineanchor%,�(Line$),32) � linesprinted%+=1 �� I% �� �selected(labelW%,13) � � �rule_off(32) � Line$="" � � K%=0 � thislab%-1 �( S$="("+Label$(labrepl%+1,K%)+")" �' Line$+=S$+�labwidth%-�(S$)," ") � � K% � pos%=!lineanchor% �6 �heap_store(lineanchor%,LenLine%,0,pos%,0,Line$) �. �list_line(REC%,lineanchor%,�(Line$),32) � linesprinted%+=1 �� �rows_printed%+=1 �� rows_printed%=labrows% � �L $(!lineanchor%)=margin$+�(12):�list_line(-1,lineanchor%,Lmargin%+1,32) � �list_head(1) � rows_printed%=0 � � � � � �rule_off(32) � linesprinted%+=1 � � linesprinted%=labdepth% �� �&thislab%=0:thisrow%=-1:Label$()="" �� �: � �read_print_options � S$ thislab%=0:LinesPerPage%=0 @� usekey%=-1 � S$=Index$(key%) � S$=Index$(usekey%)+" index" Title1$="Ordered by "+S$ 2� �selected(printW%,19) � Title1$+=" ("+�$+")" Title2$=$�text(printW%,18) +�lit(menu%(18),1,�selected(printW%,10)) !Ȏ �selected_esg(printW%,2) � � 4:cpi%=5:p$="3" � 7:cpi%=10:p$="0" � 8:cpi%=12:p$="1" � 6:cpi%=17:p$="2" � pitch$=�pitch(p$) 3Lmargin%=�($�text(printW%,30)):Tab%(0)=Lmargin% margin$=�Lmargin%," ") "Tmargin%=�($�text(printW%,32)) #TextLine%=�($�text(printW%,34)) #linefeed%=�($�text(printW%,17)) #colwidth%=�($�text(printW%,45)) *s$=$�text(printW%,43):s%=�(s$):c$=�s$) Ȏ � � � s%=0:spacer$=s$ ' � c$<"0" � c$>"9":spacer$=�s%,c$) :spacer$=�s%," ") � ?� linefeed%=0 � linefeed%=1:$�text(printW%,17)=�(linefeed%) %pagelength%=�($�text(printW%,16)) F� pagelength%=0 � pagelength%=70:$�text(printW%,16)=�(pagelength%) !Ȏ �selected_esg(printW%,3) � � 23: format$="horiz" !9 LinesPerPage%=(pagelength%-Tmargin%-15) � linefeed% " � 24:format$="vert" #J LinesPerPage%=(pagelength%-Tmargin%-15) � (linefeed%*(�(Form$) � 2)) $ � 25: % format$="table" &$ columns%=�($�text(printW%,15)) '0 column$=�columns%,"|"+�colwidth%," "))+"|" (9 LinesPerPage%=(pagelength%-Tmargin%-15) � linefeed% ) � 26: * format$="label" +) labwidth%=�($�text(labelW%,4))*cpi% ,& labdepth%=�($�text(labelW%,6))*6 -1 labrows%=(pagelength%-Tmargin%) � labdepth% . rows_printed%=0 /% labup%=�selected_esg(labelW%,1) 0$ labrepl%=�($�text(labelW%,10)) 1' labsubst%=�($�text(labelW%,12))-1 2% Title$="":Title1$="":Title2$="" 3� 4!Ȏ �selected_esg(printW%,4) � 5 � 38:reportdest$="Window" 6 � 39:reportdest$="File" 7 � 41:reportdest$="Printer" 8� 9'� LinesPerPage%=0 � LinesPerPage%=1 :� ;: <� �pitch(p$) =4� �selected(printW%,42) �=�(31)+"9"+p$+"01" �="" >: ?� �list_head(place%) @� place%=0 � A Ȏ reportdest$ � B � "Window","Printer": C RU%=�($used%) DO � RU%<5 � textblocksize%=5*LenLine% � textblocksize%=(RU% � 5)*LenLine% E$ textblockinc%=textblocksize% F? �extend_named_sliding_block(textanchor%,textblocksize%) G TextPtr%=!textanchor% H recblocksize%=400 I= �extend_named_sliding_block(recanchor%,recblocksize%) J& � "File"::�#texthandle%,pitch$ K � L� M�extra_lines(Tmargin%,0) N� � displayed% � O �send_title(Title$) P �send_title(Title1$) Q �send_title(Title2$) R� SȎ format$ � T � "horiz": U Ȏ �selected(printW%,29) � V � �: WV � �selected(printW%,42) � $(!lineanchor%)=uon$:�list_line(-1,lineanchor%,2,32) X. �list_line(-1,headanchor%,LenLine%,32) Y � �: Z �rule_off(45) [. �list_line(-1,headanchor%,LenLine%,32) \ �rule_off(45) ] � ^ � "table": _& �rule_off(32):$(TextPtr%-3)=uon$ ` �rule_off(32) a, �list_line(-1,headanchor%,LenLine%,32) b �rule_off(32) c � "vert":�rule_off(45) d� eheader_lines%=Count% f� g: h,� �list_line(REC%,anchor%,length%,char%) i Count%+=1 jȎ reportdest$ � k � "Window","Printer": l) �pad_line(LenLine%-length%-1,char%) mP �heap_store(textanchor%,textblocksize%,textblockinc%,TextPtr%,LenLine%,"") nH ș "Wimp_TransferBlock",mytask%,!anchor%,mytask%,TextPtr%,LenLine% o! � Count%*4>=recblocksize% � p recblocksize%+=400 q= �extend_named_sliding_block(recanchor%,recblocksize%) r � s" !(!recanchor%+Count%*4)=REC% t TextPtr%+=LenLine% u � "File": v) �pad_line(LenLine%-length%-1,char%) w2 ș "OS_GBPB",2,texthandle%,!anchor%,LenLine% x� y �poll z� {: |� �pad_line(bytes%,char%) }� base%,ptr%,I% ~/base%=!anchor%:ptr%=base%+LenLine%-bytes%-1 � bytes%>0 � � � I%=0 � bytes%-2 � ptr%?I%=char% � � I% �� �ptr%?(bytes%-1)=32 �ptr%?bytes%=10 �� �: �� �rule_off(char%) �� base% �base%=!lineanchor% �$base%=margin$ �-�list_line(-1,lineanchor%,Lmargin%,char%) �� �: �� �total_list �� C%,L%,base%,pos%,L$ �#L$=margin$+"Total "+�(printed%) �!base%=!lineanchor%:pos%=base% �Ȏ format$ � � � "horiz": �/ � � �selected(printW%,29) � �rule_off(45) � �ctotals(numfirst%) �1 � �(L$)>LenLine%-2 � L$=margin$+�(printed%) �3 �heap_store(lineanchor%,LenLine%,0,pos%,0,L$) �0 �list_line(REC%,lineanchor%,pos%-base%,32) �/ � � �selected(printW%,29) � �rule_off(45) � � "table": � �rule_off(32) �% �extra_lines(linefeed%,colpos%) � �ctotals(numfirst%) �� ��lit(menu%(6),7,�) �� �: �� �send_title(T$) �� C$,L$,P%,L% �� T$="" � � �L%=LenLine%-Lmargin%-1 �ȕ �(T$)>=L% � P%=�(T$) � � � P%-=1:C$=�T$,P%,1) �( � (�"= ,.;:",C$)>0 � P%<L%) � P%=0 � � P%=0 � �' L$=margin$+�T$,L%-1):T$=�T$,L%) �) � L$=margin$+�T$,P%):T$=�T$,P%+1) � � � $(!lineanchor%)=L$ �) �list_line(-1,lineanchor%,�(L$),32) �� �$(!lineanchor%)=margin$+T$ �0�list_line(-1,lineanchor%,Lmargin%+�(T$),32) �� �: �� �screen_list �!!block%=0:block%!4=-Count%*32 �(block%!8=(LenLine%-1)*16:block%!12=0 �%ș "Wimp_SetExtent",listW%,block% �!block%=listW% �$ș "Wimp_GetWindowState",,block% �;x%=(block%!12+block%!4) � 2:y%=(block%!16+block%!8) � 2 �"block%!12=block%!4+LenLine%*16 �� Count%<28 � �" block%!16=block%!8+Count%*32 � � � block%!16=block%!8+32*28 �� �!ș "Wimp_CloseWindow",,block% ��open_window(listW%) � Listed%=� ��show_menu(menu%(18),x%,y%) �� �: �� �sort_list �� I% �.ind%=!textanchor%+LenLine%*header_lines%-1 �� I%=0 � printed%-1 � ind%+=LenLine% � block%!(I%*4)=ind% �� I% �jș "OS_HeapSort",printed%,(block% � (1<<30) � (1<<31)),4,,!textanchor%+LenLine%*header_lines%,LenLine% ��redraw(listW%) �� �: �� �lose_list ��close_window(listW%) �%�scrap_sliding_block(textanchor%) �$�scrap_sliding_block(recanchor%) � Listed%=� �� �: �� �parse(S$,case%) �~� val%,I%,P%,F%,f%,t%,flag%,left%,right%,search$,field$,op$,bo$,target$,targ$,f$,t$,E$,E1$,TitFd$,TitTg$,simple%,date$,SF$ �usekey%=-1:useval$="" �Q� S$="" � �u(S$)="ALL" � Title$=��leaf($database%),2)+". All records":="TRUE" �simple%=�simple(S$) �S$+=" ":Title$="" �ȕ �(S$)>0 � W$=�word(S$," ") �5 � W$="NOT" � �S$,1)<>"(" � � moan_err%,�msg(60) � �strip_brackets � � �(W$)>0 � �* flag%=�:TitFd$="":TitTg$="":op$="" � Ȏ W$ � �5 � "AND","OR","NOT":E$=W$:Title$+=" "+E$+" " �+ � "&":E$="AND":Title$+=" "+E$+" " � : � E$="" � �split � ȕ �(field$)>0 �$ f$=�u(�word(field$,",")) � f%=�field(f$,�) � f$="F$("+�(f%)+")" �( � � case% � f$="FNu("+f$+")" �% � val% � f$="VAL("+f$+")" � Ȏ chartype%(f%) � �3 � 5,51,52:f$="FNreverse_date("+f$+")" � � � targ$=target$ � ȕ �(targ$)>0 �' t$=�word(targ$,","):u$=t$ �B � � flag% � TitTg$+=�expand(t$,link$(f%),L%,SF$)+"," �2 � chartype%(f%)>40 � t$=�pos_neg(t$) � Ȏ chartype%(f%) � � � 5,51,52: �K � �check_date(t$,2,date$)=� � t$=�reverse_date(date$):u$=t$ � � t$=""""+t$+"""" ' � val% � t$="VAL("+t$+")" � f%=0 � Ȏ op$ � ; � "{","=":E1$="FNany("+t$+","""+op$+""")" . � "}{":� moan_err%,�msg(100) . � "<>":� moan_err%,�msg(101) 7 :� moan_err%,""""+op$+""""+�msg(102) � � Ȏ op$ � 4 � "{":E1$="INSTR("+f$+","+t$+")>0" 5 � "}{":E1$="INSTR("+f$+","+t$+")=0" � "=": E1$=f$+op$+t$ , � simple%=� � usekey%=-1 � + foundkey%=�is_a_key(f%) @ � foundkey%>=0 � � KL%(foundkey%)=len%(f%) � 2 usekey%=foundkey%:useval$=u$ � � ! :E1$=f$+op$+t$ � � @ � �(E$)+�(E1$)>255 � � moan_err%,�msg(6) � E$+=E1$ @ � �(E$)+�(bo$)>255 � � moan_err%,�msg(6) � E$+=bo$ � flag%=� � E$=�E$,�(E$)-�(bo$)) � �E$,bo$)>0 � = � �(E$)>253 � � moan_err%,�msg(6) � E$="("+E$+")" � ! � " � # �add_brackets $ E$+=" " % � �(search$)+�(E$)>255 � & � moan_err%,�msg(6) ' � search$+=E$ ( �build_title ) � *� +,Title$=��leaf($database%),2)+". "+Title$ ,� usekey%>=0 � -* kl%=KL%(usekey%):val$=�type(usekey%) . � �deselect(matchW%,23) /� 0=search$ 1: 2� �pos_neg(s$) 3Ȏ s$ � 4* � "+","y","Y","*","�","T","t":s$=" " 5) � "-","n","N","x","X","F","f":s$="" 6� 7=s$ 8: 9� �simple(S$) :Q� �S$,"=")>0 � (�S$,",")=0 � �S$,"-")=0 � �S$,"OR")=0 � �S$,"NOT")=0) �=� �=� ;: <� �word(� S$,sep$) =� P%,W$,Q1%,Q2% >� ?' Q1%=�S$,""""):Q2%=�S$,"""",Q1%+1) @ P%=�S$,sep$,P%) A Ȏ � � B- � (P%>Q1% � P%<Q2%),(P%>Q2% � Q2%>0): C5 S$=�S$,Q1%-1)+�S$,Q1%+1,Q2%-Q1%-1)+�S$,Q2%+1) D9 P%=Q2%-2:� ### S$ is now 2 characters shorter ### E) � Q1%>0 � Q2%=0:�softerror("",93) F S$=�S$,Q1%-1)+�S$,Q1%+1) G � H� Q1%+Q2%=0 � P%<Q1% IW$=�S$,P%-1) JS$=�S$,P%+1) K=W$ L: M� �any(targ$,op$) N� F%,found%,case%,F$ Ocase%=�selected(matchW%,16) P� Q F%+=1:F$=F$(F%) R � � case% � F$=�u(F$) S Ȏ op$ � T' � "{":� �F$,targ$)>0 � found%=� U# � "=":� F$=targ$ � found%=� V � W� found% � F%=fields% X=found% Y: Z� �split [� X$,Q%,I% \8X$=">=>=,<=<=,<>,}{,>=,<=,==,>>,<<,{{,=,<,>,{,":P%=0 ]ȕ �(X$)>0 � P%=0 ^, Q%=�X$,","):op$=�X$,Q%-1):X$=�X$,Q%+1) _ P%=�W$,op$) `� a� P%>0 � b field$=�W$,P%-1) c target$=�W$,P%+�(op$))+"," d% � � case% � target$=�u(target$) e field$=�exp_field f Ȏ op$ � g � "<>","}{":bo$="AND" h � "<=",">=":bo$="OR" i � "<=<=",">=>=": j op$=�op$,2):bo$="AND" k � "==","<<",">>","{{": l op$=�op$,1):bo$="AND" m :bo$="OR" n � o � � moan_err%,�msg(40) p� q� r: s� �exp_field t� P%,I%,F1%,F2%,F$ uP%=�field$,"-") v� P%=0 � w F$=field$+"," x � y! F1%=�field(�field$,P%-1),�) z! F2%=�field(�field$,P%+1),�) { � F1%>F2% � Ȕ F1%,F2% | � I%=F1% � F2% } F$+=Tag$(I%)+"," ~ � I% � �=F$ �: �� �fnum(S$) �� N% �N%=�("&"+S$) �newline%=((N% � 128)>0) �=(N% � 127) �: �� �field(f$,Z%) �� I%,F%,desc$ �%� f$="@" � TitFd$="Any field ":=0 � val%=� �0� �f$,1)="[" � �f$)="]" � f$=��f$),2):val%=� �ȕ I%<fields% � I%+=1 �# � �u(Tag$(I%))=�u(f$) � F%=I% �� �� F%>0 � Z%=� � �$ desc$=$�text(mainW%,desc%(F%)) �6 � desc$<>"" � TitFd$+=desc$+"," � TitFd$+=f$+"," �5 � � F%=0 � � moan_err%,�msg(8)+" ("+f$+")"+�(0) �� �Ȏ chartype%(F%) � �! � 3,6,46,47,54,56,57:val%=� �� �=F% �: �%� �find_fields(S$,sep$,� length%) �� f$,F$,C$,P%,Q%,F% �Q%=1:length%=0 �� � P%=�S$,sep$,Q%) � � P%>0 � f$=�S$,Q%,P%-Q%) � F%=�field(f$,�) � length%+=len%(F%)+1 � F$=�~(F%) � � �(F$)=1 � F$="0"+F$ � C$+=F$ � Q%=P%+1 �� P%=�(S$) �length%+=�(�(RA%))+1 �=C$ �: �� �strip_brackets �ȕ �W$,1)="(" � left%+=1:W$=�W$,2) �� �ȕ �W$)=")" � right%+=1:W$=�W$) �� �� �: �� �add_brackets �ȕ left%>0 � E$="("+E$:left%-=1 �� �ȕ right%>0 � E$+=")":right%-=1 �� �� �: �� �build_title � � change% �#TitFd$=�TitFd$):TitTg$=�TitTg$) �� �TitFd$,",")>0 � � Ȏ bo$ � �& � "OR":TitFd$="One of:"+TitFd$ � � "AND": � Ȏ op$ � �; � "<>":TitFd$="None of:"+TitFd$:op$="=":change%=� �; � "}{":TitFd$="None of:"+TitFd$:op$="{":change%=� �# :TitFd$="All of:"+TitFd$ � � � � �� �� �TitTg$,",")>0 � � Ȏ bo$ � �& � "OR":TitTg$="One of:"+TitTg$ � � "AND": � Ȏ op$ � �1 � "<>":TitTg$="None of:"+TitTg$:op$="=" �1 � "}{":TitTg$="None of:"+TitTg$:op$="{" �I :� change% � TitTg$="Any of:"+TitTg$ � TitTg$="All of:"+TitTg$ � � � � �� �Ȏ op$ � � � "{":op$=" contains " �% � "}{":op$=" does not contain " �� �Title$+=TitFd$+op$+TitTg$ �� �: �0� �expand(string$,table$,� ExpLen%,� subst$) �U� p$,s$,start%,F%,I%,T%,ind%,row%,Rec%,Rows%,TabFields%,field%,sfield%,pos%,spos% �subst$=string$ �9� table$="" � ExpLen%=0:=string$:� ### Not linked ### �&field%=�(�table$)):table$=�table$) �U� �(table$)<58 � �(table$)<>-1 � sfield%=�(table$):table$=�table$,2) � sfield%=-1 �T%=�table_number(table$) �9� T%<0 � ExpLen%=0:=string$:� ### Table not found ### �p$=printrel$(T%) �;T$=�table_info(T%,Rows%,TabFields%,Rec%,tabfieldlen%()) �,pos%=�table_field(field%,tabfieldlen%()) �=� sfield%>=0 � spos%=�table_field(sfield%,tabfieldlen%()) �� p$<>"" � � ExpLen%=0 � � I%=1 � �(p$) � F%=�(�p$,I%,1)) �# ExpLen%+=tabfieldlen%(F%)+2 � � I% � ExpLen%-=2 � � ExpLen%=tabfieldlen%(1) �� �4start%=!tabanchor%(T%)+160-Rec%:ind%=start%+pos% �� � row%+=1:ind%+=Rec% � � row%>Rows% � $ind%=string$ �B� row%>Rows% � subst$="":=string$:� ## String not in table ### �=ind%=start%+row%*Rec%:� sfield%>=0 � subst$=$(ind%+spos%) �� p$<>"" � � � I%=1 � �(p$) � F%=�(�p$,I%,1)) �, pos%=�table_field(F%,tabfieldlen%()) �4 s$+=�pad($(ind%+pos%),tabfieldlen%(F%))+" " � � I% � s$=��s$)) �C � ind%+=tabfieldlen%(0)+1:s$=$ind%:� ### Return 2nd field ### � =s$ : � �n(F%) V� T%,row%,ind%,start%,Rows%,Rec%,TabFields%,pos%,valpos%,N%,field%,name$,table$,S$ � link$(F%)="" �=0 S$=$Rf%(F%) name$=link$(F%) $field%=�(�name$)):table$=�name$) 6� �(table$)<58 � �(table$)<>-1 � table$=�table$,2) /table%=�table_number(table$):� table%<0 �=0 ?T$=�table_info(table%,Rows%,TabFields%,Rec%,tabfieldlen%()) .� TabFields%=field% � �softerror("",54):=0 ,pos%=�table_field(field%,tabfieldlen%()) 1valpos%=�table_field(field%+1,tabfieldlen%()) 'start%=!tabanchor%(table%)+160-Rec% � row%+=1 ind%=start%+row%*Rec%+pos% � row%>Rows% � S$=$ind% � row%<=Rows% � # ind%=start%+row%*Rec%+valpos% N%=�($ind%) � N%=0 � =N% : � �pad(s$,L%) ȕ �(s$)<L% s$+=" " � =s$ : � �include_fields !t� Hdlen%,Datlen%,hlm%,dlm%,I%,F%,f$,Head$,limit%,pad%,col%,fail%,n$,y$,SF$,memo%,base%,pos%,blocksize%,blockinc% "'blocksize%=256:blockinc%=blocksize% #7�extend_named_sliding_block(headanchor%,blocksize%) $!base%=!headanchor%:pos%=base% %@�heap_store(headanchor%,blocksize%,blockinc%,pos%,0,margin$) &� I%=1 � �(Form$)-1 � 2 ' F%=�fnum(�Form$,I%,2)) ( Ȏ chartype%(F%) � )0 � 36,39:dlm%=TextLine%:memo%=�:�set_vert * � 41,42,43,44,45: +! Datlen%=�no_yes(F%,n$,y$) ,E � ### Get data length for strings printed for check boxes ### - � . � �selected(printW%,11) � // f$=�expand("@#*",link$(F%),Datlen%,SF$) 0) � Datlen%=0 � Datlen%=maxlen%(F%) 1 � 2 Datlen%=maxlen%(F%) 3 � 4# � Datlen%>dlm% � dlm%=Datlen% 5P � �selected(printW%,2) � Head$=$�text(mainW%,(desc%(F%))) � Head$=Tag$(F%) 6 Hdlen%=�(Head$) 7! � Hdlen%>hlm% � hlm%=Hdlen% 8 Ȏ format$ � 9 � "horiz","table": :- pad%=Datlen%-Hdlen%:� pad%<0 � pad%=0 ; Ȏ chartype%(F%) � <c � 3,6,46,47,54,56,57:� �selected(printW%,11) � Head$+=�pad%," ") � Head$=�pad%," ")+Head$ =A � ### Right justify numbers unless Expand option on ### > :Head$+=�pad%," ") ? � @J �heap_store(headanchor%,blocksize%,blockinc%,pos%,0,Head$+spacer$) A# Tab%((I%+1) � 2)=pos%-base% B � C� I% DȎ format$ � E � "horiz":L%=pos%-base%+2 F � "vert": G � memo% � H L%=TextLine%+5 I! � L%=Lmargin%+hlm%+dlm%+6 J � K Tab%(1)=hlm% L � "table": M col%=�(column$) NF �heap_store(headanchor%,blocksize%,blockinc%,pos%,0,column$+" ") O ?pos%=10:L%=pos%-base%+1 P � "label": Q longestfield%=dlm% R) L%=labup%*labwidth%+dlm%+Lmargin%+1 S� T1�extend_named_sliding_block(lineanchor%,L%+8) U=L% V: W� �no_yes(F%,� no$,� yes$) X� P%,V$,L% YV$=$�val(mainW%,field%(F%)) ZP%=�V$,"Q") [� P%>0 � \ V$=�V$,P%+1) ] P%=�V$,",") ^ no$=�V$,P%-1) _ yes$=�V$,P%+1) ` � no$="N":yes$="Y" a� b L%=�(no$) c� �(yes$)>L% � L%=�(yes$) d=L% e: f9� �heap_store(anchor%,� size%,inc%,� ptr%,L%,string$) g!� string$<>"" � L%=�(string$) h � ptr%-!anchor%+L%+1>size% � i size%+=inc% j0 �extend_named_sliding_block(anchor%,size%) k� l3� string$<>"" � $ptr%=string$:ptr%+=L%:?ptr%=10 m� n: o� �set_vert p�deselect(printW%,23) q�deselect(printW%,25) r�deselect(printW%,26) s�select(printW%,24) tformat$="vert" u?LinesPerPage%=(pagelength%-10) � (linefeed%*(�(Form$) � 2)) v'� LinesPerPage%=0 � LinesPerPage%=1 w� x: y� �drag_selection(f$) z� F%,I%,T%,F {F=�(f$) |printorder$=�#F } T%=-1 ~ȕ � �#F T%+=1 � printrel$(T%)=�#F �� ��close_file(F) �� F%=1 � fields% � � chartype%(F%)>40 � �. col%=�get_icon_cols(mainW%,field%(F%)) �E � (col% � %1111)<2 � col%=((col%>>4) � (col%<<4)) � %11111111 �. �set_icon_cols(mainW%,field%(F%),col%) �& � �deselect(mainW%,field%(F%)) � � �� F% �!� I%=1 � �(printorder$)-1 � 2 �" F%=�fnum(�printorder$,I%,2)) � � chartype%(F%)>40 � �. col%=�get_icon_cols(mainW%,field%(F%)) �0 col%=((col%>>4) � (col%<<4)) � %11111111 �. �set_icon_cols(mainW%,field%(F%),col%) �$ � �select(mainW%,field%(F%)) � � �� I% ��lit(menu%(6),7,�) ��lit(menu%(6),8,�) �� �: �� �select_all �� F%,T%,F$ �printorder$="" �� F%=1 � fields% � Ȏ chartype%(F%) � � � 41,42,43,44,45: �. col%=�get_icon_cols(mainW%,field%(F%)) �F � (col% � %1111)>=2 � col%=((col%>>4) � (col%<<4)) � %11111111 �. �set_icon_cols(mainW%,field%(F%),col%) �' F$=�~(F%):� �(F$)=1 � F$="0"+F$ � printorder$+=F$ � � 0,1,2,4,5,7,8: � � len%(F%)>0 � �) F$=�~(F%):� �(F$)=1 � F$="0"+F$ � printorder$+=F$ �$ �select(mainW%,field%(F%)) � � �( � 36,39,48,49,50,51,52,53,55,58: �' F$=�~(F%):� �(F$)=1 � F$="0"+F$ � printorder$+=F$ �" �select(mainW%,field%(F%)) � � 3,6,46,47,54,56,57: �' F$=�~(F%):� �(F$)=1 � F$="0"+F$ � printorder$+=F$ �" �select(mainW%,field%(F%)) �" �enable_row(calcrow%?F%,�) � � �� F% ��lit(menu%(6),7,�) ��lit(menu%(6),8,�) �� �: �� �clear_selection �� F%,T% �� F%=1 � fields% � Ȏ chartype%(F%) � � � 41,42,43,44,45: �. col%=�get_icon_cols(mainW%,field%(F%)) �E � (col% � %1111)<2 � col%=((col%>>4) � (col%<<4)) � %11111111 �. �set_icon_cols(mainW%,field%(F%),col%) �V � 3,6,8,46,47,54,56,57:�enable_row(calcrow%?F%,�):�deselect(mainW%,field%(F%)) �& :�deselect(mainW%,field%(F%)) � � �� F% �printorder$="" �� T%=0 � LastTable% � printrel$(T%)="" �� T% ��lit(menu%(6),7,�) ��lit(menu%(6),8,�) �� �: �� �drag_query(f$) �� F%,I%,Q$ �� �selected(keypadW%,22) � �, ș "OS_File",255,f$,�text(keypadW%,29) � �set_caret(keypadW%,29) � �redraw_icon(keypadW%,29) � � �* ș "OS_File",255,f$,�text(matchW%,0) � �open_window(matchW%) � �set_caret(matchW%,0) � �redraw_icon(matchW%,0) �� �� �: �� �drag_options(f$) �� F,I%,set%,ic% �F=�(f$) �� � �� � �:� �:�end_load:� �� +0 �� I%=1 � 13 � � ic% �* �#F,set%:�set_icon(printW%,ic%,set%) �� I% �� I%=1 � 9 � � ic% � �#F,$�text(printW%,ic%) � �redraw_icon(printW%,ic%) �� I% �� I%=1 � 7 � � ic% �* �#F,set%:�set_icon(printW%,ic%,set%) �� I% �� I%=1 � 3 � � ic% �* �#F,set%:�set_icon(labelW%,ic%,set%) �� I% �� I%=1 � 4 � � ic% � �#F,$�text(labelW%,ic%) �� I% �� I%=1 � 3 � � ic% �* �#F,set%:�set_icon(labelW%,ic%,set%) �� I% ��close_file(F) �2�icon_bit(22,printW%,15,�selected(printW%,25)) �2�icon_bit(22,printW%,45,�selected(printW%,25)) �2�icon_bit(22,labelW%,12,�selected(labelW%,11)) �: �8� 1,2,4,6,7,8,23,24,25,26,38,39,41:REM Radio buttons �4� 15,16,17,18,30,32,34,43,45:REM Writable fields .� 10,11,12,19,29,40,42:REM Option switches � In Label Definition window � 0,1,2:REM Radio buttons $� 4,6,10,12:REM Writeable fields "� 11,13,16:REM Option switches : � : � �end_load �close_file(F) Ȏ � � 7 � 222:�wimp_error(�,fatal_err%,�,f$+" not found") � 6: F �wimp_error(�,moan_err%,�,f$+" is too old and is being deleted") ș "OS_CLI","Delete "+f$ P � �leaf(f$)="PrintOpts" � �drag_options("<Pbase$Dir>.Resources.PrintOpts") % :�wimp_error(�,moan_err%,�,�$) � � : � �design_field � w%,h% posx%=x%:posy%=y% 3!block%=mainW%:ș "Wimp_GetWindowState",,block% x%+=block%!20-block%!4 y%+=block%!24-block%!16 Ȏ b% � %1111111 � � 16: A � (ic% � 2)=1 � drag%=6:dragbutt%=16 � drag%=5:dragbutt%=64 " �init_drag(mainW%,ic%,drag%) � 2: $InsText%="" 3 �deselect(createW%,�selected_esg(createW%,1)) ! � ic%>=0 � " �lit(menu%(9),0,�) #B !block%=mainW%:block%!4=ic%:ș "Wimp_GetIconState",,block% $M x%=block%!8:y%=block%!12:w%=block%!16-block%!8:h%=block%!20-block%!12 %$ Fieldnumber%=�get_field(ic%) &% type%=chartype%(Fieldnumber%) ' Ȏ type% � ( � 0,1,2,3,4,5,6,7,8: ) �select(createW%,21) * �set_limits(1,0,8,8) + � 36,37,38,39,40: , �select(createW%,22) -" �set_limits(36,36,40,11) . � 41,42,43,44,45: / �select(createW%,24) 0" �set_limits(41,41,45,14) 16 � 46,47,48,49,50,51,52,53,54,55,56,57,58,59: 2 �select(createW%,35) 3" �set_limits(46,46,59,16) 4 : 5 �select(createW%,23) 6 �set_limits(9,9,35,19) 7 � 8 fieldtype%=type% 9R �tick_one(menu%(menunumber%),0,lasttype%-firsttype%,fieldtype%-firsttype%) :4 $FtitleText%="Modify field "+�(Fieldnumber%) ;5 $DescText%=$�text(mainW%,desc%(Fieldnumber%)) <$ $TagText%=Tag$(Fieldnumber%) =' $LenText%=�(len%(Fieldnumber%)) >$ $ValText%=vname$(fieldtype%) ?l � fix%(Fieldnumber%)>0 � $Fixpt%=�(fix%(Fieldnumber%)):�select(createW%,14) � �deselect(createW%,14) @: �icon_bit(22,createW%,13,(�selected(createW%,14))) A? �icon_bit(22,createW%,14,(fieldtype%=3 � fieldtype%=6)) B# �icon_bit(22,createW%,18,�) C[ �icon_bit(22,createW%,6,(fieldtype%<9 � fieldtype%=46 � fieldtype%=47) � � adjust%) D+ �icon_bit(22,createW%,30,� adjust%) E# �icon_bit(22,createW%,29,�) F@ �icon_bit(22,createW%,15,(fieldtype%=3 � fieldtype%=47)) G0 �icon_bit(22,createW%,25,(fieldtype%=3)) H* C$=calc$(Fieldnumber%):P%=�C$,"|") I8 � P%>0 � $mintext%=�C$,P%-1):$maxtext%=�C$,P%+1) J � I%=21 � 24 K- �icon_bit(22,createW%,I%,� adjust%) L � I% M+ �icon_bit(22,createW%,35,� adjust%) N+ �icon_bit(22,createW%,39,� adjust%) O+ �icon_bit(22,createW%,40,� adjust%) P � Q" �lit(menu%(9),0,� adjust%) R �select(createW%,21) S �set_limits(1,0,8,8) T. $FtitleText%="New field "+�(fields%+1) U/ $DescText%="":$TagText%="":$LenText%="" V- $Fixpt%="2":$mintext%="":$maxtext%="" W �deselect(createW%,14) X# �icon_bit(22,createW%,13,�) Y# �icon_bit(22,createW%,14,�) Z# �icon_bit(22,createW%,15,�) [# �icon_bit(22,createW%,25,�) \# �icon_bit(22,createW%,29,�) ]# �icon_bit(22,createW%,30,�) ^# �icon_bit(22,createW%,39,�) _# �icon_bit(22,createW%,40,�) `+ �icon_bit(22,createW%,18,� adjust%) a � b9 $boxX%=�(x%):$boxY%=�(y%):$boxW%=�(w%):$boxH%=�(h%) c �close_window(createW%) d, �show_menu(menu%(9),posx%-64,posy%-20) e0 � 64:�init_drag(mainW%,ic%,5):dragbutt%=64 f� g� h: i(� �remove_field(Field%,con%,� Calc$) j� F% k'� con% � � �confirm(�msg(53))=� � � l)!block%=mainW%:block%!4=desc%(Field%) m"ș "Wimp_GetIconState",,block% n"posx%=block%!8:posy%=block%!12 o ș "Wimp_DeleteIcon",,block% p8block%!4=field%(Field%):ș "Wimp_DeleteIcon",,block% qfields%-=1 rCalc$=calc$(Field%) s� F%=Field% � fields% t� desc%(F%)=desc%(F%+1):field%(F%)=field%(F%+1):Tag$(F%)=Tag$(F%+1):len%(F%)=len%(F%+1):chartype%(F%)=chartype%(F%+1):fix%(F%)=fix%(F%+1):calc$(F%)=calc$(F%+1) u� F% v!block%=mainW% w$ș "Wimp_GetWindowState",,block% x;posx%-=block%!20-block%!4:posy%-=block%!24-block%!16-48 yBș "Wimp_ForceRedraw",-1,block%!4,block%!8,block%!12,block%!16 z� {: |(� �create_field(Before%,x%,y%,Calc$) }D� Desc%,Field%,F%,tag$,Len%,Char%,F%,L%,LF%,x%,y%,width%,height% ~9� fields%=MaxFields% � �softerror(�(MaxFields%),23):� 6� $DescText%="" � $TagText%="" � fieldtype%<=8 � � �%L%=�($DescText%):LF%=�($LenText%) �#� LF%>246 � �softerror("",64):� �@x%=�($boxX%):y%=�($boxY%):width%=�($boxW%):height%=�($boxH%) �Ȏ fieldtype% � � � 39,40,59: � LF%=0 � � width%=0 � width%=48 � � height%=0 � height%=48 � � 41,42,43,44,45:LF%=1 � � 8,48,50:LF%=8 � � 49:LF%=15 � � 51:LF%=10 � � 52,58:LF%=24 � � 53,55:LF%=3 � � 54,56:LF%=2 � � 57:LF%=4 �� �0� LF%>0 � $TagText%="" � �softerror("",16):� �� F%+=1 �%� $TagText%=Tag$(F%) � F%>fields% �7� F%<=fields% � $TagText%<>"" � �softerror("",20):� �8fields%+=1:Tag$(fields%)=$TagText%:len%(fields%)=LF% � � width%=0 � $TagText%<>"" � �G � len%(fields%)<70 � width%=len%(fields%)*16+16 � width%=70*16+16 �� �'� height%=0 � width%>0 � height%=48 �!chartype%(fields%)=fieldtype% �I� �selected(createW%,14) � fix%(fields%)=�($Fixpt%) � fix%(fields%)=0 �D�extend_named_sliding_block(formanchor%,Fptr%-!formanchor%+L%+6) �kdesc%(fields%)=�create_icon(mainW%,x%-L%*16-16,y%,L%*16+8,48,(winback%<<28)+&7016731,"",Fptr%,hand%,L%) �!$Fptr%=$DescText%:Fptr%+=L%+1 � $Fptr%="" �Ȏ fieldtype% � � � 3: � min$=$�text(createW%,15) � max$=$�text(createW%,25) �L � min$<>"" � max$<>"" � calc$(fields%)=min$+"|"+max$:calc$(0)="LOADED" � � 47: �3 min$=$�text(createW%,15):� min$="" � min$="0" �4 calc$(fields%)=min$+"|"+min$:calc$(0)="LOADED" �� �Ȏ fieldtype% � �Q � 0,1,2,3,4,5,6,7,8,39,40,46,47,48,49,50,51,52,53,54,55,56,57:valptr%=hand% �# :valptr%=hvalid%(fieldtype%) �� �-�icon_design(fieldtype%,1,width%,height%) �Xfield%(fields%)=�create_icon(mainW%,x%,y%,width%,height%,iflags%,"",Fptr%,valptr%,4) �G� fieldtype%=40 � Rf%(fields%)=�create_anchor("Picture"+�(fields%)) �Fptr%+=5 �L�redraw_icon(mainW%,desc%(fields%)):�redraw_icon(mainW%,field%(fields%)) �D� Before%<fields% � Before%>0 � �re_sequence(fields%,Before%,-1) �� �: �� �adjust_field(b%) �� Dptr%,Fptr% �$ș "Wimp_GetPointerInfo",,block% � newx%=!block%:newy%=block%!4 �#Fieldnumber%=�get_field(ficon%) �� (ficon% � 2)=0 � �C !block%=mainW%:block%!4=ficon%:ș "Wimp_GetIconState",,block% �. Dptr%=block%!28:Desc$=$Dptr%:L%=�(Desc$) �" ș "Wimp_DeleteIcon",,block% �& ș "Wimp_GetWindowState",,block% �- x%=block%!20-block%!4+newx%-oldx%+minx% �. y%=block%!24-block%!16+miny%+newy%-oldy% �[ desc%(Fieldnumber%)=�create_icon(mainW%,x%,y%,L%*16+8,48,&17016731,"",Dptr%,hand%,L%) � � �C !block%=mainW%:block%!4=ficon%:ș "Wimp_GetIconState",,block% � Fptr%=block%!28 � Ȏ b% � � � 16: �$ ș "Wimp_DeleteIcon",,block% �( ș "Wimp_GetWindowState",,block% �# x%=block%!20-block%!4+minx% �0 y%=block%!24-block%!16+miny%+newy%-oldy% �F width%=maxx%-minx%+newx%-oldx%:height%=maxy%-miny%+oldy%-newy% � � 64: �G !block%=mainW%:block%!4=ficon%-1:ș "Wimp_GetIconState",,block% �0 Dptr%=block%!28:Desc$=$Dptr%:L%=�(Desc$) �$ ș "Wimp_DeleteIcon",,block% �C !block%=mainW%:block%!4=ficon%:ș "Wimp_DeleteIcon",,block% �( ș "Wimp_GetWindowState",,block% �8 x%=block%!20-block%!4+newx%-oldx%+minx%-L%*16-16 �0 y%=block%!24-block%!16+miny%+newy%-oldy% �k desc%(Fieldnumber%)=�create_icon(mainW%,x%,y%,L%*16+8,48,(winback%<<28)+&7016731,"",Dptr%,hand%,L%) �( ș "Wimp_GetWindowState",,block% �/ x%=block%!20-block%!4+newx%-oldx%+minx% �0 y%=block%!24-block%!16+miny%+newy%-oldy% �. width%=maxx%-minx%:height%=maxy%-miny% � � �( fieldtype%=chartype%(Fieldnumber%) � Ȏ fieldtype% � �V � 0,1,2,3,4,5,6,7,8,39,40,46,47,48,49,50,51,52,53,54,55,56,57,58:valptr%=hand% �! � 59:valptr%=!logoanchor% �% :valptr%=hvalid%(fieldtype%) � � �/ �icon_design(fieldtype%,1,width%,height%) �_ field%(Fieldnumber%)=�create_icon(mainW%,x%,y%,width%,height%,iflags%,"",Fptr%,valptr%,4) �S � fieldtype%=40 � Rf%(Fieldnumber%)=�create_anchor("Picture"+�(Fieldnumber%)) �� �@$boxX%=�(x%):$boxY%=�(y%):$boxW%=�(width%):$boxH%=�(height%) �!block%=mainW% �$ș "Wimp_GetWindowState",,block% �Bș "Wimp_ForceRedraw",-1,block%!4,block%!8,block%!12,block%!16 �� �: �� �swap_fields(F1%,F2%) �� F2%>0 � F2%<=fields% � � Ȕ desc%(F1%),desc%(F2%) � Ȕ Tag$(F1%),Tag$(F2%) � Ȕ field%(F1%),field%(F2%) � Ȕ len%(F1%),len%(F2%) �& Ȕ chartype%(F1%),chartype%(F2%) � Ȕ fix%(F1%),fix%(F2%) � Ȕ calc$(F1%),calc$(F2%) � �close_window(createW%) �� �� �: �� �re_sequence(F1%,F2%,Z%) �wD%=desc%(F1%):T$=Tag$(F1%):F%=field%(F1%):L%=len%(F1%):C%=chartype%(F1%):f%=fix%(F1%):� Calc$="" � Calc$=calc$(F1%) �� I%=F1%+Z% � F2% � Z% �� desc%(I%-Z%)=desc%(I%):Tag$(I%-Z%)=Tag$(I%):field%(I%-Z%)=field%(I%):len%(I%-Z%)=len%(I%):chartype%(I%-Z%)=chartype%(I%):fix%(I%-Z%)=fix%(I%):calc$(I%-Z%)=calc$(I%) �� I% �jdesc%(F2%)=D%:Tag$(F2%)=T$:field%(F2%)=F%:len%(F2%)=L%:chartype%(F2%)=C%:fix%(F2%)=f%:calc$(F2%)=Calc$ �� �: �)� �icon_design(char%,func%,� w%,� h%) Ȏ func% � S � 0:bfg%=&1700A53B:ffg%=&0700A535:� logosloaded% � lfg%=&0000011A � lfg%=ffg% S � 1:bfg%=&1700653B:ffg%=&07006535:� logosloaded% � lfg%=&0000611E � lfg%=ffg% � Ȏ char% � I � 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30: F !block%=keypadW%:block%!4=char%-9:ș "Wimp_GetIconState",,block% ? w%=block%!16-block%!8:h%=block%!20-block%!12:iflags%=bfg% * � 32,33,34:w%=112:h%=44:iflags%=bfg% # � 35:w%=80:h%=64:iflags%=bfg% ( � 31:w%=44:h%=44:iflags%=&1700B53B ) � 36,37,38:w%=48:h%=44:iflags%=bfg% � 39:iflags%=ffg% 7 � 40:� func%=0 � iflags%=&0700A53E � iflags%=ffg% 4 � 41,42,43,44,45:w%=52:h%=52:iflags%=&1700B53B � 59:iflags%=lfg% :iflags%=ffg% � %� w%=0 � h%=0 � iflags%=&00000000 � : � �get_field(ic%) � F% � F%+=1 $� field%(F%)=ic% � desc%(F%)=ic% =F% : � �adjust_on(on%) design%=on%:adjust%=on% �lit(menu%(9),5,on%) �lit(menu%(9),1,� on%) �lit(menu%(9),2,� on%) �lit(menu%(9),3,� on%) !�lit(menu%(9),4,� on%) ""�icon_bit(22,createW%,6,� on%) #� $: %� �change_length(NL%,msg%) &� EX%,klm%,S$,N% 'EX%=NL%-RA% (� EX%=0 � � )*dbasehandle%=�($database%+".Database") *"�readsmarray(dbasehandle%,RA%) + Ȏ � � , � � msg%:�extend_dbase - � (EX%>0): .W � �confirm("Extend file from "+�(RA%)+" to "+�(NL%)+" records")=� � �extend_dbase / � (EX%<0): 0Y � �confirm("Shorten file from "+�(RA%)+" to "+�(NL%)+" records")=� � �shorten_dbase 1� 2$Records%=�(RA%):N%=RA% 3"�writesmarray(dbasehandle%,N%) 4�close_file(dbasehandle%) 5%� msg% � addr=�moveto(key%,top,1) 6� 7: 8� �extend_dbase 9&� end%,P%,I%,key%,keybase%,KLM%,S$ :� key%=0 � Keys% ; S$=�KL%(key%),".") < KLM%=KL%(key%)+13 = P%=LH%+48+(NL%+1)*KLM% >6 �extend_named_sliding_block(keyanchor%(key%),P%) ? keybase%=!keyanchor%(key%) @ P%=LH%+48+RA%*KLM% A � I%=RA% � EX%+RA%-1 B !(keybase%+P%)=P%+KLM% C !(keybase%+P%+4)=0 D $(keybase%+P%+8)=S$ E% !(keybase%+P%+KL%(key%)+9)=I% F P%+=KLM% G � I% H !(keybase%+P%)=0 I !(keybase%+P%+4)=0 J $(keybase%+P%+8)=S$ K" !(keybase%+P%+KL%(key%)+9)=0 L � key% Mend%=�#dbasehandle% N� I%=0 � EX%-1 O$ �#dbasehandle%=end%+I%*Length% P � J%=1 � fields% Q �#dbasehandle%,"" R � J% S� I% T#�#dbasehandle%=end%+EX%*Length% URA%=NL% V� W: X� �shorten_dbase Y"� P%,L%,R%,s$,key%,keybase%,S$ Z� key%=0 � Keys% [ S$=�KL%(key%),".") \ KLM%=KL%(key%)+13 ] keybase%=!keyanchor%(key%) ^$ s$=$(keybase%+LH%+56+NL%*KLM%) _+ � s$<>S$ � � �confirm(�msg(52))=� � � ` P%=LH%+48+NL%*KLM% a !(keybase%+P%)=0 b !(keybase%+P%+4)=0 c $(keybase%+P%+8)=S$ d" !(keybase%+P%+KL%(key%)+9)=0 e � key% f"�#dbasehandle%=Length%*(NL%+1) gRA%=NL% h� i: j,� �copy_database_spritefile(path$,leaf$) k� sprites% l1�create_named_sliding_block(sprsanchor%,1024) mA� ### This is a temporary sprite area used simply to hold ### nB� ### the sprite 'new_appl' whilst it is renamed and saved ### osprites%=!sprsanchor% p!sprites%=1024 qsprites%!8=16 r$� ### Initialise sprite area ### s"ș "OS_SpriteOp",&109,sprites% t/� ### Load !Sprites file from Resources ### uHș "OS_SpriteOp",&10A,sprites%,"<PBase$Dir>.Resources.Temp.!Sprites" v;� ### Rename sprite 'new_appl' to new database name ### w3ș "OS_SpriteOp",&11A,sprites%,"new_appl",leaf$ xA� ### Save spritefile (with renamed new_appl) as !Sprites ### y4ș "OS_SpriteOp",&10C,sprites%,path$+".!Sprites" z'� ### Do same for hi-res sprite ### {"ș "OS_SpriteOp",&109,sprites% |Jș "OS_SpriteOp",&10A,sprites%,"<PBase$Dir>.Resources.Temp.!Sprites22" }3ș "OS_SpriteOp",&11A,sprites%,"new_appl",leaf$ ~6ș "OS_SpriteOp",&10C,sprites%,path$+".!Sprites22" %�scrap_sliding_block(sprsanchor%) �� �: �� �defaults(f$,N%,key%) �$Records%=�(N%) � �make_empty_index(N%,key%,�) �!�save_recs(f$+".Database",N%) �present%=7:�save_keys � design%=� ��get_it_in(f$) ��lit(menu%(0),2,�) �� �: �� �default_key �� F% �F%=�first_field � Ȏ � � �' � chartype%(F%)=3:KL%(0)=len%(F%) � � len%(F%)>3:KL%(0)=4 � :KL%(0)=len%(F%) �� �Index$(0)="PrimaryKey" � key%=0 �!KW%()=0:KW%(key%,0)=KL%(key%) � KF%(key%,0)=F%:KF%(key%,1)=0 ��set_keydata(key%) �� �: �� �new_tree(f%) �� REC%,I%,ptr%,file%,old$ ��old$="Length: "+�(KL%(0))+", Field(s): "+Tag$(KF%(0,0))+" "+Tag$(KF%(0,1))+", Chars: "+�(KW%(0,0))+","+�(KW%(0,1))+","+�(KW%(0,2))+","+�(KW%(0,3)) �/d%=�selected(keyW%,9):s%=�selected(keyW%,8) �� d% � f%=0 �M$="Build index with " �O� s% � M$+="records in same subfiles" � M$+="all records in subfile "+�(f%) �M$+=" of current database" �4� d% � M$+=", also restoring 'deleted' records." �E� d% � � s% � M$+=" WARNING! Other indices will need rebuilding!" �� � �confirm(M$)=� � � �!�mark_files(0,RA%,� d%,s%,f%) ��copy_keydata(0) �"RA%=�($Records%):f$=$database% �'�scrap_sliding_block(keyanchor%(0)) ��make_empty_index(RA%,0,�) ��close_window(keyW%) ��redraw(keypadW%) �ptr%=!tempanchor% ��poll:�poll �ș "Hourglass_On" �*dbasehandle%=�($database%+".Database") �� REC%=0 � RA%-1 � file%=ptr%?REC% � � file%<>255 � � top=8*file%+LH% �' �readsmarray(dbasehandle%,REC%) � KEY$=�key2(0,1) � kl%=KL%(0):val$=�type(0) �& � KEY$<>"" � �insert(�,KEY$,0) � � �0 ș "Hourglass_Percentage",(REC%*100) � RA% � � REC% ��close_file(dbasehandle%) �"newtree%=�:design%=�:adjust%=� �%�scrap_sliding_block(tempanchor%) �ș "Hourglass_Off" �present%=7 �� �selected(passW%,16) � �A �#loghandle%,"Primary key altered. Previous structure was:" � �#loghandle%,old$ �� �ș "Wimp_CreateMenu",,-1 �*block%!8=0:block%!12=wi%:block%!16=ic% �%ș "Interface_SlabButton",,block% ��get_it_in($database%) �� �: �� �reformat(f$) �4� I%,F,REC%,dfields%,DLength%,chdd,z%,blobs%,ex% �'� DTag$(),F%(),F1%(),L%(),l$(),c$() �F$(0)="" �"ș "OS_File",5,f$+".Form" � z% � Ȏ � � � � z%<>1:�softerror("",19) �' � f$=$database%:�softerror("",36) � �$ blobs%=�find_blobs($database%) � F=�(f$+".Form") � �#F,dfields% �X � DTag$(dfields%),F%(dfields%),F1%(fields%),L%(dfields%),l$(dfields%),c$(dfields%) � � I%=1 � dfields% �F �#F,Desc$,DTag$(I%),xd%,yd%,xf%,yf%,L%(I%),char%,extra%,extra% � DLength%+=L%(I%)+1 � � I% � �#F � chdd=�(f$+".Database") � �compare � ș "Hourglass_On" � � REC%=0 � RA% � �#chdd=REC%*DLength% �( �read(fields%,�,REC%,$database%) � � I%=1 � dfields% � S$=field$(F%(I%)) �) � �(S$)>L%(I%) � S$=�S$,L%(I%)) � �#chdd,S$ � � I% � ex%=-1 � ȕ ex%<blobs% � ex%+=1:F%=Ext%(ex%) �F �copy_blob($database%,f$,REC%,REC%,F%,F1%(F%),chartype%(F%)) � � �2 ș "Hourglass_Percentage",(REC%*100) � RA% � � REC% � ș "Hourglass_Off" � �close_file(chdd) �) ș "OS_File",18,f$+".Database",&7f2 �I ș "OS_CLI","Copy "+$database%+".PrimaryKey "+f$+".PrimaryKey ~C~V" �C ș "OS_CLI","Copy "+$database%+".Colours "+f$+".Colours ~C~V" �H ș "OS_CLI","Copy "+$database%+".ValTables "+f$+".ValTables ~CR~V" �D ș "OS_CLI","Copy "+$database%+".Indices "+f$+".Indices ~CR~V" �F ș "OS_CLI","Copy "+$database%+".PrintRes "+f$+".PrintRes ~CR~V" � � link$(0)="LOADED" � � lk=�(f$+".Link") � � F%=1 � dfields% � �#lk,l$(F%) � � F% � �close_file(lk) � � � � calc$(0)="LOADED" � � cl=�(f$+".Calc") � F%=1 � dfields% �#cl,c$(F%) � F% �close_file(cl) � �close_window(reformW%) � reform$="" D� �selected(passW%,16) � �#loghandle%,"Record structure changed" � : � �compare � source%,dest% � dest%=1 � dfields% source%=fields%+1 � source%-=1 . � source%=0 � Tag$(source%)=DTag$(dest%) * F%(dest%)=source%:F1%(source%)=dest% � source%>0 � l$(dest%)=link$(source%) c$(dest%)=calc$(source%) � � dest% � : � �merge_files(f$,fi%) 7� Rec%,ptr%,file%,d%,s%,z%,RUM%,RAM%,NL%,ex%,blobs% &ș "OS_File",5,f$+".Database" � z% Ȏ � � � z%<>1:�softerror("",29) ' � f$=$database%:�softerror("",15) & � � �identical:�softerror("",21) ! "7 s%=�selected(reformW%,2):d%=�selected(reformW%,3) # � d% � fi%=0 $ M$="Merge "+f$+" with " %A � s% � M$+="corresponding subfiles" � M$+="subfile "+�(fi%) & M$+=" of current database" '3 � d% � M$+=", also restoring deleted records" (B � d% � � s% � M$+=". WARNING! Indices will need rebuilding!" ) � �confirm(M$)=� � *0 ș "OS_File",5,f$+".Database" � ,,,,len% + RAM%=(len% � Length%)-1 ,0 �open_index(f$+".PrimaryKey",MaxKeys%+1) -0 �mark_files(MaxKeys%+1,RAM%,� d%,s%,fi%) .( keybase%=!keyanchor%(MaxKeys%+1) /- �count(MaxKeys%+1,RUM%):�count(0,RU%) 0 NL%=RU%+RUM% 1 ș "Hourglass_On" 2) � NL%>RA% � �change_length(NL%,�) 3& blobs%=�find_blobs($database%) 4 ptr%=!tempanchor% 5 � Rec%=0 � RAM%-1 6 file%=ptr%?Rec% 7 � file%<>255 � 8 top=8*file%+LH% 9$ �read(fields%,�,Rec%,f$) : �write(fields%,key%) ; ex%=-1 < ȕ ex%<blobs% =! ex%+=1:F%=Ext%(ex%) >E �copy_blob(f$,$database%,Rec%,REC%,F%,F%,chartype%(F%)) ? � @7 ș "Hourglass_Percentage",(Rec%*100) � RUM% A � B � Rec% C ș "Hourglass_Off" D �close_window(reformW%) E) �scrap_sliding_block(tempanchor%) F4 �scrap_sliding_block(keyanchor%(MaxKeys%+1)) G! file%=fi%:top=8*file%+LH% H addr=�moveto(key%,top,1) I � J� Kreform$="" LC� �selected(passW%,16) � �#loghandle%,"Records merged from "+f$ M� N: O� �identical P� I%,F,dfields%,different% QF=�(f$+".Form") R�#F,dfields% S&� dfields%<>fields% � different%=� T ȕ I%<fields% � � different% U I%+=1 V= �#F,Desc$,Tag$,xd%,yd%,xf%,yf%,len%,char%,extra%,extra% W% � len%<>len%(I%) � different%=� X� Y�#F Z=� different% [: \$� �mark_files(key%,RA%,d%,s%,f%) ]� P%,I%,M,file%,top,ptr% ^2�create_named_sliding_block(tempanchor%,RA%+1) _ș "Hourglass_On" `ptr%=!tempanchor% a� I%=0 � RA%-1 b ptr%?I%=d% c� I% d � d% � e � file%=0 � 5 f top=8*file%+LH% g! P%=�neighbour(key%,top,1) h ȕ P%<>top i S%=�rec_no(k$,key%,P%) j+ � s% � ptr%?S%=file% � ptr%?S%=f% k" P%=�neighbour(key%,P%,1) l � m � file% n� oș "Hourglass_Off" p� q: r!� �print_tree(key%,file%,PR$) s� L%(),COL%,levels%,depth% t�read_print_options ureportdest$="Window" vkeybase%=!keyanchor%(key%) wP%=!(keybase%+top) xș "Hourglass_On" y�traverse(P%,�) zlevels%=depth%-2:COL%=0 {� L%(levels%) |�tree_heading }P%=!(keybase%+top) ~�traverse(P%,�) H$=" No. nodes 1" �H1$=" Max nodes 1" �� L%=1 � levels% � � L%<40 � � L$=�(L%(L%)) � L$=�6-�(L$)," ")+L$ � M$=�(2^L%) �0 � �(M$)>5 � M$=BL$ � M$=�6-�(M$)," ")+M$ � H$+=L$:H1$+=M$ � � �� L% ��rule_off(45) �:$(!lineanchor%)=H$:�list_line(-1,lineanchor%,�(H$),32) �<$(!lineanchor%)=H1$:�list_line(-1,lineanchor%,�(H1$),32) �<$(!lineanchor%)=LH$:�list_line(-1,lineanchor%,�(LH$),32) ��rule_off(45) �ș "Hourglass_Off" �format$="tree":tkey%=key% ��screen_list �pitch$=�pitch("2") ��lit(menu%(18),1,�) �� �: �� �tree_heading �� zero%,len% �BL$=�6," ") �LH$=" Level No. Root" �� L%=1 � levels% � L$=�(L%) � � L%<10 � L$="0"+L$ � � L%<40 � � LH$+=" "+L$ � len%=�(LH$) � � �� L% �U$=" "+�len%-1,"-") �LenLine%=len%+4 �Count%=0 �"count%=�count_recs(key%,zero%) �Dtextblocksize%=(count%+11)*LenLine%:textblockinc%=textblocksize% �;�extend_named_sliding_block(textanchor%,textblocksize%) �7�extend_named_sliding_block(lineanchor%,LenLine%+4) �TextPtr%=!textanchor% �recblocksize%=400 �9�extend_named_sliding_block(recanchor%,recblocksize%) ��rule_off(32) ��rule_off(45) �Z�send_title("Tree Analysis (subfile:"+�(file%)+", key:"+�(key%)+", "+Index$(key%)+")") ��rule_off(32) �<$(!lineanchor%)=LH$:�list_line(-1,lineanchor%,�(LH$),32) ��rule_off(45) �� �: �� �traverse(P%,Z%) � � string$ �COL%=COL%+1 �� COL%>depth% � depth%=COL% �� P%<0 � � �L%=!(keybase%+P%) �R%=!(keybase%+P%+4) �S$=$(keybase%+P%+8) �� S$="" � S$="<null>" �%rec%=!(keybase%+P%+8+KL%(key%)+1) � � Z% � � L%(COL%-1)=L%(COL%-1)+1 � � PR$="ALL" � � � COL%<=40 � �* string$=�COL%*6+10-�(S$)," ")+S$ �L $(!lineanchor%)=string$:�list_line(rec%,lineanchor%,�(string$),32) � � �1 string$=" "+S$+" (level "+�(COL%-1)+")" �L $(!lineanchor%)=string$:�list_line(rec%,lineanchor%,�(string$),32) � � � � �� ��traverse(L%,Z%) �COL%=COL%-1 �L%=!(keybase%+P%) �R%=!(keybase%+P%+4) �S$=$(keybase%+P%+8) �%rec%=!(keybase%+P%+8+KL%(key%)+1) ��traverse(R%,Z%) �COL%=COL%-1 �� �: �� �balance(key%) �T� recptr%,top,file%,flagptr%,balptr%,I%,N%,A%,max%,done%,highest%,avail%,seglen% �� recs%(),ptr%() �� recs%(5),ptr%(5) �newtree%=� �seglen%=KL%(key%)+5 �7�extend_named_sliding_block(recanchor%,seglen%*RA%) �7�create_named_sliding_block(balanchor%,seglen%*RA%) �0�create_named_sliding_block(flaganchor%,RA%) �Arecptr%=!recanchor%:flagptr%=!flaganchor%:balptr%=!balanchor% �� I%=0 � RA%-1 � flagptr%?I%=255 �� I% �>� Bytes are changed from 255 to 0 where records are in use �ș "Hourglass_On" �� file%=0 � 5 � ptr%(file%)=recptr% � top=8*file%+LH% �. recs%(file%)=�count_recs(key%,recptr%)-1 � max%+=recs%(file%)+1 �� file% �!�make_empty_index(RA%,key%,�) �ș "Hourglass_LEDs",%11 �� file%=0 � 5 � top=8*file%+LH% � � recs%(file%)>=0 � � recptr%=ptr%(file%) � N%=1 � � � N%=N%+N% � � N%>recs%(file%)+2 � step%=N% � N%=(N% � 2)-1 � start%=N% � C%=0 � � � start%=start% � 2 � end%=N%-start%-1 � step%=step% � 2 �$ � I%=start% � end% � step% �9 A%=recptr%+seglen%*(I%*(recs%(file%)+1) � N%) �= balptr%!C%=!A%:$(balptr%+C%+4)=$(A%+4):!A%=-!A%-1 � C%+=seglen% � � I% � step%=2 & kl%=KL%(key%):val$=�type(key%) % � I%=0 � C%-seglen% � seglen% . REC%=balptr%!I%:KEY$=$(balptr%+I%+4) �insert(�,KEY$,key%) done%+=1 6 ș "Hourglass_Percentage",(done%*100) � max% � I% � I%=0 � recs%(file%) # REC%=recptr%!(seglen%*I%) � REC%>=0 � ( KEY$=$(recptr%+seglen%*I%+4) �insert(�,KEY$,key%) done%+=1 8 ș "Hourglass_Percentage",(done%*100) � max% � � I% � � file% ș "Hourglass_LEDs",%00 keybase%=!keyanchor%(key%) nodesize%=8+KL%(key%)+1+4 avail%=!keybase% � I%=0 � highest% � flagptr%?I%=255 � + !(keybase%+avail%+8+KL%(key%)+1)=I% avail%+=nodesize% � � I% ș "Hourglass_Off" $�scrap_sliding_block(balanchor%) $�scrap_sliding_block(recanchor%) %�scrap_sliding_block(flaganchor%) !�save_keys "newtree%=� #K� �selected(passW%,16) � �#loghandle%,"Index "+Index$(key%)+" balanced" $� %: &� �duplicates(dkey%,dfile%) '7� P$,S$,RP$,RS$,daddr,dtop,RP%,RS%,count%,examined% (� � )� � �:� �:�abort_dup:� *"count%=�count_recs(key%,zero%) +�read_print_options ,Breportdest$="Window":format$="dup":Count%=0:LenLine%=KL%(0)+23 -<textblocksize%=100*LenLine%:textblockinc%=textblocksize% .;�extend_named_sliding_block(textanchor%,textblocksize%) /7�extend_named_sliding_block(lineanchor%,LenLine%+4) 0TextPtr%=!textanchor% 1recblocksize%=400 29�extend_named_sliding_block(recanchor%,recblocksize%) 3�close_window(datadicW%) 4�rule_off(32) 5aline$=" Duplicated primary keys":$(!lineanchor%)=line$:�list_line(-1,lineanchor%,�(line$),32) 6�rule_off(45) 7dtop=8*dfile%+LH% 8"daddr=�neighbour(dkey%,dtop,1) 9ș "Hourglass_On" :ȕ daddr<>dtop ; ș "OS_Byte",229,0 <S S$=$(!keyanchor%(dkey%)+daddr+8):RS%=!(!keyanchor%(dkey%)+daddr+9+KL%(dkey%)) =; RS$=�(RS%):RS$=" Record No."+�7-�(RS$)," ")+RS$+" " > � S$=P$ � ? line$=RP$+P$ @E $(!lineanchor%)=line$:�list_line(RP%,lineanchor%,�(line$),32) A line$=RS$+S$ BE $(!lineanchor%)=line$:�list_line(RS%,lineanchor%,�(line$),32) C � D P$=S$:RP%=RS%:RP$=RS$ E examined%+=1 F6 ș "Hourglass_Percentage",examined%*100 � count% G% daddr=�neighbour(dkey%,daddr,1) H �poll I� J�rule_off(32) Kș "Hourglass_Off" L�screen_list M� N: O� �abort_dup Pș "Hourglass_Off" Q�screen_list R� �=17 � S �softerror("",67) T � �wimp_error(�,�,�,�$) U� V� W: X� �stripspaces(s$) Yȕ �s$)=" " Z s$=�s$) [� \=s$ ]: ^� >RAMtree _: `K� Index handling ------------------------------------------------------ a: b� �neighbour(key%,addr%,d%) c� R%,S%,p%,keybase% dkeybase%=!keyanchor%(key%) ep%=d%*4 fR%=!(keybase%+addr%+p%) g� R%<0 � =-R% hp%=4-p% i� j addr%=R% k S%=!(keybase%+addr%+p%) l � S%>0 � R%=S% m� S%<=0 n=R% o: p� �rec_no(� k$,key%,addr%) q#k$=$(!keyanchor%(key%)+addr%+8) r-=!(!keyanchor%(key%)+addr%+8+KL%(key%)+1) s: t!� �scan_file(c$,key%,action%) u'� REC%,examined%,subtotal%,X%,Y%,n$ vn$="0123456789." w%subtotal%=�count_recs(key%,zero%) xȕ �(c$)=� y ș "OS_Byte",229,0 z REC%=�rec_no(k$,key%,P%) {% �readsmarray(dbasehandle%,REC%) | examined%+=1 } � �(Search$)=� � ~ Ȏ action% � � 0:�get_lengths �! � 1:�print_record(REC%) �- � 2:ptr%?REC%=255:� ### earmark ### �" � 3:�write_csv_rec(REC%) �; � 4:KEY$=�key2(newkey%,1):�insert(�,KEY$,newkey%) � � ### create index ### � � 5: � S$=F$(Fieldnumber%) � � numeric% � � X%=0:Y%=0 � � X%+=1 �) � X%>�(S$) � �n$,�S$,X%,1))>0 � � X%<=�(S$) � � Y%=X% � � Y%+=1 �+ � Y%>�(S$) � �n$,�S$,Y%,1))=0 � � �; S$=�S$,X%-1)+�(�(�S$,X%,Y%-X%)+New$))+�S$,Y%) � � S$=New$ � � � � �(S$)>TextLength% � � �softerror("",10) � � � F$(Fieldnumber%)=S$ �, �writesmarray(dbasehandle%,REC%) � � �! � ### global change ### � � � � � P%=�neighbour(key%,P%,1) �; ș "Hourglass_Percentage",(examined%*100) � subtotal% �� �� �: �� �search(S$,key%,M%) �� P%,found%,info$,keybase% �keybase%=!keyanchor%(key%) �Z%=0:P%=top:ident%=� �� � L%=P% � P%=!(keybase%+L%+Z%) � � P%<=0 � P%=-L%:found%=� � info$=$(keybase%+P%+8) � rec%=�rec_no(k$,key%,P%) �1 � �(val$+"(S$)="+val$+"LEFT$(info$,kl%)") � � Ȏ M% � � � 0:ident%=(key%=0) � � 1:found%=� �$ � 2:� rec%=REC% � found%=� � � � � �8 � � found% � Z%=-�(val$+"(S$)>="+val$+"(info$)")*4 �� found% �=P% �: �:� ### M%=0 - Find leaf position at which to insert ### �?� ### M%=1 - Find first match in tree (if there is one) ### �H� ### M%=2 - Find exact matching record, checking for record no. ### �: �� �insert(R%,� S$,key%) �� P%,A%,kl%,keybase%,abort% �keybase%=!keyanchor%(key%) �kl%=KL%(key%) �A%=!keybase%:F%=A% �P%=-�search(S$,key%,0) �� ident% � � Ȏ � � �! � � �selected(passW%,15): �+ �softerror(" ("+S$+")",37):abort%=� � : �> � dup% � � � �confirm(�msg(45)+" ("+S$+")") � abort%=� � � �� �� abort% � S$="*Failed*":� �� !(keybase%+F%)>0 � � A%=!(keybase%+F%) � � � incr%=�($Increment%) � � incr%>0 � �# �change_length(RA%+incr%,�) �" keybase%=!keyanchor%(key%) � A%=!keybase%:F%=A% � � S$="*Failed*" � � �� �(� S$="*Failed*" � �softerror("",2):� �&� R% � REC%=!(keybase%+F%+8+kl%+1) �'!(keybase%+F%+Z%)=!(keybase%+P%+Z%) �!(keybase%+F%+(4-Z%))=-P% �$(keybase%+F%+8)=S$ �%!(keybase%+F%+8+KL%(key%)+1)=REC% �!(keybase%+P%+Z%)=F% �!keybase%=A% �� key%=0 � RU%+=1 �� �: �� �delete(� S$,key%) �� P%,A%,kl%,keybase% �keybase%=!keyanchor%(key%) �A%=!keybase% �kl%=KL%(key%) �P%=�search(S$,key%,2) �N� P%<0 � �softerror(" ("+S$+": "+Index$(key%)+" index)",1):S$="*Failed*":� �PR%=�neighbour(key%,P%,0) �SU%=�neighbour(key%,P%,1) �'!(keybase%+L%+Z%)=!(keybase%+P%+Z%) � Q%=P% �ZL%=4-Z% �P1%=!(keybase%+P%+ZL%) � � P1%>0 � � info$=$(keybase%+P1%+8) � P%=-�search(info$,key%,0) � !(keybase%+P%+Z%)=P1% �� �3� !(keybase%+PR%+4)<=0 � !(keybase%+PR%+4)=-SU% �3� !(keybase%+SU%+0)<=0 � !(keybase%+SU%+0)=-PR% �!(keybase%+Q%)=A% �!keybase%=Q% �� key%=0 � RU%-=1 �� �: �� �save_keys �� keyN% �� present%<>7 � � �ș "Hourglass_On" �5keybase%=!keyanchor%(0):keybase%!4=�($Increment%) �ȕ !keyanchor%(keyN%)>0 �! keybase%=!keyanchor%(keyN%) �! keybase%?72=0:keybase%?73=0 W ș "SlidingHeap_DescribeBlock",slidingheapbase%,keyanchor%(keyN%) � ,,filelength% - � keyN% � index$="Indices." � index$="" ] ș "OS_File",10,$database%+"."+index$+Index$(keyN%),&7F0,,keybase%,keybase%+filelength% keyN%+=1 5 ș "Hourglass_Percentage",keyN%*100 � (Keys%+1) � ș "Hourglass_Off" � : $� �readsmarray(filehandle%,REC%) � loop% �#filehandle%=REC%*Length% � loop%=1 � fields% F$(loop%)=�#filehandle% � loop% � : � �writesmarray(F,� R%) � loop% �#F=R%*Length% � loop%=1 � fields% �#F,F$(loop%) � loop% R%+=1 � : � �check_save(T%) � time% %ș "OS_ReadMonotonicTime" � time% � (time% � T%)<10 � P� buttonfield%(19)>0 � wi%=mainW%:ic%=buttonfield%(19) � wi%=keypadW%:ic%=19 Ȏ autosave% � � 1: ! delay%=� " � loop%=0 � 2 # delay%+=50 $0 block%!8=1:block%!12=wi%:block%!16=ic% %+ ș "Interface_SlabButton",,block% & � � �>delay% ' � 1,-15,180,5 ( block%!8=0 )+ ș "Interface_SlabButton",,block% * delay%+=50 + � � �>delay% , � loop% -! � 2:�mouse(0,0,4,wi%,ic%) . � /� 0� 1: 2� �set_auto(mode%) 3$�tick_one(menu%(12),0,2,2-mode%) 4autosave%=mode% 58saveint%=�($Interval%):$Interval%=�(saveint%)+" min" 6� 7: 8� �set_autobalance(status%) 9�tick(menu%(21),0,status%) :autobalance%=status% ;(� � autobalance% � $Every%="25 recs" <:balint%=�($Every%):$Every%=�(balint%)+" recs":added%=0 =� >: ?L� Calculations --------------------------------------------------------- @: A� �calc_link(T$,type%) B=� ### Sets up calculation formula window & menu entry ### C$CalcFunc%=T$ D)$CalcTitle%=T$:calclink%=Fieldnumber% E)�split_link(calclink%,real$,visible$) FȎ type% � G3 � 6,7:$CalcForm%=Tag$(calclink%)+"="+visible$ H � 47: I $CalcForm%=visible$ J! �icon_bit(22,calcW%,2,off%) K �deselect(calcW%,2) L� M� N: O� �calc_formula(S$) P@� ### Parses calculation formula (S$) & builds calc$(I%) ### Q� I%,P%,t$,s$,C$,time% R/C$=�~(calclink%):� calclink%<16 � C$="0"+C$ S#� $CalcFunc%="Set base value" � T � S$="" � S$="0" U calc$(calclink%)=S$+"|"+S$ V calc$(0)="LOADED" W � X* P%=�S$,"="):S$=�S$,P%+1):visible$=S$ Y � I%=1 � fields% Z t$=Tag$(I%) [ � t$<>"" � \ P%=0 ] � ^ P%=�S$,t$,P%+1) _ � P%>0 � ` Ȏ chartype%(I%) � a> � 3,6,46,47,54,56,57:s$="VAL($Rf%("+�(I%)+"))" b= � 8:s$="FNseconds($Rf%("+�(I%)+"),1)":time%=� c : d) Ȏ chartype%(calclink%) � e) � 6:s$="FNn("+�(I%)+")" f* � 7:s$="$Rf%("+�(I%)+")" g � h � i+ S$=�S$,P%-1)+s$+�S$,P%+�(t$)) j update$(I%)+=C$ k � l � P%=0 m � n � I% o- � �visible$,"TIME$")>0 � update$(0)+=C$ p> � time%=� � chartype%(calclink%)=7 � S$="FNtime("+S$+")" q! � �(S$)+�(visible$)+2<256 � r, calc$(calclink%)="#"+S$+"#"+visible$ s calc$(0)="LOADED" t7 � �selected(calcW%,2) � �recalculate(calclink%) u � �softerror("",44) v � w� xcalclink%=0 y.� (b% � %111)=4 � ș "Wimp_CreateMenu",,-1 z� {: |� �recalculate(F%) }<� F,I%,R%,k$,P%,real$,visible$,subtotal%,zero%,examined% ~"�split_link(F%,real$,visible$) S� �confirm("Recalculate "+Tag$(F%)+"="+visible$+" for existing records?")=� � � �%subtotal%=�count_recs(key%,zero%) �ș "Hourglass_On" �*dbasehandle%=�($database%+".Database") �P%=�neighbour(key%,top,1) �ȕ P%<>top � R%=�rec_no(k$,key%,P%) �# �readsmarray(dbasehandle%,R%) � � I%=1 � fields% � $Rf%(I%)=F$(I%) � � I% � Ȏ chartype%(F%) � � � 6: � F=�(real$):F$=�(F) �+ � fix%(F%)>0 � F$=�fix_point(F$,F%) � � 7: � � � �( � � �:� �:�softerror(real$,73):� � F$=�(real$) � � � � � �# � �(F$)<=len%(F%) � F$(F%)=F$ �$ �writesmarray(dbasehandle%,R%) � P%=�neighbour(key%,P%,1) � examined%+=1 �9 ș "Hourglass_Percentage",examined%*100 � subtotal% �� �ș "Hourglass_Off" ��close_file(dbasehandle%) �� I%=1 � fields% � $Rf%(I%)=field$(I%) �� I% ��display(key%,addr) �� �: �� �sums(� F$,R%,type%) �� V �� F$<>"" � � Ȏ type% � � � 8:V=�seconds(F$,1) � :V=�(F$) � � � Sum(R%,0)+=1 � Sum(R%,1)+=V � Sum(R%,3)+=V*V �� �� �: �� �ctotals(flag%) �%� F%,I%,J%,N%,R%,S%,base%,pos%,F$ �� S$(),f%() �� S$(3),f%(3) �base%=!lineanchor% �'S$()="Items","Sum","Mean","St.Dev." �� I%=1 � �(Form$)-1 � 2 � F%=�fnum(�Form$,I%,2)) � R%=calcrow%?F% � Ȏ chartype%(F%) � � � 3,6,8,46,47,54,56,57: � � Sum(R%,0)>0 � �' Sum(R%,2)=Sum(R%,1)/Sum(R%,0) �6 Sum(R%,3)=�(Sum(R%,3)/Sum(R%,0)-Sum(R%,2)^2) � � � � �� I% �� J%=0 � 3 � pos%=base% � � flag%>0 � �> N%=0:start%=1:F$=�Lmargin%-�(S$(J%))-1," ")+S$(J%)+" " � � N%=1:start%=3 �& L%=Tab%(1)-Lmargin%-�(spacer$) �N � L%>=7 � F$=margin$+�tab(S$(J%),N%) � F$=margin$+�tab(�S$(J%),L%),N%) � � �3 �heap_store(lineanchor%,LenLine%,0,pos%,0,F$) � � �(Form$)>2 � start%=1 � �$ � I%=start% � �(Form$)-1 � 2 �& F%=�fnum(�Form$,I%,2)):F$="" � N%+=1 � Ȏ chartype%(F%) � �# � 3,6,8,46,47,54,56,57: � R%=calcrow%?F% �Q � chartype%(F%)=8 � result$=�time(Sum(R%,J%)) � result$=�(Sum(R%,J%)) �T � �selected(pselectW%,R%*5-3+J%) �:F$=�justify(result$,N%,N%-1):f%(J%)=1 � � �@ �heap_store(lineanchor%,LenLine%,0,pos%,0,�tab(F$,N%)) � � I% �= � f%(J%)=1 � �list_line(-1,lineanchor%,pos%-base%,32) � � �� J% � � Ǝ(f%())>0 � �rule_off(45) �� �: �� �margin_warn �� f%,F%,R%,J% �F%=�fnum(�Form$,2)) �Ȏ chartype%(F%) � � � 3,6,46,47,54,56,57: � R%=calcrow%?F% � � J%=0 � 3 �. � �selected(pselectW%,R%*5-J%) � f%=F% � � J% �� �?� f%>0 � Lmargin%<9 � �softerror(" ("+Tag$(f%)+").",92):=-1 �=f% �: �� �tab(F$,N%) �� L% �L%=�(F$)+�(spacer$) �,� Tab%(N%)-Tab%(N%-1)-L%<=0 �=F$+spacer$ �,=F$+�Tab%(N%)-Tab%(N%-1)-L%," ")+spacer$ �: �� �justify(f$,x%,x1%) �� L% �$L%=Tab%(x%)-Tab%(x1%)-�(spacer$) �,� �(f$)>L% �=�f$,L%) �=�L%-�(f$)," ")+f$ �: �� �execute_file(f$) �6� F,P%,name$,command$,finished%,firstquery%,state% �� � �confirm(�msg(68)) � � �� � �G� �selected(printW%,39) � reportdest$="File" � reportdest$="Window" �F=�(f$) �� Script file signature � junk$=�#F �� � �:� �:�abort_script:� �ȕ �(�#F � finished%) � ș "OS_Byte",229,0 � line$=�#F � space%=�line$," ") w � space%=0 � command$=line$:params$="" � command$=�line$,space%-1):params$=�line$,space%+1):state%=(params$="ON") Ȏ command$ � � "!COMMENT": � "!SCRIPT": ImpCom$="" � params$="END" � finished%=� : � �execute_file($database%+".PrintRes."+params$) � � "!DELETE": � present%=7 � RecF%=� 0 � params$="" � key$=�#F � key$=params$ 5 �select(keypadW%,25):�deselect(keypadW%,24) addr=�find(key$,0,0,�) � RecF%=� � addr=�shift(0,0,0) $ addr=�moveto(key%,top,1) � � � "!INSERT": � present%=7 � subfile%=�(params$) ) �read(fields%,�,RA%,$database%) � loop%=1 � fields% ) $Rf%(loop%)=��#F,len%(loop%)) � �write(fields%,key%) � � "!QUERY": � params$<>"" � P%=�params$,",") ! formula$=�params$,P%+1) ! name$=�params$,P%-1) " name$=�name$,10) #$ Search$=�parse(formula$,�) $$ $�text(matchW%,0)=formula$ %! �redraw_icon(matchW%,0) & ș "Hourglass_On" ' scripton%=� ( �do_it(Search$,�) )# � �selected(printW%,38) � *? filename$=$database%+".PrintJobs."+name$:Type%=&FFF +; Start%=!textanchor%:End%=Start%+Count%*LenLine% , Ȏ � � -) � ImpCom$="":$Start%=pitch$ .9 � ImpCom$<>"" � firstquery%=�:firstquery%=� / :$Start%=ImpCom$ 0 � 1. �save(filename$,Type%,Start%,End%) 2 � 3 � 4 � "!SELECTION": 5 � params$<>"" � 63 filename$=$database%+".PrintRes."+params$ 7- ș "OS_File",5,filename$ � ,,ftype% 8# ftype%=(ftype%>>8) � &FFF 94 � ftype%=&7F3 � �drag_selection(filename$) : � �clear_selection ; � < � "!PRINTOPTS": = � params$<>"" � >3 filename$=$database%+".PrintRes."+params$ ?- ș "OS_File",5,filename$ � ,,ftype% @# ftype%=(ftype%>>8) � &FFF A2 � ftype%=&7F5 � �drag_options(filename$) B< � �drag_options("<Pbase$Dir>.Resources.PrintOpts") C � D. � "!CASE":�set_icon(matchW%,16,state%) E/ � "!INDEX":�set_icon(matchW%,23,state%) F0 � "!EXPAND":�set_icon(printW%,11,state%) G. � "!DATE":�set_icon(printW%,19,state%) H/ � "!UPPER":�set_icon(printW%,12,state%) I/ � "!FIRST":�set_icon(printW%,10,state%) J3 � "!UNDERLINE":�set_icon(printW%,29,state%) K0 � "!SHRINK":�set_icon(printW%,40,state%) L- � "!TITLE":$�text(printW%,18)=params$ M, � "!PAGE":$�text(printW%,16)=params$ N1 � "!LINESPACE":$�text(printW%,17)=params$ O/ � "!LMARGIN":$�text(printW%,30)=params$ P/ � "!TMARGIN":$�text(printW%,32)=params$ Q. � "!SPACER":$�text(printW%,43)=params$ R0 � "!COLWIDTH":$�text(printW%,45)=params$ S � "!HEADINGS": T Ȏ �u(params$) � U7 � "D":�select(printW%,2):�deselect(printW%,1) V3 :�select(printW%,1):�deselect(printW%,2) W � X � "!PITCH": Y3 �deselect(printW%,�selected_esg(printW%,2)) Z Ȏ �(params$) � [ � 5:�select(printW%,4) \! � 10:�select(printW%,7) ]! � 12:�select(printW%,8) ^ :�select(printW%,6) _ � ` � "!FORMAT": a3 �deselect(printW%,�selected_esg(printW%,3)) b" �icon_bit(22,printW%,15,�) cM P%=�params$," "):� P%>0 � cols$=�params$,P%+1):params$=�params$,P%-1) d Ȏ params$ � e* � "VERTICAL":�select(printW%,24) f' � "TABLE":�select(printW%,25) g" $�text(printW%,15)=cols$ h$ �icon_bit(22,printW%,15,�) i' � "LABEL":�select(printW%,26) j :�select(printW%,23) k � l � "!DESTINATION": m3 �deselect(printW%,�selected_esg(printW%,4)) n Ȏ params$ � o9 � "FILE":�select(printW%,39):reportdest$="File" p? � "PRINTER":�select(printW%,41):reportdest$="Printer" q4 :�select(printW%,38):reportdest$="Window" r � s � "!LABEL": t params$+="," u � I%=1 � 7 v P%=�params$,",") w4 par$=�params$,P%-1):params$=�params$,P%+1) x Ȏ I% � y � 1: z7 �deselect(labelW%,�selected_esg(labelW%,1)) { Ȏ par$ � |& � "1":�select(labelW%,0) }& � "2":�select(labelW%,1) ~" :�select(labelW%,2) � �& � 2:$�text(labelW%,4)=par$ �& � 3:$�text(labelW%,6)=par$ �' � 4:$�text(labelW%,10)=par$ �' � 5:$�text(labelW%,12)=par$ �, �set_icon(labelW%,11,(par$<>"")) �: �icon_bit(22,labelW%,12,�selected(labelW%,11)) �5 � 6:�set_icon(labelW%,13,(�u(par$)="ON")) �5 � 7:�set_icon(labelW%,16,(�u(par$)="ON")) � � � � I% � � "!IMPRESSION": � P%=�params$," ") � � P%>0 � �9 ImpCom$=�params$,P%-1):modifier$=�params$,P%+1) � Ȏ �u(modifier$) � �' � "NOT FIRST":firstquery%=� � � � � ImpCom$=params$ � � � � �softerror("",46) � finished%=� � � �� �ș "Hourglass_Smash" ��close_file(F) �� � �� �: �� �abort_script ��close_file(F) �� �=17 � � �softerror("",57) � � �wimp_error(�,�,�,�$) �� �� �: �H� "Impulse" handling ----------------------------------------------- �: �.� �Impulse_command(token%,params%,object%) � � SF$ �4param$=�getstr(params%):object$=�getstr(object%) �,� object$="" � object$=�leaf($database%) �Ȏ token% � �@ � 1:� ### GetPathname. Returns full pathname of object ### � Ȏ �leaf($database%) � � � object$: �< ș "Impulse_SendMessage",&202,$database%,,,,,mytask% � � "No data": �D ș "Impulse_SendMessage",&202,"No database open",,,,,mytask% � : �T ș "Impulse_SendMessage",&202,"Current database is not "+object$,,,,,mytask% � � �: � 2:� ### Selection. Returns maximum data length ### � ClientSep$=�param$,1) �? ClientForm$=�find_fields(param$,ClientSep$,ClientLength%) �? �extend_named_sliding_block(transanchor%,ClientLength%+1) �@ ș "Impulse_SendMessage",&202,�(ClientLength%),,,,,mytask% �B � 3:� ### ParseQuery. Returns title generated by FNparse ### �$ ClientSearch$=�parse(param$,�) �6 ș "Impulse_SendMessage",&202,Title$,,,,,mytask% �p � 4:� ### GetRecord. Returns data specified in Selection according to criteria specified in ParseQuery ### �< datalength%=�prepare_next_record(param$,!transanchor%) �V ș "Impulse_SendMessage",&202,"Ready to receive?",-1,,,transtag%,mytask%,Length% � � 5:� ### PutRecord ### �B ș "Impulse_SendMessage",&201,"GetRecord",,,,getrec%,mytask% � � 6:� ### ExpandCode ### � P%=�param$," ") �. code$=�param$,P%-1):table$=�param$,P%+1) �L ș "Impulse_SendMessage",&202,�expand(code$,table$,L%,SF$),,,,,mytask% �+ � 7,8:� ### GetField, GetExpanded ### � � params%<>-1 � �D datalength%=�prepare_next_field(token%,param$,!transanchor%) �\ ș "Impulse_SendMessage",&202,"Ready to receive?",-1,,,transtag%,mytask%,datalength% �2 � Max. length for a Powerbase field is 246 � � �� �� �: �&� �Impulse_reply(replytag%,reply%) �� � �� � �:� �:�abort_merge:� �reply$=�getstr(reply%) �Ȏ replytag% � � � getrec%: �+ � ### Reply to GetRecord command. ### �> ș "Impulse_FetchData",!transanchor%,Length%,,,,,mytask% � � mergetag%: �L � ### Merging application replies when all data in document merged ### �w � �selected(mergeW%,6) � ș "Impulse_SendMessage",&201,":"+mergewith$+"."+document$+" Print",,,,printtag%,mytask% � � printtag%: �D � ### Merging application has printed the current document ### � ș "OS_Byte",229,0 �2 mergenum%+=1:$�text(mergeW%,14)=�(mergenum%) � �redraw_icon(mergeW%,14) �0 � �selected(mergeW%,6) � ClientPtr%<>top � �, ClientPtr%=�merge_next(ClientPtr%,1) � � �deselect(mergeW%,6) � � � �poll �� �� �: �� �abort_merge ��close_file(dbasehandle%) �ClientPtr%=top ��deselect(mergeW%,6) ��perform_close(mergeW%) �� �=17 � � �softerror("",27) � � �wimp_error(�,�,�,�$) �� �� �: �"� �Impulse_send(tag%,maxsize%) �Cș "Impulse_TransmitData",!transanchor%,datalength%,,,,,mytask% �datalength%=0 �� �: �5� �Impulse_receive(replytag%,expected%,received%) �� I%,F%,P% �transbuff%=!transanchor% �transbuff%?received%=13 �data$=$transbuff% �G� ### Acknowledge data received (get reason code 19 otherwise!) ### �7ș "Impulse_SendMessage",&202,,,,,replytag%,mytask% �� data$<>"" � � P%=�data$,"#") REC%=�(�data$,P%-1)) data$=�data$,P%+1) � REC%=-1 � REC%=RA% . �read(fields%,REC%<>RA%,REC%,$database%) ! � I%=1 � �(ClientForm$) � 2 $ F%=�fnum(�ClientForm$,I%,2)) < � data$<>"" � $Rf%(F%)=�get_string(data$,ClientSep$) � I% �write(fields%,key%) R � received%=0 � ș "Impulse_SendMessage",&201,"GetRecord",,,,getrec%,mytask% � � : � �get_string(� S$,sep$) � P%,F$ P%=�S$,sep$) � P%>0 � F$=�S$,P%-1) S$=�S$,P%+1) � =F$ : +� �prepare_next_record(key$,transbuff%) � ok%,I%,F%,P% � dbasehandle%=0 � , dbasehandle%=�($database%+".Database") ' ClientPtr%=�neighbour(key%,top,1) � P%=transbuff% Ȏ key$ � � "***": �close_file(dbasehandle%) $P%=key$:P%+=�($P%)+1 ! � "": " ȕ ok%=� � ClientPtr%<>top #( REC%=�rec_no(k$,key%,ClientPtr%) $' �readsmarray(dbasehandle%,REC%) % � �(ClientSearch$)=� � &$ $P%=�(REC%)+"#":P%+=�($P%) '% � I%=1 � �(ClientForm$) � 2 (( F%=�fnum(�ClientForm$,I%,2)) ), $P%=F$(F%)+ClientSep$:P%+=�($P%) * � I% + $P%+=ClientSep$:P%+=1 , ok%=� - � .0 ClientPtr%=�neighbour(key%,ClientPtr%,1) / � 01 � P%=transbuff% � �close_file(dbasehandle%) 1 : 2" val$=�type(key%):kl%=�(key$) 3% ClientPtr%=�search(key$,key%,1) 4 � ClientPtr%>=0 � 5( REC%=�rec_no(k$,key%,ClientPtr%) 6' �readsmarray(dbasehandle%,REC%) 7" $P%=�(REC%)+"#":P%+=�($P%) 8# � I%=1 � �(ClientForm$) � 2 9& F%=�fnum(�ClientForm$,I%,2)) :* $P%=F$(F%)+ClientSep$:P%+=�($P%) ; � I% < $P%+=ClientSep$:P%+=1 = � >� ?=P%-transbuff% @: A0� �prepare_next_field(method%,S$,transbuff%) B)� L%,F%,P%,len%,T$,F$,V%,R%,b$,k$,SF$ CȎ token% � D � 7: E& F%=�field(S$,�):V%=chartype%(F%) F Ȏ V% � GC � 0,1,2,3,4,5,6,7,8,46,47,48,49,50,51,52,53,54,55,56,57,58: H L%=�(F$(F%)) ID �extend_named_sliding_block(transanchor%,(L%+4) � &FFFFFFFC) J transbuff%=!transanchor% K* $transbuff%=F$(F%):transbuff%?L%=0 L � 36,39: M& R%=�rec_no(k$,key%,ClientPtr%) N/ L%=�blob_path(�,$database%,R%,F%,V%,b$) O � L%>0 � PF �extend_named_sliding_block(transanchor%,(L%+4) � &FFFFFFFC) Q" transbuff%=!transanchor% R( ș "OS_File",255,b$,transbuff% S � L%=1 T7 �extend_named_sliding_block(transanchor%,256) U" transbuff%=!transanchor% V ?transbuff%=0 W � X transbuff%?L%=0 Y � Z � 8: [+ P%=�S$," "):T$=�S$,P%+1):S$=�S$,P%-1) \2 F%=�field(S$,�):F$=�expand(F$(F%),T$,L%,SF$) ]4 �extend_named_sliding_block(transanchor%,L%+1) ^ transbuff%=!transanchor% _6 $transbuff%=F$:L%=�($transbuff%):transbuff%?L%=0 `� alen%=(L%+4) � &FFFFFFFC b =len% c: d� �ready_to_merge eImp_wait%=�:merging%=� f$�text(mergeW%,1)=document$ g&� � common% � $�text(mergeW%,3)="" h�open_window(mergeW%) i�set_caret(mergeW%,3) jXș "Impulse_SendMessage",&200,":"+mergewith$+"."+document$+" Edit Off",,,,-1,mytask% k� l: m� �merge_next(P%,D%) nD%=(D%+1) � 2 o'P%=�next_match(P%,D%,ClientSearch$) p� P%<>top � q, S$=F$(KF%(key%,0))+" "+F$(KF%(key%,1)) r $�text(mergeW%,13)=�S$,80) s �redraw_icon(mergeW%,13) t^ ș "Impulse_SendMessage",&201,":"+mergewith$+"."+document$+" Merge",,,,mergetag%,mytask% u� v=P% w: xK� End of "Impulse" handling ------------------------------------------- y: zK� Import/Export CSV files --------------------------------------------- {: |� �start_import(type$,wi%) } � OK% ~Ȏ present% � � 0: �- � fields%=0 � OK%=� � �softerror("",69) �/ � 7:� Modify% � OK%=� � �softerror("",14) � :�softerror("",69) �� �� OK% � � $�text(csvW%,13)=filename$ � �icon_bit(22,csvW%,0,�) �4 !block%=csvW%:ș "Wimp_GetWindowState",,block% �) block%!4=800:block%!12=block%!4+390 �) block%!8=150:block%!16=block%!8+716 �( $CSVTitle%="Import "+type$+" file" �" ș "Wimp_OpenWindow",,block% � �set_caret(csvW%,13) �� �� �: �� �write_csv(Filename$) �� writingcsv% � � �?� printorder$<>"" � Form$=printorder$ � �softerror("",34):� �!� P%,rec%,examined%,subtotal% �� � �� � �:� �:�end_csv:� �csvhandle%=�(Filename$) �$� �selected(csvW%,1) � �csv_head �*dbasehandle%=�($database%+".Database") �>Search$=�parse($�text(savesubW%,0),�selected(savesubW%,5)) �ș "Hourglass_On" �P%=�neighbour(key%,top,1) � �scan_file("P%<>top",key%,3) �ș "Hourglass_Off" ��close_file(csvhandle%) ��close_file(dbasehandle%) �(� sep$="," � type%=&dfe � type%=&fff �#ș "OS_File",18,Filename$,type% �writingcsv%=� �� �: �� �end_csv �ș "Hourglass_Smash" ��close_file(csvhandle%) ��close_file(dbasehandle%) ��close_file(F) �"ș "OS_File",18,Filename$,&dfe �writingcsv%=� �� �=17 � � �softerror("",41) � � �wimp_error(�,�,�,�$) �� �� �: �� �csv_head �� I%,F%,f$,H$,Head$,N% � I%=-1 �ȕ I%<�(Form$)-1 �( I%+=2:F%=�fnum(�Form$,I%,2)):N%+=1 �P � �selected(printW%,2) � Head$=$�text(mainW%,(desc%(F%))) � Head$=Tag$(F%) �M � �selected(csvW%,4) � Head$=�(len%(F%))+"�"+Head$+"�"+�(chartype%(F%)) �X � chartype%(F%)<>3 � chartype%(F%)<>6 � �selected(csvW%,0) � Head$=""""+Head$+"""" � � N%>1 � Head$=sep$+Head$ � �#csvhandle%,Head$; �� ��#csvhandle%,term$; �� �: �� �write_csv_rec(R%) �0� I%,F%,f$,F$,L%,N%,filename$,len%,base%,SF$ �� �selected(csvW%,3) � � F$=�key2(0,1) �, � �selected(csvW%,0) � F$=""""+F$+"""" � �#csvhandle%,F$+sep$; �� �I%=-1:L%=�(Form$)-1 �ȕ I%<L% �" I%+=2:F%=�fnum(�Form$,I%,2)) � Ȏ chartype%(F%) � � � 36,39: �, len%=�load_blob($database%,R%,F%,36) �' � len%>0 � �selected(csvW%,2) � �+ N%+=1:� N%>1 � �#csvhandle%,sep$; �3 � �selected(csvW%,0) � �#csvhandle%,""""; �( �blob_to_file(csvhandle%,len%) �3 � �selected(csvW%,0) � �#csvhandle%,""""; � � � � 3,6,46,47,54,56,57: � F$=F$(F%):N%+=1 �' � F$<>"" � �selected(csvW%,2) � � � N%>1 � F$=sep$+F$ � �#csvhandle%,F$; � � � : �! � �selected(printW%,11) � �/ F$=�expand(F$(F%),link$(F%),Len%,SF$) � � F$=F$(F%) � � � N%+=1 �' � F$<>"" � �selected(csvW%,2) � �0 � �selected(csvW%,0) � F$=""""+F$+"""" � � N%>1 � F$=sep$+F$ � �#csvhandle%,F$; � � � � �� ��#csvhandle%,term$; �� �: �� �convert_csv(f$) �r� k$,B%,J%,fld%,csvhandle%,toobighandle%,S$,sep%,sep2%,term%,term2%,F$,A%,F%,keybase%,base%,base2%,show%,done% �� � �� � �:� �:�stop_reading:� �size%=&100:inc%=size% �2�extend_named_sliding_block(tempanchor%,size%) �:sep%=�(sep$):� �(sep$)=2 � sep2%=�(�sep$)) � sep2%=255 �@term%=�(term$):� �(term$)=2 � term2%=�(�term$)) � term2%=255 �csvhandle%=�(f$) �$� present%=0 � �csv_to_dbase(f$) �Form$=�csv_importform �3toobighandle%=�($database%+".PrintJobs.TooBig") �ș "Hourglass_On" �� � Ȏ � � � � �selected(csvW%,3): � �read_bytes �, addr=�find(�$base%,KL%(key%)),0,1,�) �" REC%=�rec_no(k$,key%,addr) �( �read(fields%,�,REC%,$database%) � : �2 keybase%=!keyanchor%(0):A%=!keybase%:F%=A% � � !(keybase%+F%)>0 � : A%=!(keybase%+F%):REC%=!(keybase%+F%+8+KL%(0)+1) � incr%=�($Increment%) � incr%>0 � ' �change_length(RA%+incr%,�) 6 keybase%=!keyanchor%(0):A%=!keybase%:F%=A% < A%=!(keybase%+F%):REC%=!(keybase%+F%+8+KL%(0)+1) " � � moan_err%,�msg(66) � � ' �read(fields%,�,RA%,$database%) � endline%=�:J%=-1 # ȕ J%<�(Form$)-2 � endline%=� & J%+=2:fld%=�fnum(�Form$,J%,2)) ! �transfer_csv_field(fld%) � 1 � fld%<fields% � � endline% � �next_csv_rec �poll �write(fields%,key%) - � �selected(csvW%,11) � �redraw(mainW%) ? ș "Hourglass_Percentage",�#csvhandle%*100 � �#csvhandle% ș "OS_Byte",229,0 � �#csvhandle% ș "Hourglass_Off" �close_file(csvhandle%) �close_file(toobighandle%) %�scrap_sliding_block(tempanchor%) 7ș "OS_File",18,$database%+".PrintJobs.TooBig",&fff addr=�moveto(key%,top,1) �clear_selection �close_window(csvW%) F� �selected(passW%,16) � �#loghandle%,"CSV data imported from "+f$ !� ": #!� �transfer_csv_field(� fld%) $Ȏ chartype%(fld%) � % � 36,39: & �read_bytes '1 Z%=�blob_path(�,$database%,REC%,fld%,36,F$) (" Start%=base%:End%=base%+ptr% ) �save(F$,&fff,Start%,End%) *I � �selected(csvW%,11) � chartype%(fld%)=39 � �show_text_block(fld%) +M � 0,1,2,3,4,5,6,7,8,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57: , �read_bytes -9 � �selected(csvW%,16) � $base%=�stripspaces($base%) . Ȏ � � /, � ptr%<=len%(fld%):$Rf%(fld%)=$base% 0 � ptr%<247: 1A �#toobighandle%,"Rec."+�(REC%)+",Fld."+�(fld%)+","+$base% 2 $Rf%(fld%)="@" 3 : 4� �#toobighandle%,"Rec."+�(REC%+1)+",Fld."+�(fld%)+" is more than 246 characters long. Data not saved. External field suggested." 5 $Rf%(fld%)="@" 6 � 7 :fld%+=1 8F � ### Can't put CSV data into Button, Sprite or Draw fields! ### 9� :� ;: <� �read_bytes =� end$,flag%,B%,nq% >base%=!tempanchor%:ptr%=-1 ?B%=�#csvhandle% @ � B%=34 � A flag%=�:nq%=1 Bc end$="(base%?(ptr%-1)=34 AND (nq% MOD 2)=0) AND (B%=sep% OR B%=term% OR EOF#csvhandle%=TRUE)" C � D! �#csvhandle%=�#csvhandle%-1 E7 end$="B%=sep% OR B%=term% OR EOF#csvhandle%=TRUE" F� G� H+ B%=�#csvhandle%:ptr%+=1:base%?ptr%=B% I � B%=34 � nq%+=1 JO � ptr%=size% � size%+=inc%:�extend_named_sliding_block(tempanchor%,size%) K � �(end$) L� flag% � ptr%-=1 Mbase%?ptr%=13 NȎ B% � O � sep%:�skip_sep P � term%:�skip_term Q� R� S: T� �next_csv_rec U� V B%=�#csvhandle% W� B%=term% X�skip_term Y� Z: [� �skip_sep \� sep2%<>255 � ] B%=�#csvhandle% ^/ � B%<>sep2% � �#csvhandle%=�#csvhandle%-1 _� `� a: b� �skip_term c� term2%<>255 � d B%=�#csvhandle% e= � B%<>term2% � �#csvhandle%=�#csvhandle%-1 � endline%=� f � endline%=� g� h� i: j� �stop_reading kș "Hourglass_Off" l6�close_file(csvhandle%):�close_file(toobighandle%) m%�scrap_sliding_block(tempanchor%) n � � =17 � o �softerror("",74) p � �wimp_error(�,�,�,�$) q� r� present%=7 � s addr=�moveto(key%,top,1) t �clear_selection u� v� w: x� �csv_importform y� F%,f$,F$ zendline%=� { Ȏ � � | � �selected(csvW%,1): }/ � ### Use header record to build form ### ~ � �read_bytes � F%=�field($base%,�) �% � F%=0 � � moan_err%,�msg(87) � f$=�~(F%) � � �(f$)=1 � f$="0"+f$ � F$+=f$ �" �invert(mainW%,field%(F%)) � � endline% � � printorder$<>"": �B � ### Build form from highlighted fields, as in printing ### � F$=printorder$ � : �B � ### Assume entry into all fields, beginning with first ### � � F%=1 � fields% � f$=�~(F%) � � �(f$)=1 � f$="0"+f$ � F$+=f$ � � F% �� �=F$ �: �� �csv_to_dbase(f$) �� F%,P%,Q%,FH%,S$,readpos% �H� � (�selected(csvW%,4) � �selected(csvW%,1)) � � moan_err%,�msg(88) �(�read_bytes:S$=$base%:�#csvhandle%=0 �'� �S$,"�")=0 � � moan_err%,�msg(89) �leaf$=�leaf(f$):csvconv%=� �=� $database%="No data" � $database%=dbasepath$+".!"+leaf$ ��save($database%,0,0,0) �fields%=0:endline%=� �� � fields%+=1 � �read_bytes:S$=$base% �" P%=�S$,"�"):Q%=�S$,"�",P%+1) �% Tag$(fields%)=�S$,P%+1,Q%-P%-1) � len%(fields%)=�(�S$,P%-1)) �% chartype%(fields%)=�(�S$,Q%+1)) �� endline% �%�scrap_sliding_block(tempanchor%) �FH%=�($database%+".Form") ��#FH%,fields% �� F%=1 � fields% � xd%=16:xf%=96 � yd%=-(F%*52):yf%=yd% �H �#FH%,Tag$(F%),Tag$(F%),xd%,yd%,xf%,yf%,len%(F%),chartype%(F%),0,0 �� F% ��close_file(FH%) �+ș "OS_File",18,$database%+".Form",&7f2 �fields%=0:Fieldnumber%=0 �fields%=�get_form(Fptr%) ��default_key �readpos%=�#csvhandle% �RA%=�no_of_recs ��defaults($database%,RA%,0) ��save_keys ��deselect(csvW%,1) �2�create_named_sliding_block(tempanchor%,size%) �csvhandle%=�(f$) ��#csvhandle%=readpos% �� �: �� �no_of_recs �� N%,B% �� � � B%=�#csvhandle% � � B%=term% � �#csvhandle% � N%+=1 �? ș "Hourglass_Percentage",�#csvhandle%*100 � �#csvhandle% �� �#csvhandle% �=N% �: �&� --- SLIDING HEAP 2.00 PROCEDURES �: �� requires SlidingHeap 2.00 �: �� module and PROCs �� � Steven Haslam 1992 �: �� �_heap_slotsize � � R0% �"ș "Wimp_SlotSize",-1,-1 � R0% �=R0% �: �/� �_heap_numtostr(d%,n%)=��d%,"0")+�~n%,d%) �/� �_heap_snumtostr(d%,n%)=��d%," ")+�n%,d%) �: �� �heapsinfo �7ș "OS_Heap",1,fixedheapbase% � ,,bigbloc%,totfree% �� "Fixed heap" �� "----- ----" �:� "Heap base : &";�_heap_numtostr(8,fixedheapbase%) �5� "Heap size : ";�_heap_bytes2(fixedheapsize%) �/� "Largest free : ";�_heap_bytes2(bigbloc%) �/� "Total free : ";�_heap_bytes2(totfree%) �� �� "Sliding heap" �� "------- ----" �.ș "SlidingHeap_HeapInfo",slidingheapbase% �� �: �� �_heap_pageup(n%) � � R0% � ș "OS_ReadMemMapInfo" � R0% �=(n%+R0%-1) � � (R0%-1) �: �*� �initheaps(heapsize%,slidingblocks%) �fixedheapsize%=heapsize% �Lheap_trigger%=�_heap_pageup(�+fixedheapsize%+20+20*slidingblocks%-&8000) ��setslotsize(heap_trigger%) �G� �_heap_slotsize<heap_trigger% � � 130,"Unable to initialise heap" �fixedheapbase%=� �%slidingheapbase%=�+fixedheapsize% �1ș "OS_Heap",0,fixedheapbase%,,fixedheapsize% �=ș "SlidingHeap_Create",slidingheapbase%,2,slidingblocks% �0ș "SlidingHeap_VerifyHeap",slidingheapbase% �� �: �� �_heap_nextfree �� nextfree% �:ș "SlidingHeap_NextFree",slidingheapbase% � nextfree% �=nextfree% �: �� �destroyheaps ��setslotsize(�-&8000) �� �: �$� �_heap_wordup(x%)=(x%+3) � � 3 �: �� �create_anchor(name$) � space% � space% 4+�name$+1 !space%=0 $(space%+4)=name$ =space% : 0� �create_named_sliding_block(anchor%,size%) � trysize% size%=�_heap_wordup(size%) 7trysize%=�_heap_pageup(�_heap_nextfree+size%-&7FF4) � trysize%>heap_trigger% � �setslotsize(trysize%) # � �_heap_slotsize<trysize% � % �setslotsize(heap_trigger%) F � 131,"Not enough room to create block """+$(anchor%+4)+"""" � heap_trigger%=trysize% � � Fș "SlidingHeap_NewBlock",slidingheapbase%,anchor%,size%,anchor%+4 0ș "SlidingHeap_VerifyHeap",slidingheapbase% � : #� �scrap_sliding_block(anchor%) � !anchor%=0 � � 8ș "SlidingHeap_ScrapBlock",slidingheapbase%,anchor% 1trysize%=�_heap_pageup(�_heap_nextfree-&7FFC) � trysize%<>heap_trigger% � �setslotsize(trysize%) heap_trigger%=trysize% � !anchor%=0 0ș "SlidingHeap_VerifyHeap",slidingheapbase% !� ": #� �setslotsize(newsize%) $"ș "Wimp_SlotSize",newsize%,-1 %� &: '3� �extend_named_sliding_block(anchor%,newsize%) (B� !anchor%=0 � �create_named_sliding_block(anchor%,newsize%):� )A� !anchor%>�_heap_nextfree � � 129,"Block beyond heap limits" *$newsize%=�_heap_wordup(newsize%) +Hș "SlidingHeap_DescribeBlock",slidingheapbase%,anchor% � ,,oldsize% ,larger%=newsize%>oldsize% -� larger% � .H trysize%=�_heap_pageup(�_heap_nextfree+(newsize%-oldsize%)-&7FFC) /! � trysize%>heap_trigger% � 0 �setslotsize(trysize%) 1& � �_heap_slotsize<trysize% � 2( �setslotsize(heap_trigger%) 3@ � 132,"Not enough room to extend block #"+�~anchor% 4 � 5# heap_trigger%=trysize% 6 � 7 � 8� 9Bș "SlidingHeap_ExtendBlock",slidingheapbase%,anchor%,newsize% :1trysize%=�_heap_pageup(�_heap_nextfree-&7FFC) ;� trysize%<>heap_trigger% � < �setslotsize(trysize%) = heap_trigger%=trysize% >� ?0ș "SlidingHeap_VerifyHeap",slidingheapbase% @� A: B� �_heap_bytes(b%) C � end% D>ș "OS_ConvertFixedFileSize",b%,block%,block%+&100 � ,end% E?end%=13 F=$block% G: H� �_heap_bytes2(b%) I � end% J9ș "OS_ConvertFileSize",b%,block%,block%+&100 � ,end% K?end%=13 L=$block% M: N � �create_fixed_block(size%) O� pointer%,flag% P<ș "XOS_Heap",2,fixedheapbase%,,size% � ,,pointer%;flag% Qȕ flag% � 1 R�extendfixedheap S<ș "XOS_Heap",2,fixedheapbase%,,size% � ,,pointer%;flag% T� U =pointer% V: W� �extendfixedheap X� nshb%,extend%,trysize% Y$ș "OS_ReadMemMapInfo" � extend% Z$trysize%=�_heap_slotsize+extend% [�setslotsize(trysize%) \E� �_heap_slotsize<trysize% � � 255,"No room to extend fixed heap" ]"nshb%=slidingheapbase%+extend% ^5ș "SlidingHeap_ShiftHeap",slidingheapbase%,nshb% _*ș "OS_Heap",5,fixedheapbase%,,extend% `fixedheapsize%+=extend% aslidingheapbase%=nshb% b0ș "SlidingHeap_VerifyHeap",slidingheapbase% c� �
00000000 0d 00 01 1c f4 20 3e 3c 50 42 61 73 65 24 44 69 |..... ><PBase$Di| 00000010 72 3e 2e 21 52 75 6e 49 6d 61 67 65 0d 00 02 05 |r>.!RunImage....| 00000020 f4 0d 00 03 27 f4 20 21 52 75 6e 49 6d 61 67 65 |....'. !RunImage| 00000030 20 66 6f 72 20 21 50 6f 77 65 72 62 61 73 65 20 | for !Powerbase | 00000040 64 61 74 61 62 61 73 65 0d 00 04 1a f4 20 a9 20 |database..... . | 00000050 44 2e 4c 2e 20 26 20 53 2e 52 2e 20 48 61 73 6c |D.L. & S.R. Hasl| 00000060 61 6d 0d 00 05 05 3a 0d 00 06 23 f4 20 48 65 61 |am....:...#. Hea| 00000070 70 20 4d 61 6e 61 67 65 72 20 28 6d 6f 64 75 6c |p Manager (modul| 00000080 65 20 2b 20 42 41 53 49 43 29 0d 00 07 13 f4 20 |e + BASIC)..... | 00000090 a9 20 53 2e 52 2e 20 48 61 73 6c 61 6d 0d 00 08 |. S.R. Haslam...| 000000a0 05 3a 0d 00 09 1d f4 20 49 6e 74 65 72 66 61 63 |.:..... Interfac| 000000b0 65 20 4d 61 6e 61 67 65 72 20 28 76 2e 32 29 0d |e Manager (v.2).| 000000c0 00 0a 18 f4 20 a9 20 53 69 6d 6f 6e 20 48 75 6e |.... . Simon Hun| 000000d0 74 69 6e 67 64 6f 6e 0d 00 0b 05 3a 0d 00 0c 22 |tingdon....:..."| 000000e0 76 65 72 73 69 6f 6e 24 3d 22 34 2e 39 39 35 20 |version$="4.995 | 000000f0 28 30 39 2d 46 65 62 2d 31 39 39 34 29 22 0d 00 |(09-Feb-1994)"..| 00000100 0d 2c 69 6e 74 76 65 72 73 69 6f 6e 24 3d 22 49 |.,intversion$="I| 00000110 6e 74 65 72 66 61 63 65 20 4d 61 6e 61 67 65 72 |nterface Manager| 00000120 20 28 76 2e 32 2e 30 30 29 22 0d 00 0e 05 3a 0d | (v.2.00)"....:.| 00000130 00 0f 28 c8 99 20 22 4f 53 5f 42 79 74 65 22 2c |..(.. "OS_Byte",| 00000140 32 30 32 2c 30 2c 32 35 35 20 b8 20 2c 6b 62 64 |202,0,255 . ,kbd| 00000150 73 74 61 74 75 73 25 0d 00 10 20 66 61 74 61 6c |status%... fatal| 00000160 5f 65 72 72 25 3d 32 35 35 3a 6d 6f 61 6e 5f 65 |_err%=255:moan_e| 00000170 72 72 25 3d 32 35 34 0d 00 11 0e 70 72 65 73 65 |rr%=254....prese| 00000180 6e 74 25 3d a3 0d 00 12 48 ee 20 85 3a ee 20 85 |nt%=....H. .:. .| 00000190 20 87 3a 85 20 9f 2c 22 4c 30 20 65 72 72 6f 72 | .:. .,"L0 error| 000001a0 3a 20 22 2b f6 24 2b 22 20 64 75 72 69 6e 67 20 |: "+.$+" during | 000001b0 69 6e 69 74 69 61 6c 69 73 61 74 69 6f 6e 20 61 |initialisation a| 000001c0 74 20 6c 69 6e 65 20 22 2b c3 28 9e 29 0d 00 13 |t line "+.(.)...| 000001d0 0a f2 73 65 74 75 70 0d 00 14 2e e7 20 62 75 66 |..setup..... buf| 000001e0 66 25 3e 65 6e 64 62 75 66 66 25 20 8c 20 85 20 |f%>endbuff% . . | 000001f0 30 2c 22 4e 6f 20 72 6f 6f 6d 20 66 6f 72 20 64 |0,"No room for d| 00000200 65 66 73 2e 22 0d 00 15 32 e7 20 6d 65 6e 75 5f |efs."...2. menu_| 00000210 70 74 72 25 3e 6d 65 6e 5f 65 6e 64 25 20 8c 20 |ptr%>men_end% . | 00000220 85 20 30 2c 22 4e 6f 20 72 6f 6f 6d 20 66 6f 72 |. 0,"No room for| 00000230 20 6d 65 6e 75 73 22 0d 00 16 1d ee 20 85 20 f2 | menus"..... . .| 00000240 77 69 6d 70 5f 65 72 72 6f 72 28 b9 2c 9f 2c 9e |wimp_error(.,.,.| 00000250 2c f6 24 29 0d 00 17 1f c8 99 20 22 4f 53 5f 47 |,.$)...... "OS_G| 00000260 65 74 45 6e 76 22 20 b8 20 43 6f 6d 53 74 72 69 |etEnv" . ComStri| 00000270 6e 67 24 0d 00 18 20 e7 20 a7 43 6f 6d 53 74 72 |ng$... . .ComStr| 00000280 69 6e 67 24 2c 22 2d 64 61 74 61 62 61 73 65 22 |ing$,"-database"| 00000290 29 20 8c 0d 00 19 34 20 20 46 69 6c 65 24 3d c1 |) ....4 File$=.| 000002a0 43 6f 6d 53 74 72 69 6e 67 24 2c a7 43 6f 6d 53 |ComString$,.ComS| 000002b0 74 72 69 6e 67 24 2c 22 2d 64 61 74 61 62 61 73 |tring$,"-databas| 000002c0 65 22 29 2b 31 30 29 0d 00 1a 35 20 20 c8 99 20 |e")+10)...5 .. | 000002d0 22 4f 53 5f 47 53 54 72 61 6e 73 22 2c 46 69 6c |"OS_GSTrans",Fil| 000002e0 65 24 2c c4 32 35 35 2c bd 31 33 29 2c 32 35 35 |e$,.255,.13),255| 000002f0 20 b8 20 2c 46 69 6c 65 24 2c 4c 25 0d 00 1b 16 | . ,File$,L%....| 00000300 20 20 46 69 6c 65 24 3d c0 46 69 6c 65 24 2c 4c | File$=.File$,L| 00000310 25 29 0d 00 1c 17 20 20 f2 67 65 74 5f 69 74 5f |%).... .get_it_| 00000320 69 6e 28 46 69 6c 65 24 29 0d 00 1d 05 cd 0d 00 |in(File$).......| 00000330 1e 1d ee 20 85 20 f2 77 69 6d 70 5f 65 72 72 6f |... . .wimp_erro| 00000340 72 28 b9 2c 9f 2c 9e 2c f6 24 29 0d 00 1f 05 f5 |r(.,.,.,.$).....| 00000350 0d 00 20 0b 20 20 f2 70 6f 6c 6c 0d 00 21 0b fd |.. . .poll..!..| 00000360 20 71 75 69 74 25 0d 00 22 0f f2 63 6c 6f 73 65 | quit%.."..close| 00000370 5f 64 6f 77 6e 0d 00 23 05 e0 0d 00 24 05 3a 0d |_down..#....$.:.| 00000380 00 25 0b dd 20 f2 70 6f 6c 6c 0d 00 26 27 c8 99 |.%.. .poll..&'..| 00000390 20 22 4f 53 5f 42 79 74 65 22 2c 32 32 39 2c 31 | "OS_Byte",229,1| 000003a0 3a c8 99 20 22 4f 53 5f 42 79 74 65 22 2c 31 32 |:.. "OS_Byte",12| 000003b0 34 0d 00 27 29 c8 99 20 22 57 69 6d 70 5f 50 6f |4..').. "Wimp_Po| 000003c0 6c 6c 22 2c 6d 61 73 6b 25 2c 62 6c 6f 63 6b 25 |ll",mask%,block%| 000003d0 20 b8 20 72 65 61 73 6f 6e 25 0d 00 28 28 c8 99 | . reason%..((..| 000003e0 20 22 49 6e 74 65 72 66 61 63 65 5f 50 6f 6c 6c | "Interface_Poll| 000003f0 22 2c 72 65 61 73 6f 6e 25 2c 2c 6d 79 74 61 73 |",reason%,,mytas| 00000400 6b 25 0d 00 29 10 c8 8e 20 72 65 61 73 6f 6e 25 |k%..)... reason%| 00000410 20 ca 0d 00 2a 40 20 20 c9 20 30 3a e7 20 61 75 | ...*@ . 0:. au| 00000420 74 6f 73 61 76 65 25 3e 30 20 80 20 41 63 63 65 |tosave%>0 . Acce| 00000430 73 73 25 3d b9 20 8c 20 f2 63 68 65 63 6b 5f 73 |ss%=. . .check_s| 00000440 61 76 65 28 73 61 76 65 69 6e 74 25 2a 36 30 30 |ave(saveint%*600| 00000450 30 29 0d 00 2b 30 20 20 e7 20 49 6d 70 5f 77 61 |0)..+0 . Imp_wa| 00000460 69 74 25 20 80 20 ac 20 6d 65 72 67 69 6e 67 25 |it% . . merging%| 00000470 20 8c 20 f2 72 65 61 64 79 5f 74 6f 5f 6d 65 72 | . .ready_to_mer| 00000480 67 65 0d 00 2c 30 20 20 e7 20 66 6c 61 73 68 25 |ge..,0 . flash%| 00000490 3e 30 20 8c 20 f2 66 6c 61 73 68 28 6d 61 69 6e |>0 . .flash(main| 000004a0 57 25 2c 66 69 65 6c 64 25 28 66 6c 61 73 68 25 |W%,field%(flash%| 000004b0 29 29 0d 00 2d 1a 20 20 c9 20 31 3a f2 72 65 64 |))..-. . 1:.red| 000004c0 72 61 77 28 21 62 6c 6f 63 6b 25 29 0d 00 2e 26 |raw(!block%)...&| 000004d0 20 20 c9 20 32 3a c8 99 20 22 57 69 6d 70 5f 4f | . 2:.. "Wimp_O| 000004e0 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 |penWindow",,bloc| 000004f0 6b 25 0d 00 2f 21 20 20 c9 20 33 3a f2 70 65 72 |k%../! . 3:.per| 00000500 66 6f 72 6d 5f 63 6c 6f 73 65 28 21 62 6c 6f 63 |form_close(!bloc| 00000510 6b 25 29 0d 00 30 17 20 20 c9 20 34 3a f2 68 6f |k%)..0. . 4:.ho| 00000520 75 72 67 6c 61 73 73 28 b9 29 0d 00 31 17 20 20 |urglass(.)..1. | 00000530 c9 20 35 3a f2 68 6f 75 72 67 6c 61 73 73 28 a3 |. 5:.hourglass(.| 00000540 29 0d 00 32 40 20 20 c9 20 36 3a f2 6d 6f 75 73 |)..2@ . 6:.mous| 00000550 65 28 62 6c 6f 63 6b 25 21 30 2c 62 6c 6f 63 6b |e(block%!0,block| 00000560 25 21 34 2c 62 6c 6f 63 6b 25 21 38 2c 62 6c 6f |%!4,block%!8,blo| 00000570 63 6b 25 21 31 32 2c 62 6c 6f 63 6b 25 21 31 36 |ck%!12,block%!16| 00000580 29 0d 00 33 20 20 20 c9 20 37 3a f2 65 6e 64 5f |)..3 . 7:.end_| 00000590 64 72 61 67 28 53 74 61 72 74 25 2c 45 6e 64 25 |drag(Start%,End%| 000005a0 29 0d 00 34 16 20 20 c9 20 38 3a f2 70 72 6f 63 |)..4. . 8:.proc| 000005b0 65 73 73 5f 6b 65 79 0d 00 35 16 20 20 c9 20 39 |ess_key..5. . 9| 000005c0 3a f2 6d 65 6e 75 5f 73 65 6c 65 63 74 0d 00 36 |:.menu_select..6| 000005d0 2a 20 20 c9 20 31 32 3a f2 73 65 74 5f 6b 65 79 |* . 12:.set_key| 000005e0 62 6f 61 72 64 28 21 62 6c 6f 63 6b 25 2c 62 6c |board(!block%,bl| 000005f0 6f 63 6b 25 21 34 29 0d 00 37 0e 20 20 c9 20 31 |ock%!4)..7. . 1| 00000600 37 2c 31 38 3a 0d 00 38 65 20 20 c8 99 20 22 49 |7,18:..8e .. "I| 00000610 6d 70 75 6c 73 65 5f 44 65 63 6f 64 65 22 2c 72 |mpulse_Decode",r| 00000620 65 61 73 6f 6e 25 2c 62 6c 6f 63 6b 25 2c 2c 2c |eason%,block%,,,| 00000630 2c 6d 65 74 68 6f 64 74 61 62 6c 65 25 2c 6d 79 |,methodtable%,my| 00000640 74 61 73 6b 25 20 b8 20 72 65 61 73 6f 6e 25 2c |task% . reason%,| 00000650 2c 2c 2c 2c 74 6f 6b 65 6e 25 2c 70 61 72 61 6d |,,,,token%,param| 00000660 73 25 2c 6f 62 6a 65 63 74 25 0d 00 39 17 20 20 |s%,object%..9. | 00000670 e7 20 72 65 61 73 6f 6e 25 3e 3d 26 32 30 30 20 |. reason%>=&200 | 00000680 8c 0d 00 3a 14 20 20 20 20 c8 8e 20 72 65 61 73 |...:. .. reas| 00000690 6f 6e 25 20 ca 0d 00 3b 4d 20 20 20 20 20 20 c9 |on% ...;M .| 000006a0 20 26 32 30 30 2c 26 32 30 31 3a e7 20 74 6f 6b | &200,&201:. tok| 000006b0 65 6e 25 3c 3e 2d 31 20 8c 20 f2 49 6d 70 75 6c |en%<>-1 . .Impul| 000006c0 73 65 5f 63 6f 6d 6d 61 6e 64 28 74 6f 6b 65 6e |se_command(token| 000006d0 25 2c 70 61 72 61 6d 73 25 2c 6f 62 6a 65 63 74 |%,params%,object| 000006e0 25 29 0d 00 3c 2f 20 20 20 20 20 20 c9 20 26 32 |%)..</ . &2| 000006f0 30 32 3a f2 49 6d 70 75 6c 73 65 5f 72 65 70 6c |02:.Impulse_repl| 00000700 79 28 74 6f 6b 65 6e 25 2c 70 61 72 61 6d 73 25 |y(token%,params%| 00000710 29 0d 00 3d 2e 20 20 20 20 20 20 c9 20 26 32 30 |)..=. . &20| 00000720 33 3a f2 49 6d 70 75 6c 73 65 5f 73 65 6e 64 28 |3:.Impulse_send(| 00000730 74 6f 6b 65 6e 25 2c 6f 62 6a 65 63 74 25 29 0d |token%,object%).| 00000740 00 3e 39 20 20 20 20 20 20 c9 20 26 32 30 34 3a |.>9 . &204:| 00000750 f2 49 6d 70 75 6c 73 65 5f 72 65 63 65 69 76 65 |.Impulse_receive| 00000760 28 74 6f 6b 65 6e 25 2c 70 61 72 61 6d 73 25 2c |(token%,params%,| 00000770 6f 62 6a 65 63 74 25 29 0d 00 3f 09 20 20 20 20 |object%)..?. | 00000780 cb 0d 00 40 12 20 20 20 20 cc 20 f2 6d 65 73 73 |...@. . .mess| 00000790 61 67 65 0d 00 41 07 20 20 cd 0d 00 42 1c 20 20 |age..A. ...B. | 000007a0 c9 20 31 39 3a f2 6e 6f 74 5f 61 63 6b 6e 6f 77 |. 19:.not_acknow| 000007b0 6c 65 64 67 65 64 0d 00 43 05 cb 0d 00 44 05 e1 |ledged..C....D..| 000007c0 0d 00 45 05 3a 0d 00 46 15 dd 20 f2 68 6f 75 72 |..E.:..F.. .hour| 000007d0 67 6c 61 73 73 28 6f 6e 25 29 0d 00 47 32 e7 20 |glass(on%)..G2. | 000007e0 28 69 6e 64 65 78 69 6e 67 25 20 84 20 70 72 69 |(indexing% . pri| 000007f0 6e 74 69 6e 67 25 29 20 80 20 21 62 6c 6f 63 6b |nting%) . !block| 00000800 25 3d 6b 65 79 70 61 64 57 25 20 8c 0d 00 48 34 |%=keypadW% ...H4| 00000810 20 20 e7 20 6f 6e 25 20 8c 20 c8 99 20 22 48 6f | . on% . .. "Ho| 00000820 75 72 67 6c 61 73 73 5f 4f 6e 22 20 8b 20 c8 99 |urglass_On" . ..| 00000830 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 | "Hourglass_Off"| 00000840 0d 00 49 05 cd 0d 00 4a 05 e1 0d 00 4b 05 3a 0d |..I....J....K.:.| 00000850 00 4c 15 dd 20 f2 66 6c 61 73 68 28 77 69 25 2c |.L.. .flash(wi%,| 00000860 69 63 25 29 0d 00 4d 0b ea 20 74 69 6d 65 25 0d |ic%)..M.. time%.| 00000870 00 4e 25 c8 99 20 22 4f 53 5f 52 65 61 64 4d 6f |.N%.. "OS_ReadMo| 00000880 6e 6f 74 6f 6e 69 63 54 69 6d 65 22 20 b8 20 74 |notonicTime" . t| 00000890 69 6d 65 25 0d 00 4f 27 e7 20 28 74 69 6d 65 25 |ime%..O'. (time%| 000008a0 20 83 20 35 30 29 3d 30 20 8c 20 f2 69 6e 76 65 | . 50)=0 . .inve| 000008b0 72 74 28 77 69 25 2c 69 63 25 29 0d 00 50 05 e1 |rt(wi%,ic%)..P..| 000008c0 0d 00 51 05 3a 0d 00 52 4b f4 20 53 68 75 74 64 |..Q.:..RK. Shutd| 000008d0 6f 77 6e 20 72 6f 75 74 69 6e 65 73 20 2d 2d 2d |own routines ---| 000008e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000910 0d 00 53 05 3a 0d 00 54 11 dd 20 f2 63 6c 6f 73 |..S.:..T.. .clos| 00000920 65 5f 64 6f 77 6e 0d 00 55 08 ea 20 46 25 0d 00 |e_down..U.. F%..| 00000930 56 07 ea 20 85 0d 00 57 a8 ee 20 85 20 ea 3a 24 |V.. ...W.. . .:$| 00000940 62 6c 6f 63 6b 25 3d 22 54 41 53 4b 22 3a c8 99 |block%="TASK":..| 00000950 20 22 57 69 6d 70 5f 43 6c 6f 73 65 44 6f 77 6e | "Wimp_CloseDown| 00000960 22 2c 6d 79 74 61 73 6b 25 2c 21 62 6c 6f 63 6b |",mytask%,!block| 00000970 25 3a c8 99 20 22 49 6e 74 65 72 66 61 63 65 5f |%:.. "Interface_| 00000980 43 6c 6f 73 65 44 6f 77 6e 22 2c 6d 79 74 61 73 |CloseDown",mytas| 00000990 6b 25 2c 21 62 6c 6f 63 6b 25 3a ee 20 85 20 87 |k%,!block%:. . .| 000009a0 3a eb 20 31 32 3a 85 20 9f 2c 22 4c 30 20 65 72 |:. 12:. .,"L0 er| 000009b0 72 6f 72 3a 20 22 2b f6 24 2b 22 20 64 75 72 69 |ror: "+.$+" duri| 000009c0 6e 67 20 63 6c 6f 73 65 64 6f 77 6e 20 61 74 20 |ng closedown at | 000009d0 6c 69 6e 65 20 22 2b c3 28 9e 29 3a e0 0d 00 58 |line "+.(.):...X| 000009e0 18 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 53 |... "Hourglass_S| 000009f0 6d 61 73 68 22 0d 00 59 0c f2 65 78 69 74 28 30 |mash"..Y..exit(0| 00000a00 29 0d 00 5a 24 c8 99 20 22 49 6e 74 65 72 66 61 |)..Z$.. "Interfa| 00000a10 63 65 5f 43 6c 6f 73 65 44 6f 77 6e 22 2c 6d 79 |ce_CloseDown",my| 00000a20 74 61 73 6b 25 0d 00 5b 22 c8 99 20 22 49 6d 70 |task%..[".. "Imp| 00000a30 75 6c 73 65 5f 43 6c 6f 73 65 44 6f 77 6e 22 2c |ulse_CloseDown",| 00000a40 6d 79 74 61 73 6b 25 0d 00 5c 12 24 62 6c 6f 63 |mytask%..\.$bloc| 00000a50 6b 25 3d 22 54 41 53 4b 22 0d 00 5d 27 c8 99 20 |k%="TASK"..]'.. | 00000a60 22 57 69 6d 70 5f 43 6c 6f 73 65 44 6f 77 6e 22 |"Wimp_CloseDown"| 00000a70 2c 6d 79 74 61 73 6b 25 2c 21 62 6c 6f 63 6b 25 |,mytask%,!block%| 00000a80 0d 00 5e 1f c8 99 20 22 4f 53 5f 42 79 74 65 22 |..^... "OS_Byte"| 00000a90 2c 32 30 32 2c 6b 62 64 73 74 61 74 75 73 25 0d |,202,kbdstatus%.| 00000aa0 00 5f 05 e0 0d 00 60 05 e1 0d 00 61 05 3a 0d 00 |._....`....a.:..| 00000ab0 62 16 dd 20 f2 65 78 69 74 28 65 78 69 74 74 79 |b.. .exit(exitty| 00000ac0 70 65 25 29 0d 00 63 0b ea 20 66 6c 61 67 25 0d |pe%)..c.. flag%.| 00000ad0 00 64 18 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 |.d... "Hourglass| 00000ae0 5f 53 6d 61 73 68 22 0d 00 65 20 e7 20 70 72 65 |_Smash"..e . pre| 00000af0 73 65 6e 74 25 3d 37 20 8c 20 f2 63 68 65 63 6b |sent%=7 . .check| 00000b00 5f 63 68 61 6e 67 65 0d 00 66 12 c8 8e 20 65 78 |_change..f... ex| 00000b10 69 74 74 79 70 65 25 20 ca 0d 00 67 3d 20 20 c9 |ittype% ...g= .| 00000b20 20 30 3a e7 20 77 61 72 6e 25 20 80 20 72 61 6d | 0:. warn% . ram| 00000b30 25 20 8c 20 66 6c 61 67 25 3d a4 63 6f 6e 66 69 |% . flag%=.confi| 00000b40 72 6d 28 a4 6d 73 67 28 36 33 29 29 20 8b 20 66 |rm(.msg(63)) . f| 00000b50 6c 61 67 25 3d b9 0d 00 68 36 20 20 c9 20 31 3a |lag%=...h6 . 1:| 00000b60 e7 20 77 61 72 6e 25 20 8c 20 66 6c 61 67 25 3d |. warn% . flag%=| 00000b70 a4 63 6f 6e 66 69 72 6d 28 a4 6d 73 67 28 36 32 |.confirm(.msg(62| 00000b80 29 29 20 8b 20 66 6c 61 67 25 3d b9 0d 00 69 05 |)) . flag%=...i.| 00000b90 cb 0d 00 6a 13 e7 20 66 6c 61 67 25 3d a3 20 8c |...j.. flag%=. .| 00000ba0 20 e1 20 20 0d 00 6b 13 e7 20 65 78 69 74 74 79 | . ..k.. exitty| 00000bb0 70 65 25 3d 30 20 8c 0d 00 6c 30 20 20 e7 20 64 |pe%=0 ...l0 . d| 00000bc0 65 73 69 67 6e 25 20 8c 20 f2 73 61 76 65 5f 66 |esign% . .save_f| 00000bd0 6f 72 6d 28 24 64 61 74 61 62 61 73 65 25 2b 22 |orm($database%+"| 00000be0 2e 46 6f 72 6d 22 29 0d 00 6d 1b 20 20 e7 20 6c |.Form")..m. . l| 00000bf0 69 6e 6b 24 28 30 29 3d 22 4c 4f 41 44 45 44 22 |ink$(0)="LOADED"| 00000c00 20 8c 0d 00 6e 20 20 20 20 20 6c 6b 3d ae 28 24 | ...n lk=.($| 00000c10 64 61 74 61 62 61 73 65 25 2b 22 2e 4c 69 6e 6b |database%+".Link| 00000c20 22 29 0d 00 6f 18 20 20 20 20 e3 20 46 25 3d 31 |")..o. . F%=1| 00000c30 20 b8 20 66 69 65 6c 64 73 25 0d 00 70 18 20 20 | . fields%..p. | 00000c40 20 20 20 20 f1 23 6c 6b 2c 6c 69 6e 6b 24 28 46 | .#lk,link$(F| 00000c50 25 29 0d 00 71 0c 20 20 20 20 ed 20 46 25 0d 00 |%)..q. . F%..| 00000c60 72 07 20 20 cd 0d 00 73 1b 20 20 e7 20 63 61 6c |r. ...s. . cal| 00000c70 63 24 28 30 29 3d 22 4c 4f 41 44 45 44 22 20 8c |c$(0)="LOADED" .| 00000c80 0d 00 74 20 20 20 20 20 63 6c 3d ae 28 24 64 61 |..t cl=.($da| 00000c90 74 61 62 61 73 65 25 2b 22 2e 43 61 6c 63 22 29 |tabase%+".Calc")| 00000ca0 0d 00 75 18 20 20 20 20 e3 20 46 25 3d 31 20 b8 |..u. . F%=1 .| 00000cb0 20 66 69 65 6c 64 73 25 0d 00 76 18 20 20 20 20 | fields%..v. | 00000cc0 20 20 f1 23 63 6c 2c 63 61 6c 63 24 28 46 25 29 | .#cl,calc$(F%)| 00000cd0 0d 00 77 0c 20 20 20 20 ed 20 46 25 0d 00 78 07 |..w. . F%..x.| 00000ce0 20 20 cd 0d 00 79 3a 20 20 e7 20 41 63 63 65 73 | ...y: . Acces| 00000cf0 73 25 3d b9 20 80 20 70 72 65 73 65 6e 74 25 3d |s%=. . present%=| 00000d00 37 20 8c 20 f2 6d 6f 75 73 65 28 30 2c 30 2c 34 |7 . .mouse(0,0,4| 00000d10 2c 6b 65 79 70 61 64 57 25 2c 31 39 29 0d 00 7a |,keypadW%,19)..z| 00000d20 05 cd 0d 00 7b 30 e7 20 6d 65 6e 75 25 28 35 29 |....{0. menu%(5)| 00000d30 3e 30 20 8c 20 6d 65 6e 75 5f 70 74 72 25 3d 6d |>0 . menu_ptr%=m| 00000d40 65 6e 75 25 28 35 29 3a 6d 65 6e 75 25 28 35 29 |enu%(5):menu%(5)| 00000d50 3d 30 0d 00 7c 36 f4 20 23 23 23 20 20 4d 65 6e |=0..|6. ### Men| 00000d60 75 20 35 20 69 73 20 74 68 65 20 6d 65 6e 75 20 |u 5 is the menu | 00000d70 6f 66 20 76 61 6c 69 64 61 74 69 6f 6e 20 74 61 |of validation ta| 00000d80 62 6c 65 73 20 23 23 23 0d 00 7d 0e f2 63 6c 6f |bles ###..}..clo| 00000d90 73 65 5f 6c 6f 67 0d 00 7e 10 f2 63 6c 6f 73 65 |se_log..~..close| 00000da0 5f 66 69 6c 65 73 0d 00 7f 11 f2 68 69 64 65 5f |_files.....hide_| 00000db0 77 69 6e 64 6f 77 73 0d 00 80 1b f2 64 65 6c 65 |windows.....dele| 00000dc0 74 65 5f 69 63 6f 6e 73 28 6d 61 69 6e 57 25 2c |te_icons(mainW%,| 00000dd0 30 29 0d 00 81 1e f2 64 65 6c 65 74 65 5f 69 63 |0).....delete_ic| 00000de0 6f 6e 73 28 64 61 74 61 64 69 63 57 25 2c 30 29 |ons(datadicW%,0)| 00000df0 0d 00 82 1e f2 64 65 6c 65 74 65 5f 69 63 6f 6e |.....delete_icon| 00000e00 73 28 70 73 65 6c 65 63 74 57 25 2c 31 29 0d 00 |s(pselectW%,1)..| 00000e10 83 1e f2 64 65 6c 65 74 65 5f 69 63 6f 6e 73 28 |...delete_icons(| 00000e20 6b 65 79 70 61 64 57 25 2c 33 37 29 0d 00 84 13 |keypadW%,37)....| 00000e30 f2 72 65 63 6f 76 65 72 5f 6d 65 6d 6f 72 79 0d |.recover_memory.| 00000e40 00 85 0e f2 69 6e 69 74 5f 76 61 72 73 0d 00 86 |....init_vars...| 00000e50 15 e3 20 49 25 3d 30 20 b8 20 4d 61 78 54 61 62 |.. I%=0 . MaxTab| 00000e60 73 25 0d 00 87 16 20 20 70 72 69 6e 74 72 65 6c |s%.... printrel| 00000e70 24 28 49 25 29 3d 22 22 0d 00 88 08 ed 20 49 25 |$(I%)=""..... I%| 00000e80 0d 00 89 0f 66 69 65 6c 64 24 28 29 3d 22 22 0d |....field$()="".| 00000e90 00 8a 11 24 50 61 73 73 77 6f 72 64 25 3d 22 22 |...$Password%=""| 00000ea0 0d 00 8b 0e 70 72 65 73 65 6e 74 25 3d a3 0d 00 |....present%=...| 00000eb0 8c 0b 65 78 69 74 25 3d b9 0d 00 8d 16 f2 6c 69 |..exit%=......li| 00000ec0 74 28 6d 65 6e 75 25 28 30 29 2c 31 2c b9 29 0d |t(menu%(0),1,.).| 00000ed0 00 8e 16 f2 6c 69 74 28 6d 65 6e 75 25 28 30 29 |....lit(menu%(0)| 00000ee0 2c 32 2c a3 29 0d 00 8f 16 f2 6c 69 74 28 6d 65 |,2,.).....lit(me| 00000ef0 6e 75 25 28 30 29 2c 33 2c a3 29 0d 00 90 16 f2 |nu%(0),3,.).....| 00000f00 6c 69 74 28 6d 65 6e 75 25 28 30 29 2c 34 2c a3 |lit(menu%(0),4,.| 00000f10 29 0d 00 91 31 f2 6c 69 74 28 6d 65 6e 75 25 28 |)...1.lit(menu%(| 00000f20 32 29 2c 31 2c a3 29 3a 70 74 72 25 3d 6d 65 6e |2),1,.):ptr%=men| 00000f30 75 25 28 32 29 2b 35 32 3a 70 74 72 25 21 34 3d |u%(2)+52:ptr%!4=| 00000f40 2d 31 0d 00 92 16 f2 6c 69 74 28 6d 65 6e 75 25 |-1.....lit(menu%| 00000f50 28 36 29 2c 36 2c a3 29 0d 00 93 16 f2 6c 69 74 |(6),6,.).....lit| 00000f60 28 6d 65 6e 75 25 28 36 29 2c 37 2c a3 29 0d 00 |(menu%(6),7,.)..| 00000f70 94 16 f2 6c 69 74 28 6d 65 6e 75 25 28 36 29 2c |...lit(menu%(6),| 00000f80 38 2c a3 29 0d 00 95 10 f2 73 65 74 5f 61 75 74 |8,.).....set_aut| 00000f90 6f 28 a3 29 0d 00 96 17 f2 73 65 74 5f 61 75 74 |o(.).....set_aut| 00000fa0 6f 62 61 6c 61 6e 63 65 28 a3 29 0d 00 97 17 f2 |obalance(.).....| 00000fb0 74 69 63 6b 28 6d 65 6e 75 25 28 32 29 2c 33 2c |tick(menu%(2),3,| 00000fc0 b9 29 0d 00 98 17 f2 74 69 63 6b 28 6d 65 6e 75 |.).....tick(menu| 00000fd0 25 28 32 29 2c 34 2c a3 29 0d 00 99 15 24 64 62 |%(2),4,.)....$db| 00000fe0 61 73 65 25 3d 22 4e 6f 20 64 61 74 61 22 0d 00 |ase%="No data"..| 00000ff0 9a 18 24 64 61 74 61 62 61 73 65 25 3d 22 4e 6f |..$database%="No| 00001000 20 64 61 74 61 22 0d 00 9b 1f f2 72 65 64 72 61 | data".....redra| 00001010 77 5f 69 63 6f 6e 28 2d 32 2c 70 62 61 73 65 69 |w_icon(-2,pbasei| 00001020 63 6f 6e 25 29 0d 00 9c 05 e1 0d 00 9d 05 3a 0d |con%).........:.| 00001030 00 9e 1c dd 20 f2 64 65 6c 65 74 65 5f 69 63 6f |.... .delete_ico| 00001040 6e 73 28 77 69 25 2c 69 63 25 29 0d 00 9f 1c 21 |ns(wi%,ic%)....!| 00001050 62 6c 6f 63 6b 25 3d 77 69 25 3a 62 6c 6f 63 6b |block%=wi%:block| 00001060 25 21 34 3d 69 63 25 0d 00 a0 05 f5 0d 00 a1 22 |%!4=ic%........"| 00001070 20 20 c8 99 20 22 57 69 6d 70 5f 44 65 6c 65 74 | .. "Wimp_Delet| 00001080 65 49 63 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 00 |eIcon",,block%..| 00001090 a2 19 20 20 69 63 25 2b 3d 31 3a 62 6c 6f 63 6b |.. ic%+=1:block| 000010a0 25 21 34 3d 69 63 25 0d 00 a3 24 20 20 c8 99 20 |%!4=ic%...$ .. | 000010b0 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 |"Wimp_GetIconSta| 000010c0 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 00 a4 1f fd |te",,block%.....| 000010d0 20 28 28 62 6c 6f 63 6b 25 21 32 34 29 20 80 20 | ((block%!24) . | 000010e0 28 31 3c 3c 32 33 29 29 3e 30 0d 00 a5 05 e1 0d |(1<<23))>0......| 000010f0 00 a6 05 3a 0d 00 a7 12 dd 20 f2 63 6c 6f 73 65 |...:..... .close| 00001100 5f 66 69 6c 65 73 0d 00 a8 0a ea 20 6b 65 79 25 |_files..... key%| 00001110 0d 00 a9 14 e3 20 6b 65 79 25 3d 30 20 b8 20 4b |..... key%=0 . K| 00001120 65 79 73 25 0d 00 aa 11 20 20 f2 64 61 74 65 28 |eys%.... .date(| 00001130 6b 65 79 25 29 0d 00 ab 0a ed 20 6b 65 79 25 0d |key%)..... key%.| 00001140 00 ac 1e f2 63 6c 6f 73 65 5f 66 69 6c 65 28 6c |....close_file(l| 00001150 6b 29 3a 6c 69 6e 6b 24 28 29 3d 22 22 0d 00 ad |k):link$()=""...| 00001160 1e f2 63 6c 6f 73 65 5f 66 69 6c 65 28 63 6c 29 |..close_file(cl)| 00001170 3a 63 61 6c 63 24 28 29 3d 22 22 0d 00 ae 1d f2 |:calc$()="".....| 00001180 63 6c 6f 73 65 5f 66 69 6c 65 28 64 62 61 73 65 |close_file(dbase| 00001190 68 61 6e 64 6c 65 25 29 0d 00 af 1b f2 63 6c 6f |handle%).....clo| 000011a0 73 65 5f 66 69 6c 65 28 63 73 76 68 61 6e 64 6c |se_file(csvhandl| 000011b0 65 25 29 0d 00 b0 1c f2 63 6c 6f 73 65 5f 66 69 |e%).....close_fi| 000011c0 6c 65 28 74 65 78 74 68 61 6e 64 6c 65 25 29 0d |le(texthandle%).| 000011d0 00 b1 16 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 74 |....close_file(t| 000011e0 65 78 74 25 29 0d 00 b2 1e f2 63 6c 6f 73 65 5f |ext%).....close_| 000011f0 66 69 6c 65 28 74 6f 6f 62 69 67 68 61 6e 64 6c |file(toobighandl| 00001200 65 25 29 0d 00 b3 12 f2 63 6c 6f 73 65 5f 66 69 |e%).....close_fi| 00001210 6c 65 28 46 29 0d 00 b4 14 f2 63 6c 6f 73 65 5f |le(F).....close_| 00001220 66 69 6c 65 28 46 48 25 29 0d 00 b5 12 f2 63 6c |file(FH%).....cl| 00001230 6f 73 65 5f 66 69 6c 65 28 56 29 0d 00 b6 05 e1 |ose_file(V).....| 00001240 0d 00 b7 05 3a 0d 00 b8 20 dd 20 f2 63 6c 6f 73 |....:... . .clos| 00001250 65 5f 66 69 6c 65 28 f8 20 66 69 6c 65 68 61 6e |e_file(. filehan| 00001260 64 6c 65 25 29 0d 00 b9 15 e7 20 66 69 6c 65 68 |dle%)..... fileh| 00001270 61 6e 64 6c 65 25 3e 30 20 8c 0d 00 ba 13 20 20 |andle%>0 ..... | 00001280 d9 23 66 69 6c 65 68 61 6e 64 6c 65 25 0d 00 bb |.#filehandle%...| 00001290 13 20 20 66 69 6c 65 68 61 6e 64 6c 65 25 3d 30 |. filehandle%=0| 000012a0 0d 00 bc 05 cd 0d 00 bd 05 e1 0d 00 be 05 3a 0d |..............:.| 000012b0 00 bf 15 dd 20 f2 72 65 63 6f 76 65 72 5f 6d 65 |.... .recover_me| 000012c0 6d 6f 72 79 0d 00 c0 08 ea 20 49 25 0d 00 c1 25 |mory..... I%...%| 000012d0 f2 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 |.scrap_sliding_b| 000012e0 6c 6f 63 6b 28 68 65 61 64 61 6e 63 68 6f 72 25 |lock(headanchor%| 000012f0 29 0d 00 c2 25 f2 73 63 72 61 70 5f 73 6c 69 64 |)...%.scrap_slid| 00001300 69 6e 67 5f 62 6c 6f 63 6b 28 75 6e 64 6f 61 6e |ing_block(undoan| 00001310 63 68 6f 72 25 29 0d 00 c3 25 f2 73 63 72 61 70 |chor%)...%.scrap| 00001320 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 6c |_sliding_block(l| 00001330 69 6e 65 61 6e 63 68 6f 72 25 29 0d 00 c4 25 f2 |ineanchor%)...%.| 00001340 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c |scrap_sliding_bl| 00001350 6f 63 6b 28 74 65 78 74 61 6e 63 68 6f 72 25 29 |ock(textanchor%)| 00001360 0d 00 c5 25 f2 73 63 72 61 70 5f 73 6c 69 64 69 |...%.scrap_slidi| 00001370 6e 67 5f 62 6c 6f 63 6b 28 66 6f 72 6d 61 6e 63 |ng_block(formanc| 00001380 68 6f 72 25 29 0d 00 c6 24 f2 73 63 72 61 70 5f |hor%)...$.scrap_| 00001390 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 73 65 |sliding_block(se| 000013a0 6c 61 6e 63 68 6f 72 25 29 0d 00 c7 25 f2 73 63 |lanchor%)...%.sc| 000013b0 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |rap_sliding_bloc| 000013c0 6b 28 74 65 6d 70 61 6e 63 68 6f 72 25 29 0d 00 |k(tempanchor%)..| 000013d0 c8 24 f2 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 |.$.scrap_sliding| 000013e0 5f 62 6c 6f 63 6b 28 62 61 6c 61 6e 63 68 6f 72 |_block(balanchor| 000013f0 25 29 0d 00 c9 25 f2 73 63 72 61 70 5f 73 6c 69 |%)...%.scrap_sli| 00001400 64 69 6e 67 5f 62 6c 6f 63 6b 28 66 6c 61 67 61 |ding_block(flaga| 00001410 6e 63 68 6f 72 25 29 0d 00 ca 26 f2 73 63 72 61 |nchor%)...&.scra| 00001420 70 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 |p_sliding_block(| 00001430 74 72 61 6e 73 61 6e 63 68 6f 72 25 29 0d 00 cb |transanchor%)...| 00001440 25 f2 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f |%.scrap_sliding_| 00001450 62 6c 6f 63 6b 28 73 70 72 73 61 6e 63 68 6f 72 |block(sprsanchor| 00001460 25 29 0d 00 cc 24 f2 73 63 72 61 70 5f 73 6c 69 |%)...$.scrap_sli| 00001470 64 69 6e 67 5f 62 6c 6f 63 6b 28 72 65 63 61 6e |ding_block(recan| 00001480 63 68 6f 72 25 29 0d 00 cd 25 f2 73 63 72 61 70 |chor%)...%.scrap| 00001490 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 73 |_sliding_block(s| 000014a0 61 76 65 61 6e 63 68 6f 72 25 29 0d 00 ce 25 f2 |aveanchor%)...%.| 000014b0 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c |scrap_sliding_bl| 000014c0 6f 63 6b 28 6c 6f 67 6f 61 6e 63 68 6f 72 25 29 |ock(logoanchor%)| 000014d0 0d 00 cf 15 e3 20 49 25 3d 30 20 b8 20 4d 61 78 |..... I%=0 . Max| 000014e0 54 61 62 73 25 0d 00 d0 2a 20 20 f2 73 63 72 61 |Tabs%...* .scra| 000014f0 70 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 |p_sliding_block(| 00001500 74 61 62 61 6e 63 68 6f 72 25 28 49 25 29 29 0d |tabanchor%(I%)).| 00001510 00 d1 08 ed 20 49 25 0d 00 d2 17 e3 20 49 25 3d |.... I%..... I%=| 00001520 30 20 b8 20 4d 61 78 4b 65 79 73 25 2b 31 0d 00 |0 . MaxKeys%+1..| 00001530 d3 2a 20 20 f2 73 63 72 61 70 5f 73 6c 69 64 69 |.* .scrap_slidi| 00001540 6e 67 5f 62 6c 6f 63 6b 28 6b 65 79 61 6e 63 68 |ng_block(keyanch| 00001550 6f 72 25 28 49 25 29 29 0d 00 d4 08 ed 20 49 25 |or%(I%))..... I%| 00001560 0d 00 d5 14 e3 20 49 25 3d 31 20 b8 20 66 69 65 |..... I%=1 . fie| 00001570 6c 64 73 25 0d 00 d6 38 20 20 e7 20 63 68 61 72 |lds%...8 . char| 00001580 74 79 70 65 25 28 49 25 29 3d 34 30 20 8c 20 f2 |type%(I%)=40 . .| 00001590 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c |scrap_sliding_bl| 000015a0 6f 63 6b 28 52 66 25 28 49 25 29 29 0d 00 d7 08 |ock(Rf%(I%))....| 000015b0 ed 20 49 25 0d 00 d8 05 e1 0d 00 d9 05 3a 0d 00 |. I%.........:..| 000015c0 da 4b f4 20 45 72 72 6f 72 20 68 61 6e 64 6c 69 |.K. Error handli| 000015d0 6e 67 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |ng -------------| 000015e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001600 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 00 db 05 3a 0d 00 |---------....:..| 00001610 dc 29 dd 20 f2 77 69 6d 70 5f 65 72 72 6f 72 28 |.). .wimp_error(| 00001620 72 65 74 75 72 6e 25 2c 65 72 72 25 2c 65 72 6c |return%,err%,erl| 00001630 25 2c 65 72 72 24 29 0d 00 dd 13 ea 20 74 79 70 |%,err$)..... typ| 00001640 65 25 2c 72 65 73 75 6c 74 25 0d 00 de 07 ea 20 |e%,result%..... | 00001650 85 0d 00 df 55 ee 20 85 20 ea 20 ee 20 85 20 87 |....U. . . . . .| 00001660 3a f2 63 6c 6f 73 65 5f 64 6f 77 6e 3a 85 20 9f |:.close_down:. .| 00001670 2c 22 4c 30 20 65 72 72 6f 72 3a 20 22 2b f6 24 |,"L0 error: "+.$| 00001680 2b 22 20 64 75 72 69 6e 67 20 65 72 72 6f 72 20 |+" during error | 00001690 68 61 6e 64 6c 65 72 20 61 74 20 6c 69 6e 65 20 |handler at line | 000016a0 22 2b c3 28 9e 29 0d 00 e0 1e c8 99 20 22 57 69 |"+.(.)...... "Wi| 000016b0 6d 70 5f 43 6f 6d 6d 61 6e 64 57 69 6e 64 6f 77 |mp_CommandWindow| 000016c0 22 2c 2d 31 0d 00 e1 2a 62 6c 6f 63 6b 25 21 38 |",-1...*block%!8| 000016d0 3d 30 3a 62 6c 6f 63 6b 25 21 31 32 3d 77 69 25 |=0:block%!12=wi%| 000016e0 3a 62 6c 6f 63 6b 25 21 31 36 3d 69 63 25 0d 00 |:block%!16=ic%..| 000016f0 e2 25 c8 99 20 22 49 6e 74 65 72 66 61 63 65 5f |.%.. "Interface_| 00001700 53 6c 61 62 42 75 74 74 6f 6e 22 2c 2c 62 6c 6f |SlabButton",,blo| 00001710 63 6b 25 0d 00 e3 11 62 6c 6f 63 6b 25 21 30 3d |ck%....block%!0=| 00001720 65 72 72 25 0d 00 e4 22 e7 20 72 65 74 75 72 6e |err%...". return| 00001730 25 20 80 20 65 72 72 25 3c 3e 66 61 74 61 6c 5f |% . err%<>fatal_| 00001740 65 72 72 25 20 8c 0d 00 e5 19 20 20 20 e7 20 65 |err% ..... . e| 00001750 72 72 25 3d 6d 6f 61 6e 5f 65 72 72 25 20 8c 0d |rr%=moan_err% ..| 00001760 00 e6 3c 20 20 20 20 20 20 74 79 70 65 25 3d 26 |..< type%=&| 00001770 31 31 3a f4 20 4f 4b 20 62 75 74 74 6f 6e 20 61 |11:. OK button a| 00001780 6e 64 20 6e 6f 20 22 45 72 72 6f 72 20 66 72 6f |nd no "Error fro| 00001790 6d 22 20 69 6e 20 74 69 74 6c 65 0d 00 e7 08 20 |m" in title.... | 000017a0 20 20 cc 0d 00 e8 29 20 20 20 20 20 20 74 79 70 | ....) typ| 000017b0 65 25 3d 33 3a f4 20 4f 4b 20 61 6e 64 20 43 61 |e%=3:. OK and Ca| 000017c0 6e 63 65 6c 20 62 75 74 74 6f 6e 73 0d 00 e9 41 |ncel buttons...A| 000017d0 20 20 20 20 20 20 65 72 72 24 2b 3d 22 20 40 20 | err$+=" @ | 000017e0 22 2b c3 28 65 72 6c 25 29 2b 22 20 28 4f 4b 20 |"+.(erl%)+" (OK | 000017f0 74 6f 20 63 6f 6e 74 69 6e 75 65 2c 20 43 61 6e |to continue, Can| 00001800 63 65 6c 20 74 6f 20 71 75 69 74 29 22 0d 00 ea |cel to quit)"...| 00001810 08 20 20 20 cd 0d 00 eb 05 cc 0d 00 ec 1e 20 20 |. .......... | 00001820 20 74 79 70 65 25 3d 32 3a f4 20 43 61 6e 63 65 | type%=2:. Cance| 00001830 6c 20 62 75 74 74 6f 6d 0d 00 ed 3b 20 20 20 65 |l buttom...; e| 00001840 72 72 24 2b 3d 22 20 40 20 22 2b c3 28 65 72 6c |rr$+=" @ "+.(erl| 00001850 25 29 2b 22 20 28 50 6f 77 65 72 62 61 73 65 20 |%)+" (Powerbase | 00001860 6d 75 73 74 20 71 75 69 74 20 61 74 20 6f 6e 63 |must quit at onc| 00001870 65 29 22 0d 00 ee 05 cd 0d 00 ef 19 24 28 62 6c |e)".........$(bl| 00001880 6f 63 6b 25 2b 34 29 3d 65 72 72 24 2b bd 28 30 |ock%+4)=err$+.(0| 00001890 29 0d 00 f0 3d c8 99 20 22 57 69 6d 70 5f 52 65 |)...=.. "Wimp_Re| 000018a0 70 6f 72 74 45 72 72 6f 72 22 2c 62 6c 6f 63 6b |portError",block| 000018b0 25 2c 74 79 70 65 25 2c 22 50 6f 77 65 72 62 61 |%,type%,"Powerba| 000018c0 73 65 22 20 b8 20 2c 72 65 73 75 6c 74 25 0d 00 |se" . ,result%..| 000018d0 f1 39 f4 20 72 65 73 75 6c 74 3d 31 20 6d 65 61 |.9. result=1 mea| 000018e0 6e 73 20 4f 4b 20 73 65 6c 65 63 74 65 64 2c 20 |ns OK selected, | 000018f0 32 20 6d 65 61 6e 73 20 43 61 6e 63 65 6c 20 73 |2 means Cancel s| 00001900 65 6c 65 63 74 65 64 0d 00 f2 11 e7 20 72 65 73 |elected..... res| 00001910 75 6c 74 25 3d 32 20 8c 0d 00 f3 12 20 20 20 f2 |ult%=2 ..... .| 00001920 63 6c 6f 73 65 5f 64 6f 77 6e 0d 00 f4 08 20 20 |close_down.... | 00001930 20 e0 0d 00 f5 05 cd 0d 00 f6 07 f7 20 85 0d 00 | ........... ...| 00001940 f7 05 e1 0d 00 f8 05 3a 0d 00 f9 17 dd 20 f2 73 |.......:..... .s| 00001950 6f 66 74 65 72 72 6f 72 28 45 24 2c 45 25 29 0d |ofterror(E$,E%).| 00001960 00 fa 1b 24 28 62 6c 6f 63 6b 25 2b 34 29 3d a4 |...$(block%+4)=.| 00001970 6d 73 67 28 45 25 29 2b 45 24 0d 00 fb 0f 21 62 |msg(E%)+E$....!b| 00001980 6c 6f 63 6b 25 3d 32 35 35 0d 00 fc 3c c8 99 20 |lock%=255...<.. | 00001990 22 57 69 6d 70 5f 52 65 70 6f 72 74 45 72 72 6f |"Wimp_ReportErro| 000019a0 72 22 2c 62 6c 6f 63 6b 25 2c 26 31 31 2c 22 52 |r",block%,&11,"R| 000019b0 65 70 6f 72 74 20 66 72 6f 6d 20 50 6f 77 65 72 |eport from Power| 000019c0 62 61 73 65 22 0d 00 fd 05 e1 0d 00 fe 05 3a 0d |base".........:.| 000019d0 00 ff 0e dd 20 a4 6d 73 67 28 45 25 29 0d 01 00 |.... .msg(E%)...| 000019e0 19 65 72 72 6f 72 62 6c 6f 63 6b 25 3d 65 72 72 |.errorblock%=err| 000019f0 6f 72 6d 73 67 25 0d 01 01 0b c8 95 20 45 25 3e |ormsg%...... E%>| 00001a00 31 0d 01 02 24 20 20 65 72 72 6f 72 62 6c 6f 63 |1...$ errorbloc| 00001a10 6b 25 2b 3d a9 28 24 65 72 72 6f 72 62 6c 6f 63 |k%+=.($errorbloc| 00001a20 6b 25 29 2b 31 0d 01 03 0b 20 20 45 25 2d 3d 31 |k%)+1.... E%-=1| 00001a30 0d 01 04 05 ce 0d 01 05 15 3d c1 24 65 72 72 6f |.........=.$erro| 00001a40 72 62 6c 6f 63 6b 25 2c 34 29 0d 01 06 05 3a 0d |rblock%,4)....:.| 00001a50 01 07 4b f4 20 50 72 6f 67 72 61 6d 20 69 6e 69 |..K. Program ini| 00001a60 74 69 61 6c 69 73 61 74 69 6f 6e 20 2d 2d 2d 2d |tialisation ----| 00001a70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001a90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 01 08 05 3a 0d |----------....:.| 00001aa0 01 09 0c dd 20 f2 73 65 74 75 70 0d 01 0a 1a ea |.... .setup.....| 00001ab0 20 46 2c 41 25 2c 49 25 2c 4a 25 2c 56 25 2c 76 | F,A%,I%,J%,V%,v| 00001ac0 61 6c 69 64 24 0d 01 0b 27 46 3d 8e 28 22 3c 50 |alid$...'F=.("<P| 00001ad0 62 61 73 65 24 44 69 72 3e 2e 52 65 73 6f 75 72 |base$Dir>.Resour| 00001ae0 63 65 73 2e 43 6f 6e 66 69 67 22 29 0d 01 0c 15 |ces.Config")....| 00001af0 4d 61 78 46 69 65 6c 64 73 25 3d bb 28 be 23 46 |MaxFields%=.(.#F| 00001b00 29 0d 01 0d 2c e7 20 4d 61 78 46 69 65 6c 64 73 |)...,. MaxFields| 00001b10 25 3e 31 32 37 20 8c 20 85 20 66 61 74 61 6c 5f |%>127 . . fatal_| 00001b20 65 72 72 25 2c a4 6d 73 67 28 36 31 29 0d 01 0e |err%,.msg(61)...| 00001b30 13 4d 61 78 4b 65 79 73 25 3d bb 28 be 23 46 29 |.MaxKeys%=.(.#F)| 00001b40 0d 01 0f 15 4d 61 78 54 61 62 73 25 3d bb 28 be |....MaxTabs%=.(.| 00001b50 23 46 29 2d 31 0d 01 10 14 64 61 74 65 73 65 70 |#F)-1....datesep| 00001b60 24 3d c0 be 23 46 2c 31 29 0d 01 11 14 74 69 6d |$=..#F,1)....tim| 00001b70 65 73 65 70 24 3d c0 be 23 46 2c 31 29 0d 01 12 |esep$=..#F,1)...| 00001b80 30 53 24 3d be 23 46 3a 50 25 3d a7 53 24 2c 22 |0S$=.#F:P%=.S$,"| 00001b90 20 22 29 3a 6b 69 6c 6c 25 3d ac 20 28 c0 53 24 | "):kill%=. (.S$| 00001ba0 2c 50 25 2d 31 29 3d 22 59 45 53 22 29 0d 01 13 |,P%-1)="YES")...| 00001bb0 34 53 24 3d be 23 46 3a 50 25 3d a7 53 24 2c 22 |4S$=.#F:P%=.S$,"| 00001bc0 20 22 29 3a 63 6f 6d 6d 6f 6e 63 61 73 65 25 3d | "):commoncase%=| 00001bd0 28 c0 53 24 2c 50 25 2d 31 29 3d 22 59 45 53 22 |(.S$,P%-1)="YES"| 00001be0 29 0d 01 14 30 53 24 3d be 23 46 3a 50 25 3d a7 |)...0S$=.#F:P%=.| 00001bf0 53 24 2c 22 20 22 29 3a 63 6f 6d 6d 6f 6e 25 3d |S$," "):common%=| 00001c00 28 c0 53 24 2c 50 25 2d 31 29 3d 22 59 45 53 22 |(.S$,P%-1)="YES"| 00001c10 29 0d 01 15 32 53 24 3d be 23 46 3a 50 25 3d a7 |)...2S$=.#F:P%=.| 00001c20 53 24 2c 22 20 22 29 3a 6c 65 66 74 6d 65 6e 75 |S$," "):leftmenu| 00001c30 25 3d 28 c0 53 24 2c 50 25 2d 31 29 3d 22 59 45 |%=(.S$,P%-1)="YE| 00001c40 53 22 29 0d 01 16 3f 53 24 3d be 23 46 3a 50 25 |S")...?S$=.#F:P%| 00001c50 3d a7 53 24 2c 22 20 22 29 3a e7 20 c0 53 24 2c |=.S$," "):. .S$,| 00001c60 50 25 2d 31 29 3d 22 59 45 53 22 20 8c 20 63 61 |P%-1)="YES" . ca| 00001c70 70 73 25 3d 31 32 38 20 8b 20 63 61 70 73 25 3d |ps%=128 . caps%=| 00001c80 31 36 0d 01 17 13 77 69 6e 62 61 63 6b 25 3d bb |16....winback%=.| 00001c90 28 be 23 46 29 0d 01 18 12 f2 63 6c 6f 73 65 5f |(.#F).....close_| 00001ca0 66 69 6c 65 28 46 29 0d 01 19 2d f2 64 69 6d 5f |file(F)...-.dim_| 00001cb0 61 72 72 61 79 73 28 4d 61 78 46 69 65 6c 64 73 |arrays(MaxFields| 00001cc0 25 2c 4d 61 78 4b 65 79 73 25 2c 4d 61 78 54 61 |%,MaxKeys%,MaxTa| 00001cd0 62 73 25 29 0d 01 1a 0e f2 69 6e 69 74 5f 76 61 |bs%).....init_va| 00001ce0 72 73 0d 01 1b 45 f4 20 2d 2d 2d 2d 2d 2d 2d 2d |rs...E. --------| 00001cf0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 49 6e 69 74 69 |---------- Initi| 00001d00 61 6c 69 73 65 20 57 69 6d 70 20 2d 2d 2d 2d 2d |alise Wimp -----| 00001d10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00001d20 2d 2d 2d 2d 2d 2d 2d 0d 01 1c 12 24 62 6c 6f 63 |-------....$bloc| 00001d30 6b 25 3d 22 54 41 53 4b 22 0d 01 1d 11 6d 61 73 |k%="TASK"....mas| 00001d40 6b 25 3d 28 31 3c 3c 31 31 29 0d 01 1e 43 c8 99 |k%=(1<<11)...C..| 00001d50 20 22 57 69 6d 70 5f 49 6e 69 74 69 61 6c 69 73 | "Wimp_Initialis| 00001d60 65 22 2c 32 30 30 2c 21 62 6c 6f 63 6b 25 2c 22 |e",200,!block%,"| 00001d70 50 6f 77 65 72 62 61 73 65 22 20 b8 20 76 65 72 |Powerbase" . ver| 00001d80 73 69 6f 6e 25 2c 6d 79 74 61 73 6b 25 0d 01 1f |sion%,mytask%...| 00001d90 2b e7 20 76 65 72 73 69 6f 6e 25 3e 3d 33 31 36 |+. version%>=316| 00001da0 20 8c 20 52 49 53 43 4f 53 33 3d b9 20 8b 20 52 | . RISCOS3=. . R| 00001db0 49 53 43 4f 53 33 3d a3 0d 01 20 36 c8 99 20 22 |ISCOS3=... 6.. "| 00001dc0 49 6d 70 75 6c 73 65 5f 49 6e 69 74 69 61 6c 69 |Impulse_Initiali| 00001dd0 73 65 22 2c 30 30 33 2c 6d 79 74 61 73 6b 25 2c |se",003,mytask%,| 00001de0 22 50 6f 77 65 72 62 61 73 65 22 2c 2d 31 0d 01 |"Powerbase",-1..| 00001df0 21 25 c8 99 20 22 49 6e 74 65 72 66 61 63 65 5f |!%.. "Interface_| 00001e00 49 6e 69 74 69 61 6c 69 73 65 22 2c 6d 79 74 61 |Initialise",myta| 00001e10 73 6b 25 0d 01 22 4d 70 62 61 73 65 69 63 6f 6e |sk%.."Mpbaseicon| 00001e20 25 3d a4 63 72 65 61 74 65 5f 69 63 6f 6e 28 2d |%=.create_icon(-| 00001e30 31 2c 30 2c 2d 31 36 2c 31 34 34 2c 31 31 30 2c |1,0,-16,144,110,| 00001e40 26 31 37 30 30 33 31 32 42 2c 22 22 2c 64 62 61 |&1700312B,"",dba| 00001e50 73 65 25 2c 70 73 70 72 69 74 65 25 2c 31 30 29 |se%,psprite%,10)| 00001e60 0d 01 23 44 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 |..#D. --------- | 00001e70 53 65 74 20 75 70 20 48 65 61 70 20 4d 61 6e 61 |Set up Heap Mana| 00001e80 67 65 72 2e 20 4c 6f 61 64 20 65 72 72 6f 72 20 |ger. Load error | 00001e90 6d 65 73 73 61 67 65 73 20 2d 2d 2d 2d 2d 2d 2d |messages -------| 00001ea0 2d 2d 2d 2d 0d 01 24 17 f2 69 6e 69 74 68 65 61 |----..$..inithea| 00001eb0 70 73 28 31 32 38 2c 31 32 38 29 0d 01 25 3e c8 |ps(128,128)..%>.| 00001ec0 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c 22 3c |. "OS_File",5,"<| 00001ed0 50 42 61 73 65 24 44 69 72 3e 2e 52 65 73 6f 75 |PBase$Dir>.Resou| 00001ee0 72 63 65 73 2e 4d 65 73 73 61 67 65 73 22 20 b8 |rces.Messages" .| 00001ef0 20 2c 2c 2c 2c 6c 65 6e 25 0d 01 26 27 65 72 72 | ,,,,len%..&'err| 00001f00 6f 72 6d 73 67 25 3d a4 63 72 65 61 74 65 5f 66 |ormsg%=.create_f| 00001f10 69 78 65 64 5f 62 6c 6f 63 6b 28 6c 65 6e 25 29 |ixed_block(len%)| 00001f20 0d 01 27 3f c8 99 20 22 4f 53 5f 46 69 6c 65 22 |..'?.. "OS_File"| 00001f30 2c 32 35 35 2c 22 3c 50 42 61 73 65 24 44 69 72 |,255,"<PBase$Dir| 00001f40 3e 2e 52 65 73 6f 75 72 63 65 73 2e 4d 65 73 73 |>.Resources.Mess| 00001f50 61 67 65 73 22 2c 65 72 72 6f 72 6d 73 67 25 0d |ages",errormsg%.| 00001f60 01 28 11 e3 20 49 25 3d 30 20 b8 20 6c 65 6e 25 |.(.. I%=0 . len%| 00001f70 0d 01 29 29 20 20 e7 20 65 72 72 6f 72 6d 73 67 |..)) . errormsg| 00001f80 25 3f 49 25 3d 31 30 20 8c 20 65 72 72 6f 72 6d |%?I%=10 . errorm| 00001f90 73 67 25 3f 49 25 3d 31 33 0d 01 2a 08 ed 20 49 |sg%?I%=13..*.. I| 00001fa0 25 0d 01 2b 1d c8 99 20 22 4f 53 5f 42 79 74 65 |%..+... "OS_Byte| 00001fb0 22 2c 31 33 35 20 b8 2c 2c 6d 6f 64 65 25 0d 01 |",135 .,,mode%..| 00001fc0 2c 0e c8 8e 20 6d 6f 64 65 25 20 ca 0d 01 2d 26 |,... mode% ...-&| 00001fd0 20 20 c9 20 31 32 2c 31 35 2c 31 36 2c 31 37 2c | . 12,15,16,17,| 00001fe0 33 35 2c 33 36 3a 66 24 3d 22 53 70 72 69 74 65 |35,36:f$="Sprite| 00001ff0 73 22 0d 01 2e 16 20 20 7f 3a 66 24 3d 22 53 70 |s".... .:f$="Sp| 00002000 72 69 74 65 73 32 32 22 0d 01 2f 05 cb 0d 01 30 |rites22"../....0| 00002010 39 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c |9.. "OS_File",5,| 00002020 22 3c 50 42 61 73 65 24 44 69 72 3e 2e 52 65 73 |"<PBase$Dir>.Res| 00002030 6f 75 72 63 65 73 2e 22 2b 66 24 20 b8 20 2c 2c |ources."+f$ . ,,| 00002040 2c 2c 6c 65 6e 25 0d 01 31 28 73 70 72 69 74 65 |,,len%..1(sprite| 00002050 73 25 3d a4 63 72 65 61 74 65 5f 66 69 78 65 64 |s%=.create_fixed| 00002060 5f 62 6c 6f 63 6b 28 6c 65 6e 25 2b 34 29 0d 01 |_block(len%+4)..| 00002070 32 14 21 73 70 72 69 74 65 73 25 3d 6c 65 6e 25 |2.!sprites%=len%| 00002080 2b 34 0d 01 33 3b c8 99 20 22 4f 53 5f 46 69 6c |+4..3;.. "OS_Fil| 00002090 65 22 2c 32 35 35 2c 22 3c 50 42 61 73 65 24 44 |e",255,"<PBase$D| 000020a0 69 72 3e 2e 52 65 73 6f 75 72 63 65 73 2e 22 2b |ir>.Resources."+| 000020b0 66 24 2c 73 70 72 69 74 65 73 25 2b 34 0d 01 34 |f$,sprites%+4..4| 000020c0 26 75 6e 64 6f 61 6e 63 68 6f 72 25 3d a4 63 72 |&undoanchor%=.cr| 000020d0 65 61 74 65 5f 61 6e 63 68 6f 72 28 22 55 6e 64 |eate_anchor("Und| 000020e0 6f 22 29 0d 01 35 29 68 65 61 64 61 6e 63 68 6f |o")..5)headancho| 000020f0 72 25 3d a4 63 72 65 61 74 65 5f 61 6e 63 68 6f |r%=.create_ancho| 00002100 72 28 22 48 65 61 64 69 6e 67 22 29 0d 01 36 2a |r("Heading")..6*| 00002110 6c 69 6e 65 61 6e 63 68 6f 72 25 3d a4 63 72 65 |lineanchor%=.cre| 00002120 61 74 65 5f 61 6e 63 68 6f 72 28 22 54 65 78 74 |ate_anchor("Text| 00002130 4c 69 6e 65 22 29 0d 01 37 26 74 65 78 74 61 6e |Line")..7&textan| 00002140 63 68 6f 72 25 3d a4 63 72 65 61 74 65 5f 61 6e |chor%=.create_an| 00002150 63 68 6f 72 28 22 54 65 78 74 22 29 0d 01 38 26 |chor("Text")..8&| 00002160 66 6f 72 6d 61 6e 63 68 6f 72 25 3d a4 63 72 65 |formanchor%=.cre| 00002170 61 74 65 5f 61 6e 63 68 6f 72 28 22 46 6f 72 6d |ate_anchor("Form| 00002180 22 29 0d 01 39 2e 73 70 72 73 61 6e 63 68 6f 72 |")..9.sprsanchor| 00002190 25 3d a4 63 72 65 61 74 65 5f 61 6e 63 68 6f 72 |%=.create_anchor| 000021a0 28 22 44 62 61 73 65 53 70 72 69 74 65 73 22 29 |("DbaseSprites")| 000021b0 0d 01 3a 26 74 65 6d 70 61 6e 63 68 6f 72 25 3d |..:&tempanchor%=| 000021c0 a4 63 72 65 61 74 65 5f 61 6e 63 68 6f 72 28 22 |.create_anchor("| 000021d0 54 65 6d 70 22 29 0d 01 3b 28 62 61 6c 61 6e 63 |Temp")..;(balanc| 000021e0 68 6f 72 25 3d a4 63 72 65 61 74 65 5f 61 6e 63 |hor%=.create_anc| 000021f0 68 6f 72 28 22 42 61 6c 61 6e 63 65 22 29 0d 01 |hor("Balance")..| 00002200 3c 27 66 6c 61 67 61 6e 63 68 6f 72 25 3d a4 63 |<'flaganchor%=.c| 00002210 72 65 61 74 65 5f 61 6e 63 68 6f 72 28 22 46 6c |reate_anchor("Fl| 00002220 61 67 73 22 29 0d 01 3d 2f 74 72 61 6e 73 61 6e |ags")..=/transan| 00002230 63 68 6f 72 25 3d a4 63 72 65 61 74 65 5f 61 6e |chor%=.create_an| 00002240 63 68 6f 72 28 22 44 61 74 61 54 72 61 6e 73 66 |chor("DataTransf| 00002250 65 72 22 29 0d 01 3e 29 73 65 6c 61 6e 63 68 6f |er")..>)selancho| 00002260 72 25 3d a4 63 72 65 61 74 65 5f 61 6e 63 68 6f |r%=.create_ancho| 00002270 72 28 22 50 72 69 6e 74 53 65 6c 22 29 0d 01 3f |r("PrintSel")..?| 00002280 2a 72 65 63 61 6e 63 68 6f 72 25 3d a4 63 72 65 |*recanchor%=.cre| 00002290 61 74 65 5f 61 6e 63 68 6f 72 28 22 52 65 63 6f |ate_anchor("Reco| 000022a0 72 64 4e 75 6d 22 29 0d 01 40 2c 73 61 76 65 61 |rdNum")..@,savea| 000022b0 6e 63 68 6f 72 25 3d a4 63 72 65 61 74 65 5f 61 |nchor%=.create_a| 000022c0 6e 63 68 6f 72 28 22 53 61 76 65 42 75 66 66 65 |nchor("SaveBuffe| 000022d0 72 22 29 0d 01 41 26 6c 6f 67 6f 61 6e 63 68 6f |r")..A&logoancho| 000022e0 72 25 3d a4 63 72 65 61 74 65 5f 61 6e 63 68 6f |r%=.create_ancho| 000022f0 72 28 22 4c 6f 67 6f 22 29 0d 01 42 17 e3 20 49 |r("Logo")..B.. I| 00002300 25 3d 30 20 b8 20 4d 61 78 4b 65 79 73 25 2b 31 |%=0 . MaxKeys%+1| 00002310 0d 01 43 33 20 20 20 6b 65 79 61 6e 63 68 6f 72 |..C3 keyanchor| 00002320 25 28 49 25 29 3d a4 63 72 65 61 74 65 5f 61 6e |%(I%)=.create_an| 00002330 63 68 6f 72 28 22 4b 65 79 20 23 22 2b c3 28 49 |chor("Key #"+.(I| 00002340 25 29 29 0d 01 44 08 ed 20 49 25 0d 01 45 15 e3 |%))..D.. I%..E..| 00002350 20 49 25 3d 30 20 b8 20 4d 61 78 54 61 62 73 25 | I%=0 . MaxTabs%| 00002360 0d 01 46 36 20 20 20 74 61 62 61 6e 63 68 6f 72 |..F6 tabanchor| 00002370 25 28 49 25 29 3d a4 63 72 65 61 74 65 5f 61 6e |%(I%)=.create_an| 00002380 63 68 6f 72 28 22 56 54 61 62 6c 65 20 23 22 2b |chor("VTable #"+| 00002390 c3 28 49 25 29 29 0d 01 47 08 ed 20 49 25 0d 01 |.(I%))..G.. I%..| 000023a0 48 49 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |HI. ------------| 000023b0 2d 2d 2d 20 52 65 61 64 20 76 61 6c 69 64 61 74 |--- Read validat| 000023c0 69 6f 6e 20 73 74 72 69 6e 67 73 20 65 74 63 20 |ion strings etc | 000023d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000023e0 2d 2d 2d 2d 2d 2d 2d 0d 01 49 2b 56 3d 8e 28 22 |-------..I+V=.("| 000023f0 3c 50 62 61 73 65 24 44 69 72 3e 2e 52 65 73 6f |<Pbase$Dir>.Reso| 00002400 75 72 63 65 73 2e 56 61 6c 53 74 72 69 6e 67 73 |urces.ValStrings| 00002410 22 29 0d 01 4a 14 76 73 74 72 69 6e 67 73 25 3d |")..J.vstrings%=| 00002420 bb 28 be 23 56 29 0d 01 4b 4f de 20 76 6e 61 6d |.(.#V)..KO. vnam| 00002430 65 24 28 76 73 74 72 69 6e 67 73 25 29 2c 76 61 |e$(vstrings%),va| 00002440 6c 69 64 25 28 76 73 74 72 69 6e 67 73 25 29 2c |lid%(vstrings%),| 00002450 72 76 61 6c 69 64 25 28 76 73 74 72 69 6e 67 73 |rvalid%(vstrings| 00002460 25 29 2c 68 76 61 6c 69 64 25 28 76 73 74 72 69 |%),hvalid%(vstri| 00002470 6e 67 73 25 29 0d 01 4c 16 e3 20 49 25 3d 30 20 |ngs%)..L.. I%=0 | 00002480 b8 20 76 73 74 72 69 6e 67 73 25 0d 01 4d 18 20 |. vstrings%..M. | 00002490 20 76 6e 61 6d 65 24 28 49 25 29 3d c1 be 23 56 | vname$(I%)=..#V| 000024a0 2c 34 29 0d 01 4e 10 20 20 76 61 6c 69 64 24 3d |,4)..N. valid$=| 000024b0 be 23 56 0d 01 4f 2f 20 20 de 20 56 25 20 a9 28 |.#V..O/ . V% .(| 000024c0 76 61 6c 69 64 24 29 2b 31 3a 24 56 25 3d 76 61 |valid$)+1:$V%=va| 000024d0 6c 69 64 24 3a 76 61 6c 69 64 25 28 49 25 29 3d |lid$:valid%(I%)=| 000024e0 56 25 0d 01 50 30 20 20 de 20 56 25 20 a9 28 76 |V%..P0 . V% .(v| 000024f0 61 6c 69 64 24 29 2b 31 3a 24 56 25 3d 76 61 6c |alid$)+1:$V%=val| 00002500 69 64 24 3a 72 76 61 6c 69 64 25 28 49 25 29 3d |id$:rvalid%(I%)=| 00002510 56 25 0d 01 51 43 20 20 de 20 56 25 20 a9 28 76 |V%..QC . V% .(v| 00002520 61 6c 69 64 24 29 2b 31 36 3a 24 56 25 3d 76 61 |alid$)+16:$V%=va| 00002530 6c 69 64 24 2b 22 3b 50 70 74 72 5f 68 61 6e 64 |lid$+";Pptr_hand| 00002540 2c 31 32 2c 38 22 3a 68 76 61 6c 69 64 25 28 49 |,12,8":hvalid%(I| 00002550 25 29 3d 56 25 0d 01 52 08 ed 20 49 25 0d 01 53 |%)=V%..R.. I%..S| 00002560 12 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 56 29 0d |..close_file(V).| 00002570 01 54 45 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |.TE. -----------| 00002580 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000025b0 2d 2d 2d 2d 0d 01 55 16 f4 20 4d 65 74 68 6f 64 |----..U.. Method| 000025c0 20 73 74 72 75 63 74 75 72 65 0d 01 56 14 e3 20 | structure..V.. | 000025d0 50 41 53 53 3d 30 20 b8 20 32 20 88 20 32 0d 01 |PASS=0 . 2 . 2..| 000025e0 57 13 50 25 3d 6d 65 74 68 6f 64 74 61 62 6c 65 |W.P%=methodtable| 000025f0 25 0d 01 58 0f 20 20 5b 4f 50 54 20 50 41 53 53 |%..X. [OPT PASS| 00002600 0d 01 59 15 20 20 20 20 20 20 20 20 65 71 75 64 |..Y. equd| 00002610 20 20 20 20 30 0d 01 5a 29 20 20 20 20 20 20 20 | 0..Z) | 00002620 20 a4 6d 65 74 68 6f 64 28 30 2c 31 2c 22 47 65 | .method(0,1,"Ge| 00002630 74 50 61 74 68 6e 61 6d 65 22 2c 22 22 29 0d 01 |tPathname","")..| 00002640 5b 27 20 20 20 20 20 20 20 20 a4 6d 65 74 68 6f |[' .metho| 00002650 64 28 30 2c 32 2c 22 53 65 6c 65 63 74 69 6f 6e |d(0,2,"Selection| 00002660 22 2c 22 22 29 0d 01 5c 28 20 20 20 20 20 20 20 |","")..\( | 00002670 20 a4 6d 65 74 68 6f 64 28 30 2c 33 2c 22 50 61 | .method(0,3,"Pa| 00002680 72 73 65 51 75 65 72 79 22 2c 22 22 29 0d 01 5d |rseQuery","")..]| 00002690 27 20 20 20 20 20 20 20 20 a4 6d 65 74 68 6f 64 |' .method| 000026a0 28 30 2c 34 2c 22 47 65 74 52 65 63 6f 72 64 22 |(0,4,"GetRecord"| 000026b0 2c 22 22 29 0d 01 5e 27 20 20 20 20 20 20 20 20 |,"")..^' | 000026c0 a4 6d 65 74 68 6f 64 28 30 2c 35 2c 22 50 75 74 |.method(0,5,"Put| 000026d0 52 65 63 6f 72 64 22 2c 22 22 29 0d 01 5f 28 20 |Record","").._( | 000026e0 20 20 20 20 20 20 20 a4 6d 65 74 68 6f 64 28 30 | .method(0| 000026f0 2c 36 2c 22 45 78 70 61 6e 64 43 6f 64 65 22 2c |,6,"ExpandCode",| 00002700 22 22 29 0d 01 60 26 20 20 20 20 20 20 20 20 a4 |"")..`& .| 00002710 6d 65 74 68 6f 64 28 30 2c 37 2c 22 47 65 74 46 |method(0,7,"GetF| 00002720 69 65 6c 64 22 2c 22 22 29 0d 01 61 29 20 20 20 |ield","")..a) | 00002730 20 20 20 20 20 a4 6d 65 74 68 6f 64 28 30 2c 38 | .method(0,8| 00002740 2c 22 47 65 74 45 78 70 61 6e 64 65 64 22 2c 22 |,"GetExpanded","| 00002750 22 29 0d 01 62 20 20 20 20 20 20 20 20 20 a4 6d |")..b .m| 00002760 65 74 68 6f 64 28 2d 31 2c 2d 31 2c 22 22 2c 22 |ethod(-1,-1,"","| 00002770 22 29 0d 01 63 07 20 20 5d 0d 01 64 0a ed 20 50 |")..c. ]..d.. P| 00002780 41 53 53 0d 01 65 2e f2 67 65 74 73 63 72 65 65 |ASS..e..getscree| 00002790 6e 73 69 7a 65 28 53 63 72 65 65 6e 57 69 64 74 |nsize(ScreenWidt| 000027a0 68 25 2c 53 63 72 65 65 6e 48 65 69 67 68 74 25 |h%,ScreenHeight%| 000027b0 29 0d 01 66 13 f2 63 72 65 61 74 65 5f 77 69 6e |)..f..create_win| 000027c0 64 6f 77 73 0d 01 67 0f f2 6d 61 6b 65 5f 6d 65 |dows..g..make_me| 000027d0 6e 75 73 0d 01 68 10 f2 73 65 74 5f 61 75 74 6f |nus..h..set_auto| 000027e0 28 a3 29 0d 01 69 17 f2 73 65 74 5f 61 75 74 6f |(.)..i..set_auto| 000027f0 62 61 6c 61 6e 63 65 28 a3 29 0d 01 6a 31 f2 67 |balance(.)..j1.g| 00002800 65 74 5f 63 68 6f 69 63 65 73 28 22 3c 50 62 61 |et_choices("<Pba| 00002810 73 65 24 44 69 72 3e 2e 52 65 73 6f 75 72 63 65 |se$Dir>.Resource| 00002820 73 2e 43 68 6f 69 63 65 73 22 29 0d 01 6b 05 e1 |s.Choices")..k..| 00002830 0d 01 6c 05 3a 0d 01 6d 2a dd 20 a4 6d 65 74 68 |..l.:..m*. .meth| 00002840 6f 64 28 46 6c 61 67 73 2c 54 6f 6b 65 6e 2c 4d |od(Flags,Token,M| 00002850 65 74 68 6f 64 24 2c 53 79 6e 74 61 78 24 29 0d |ethod$,Syntax$).| 00002860 01 6e 0d 5b 4f 50 54 20 50 41 53 53 0d 01 6f 19 |.n.[OPT PASS..o.| 00002870 20 20 20 20 20 20 20 20 65 71 75 64 20 20 20 20 | equd | 00002880 46 6c 61 67 73 0d 01 70 19 20 20 20 20 20 20 20 |Flags..p. | 00002890 20 65 71 75 64 20 20 20 20 54 6f 6b 65 6e 0d 01 | equd Token..| 000028a0 71 20 20 20 20 20 20 20 20 20 65 71 75 73 20 20 |q equs | 000028b0 20 20 4d 65 74 68 6f 64 24 2b bd 28 30 29 0d 01 | Method$+.(0)..| 000028c0 72 20 20 20 20 20 20 20 20 20 65 71 75 73 20 20 |r equs | 000028d0 20 20 53 79 6e 74 61 78 24 2b bd 28 30 29 0d 01 | Syntax$+.(0)..| 000028e0 73 11 20 20 20 20 20 20 20 20 61 6c 69 67 6e 0d |s. align.| 000028f0 01 74 05 5d 0d 01 75 09 3d 50 41 53 53 0d 01 76 |.t.]..u.=PASS..v| 00002900 05 3a 0d 01 77 1b dd 20 f2 64 69 6d 5f 61 72 72 |.:..w.. .dim_arr| 00002910 61 79 73 28 46 25 2c 4b 25 2c 54 25 29 0d 01 78 |ays(F%,K%,T%)..x| 00002920 92 de 20 64 65 73 63 25 28 46 25 29 2c 54 61 67 |.. desc%(F%),Tag| 00002930 24 28 46 25 29 2c 66 69 65 6c 64 25 28 46 25 29 |$(F%),field%(F%)| 00002940 2c 46 24 28 46 25 29 2c 52 66 25 28 46 25 29 2c |,F$(F%),Rf%(F%),| 00002950 6c 65 6e 25 28 46 25 29 2c 6d 61 78 6c 65 6e 25 |len%(F%),maxlen%| 00002960 28 46 25 29 2c 63 68 61 72 74 79 70 65 25 28 46 |(F%),chartype%(F| 00002970 25 29 2c 66 69 78 25 28 46 25 29 2c 6c 69 6e 6b |%),fix%(F%),link| 00002980 24 28 46 25 29 2c 63 61 6c 63 24 28 46 25 29 2c |$(F%),calc$(F%),| 00002990 54 61 62 25 28 46 25 29 2c 66 69 65 6c 64 24 28 |Tab%(F%),field$(| 000029a0 46 25 29 2c 75 70 64 61 74 65 24 28 46 25 29 0d |F%),update$(F%).| 000029b0 01 79 64 de 20 44 61 74 65 25 28 35 29 2c 49 6e |.yd. Date%(5),In| 000029c0 64 65 78 24 28 4b 25 2b 31 29 2c 4b 4c 25 28 4b |dex$(K%+1),KL%(K| 000029d0 25 2b 31 29 2c 4b 46 25 28 4b 25 2b 31 2c 31 29 |%+1),KF%(K%+1,1)| 000029e0 2c 4b 57 25 28 4b 25 2b 31 2c 33 29 2c 6b 65 79 |,KW%(K%+1,3),key| 000029f0 24 28 4b 25 2b 31 29 2c 63 61 73 65 25 28 4b 25 |$(K%+1),case%(K%| 00002a00 2b 31 29 2c 57 44 25 28 33 29 2c 45 78 74 25 28 |+1),WD%(3),Ext%(| 00002a10 31 30 29 0d 01 7a 12 de 20 4c 61 62 65 6c 24 28 |10)..z.. Label$(| 00002a20 31 30 2c 32 29 0d 01 7b 0f de 20 53 75 6d 28 33 |10,2)..{.. Sum(3| 00002a30 30 2c 33 29 0d 01 7c 21 de 20 6b 65 79 20 32 35 |0,3)..|!. key 25| 00002a40 36 2c 64 61 74 65 25 20 36 2c 63 61 6c 63 72 6f |6,date% 6,calcro| 00002a50 77 25 20 46 25 0d 01 7d 1a de 20 6d 65 6e 75 25 |w% F%..}.. menu%| 00002a60 28 32 32 29 2c 63 68 6f 69 63 65 24 28 34 29 0d |(22),choice$(4).| 00002a70 01 7e 34 de 20 74 61 62 6c 65 24 28 54 25 2b 31 |.~4. table$(T%+1| 00002a80 29 2c 74 61 62 66 69 65 6c 64 6c 65 6e 25 28 39 |),tabfieldlen%(9| 00002a90 29 2c 66 63 6f 6c 25 28 36 29 2c 6e 63 6f 6c 25 |),fcol%(6),ncol%| 00002aa0 28 36 29 0d 01 7f 0d de 20 72 65 6c 25 28 36 29 |(6)..... rel%(6)| 00002ab0 0d 01 80 16 de 20 62 75 74 74 6f 6e 66 69 65 6c |..... buttonfiel| 00002ac0 64 25 28 32 32 29 0d 01 81 14 4d 43 25 3d 33 30 |d%(22)....MC%=30| 00002ad0 3a de 20 4c 25 28 4d 43 25 29 0d 01 82 4a f4 20 |:. L%(MC%)...J. | 00002ae0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00002af0 2d 2d 2d 2d 20 41 6c 6c 6f 63 61 74 65 20 62 75 |---- Allocate bu| 00002b00 66 66 65 72 73 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |ffers ----------| 00002b10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00002b20 2d 2d 2d 2d 0d 01 83 28 69 6e 64 69 72 65 63 74 |----...(indirect| 00002b30 69 6f 6e 6d 65 6d 25 3d 26 37 30 30 30 3a 6d 65 |ionmem%=&7000:me| 00002b40 6e 75 6d 65 6d 25 3d 26 31 34 30 30 0d 01 84 13 |numem%=&1400....| 00002b50 de 20 4d 69 25 20 32 30 2c 4d 6f 25 20 32 30 0d |. Mi% 20,Mo% 20.| 00002b60 01 85 2f de 20 62 6c 6f 63 6b 25 20 26 31 30 30 |../. block% &100| 00002b70 30 2c 73 61 76 65 62 75 66 66 25 20 26 31 30 30 |0,savebuff% &100| 00002b80 2c 63 68 6f 69 63 65 73 25 20 26 31 30 30 0d 01 |,choices% &100..| 00002b90 86 3a de 20 62 75 66 66 25 20 69 6e 64 69 72 65 |.:. buff% indire| 00002ba0 63 74 69 6f 6e 6d 65 6d 25 3a 65 6e 64 62 75 66 |ctionmem%:endbuf| 00002bb0 66 25 3d 62 75 66 66 25 2b 69 6e 64 69 72 65 63 |f%=buff%+indirec| 00002bc0 74 69 6f 6e 6d 65 6d 25 0d 01 87 42 de 20 6d 65 |tionmem%...B. me| 00002bd0 6e 62 6c 6b 25 20 6d 65 6e 75 6d 65 6d 25 3a 6d |nblk% menumem%:m| 00002be0 65 6e 5f 65 6e 64 25 3d 6d 65 6e 62 6c 6b 25 2b |en_end%=menblk%+| 00002bf0 6d 65 6e 75 6d 65 6d 25 3a 6d 65 6e 75 5f 70 74 |menumem%:menu_pt| 00002c00 72 25 3d 6d 65 6e 62 6c 6b 25 0d 01 88 15 de 20 |r%=menblk%..... | 00002c10 66 69 65 6c 64 6d 65 6e 75 25 20 33 32 30 30 0d |fieldmenu% 3200.| 00002c20 01 89 26 de 20 68 61 6e 64 25 20 31 36 3a 24 68 |..&. hand% 16:$h| 00002c30 61 6e 64 25 3d 22 50 70 74 72 5f 68 61 6e 64 2c |and%="Pptr_hand,| 00002c40 31 32 2c 38 22 0d 01 8a 21 de 20 70 61 69 6e 74 |12,8"...!. paint| 00002c50 25 20 38 3a 24 70 61 69 6e 74 25 3d 22 66 69 6c |% 8:$paint%="fil| 00002c60 65 5f 66 66 39 22 0d 01 8b 2a de 20 77 72 69 74 |e_ff9"...*. writ| 00002c70 65 70 25 20 31 36 3a 24 77 72 69 74 65 70 25 3d |ep% 16:$writep%=| 00002c80 22 50 70 74 72 5f 77 72 69 74 65 2c 34 2c 34 22 |"Pptr_write,4,4"| 00002c90 0d 01 8c 21 de 20 74 69 63 6b 25 20 31 32 3a 24 |...!. tick% 12:$| 00002ca0 74 69 63 6b 25 3d 22 53 6e 75 6c 6c 2c 79 65 73 |tick%="Snull,yes| 00002cb0 22 0d 01 8d 21 de 20 64 62 61 73 65 25 20 31 30 |"...!. dbase% 10| 00002cc0 3a 24 64 62 61 73 65 25 3d 22 4e 6f 20 64 61 74 |:$dbase%="No dat| 00002cd0 61 22 0d 01 8e 29 de 20 70 73 70 72 69 74 65 25 |a"...). psprite%| 00002ce0 20 31 35 3a 24 70 73 70 72 69 74 65 25 3d 22 53 | 15:$psprite%="S| 00002cf0 21 50 6f 77 65 72 62 61 73 65 22 0d 01 8f 3a de |!Powerbase"...:.| 00002d00 20 6d 65 6e 73 70 72 25 20 31 35 2c 6d 65 6e 74 | menspr% 15,ment| 00002d10 78 74 25 20 31 3a 24 6d 65 6e 73 70 72 25 3d 22 |xt% 1:$menspr%="| 00002d20 53 6d 65 6e 75 3b 5a 30 22 3a 24 6d 65 6e 74 78 |Smenu;Z0":$mentx| 00002d30 74 25 3d 22 22 0d 01 90 3c de 20 77 69 6e 73 70 |t%=""...<. winsp| 00002d40 72 25 20 31 35 2c 77 69 6e 74 78 74 25 20 31 3a |r% 15,wintxt% 1:| 00002d50 24 77 69 6e 73 70 72 25 3d 22 53 77 69 6e 64 6f |$winspr%="Swindo| 00002d60 77 3b 5a 30 22 3a 24 77 69 6e 74 78 74 25 3d 22 |w;Z0":$wintxt%="| 00002d70 22 0d 01 91 16 de 20 6d 65 74 68 6f 64 74 61 62 |"..... methodtab| 00002d80 6c 65 25 20 32 35 36 0d 01 92 4a f4 20 2d 2d 2d |le% 256...J. ---| 00002d90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 49 6e 64 69 72 |---------- Indir| 00002da0 65 63 74 69 6f 6e 20 61 64 64 72 65 73 73 65 73 |ection addresses| 00002db0 20 66 6f 72 20 48 65 61 70 20 4d 61 6e 61 67 65 | for Heap Manage| 00002dc0 72 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |r --------------| 00002dd0 2d 0d 01 93 16 de 20 6b 65 79 61 6e 63 68 6f 72 |-..... keyanchor| 00002de0 25 28 4b 25 2b 31 29 0d 01 94 14 de 20 74 61 62 |%(K%+1)..... tab| 00002df0 61 6e 63 68 6f 72 25 28 54 25 29 0d 01 95 13 de |anchor%(T%).....| 00002e00 20 70 72 69 6e 74 72 65 6c 24 28 54 25 29 0d 01 | printrel$(T%)..| 00002e10 96 2b de 20 62 6f 78 25 20 31 36 2c 62 6f 78 32 |.+. box% 16,box2| 00002e20 25 20 31 36 2c 6d 61 74 72 69 78 25 20 31 36 2c |% 16,matrix% 16,| 00002e30 6f 72 69 67 69 6e 25 20 38 0d 01 97 05 e1 0d 01 |origin% 8.......| 00002e40 98 05 3a 0d 01 99 10 dd 20 f2 69 6e 69 74 5f 76 |..:..... .init_v| 00002e50 61 72 73 0d 01 9a 24 67 65 74 72 65 63 25 3d 32 |ars...$getrec%=2| 00002e60 31 33 3a 43 6c 69 65 6e 74 53 65 61 72 63 68 24 |13:ClientSearch$| 00002e70 3d 22 54 52 55 45 22 0d 01 9b 4c 49 6d 70 5f 77 |="TRUE"...LImp_w| 00002e80 61 69 74 25 3d a3 3a 49 6d 70 72 65 66 25 3d 2d |ait%=.:Impref%=-| 00002e90 31 3a 6d 65 72 67 69 6e 67 25 3d a3 3a 6d 65 72 |1:merging%=.:mer| 00002ea0 67 65 6e 75 6d 25 3d 30 3a 6d 65 72 67 65 77 69 |genum%=0:mergewi| 00002eb0 74 68 24 3d 22 22 3a 64 6f 63 75 6d 65 6e 74 24 |th$="":document$| 00002ec0 3d 22 22 0d 01 9c 2d 6d 65 72 67 65 74 61 67 25 |=""...-mergetag%| 00002ed0 3d 32 31 34 3a 74 72 61 6e 73 74 61 67 25 3d 32 |=214:transtag%=2| 00002ee0 31 35 3a 70 72 69 6e 74 74 61 67 25 3d 32 31 36 |15:printtag%=216| 00002ef0 0d 01 9d 2c 66 6c 61 73 68 25 3d a3 3a 64 75 70 |...,flash%=.:dup| 00002f00 25 3d a3 3a 66 69 6c 74 65 72 25 3d a3 3a 6c 6f |%=.:filter%=.:lo| 00002f10 67 6f 73 6c 6f 61 64 65 64 25 3d a3 0d 01 9e 34 |gosloaded%=....4| 00002f20 61 63 63 65 73 73 62 75 74 74 6f 6e 25 3d 30 3a |accessbutton%=0:| 00002f30 73 74 6f 70 25 3d b9 3a 73 63 72 69 70 74 6f 6e |stop%=.:scripton| 00002f40 25 3d a3 3a 63 75 73 74 6f 6d 69 73 65 25 3d a3 |%=.:customise%=.| 00002f50 0d 01 9f 25 64 69 73 70 6c 61 79 65 64 25 3d a3 |...%displayed%=.| 00002f60 3a 73 63 72 61 74 63 68 70 61 64 24 3d 22 22 3a |:scratchpad$="":| 00002f70 6b 24 3d 22 22 0d 01 a0 3f 53 65 61 72 63 68 24 |k$=""...?Search$| 00002f80 3d 22 54 52 55 45 22 3a 46 69 6c 74 65 72 24 3d |="TRUE":Filter$=| 00002f90 22 54 52 55 45 22 3a 52 45 43 25 3d 2d 31 3a 75 |"TRUE":REC%=-1:u| 00002fa0 73 65 6b 65 79 25 3d 2d 31 3a 75 73 65 76 61 6c |sekey%=-1:useval| 00002fb0 24 3d 22 22 0d 01 a1 5f 72 65 61 6c 24 3d 22 22 |$=""..._real$=""| 00002fc0 3a 76 69 73 69 62 6c 65 24 3d 22 22 3a 72 65 66 |:visible$="":ref| 00002fd0 6f 72 6d 24 3d 22 22 3a 76 61 6c 24 3d 22 22 3a |orm$="":val$="":| 00002fe0 63 61 6c 63 66 69 65 6c 64 25 3d 30 3a 73 61 76 |calcfield%=0:sav| 00002ff0 65 66 75 6e 63 24 3d 22 22 3a 73 61 76 65 74 6f |efunc$="":saveto| 00003000 66 69 6c 65 25 3d a3 3a 73 74 61 72 74 6c 6f 67 |file%=.:startlog| 00003010 25 3d a3 0d 01 a2 2f 70 61 73 73 77 6f 72 64 24 |%=..../password$| 00003020 3d 22 22 3a 6d 79 72 65 66 25 3d 2d 31 3a 54 79 |="":myref%=-1:Ty| 00003030 70 65 25 3d 30 3a 66 69 65 6c 64 74 79 70 65 25 |pe%=0:fieldtype%| 00003040 3d 31 0d 01 a3 34 70 72 69 6e 74 69 6e 67 25 3d |=1...4printing%=| 00003050 a3 3a 69 6e 64 65 78 69 6e 67 25 3d a3 3a 76 61 |.:indexing%=.:va| 00003060 6c 69 64 61 74 65 25 3d b9 3a 72 65 6c 61 74 69 |lidate%=.:relati| 00003070 6f 6e 73 25 3d a3 0d 01 a4 3b 64 65 6c 77 61 72 |ons%=....;delwar| 00003080 6e 25 3d b9 3a 61 75 74 6f 73 61 76 65 25 3d a3 |n%=.:autosave%=.| 00003090 3a 65 78 70 6f 72 74 25 3d a3 3a 63 73 76 63 6f |:export%=.:csvco| 000030a0 6e 76 25 3d a3 3a 73 61 76 65 69 6e 74 25 3d 31 |nv%=.:saveint%=1| 000030b0 30 0d 01 a5 26 61 75 74 6f 62 61 6c 61 6e 63 65 |0...&autobalance| 000030c0 25 3d 30 3a 62 61 6c 69 6e 74 25 3d 32 35 3a 61 |%=0:balint%=25:a| 000030d0 64 64 65 64 25 3d 30 0d 01 a6 2e 70 72 65 73 65 |dded%=0....prese| 000030e0 6e 74 25 3d 30 3a 66 69 65 6c 64 73 25 3d 30 3a |nt%=0:fields%=0:| 000030f0 74 65 6d 70 6c 61 74 65 25 3d 30 3a 61 64 6a 75 |template%=0:adju| 00003100 73 74 25 3d a3 0d 01 a7 28 4c 69 73 74 65 64 25 |st%=....(Listed%| 00003110 3d a3 3a 77 72 69 74 69 6e 67 63 73 76 25 3d a3 |=.:writingcsv%=.| 00003120 3a 63 61 6c 63 65 72 72 6f 72 25 3d a3 0d 01 a8 |:calcerror%=....| 00003130 74 6c 6b 3d 30 3a 63 6c 3d 30 3a 56 3d 30 3a 46 |tlk=0:cl=0:V=0:F| 00003140 3d 30 3a 46 48 25 3d 30 3a 64 62 61 73 65 68 61 |=0:FH%=0:dbaseha| 00003150 6e 64 6c 65 25 3d 30 3a 63 73 76 68 61 6e 64 6c |ndle%=0:csvhandl| 00003160 65 25 3d 30 3a 74 65 78 74 68 61 6e 64 6c 65 25 |e%=0:texthandle%| 00003170 3d 30 3a 74 65 78 74 25 3d 30 3a 74 6f 6f 62 69 |=0:text%=0:toobi| 00003180 67 68 61 6e 64 6c 65 25 3d 30 3a 6c 6f 67 68 61 |ghandle%=0:logha| 00003190 6e 64 6c 65 25 3d 30 3a 68 61 6e 64 6c 65 25 3d |ndle%=0:handle%=| 000031a0 30 0d 01 a9 13 24 64 61 74 65 25 3d c4 36 2c bd |0....$date%=.6,.| 000031b0 28 30 29 29 0d 01 aa 22 6d 6f 76 65 74 79 70 65 |(0))..."movetype| 000031c0 25 3d 38 3a 6d 6f 76 65 74 79 70 65 24 3d 22 4d |%=8:movetype$="M| 000031d0 6f 76 65 20 89 22 0d 01 ab 68 71 75 69 74 25 3d |ove ."...hquit%=| 000031e0 a3 3a 65 78 69 74 25 3d a3 3a 6d 61 74 63 68 69 |.:exit%=.:matchi| 000031f0 6e 67 25 3d a3 3a 6e 65 77 72 65 63 25 3d a3 3a |ng%=.:newrec%=.:| 00003200 76 61 6c 25 3d a3 3a 72 61 6d 25 3d a3 3a 41 63 |val%=.:ram%=.:Ac| 00003210 63 65 73 73 25 3d a3 3a 4d 6f 64 69 66 79 25 3d |cess%=.:Modify%=| 00003220 a3 3a 77 61 72 6e 25 3d a3 3a 64 65 73 69 67 6e |.:warn%=.:design| 00003230 25 3d a3 3a 6e 65 77 74 72 65 65 25 3d a3 0d 01 |%=.:newtree%=...| 00003240 ac 2f 4c 65 6e 4c 69 6e 65 25 3d 30 3a 43 6f 75 |./LenLine%=0:Cou| 00003250 6e 74 25 3d 30 3a 53 74 61 72 74 25 3d 30 3a 45 |nt%=0:Start%=0:E| 00003260 6e 64 25 3d 30 3a 46 70 74 72 25 3d 30 0d 01 ad |nd%=0:Fptr%=0...| 00003270 34 46 69 65 6c 64 6e 75 6d 62 65 72 25 3d 30 3a |4Fieldnumber%=0:| 00003280 63 61 6c 63 6c 69 6e 6b 25 3d 30 3a 4b 65 79 66 |calclink%=0:Keyf| 00003290 6c 64 30 25 3d 30 3a 4b 65 79 66 6c 64 31 25 3d |ld0%=0:Keyfld1%=| 000032a0 30 0d 01 ae 42 4c 61 73 74 54 61 62 6c 65 25 3d |0...BLastTable%=| 000032b0 2d 31 3a 54 61 62 6c 65 6e 75 6d 62 65 72 25 3d |-1:Tablenumber%=| 000032c0 2d 31 3a 54 61 62 73 4c 6f 61 64 65 64 24 3d 22 |-1:TabsLoaded$="| 000032d0 54 61 62 6c 65 73 22 3a 74 61 62 6c 65 24 28 29 |Tables":table$()| 000032e0 3d 22 22 0d 01 af 35 52 6f 77 73 25 3d 30 3a 54 |=""...5Rows%=0:T| 000032f0 61 62 46 69 65 6c 64 73 25 3d 30 3a 52 65 63 25 |abFields%=0:Rec%| 00003300 3d 30 3a 4d 61 74 63 68 5f 74 61 67 25 3d 31 3a |=0:Match_tag%=1:| 00003310 66 61 73 74 25 3d 31 30 0d 01 b0 47 4b 65 79 73 |fast%=10...GKeys| 00003320 25 3d 30 3a 6b 65 79 6c 69 6d 69 74 25 3d 31 3a |%=0:keylimit%=1:| 00003330 6b 65 79 6c 65 6e 25 3d 31 3a 4c 48 25 3d 39 30 |keylen%=1:LH%=90| 00003340 3a 66 69 6c 65 25 3d 30 3a 6b 65 79 25 3d 30 3a |:file%=0:key%=0:| 00003350 74 6f 70 3d 38 2a 66 69 6c 65 25 2b 4c 48 25 0d |top=8*file%+LH%.| 00003360 01 b1 2b 6b 65 79 66 75 6e 63 24 3d 22 22 3a 66 |..+keyfunc$="":f| 00003370 69 65 6c 64 66 75 6e 63 24 3d 22 22 3a 4b 65 79 |ieldfunc$="":Key| 00003380 73 25 3d 30 3a 52 55 25 3d 30 0d 01 b2 31 70 72 |s%=0:RU%=0...1pr| 00003390 69 6e 74 6f 72 64 65 72 24 3d 22 22 3a 46 6f 72 |intorder$="":For| 000033a0 6d 24 3d 22 22 3a 49 6d 70 43 6f 6d 24 3d 22 22 |m$="":ImpCom$=""| 000033b0 3a 6d 61 72 67 69 6e 24 3d 22 22 0d 01 b3 1b 75 |:margin$=""....u| 000033c0 6f 6e 24 3d bd 28 32 37 29 2b bd 28 25 31 30 30 |on$=.(27)+.(%100| 000033d0 30 31 30 30 30 29 0d 01 b4 38 46 69 6c 65 6e 61 |01000)...8Filena| 000033e0 6d 65 24 3d 22 22 3a 65 78 74 72 61 6b 65 79 73 |me$="":extrakeys| 000033f0 24 3d 22 22 3a 65 78 74 72 61 74 61 62 73 24 3d |$="":extratabs$=| 00003400 22 22 3a 6c 6f 67 70 61 74 68 24 3d 22 22 0d 01 |"":logpath$=""..| 00003410 b5 32 6d 6f 6e 74 68 73 24 3d 22 4a 61 6e 46 65 |.2months$="JanFe| 00003420 62 4d 61 72 41 70 72 4d 61 79 4a 75 6e 4a 75 6c |bMarAprMayJunJul| 00003430 41 75 67 53 65 70 4f 63 74 4e 6f 76 44 65 63 22 |AugSepOctNovDec"| 00003440 0d 01 b6 17 70 69 74 63 68 24 3d bd 28 33 31 29 |....pitch$=.(31)| 00003450 2b 22 39 30 30 31 22 0d 01 b7 05 e1 0d 01 b8 05 |+"9001".........| 00003460 3a 0d 01 b9 4b f4 20 57 69 6e 64 6f 77 20 68 61 |:...K. Window ha| 00003470 6e 64 6c 69 6e 67 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |ndling ---------| 00003480 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000034a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 01 ba 05 |------------....| 000034b0 3a 0d 01 bb 15 dd 20 f2 63 72 65 61 74 65 5f 77 |:..... .create_w| 000034c0 69 6e 64 6f 77 73 0d 01 bc 3d c8 99 20 22 57 69 |indows...=.. "Wi| 000034d0 6d 70 5f 4f 70 65 6e 54 65 6d 70 6c 61 74 65 22 |mp_OpenTemplate"| 000034e0 2c 2c 22 3c 50 62 61 73 65 24 44 69 72 3e 2e 52 |,,"<Pbase$Dir>.R| 000034f0 65 73 6f 75 72 63 65 73 2e 54 65 6d 70 6c 61 74 |esources.Templat| 00003500 65 73 22 0d 01 bd 27 69 6e 66 6f 57 25 3d a4 6e |es"...'infoW%=.n| 00003510 65 77 5f 77 69 6e 64 6f 77 28 22 69 6e 66 6f 22 |ew_window("info"| 00003520 2c 73 70 72 69 74 65 73 25 29 0d 01 be 1d 24 a4 |,sprites%)....$.| 00003530 74 65 78 74 28 69 6e 66 6f 57 25 2c 37 29 3d 76 |text(infoW%,7)=v| 00003540 65 72 73 69 6f 6e 24 0d 01 bf 20 24 a4 74 65 78 |ersion$... $.tex| 00003550 74 28 69 6e 66 6f 57 25 2c 38 29 3d 69 6e 74 76 |t(infoW%,8)=intv| 00003560 65 72 73 69 6f 6e 24 0d 01 c0 3c 6b 65 79 70 61 |ersion$...<keypa| 00003570 64 57 25 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 28 |dW%=.new_window(| 00003580 22 6b 65 79 70 61 64 22 2c 73 70 72 69 74 65 73 |"keypad",sprites| 00003590 25 29 3a 54 69 74 6c 65 25 3d 62 6c 6f 63 6b 25 |%):Title%=block%| 000035a0 21 37 32 0d 01 c1 7a 73 61 76 65 73 75 62 57 25 |!72...zsavesubW%| 000035b0 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 73 61 |=.new_window("sa| 000035c0 76 65 73 75 62 22 2c 73 70 72 69 74 65 73 25 29 |vesub",sprites%)| 000035d0 3a 53 75 62 4e 61 6d 65 25 3d a4 74 65 78 74 28 |:SubName%=.text(| 000035e0 73 61 76 65 73 75 62 57 25 2c 33 29 3a 53 75 62 |savesubW%,3):Sub| 000035f0 53 70 72 69 74 65 25 3d a4 76 61 6c 28 73 61 76 |Sprite%=.val(sav| 00003600 65 73 75 62 57 25 2c 31 29 3a 53 75 62 54 69 74 |esubW%,1):SubTit| 00003610 6c 65 25 3d 62 6c 6f 63 6b 25 21 37 32 0d 01 c2 |le%=block%!72...| 00003620 55 73 61 76 65 57 25 3d a4 6e 65 77 5f 77 69 6e |UsaveW%=.new_win| 00003630 64 6f 77 28 22 73 61 76 65 22 2c 31 29 3a 53 61 |dow("save",1):Sa| 00003640 76 65 4e 61 6d 65 25 3d a4 74 65 78 74 28 73 61 |veName%=.text(sa| 00003650 76 65 57 25 2c 30 29 3a 53 61 76 65 53 70 72 69 |veW%,0):SaveSpri| 00003660 74 65 25 3d a4 76 61 6c 28 73 61 76 65 57 25 2c |te%=.val(saveW%,| 00003670 31 29 0d 01 c3 41 64 61 74 61 64 69 63 57 25 3d |1)...AdatadicW%=| 00003680 a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 64 61 74 |.new_window("dat| 00003690 61 64 69 63 22 2c 73 70 72 69 74 65 73 25 29 3a |adic",sprites%):| 000036a0 54 61 62 54 69 74 6c 65 25 3d 62 6c 6f 63 6b 25 |TabTitle%=block%| 000036b0 21 37 32 0d 01 c4 5e 61 63 63 65 73 73 57 25 3d |!72...^accessW%=| 000036c0 a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 61 63 63 |.new_window("acc| 000036d0 65 73 73 22 2c 73 70 72 69 74 65 73 25 29 3a 50 |ess",sprites%):P| 000036e0 61 73 73 77 6f 72 64 25 3d a4 74 65 78 74 28 61 |assword%=.text(a| 000036f0 63 63 65 73 73 57 25 2c 30 29 3a 41 63 63 65 73 |ccessW%,0):Acces| 00003700 73 54 69 74 6c 65 25 3d 62 6c 6f 63 6b 25 21 37 |sTitle%=block%!7| 00003710 32 0d 01 c5 71 70 61 73 73 57 25 3d a4 6e 65 77 |2...qpassW%=.new| 00003720 5f 77 69 6e 64 6f 77 28 22 70 61 73 73 77 6f 72 |_window("passwor| 00003730 64 22 2c 73 70 72 69 74 65 73 25 29 3a 52 65 61 |d",sprites%):Rea| 00003740 64 25 3d a4 74 65 78 74 28 70 61 73 73 57 25 2c |d%=.text(passW%,| 00003750 32 29 3a 57 72 69 74 65 25 3d a4 74 65 78 74 28 |2):Write%=.text(| 00003760 70 61 73 73 57 25 2c 33 29 3a 4d 61 6e 61 67 65 |passW%,3):Manage| 00003770 72 25 3d a4 74 65 78 74 28 70 61 73 73 57 25 2c |r%=.text(passW%,| 00003780 35 29 0d 01 c6 3a 6d 61 69 6e 57 25 3d a4 6e 65 |5)...:mainW%=.ne| 00003790 77 5f 77 69 6e 64 6f 77 28 22 6d 61 69 6e 22 2c |w_window("main",| 000037a0 73 70 72 69 74 65 73 25 29 3a 52 65 63 49 6e 66 |sprites%):RecInf| 000037b0 6f 25 3d 62 6c 6f 63 6b 25 21 37 32 0d 01 c7 3f |o%=block%!72...?| 000037c0 6b 65 79 57 25 3d a4 6e 65 77 5f 77 69 6e 64 6f |keyW%=.new_windo| 000037d0 77 28 22 63 68 61 6e 67 65 6b 65 79 22 2c 73 70 |w("changekey",sp| 000037e0 72 69 74 65 73 25 29 3a 4b 65 79 54 69 74 6c 65 |rites%):KeyTitle| 000037f0 25 3d 62 6c 6f 63 6b 25 21 37 32 0d 01 c8 31 46 |%=block%!72...1F| 00003800 31 64 6b 65 79 25 3d a4 74 65 78 74 28 6b 65 79 |1dkey%=.text(key| 00003810 57 25 2c 30 29 3a 46 32 64 6b 65 79 25 3d a4 74 |W%,0):F2dkey%=.t| 00003820 65 78 74 28 6b 65 79 57 25 2c 31 29 0d 01 c9 0e |ext(keyW%,1)....| 00003830 de 20 57 6b 65 79 25 28 33 29 0d 01 ca 11 e3 20 |. Wkey%(3)..... | 00003840 77 6f 72 64 25 3d 30 20 b8 20 33 0d 01 cb 27 20 |word%=0 . 3...' | 00003850 20 57 6b 65 79 25 28 77 6f 72 64 25 29 3d a4 74 | Wkey%(word%)=.t| 00003860 65 78 74 28 6b 65 79 57 25 2c 77 6f 72 64 25 2b |ext(keyW%,word%+| 00003870 32 29 0d 01 cc 0b ed 20 77 6f 72 64 25 0d 01 cd |2)..... word%...| 00003880 19 4b 65 79 4e 6f 25 3d a4 74 65 78 74 28 6b 65 |.KeyNo%=.text(ke| 00003890 79 57 25 2c 36 29 0d 01 ce 42 63 68 61 6e 67 65 |yW%,6)...Bchange| 000038a0 57 25 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 |W%=.new_window("| 000038b0 63 68 61 6e 67 65 22 2c 73 70 72 69 74 65 73 25 |change",sprites%| 000038c0 29 3a 43 68 61 6e 67 65 54 69 74 6c 65 25 3d 62 |):ChangeTitle%=b| 000038d0 6c 6f 63 6b 25 21 37 32 0d 01 cf 27 6d 6f 76 65 |lock%!72...'move| 000038e0 57 25 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 |W%=.new_window("| 000038f0 6d 6f 76 65 22 2c 73 70 72 69 74 65 73 25 29 0d |move",sprites%).| 00003900 01 d0 29 74 61 62 6c 65 57 25 3d a4 6e 65 77 5f |..)tableW%=.new_| 00003910 77 69 6e 64 6f 77 28 22 74 61 62 6c 65 22 2c 73 |window("table",s| 00003920 70 72 69 74 65 73 25 29 0d 01 d1 8a 6c 69 6e 6b |prites%)....link| 00003930 57 25 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 |W%=.new_window("| 00003940 6c 69 6e 6b 22 2c 73 70 72 69 74 65 73 25 29 3a |link",sprites%):| 00003950 4c 69 6e 6b 54 69 74 6c 65 25 3d 62 6c 6f 63 6b |LinkTitle%=block| 00003960 25 21 37 32 3a 54 61 62 6c 65 6e 61 6d 65 25 3d |%!72:Tablename%=| 00003970 a4 74 65 78 74 28 6c 69 6e 6b 57 25 2c 30 29 3a |.text(linkW%,0):| 00003980 66 69 65 6c 64 6e 75 6d 25 3d a4 74 65 78 74 28 |fieldnum%=.text(| 00003990 6c 69 6e 6b 57 25 2c 32 29 3a 65 78 70 61 6e 64 |linkW%,2):expand| 000039a0 25 3d a4 74 65 78 74 28 6c 69 6e 6b 57 25 2c 31 |%=.text(linkW%,1| 000039b0 30 29 0d 01 d2 56 6d 69 73 63 57 25 3d a4 6e 65 |0)...VmiscW%=.ne| 000039c0 77 5f 77 69 6e 64 6f 77 28 22 6d 69 73 63 22 2c |w_window("misc",| 000039d0 73 70 72 69 74 65 73 25 29 3a 64 61 74 61 62 61 |sprites%):databa| 000039e0 73 65 25 3d a4 74 65 78 74 28 6d 69 73 63 57 25 |se%=.text(miscW%| 000039f0 2c 31 29 3a 24 64 61 74 61 62 61 73 65 25 3d 22 |,1):$database%="| 00003a00 4e 6f 20 64 61 74 61 22 0d 01 d3 0f e3 20 69 63 |No data"..... ic| 00003a10 25 3d 32 20 b8 20 37 0d 01 d4 24 20 20 44 61 74 |%=2 . 7...$ Dat| 00003a20 65 25 28 69 63 25 2d 32 29 3d a4 74 65 78 74 28 |e%(ic%-2)=.text(| 00003a30 6d 69 73 63 57 25 2c 69 63 25 29 0d 01 d5 09 ed |miscW%,ic%).....| 00003a40 20 69 63 25 0d 01 d6 4f 75 73 65 64 25 3d a4 74 | ic%...Oused%=.t| 00003a50 65 78 74 28 6d 69 73 63 57 25 2c 31 37 29 3a 66 |ext(miscW%,17):f| 00003a60 69 6c 65 73 69 7a 65 25 3d a4 74 65 78 74 28 6d |ilesize%=.text(m| 00003a70 69 73 63 57 25 2c 31 38 29 3a 70 65 72 63 65 6e |iscW%,18):percen| 00003a80 74 25 3d a4 74 65 78 74 28 6d 69 73 63 57 25 2c |t%=.text(miscW%,| 00003a90 31 34 29 0d 01 d7 29 70 72 69 6e 74 57 25 3d a4 |14)...)printW%=.| 00003aa0 6e 65 77 5f 77 69 6e 64 6f 77 28 22 70 72 69 6e |new_window("prin| 00003ab0 74 22 2c 73 70 72 69 74 65 73 25 29 0d 01 d8 29 |t",sprites%)...)| 00003ac0 6d 61 74 63 68 57 25 3d a4 6e 65 77 5f 77 69 6e |matchW%=.new_win| 00003ad0 64 6f 77 28 22 6d 61 74 63 68 22 2c 73 70 72 69 |dow("match",spri| 00003ae0 74 65 73 25 29 0d 01 d9 27 6c 69 73 74 57 25 3d |tes%)...'listW%=| 00003af0 a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 6c 69 73 |.new_window("lis| 00003b00 74 22 2c 73 70 72 69 74 65 73 25 29 0d 01 da 58 |t",sprites%)...X| 00003b10 63 72 65 61 74 65 57 25 3d a4 6e 65 77 5f 77 69 |createW%=.new_wi| 00003b20 6e 64 6f 77 28 22 63 72 65 61 74 65 22 2c 73 70 |ndow("create",sp| 00003b30 72 69 74 65 73 25 29 3a 46 74 69 74 6c 65 54 65 |rites%):FtitleTe| 00003b40 78 74 25 3d 62 6c 6f 63 6b 25 21 37 32 3a 24 46 |xt%=block%!72:$F| 00003b50 74 69 74 6c 65 54 65 78 74 25 3d 22 46 69 65 6c |titleText%="Fiel| 00003b60 64 20 30 22 0d 01 db b3 44 65 73 63 54 65 78 74 |d 0"....DescText| 00003b70 25 3d a4 74 65 78 74 28 63 72 65 61 74 65 57 25 |%=.text(createW%| 00003b80 2c 34 29 3a 54 61 67 54 65 78 74 25 3d a4 74 65 |,4):TagText%=.te| 00003b90 78 74 28 63 72 65 61 74 65 57 25 2c 35 29 3a 4c |xt(createW%,5):L| 00003ba0 65 6e 54 65 78 74 25 3d a4 74 65 78 74 28 63 72 |enText%=.text(cr| 00003bb0 65 61 74 65 57 25 2c 36 29 3a 56 61 6c 54 65 78 |eateW%,6):ValTex| 00003bc0 74 25 3d a4 74 65 78 74 28 63 72 65 61 74 65 57 |t%=.text(createW| 00003bd0 25 2c 32 38 29 3a 49 6e 73 54 65 78 74 25 3d a4 |%,28):InsText%=.| 00003be0 74 65 78 74 28 63 72 65 61 74 65 57 25 2c 32 36 |text(createW%,26| 00003bf0 29 3a 46 69 78 70 74 25 3d a4 74 65 78 74 28 63 |):Fixpt%=.text(c| 00003c00 72 65 61 74 65 57 25 2c 31 33 29 3a 24 46 69 78 |reateW%,13):$Fix| 00003c10 70 74 25 3d 22 32 22 0d 01 dc 3b 6d 69 6e 74 65 |pt%="2"...;minte| 00003c20 78 74 25 3d a4 74 65 78 74 28 63 72 65 61 74 65 |xt%=.text(create| 00003c30 57 25 2c 31 35 29 3a 6d 61 78 74 65 78 74 25 3d |W%,15):maxtext%=| 00003c40 a4 74 65 78 74 28 63 72 65 61 74 65 57 25 2c 32 |.text(createW%,2| 00003c50 35 29 0d 01 dd 64 62 6f 78 58 25 3d a4 74 65 78 |5)...dboxX%=.tex| 00003c60 74 28 63 72 65 61 74 65 57 25 2c 37 29 3a 62 6f |t(createW%,7):bo| 00003c70 78 59 25 3d a4 74 65 78 74 28 63 72 65 61 74 65 |xY%=.text(create| 00003c80 57 25 2c 38 29 3a 62 6f 78 57 25 3d a4 74 65 78 |W%,8):boxW%=.tex| 00003c90 74 28 63 72 65 61 74 65 57 25 2c 39 29 3a 62 6f |t(createW%,9):bo| 00003ca0 78 48 25 3d a4 74 65 78 74 28 63 72 65 61 74 65 |xH%=.text(create| 00003cb0 57 25 2c 31 30 29 0d 01 de 41 72 65 6c 61 74 65 |W%,10)...Arelate| 00003cc0 57 25 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 |W%=.new_window("| 00003cd0 72 65 6c 61 74 69 6f 6e 22 2c 73 70 72 69 74 65 |relation",sprite| 00003ce0 73 25 29 3a 52 65 6c 54 69 74 6c 65 25 3d 62 6c |s%):RelTitle%=bl| 00003cf0 6f 63 6b 25 21 37 32 0d 01 df 40 72 65 66 6f 72 |ock%!72...@refor| 00003d00 6d 57 25 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 28 |mW%=.new_window(| 00003d10 22 72 65 66 6f 72 6d 22 2c 73 70 72 69 74 65 73 |"reform",sprites| 00003d20 25 29 3a 52 65 66 6d 54 69 74 6c 65 25 3d 62 6c |%):RefmTitle%=bl| 00003d30 6f 63 6b 25 21 37 32 0d 01 e0 26 63 6f 6c 57 25 |ock%!72...&colW%| 00003d40 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 63 6f |=.new_window("co| 00003d50 6c 73 22 2c 73 70 72 69 74 65 73 25 29 0d 01 e1 |ls",sprites%)...| 00003d60 56 63 61 6c 63 57 25 3d a4 6e 65 77 5f 77 69 6e |VcalcW%=.new_win| 00003d70 64 6f 77 28 22 63 61 6c 63 22 2c 73 70 72 69 74 |dow("calc",sprit| 00003d80 65 73 25 29 3a 43 61 6c 63 46 6f 72 6d 25 3d a4 |es%):CalcForm%=.| 00003d90 74 65 78 74 28 63 61 6c 63 57 25 2c 30 29 3a 43 |text(calcW%,0):C| 00003da0 61 6c 63 54 69 74 6c 65 25 3d 62 6c 6f 63 6b 25 |alcTitle%=block%| 00003db0 21 37 32 0d 01 e2 29 6c 61 62 65 6c 57 25 3d a4 |!72...)labelW%=.| 00003dc0 6e 65 77 5f 77 69 6e 64 6f 77 28 22 6c 61 62 65 |new_window("labe| 00003dd0 6c 22 2c 73 70 72 69 74 65 73 25 29 0d 01 e3 2d |l",sprites%)...-| 00003de0 70 73 65 6c 65 63 74 57 25 3d a4 6e 65 77 5f 77 |pselectW%=.new_w| 00003df0 69 6e 64 6f 77 28 22 70 73 65 6c 65 63 74 22 2c |indow("pselect",| 00003e00 73 70 72 69 74 65 73 25 29 0d 01 e4 3f 6d 65 72 |sprites%)...?mer| 00003e10 67 65 57 25 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 |geW%=.new_window| 00003e20 28 22 6d 65 72 67 65 22 2c 73 70 72 69 74 65 73 |("merge",sprites| 00003e30 25 29 3a 4d 65 72 67 65 54 69 74 6c 65 25 3d 62 |%):MergeTitle%=b| 00003e40 6c 6f 63 6b 25 21 37 32 0d 01 e5 50 73 69 7a 65 |lock%!72...Psize| 00003e50 57 25 3d a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 |W%=.new_window("| 00003e60 73 69 7a 65 22 2c 73 70 72 69 74 65 73 25 29 3a |size",sprites%):| 00003e70 52 65 63 6f 72 64 73 25 3d a4 74 65 78 74 28 73 |Records%=.text(s| 00003e80 69 7a 65 57 25 2c 31 29 3a 24 52 65 63 6f 72 64 |izeW%,1):$Record| 00003e90 73 25 3d 22 31 30 30 22 0d 01 e6 2e 49 6e 63 72 |s%="100"....Incr| 00003ea0 65 6d 65 6e 74 25 3d a4 74 65 78 74 28 73 69 7a |ement%=.text(siz| 00003eb0 65 57 25 2c 33 29 3a 24 49 6e 63 72 65 6d 65 6e |eW%,3):$Incremen| 00003ec0 74 25 3d 22 30 22 0d 01 e7 3d 63 73 76 57 25 3d |t%="0"...=csvW%=| 00003ed0 a4 6e 65 77 5f 77 69 6e 64 6f 77 28 22 63 73 76 |.new_window("csv| 00003ee0 66 69 6c 65 22 2c 73 70 72 69 74 65 73 25 29 3a |file",sprites%):| 00003ef0 43 53 56 54 69 74 6c 65 25 3d 62 6c 6f 63 6b 25 |CSVTitle%=block%| 00003f00 21 37 32 0d 01 e8 1b c8 99 20 22 57 69 6d 70 5f |!72...... "Wimp_| 00003f10 43 6c 6f 73 65 54 65 6d 70 6c 61 74 65 22 0d 01 |CloseTemplate"..| 00003f20 e9 1e e7 20 63 6f 6d 6d 6f 6e 25 20 8c 20 f2 63 |... common% . .c| 00003f30 6f 6d 6d 6f 6e 62 75 66 66 65 72 73 0d 01 ea 05 |ommonbuffers....| 00003f40 e1 0d 01 eb 05 3a 0d 01 ec 14 dd 20 f2 63 6f 6d |.....:..... .com| 00003f50 6d 6f 6e 62 75 66 66 65 72 73 0d 01 ed 22 f2 63 |monbuffers...".c| 00003f60 6f 6d 6d 6f 6e 28 6b 65 79 70 61 64 57 25 2c 32 |ommon(keypadW%,2| 00003f70 39 2c 6d 61 74 63 68 57 25 2c 30 29 0d 01 ee 1f |9,matchW%,0)....| 00003f80 f2 63 6f 6d 6d 6f 6e 28 6d 6f 76 65 57 25 2c 37 |.common(moveW%,7| 00003f90 2c 6d 61 74 63 68 57 25 2c 30 29 0d 01 ef 21 f2 |,matchW%,0)...!.| 00003fa0 63 6f 6d 6d 6f 6e 28 63 68 61 6e 67 65 57 25 2c |common(changeW%,| 00003fb0 33 2c 6d 61 74 63 68 57 25 2c 30 29 0d 01 f0 22 |3,matchW%,0)..."| 00003fc0 f2 63 6f 6d 6d 6f 6e 28 73 61 76 65 73 75 62 57 |.common(savesubW| 00003fd0 25 2c 30 2c 6d 61 74 63 68 57 25 2c 30 29 0d 01 |%,0,matchW%,0)..| 00003fe0 f1 20 f2 63 6f 6d 6d 6f 6e 28 6d 65 72 67 65 57 |. .common(mergeW| 00003ff0 25 2c 33 2c 6d 61 74 63 68 57 25 2c 30 29 0d 01 |%,3,matchW%,0)..| 00004000 f2 05 e1 0d 01 f3 05 3a 0d 01 f4 20 dd 20 f2 63 |.......:... . .c| 00004010 6f 6d 6d 6f 6e 28 77 69 25 2c 69 63 25 2c 77 69 |ommon(wi%,ic%,wi| 00004020 63 25 2c 69 63 63 25 29 0d 01 f5 1d 46 6f 72 6d |c%,icc%)....Form| 00004030 75 6c 61 25 3d a4 74 65 78 74 28 77 69 63 25 2c |ula%=.text(wic%,| 00004040 69 63 63 25 29 0d 01 f6 3b 21 62 6c 6f 63 6b 25 |icc%)...;!block%| 00004050 3d 77 69 25 3a 62 6c 6f 63 6b 25 21 34 3d 69 63 |=wi%:block%!4=ic| 00004060 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 |%:.. "Wimp_GetIc| 00004070 6f 6e 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 |onState",,block%| 00004080 0d 01 f7 20 c8 99 20 22 57 69 6d 70 5f 44 65 6c |... .. "Wimp_Del| 00004090 65 74 65 49 63 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 |eteIcon",,block%| 000040a0 0d 01 f8 23 62 6c 6f 63 6b 25 21 32 38 3d 46 6f |...#block%!28=Fo| 000040b0 72 6d 75 6c 61 25 3a 62 6c 6f 63 6b 25 21 34 3d |rmula%:block%!4=| 000040c0 77 69 25 0d 01 f9 2c c8 99 20 22 57 69 6d 70 5f |wi%...,.. "Wimp_| 000040d0 43 72 65 61 74 65 49 63 6f 6e 22 2c 2c 62 6c 6f |CreateIcon",,blo| 000040e0 63 6b 25 2b 34 20 b8 20 68 61 6e 64 6c 65 25 0d |ck%+4 . handle%.| 000040f0 01 fa 05 e1 0d 01 fb 05 3a 0d 01 fc 1a dd 20 f2 |........:..... .| 00004100 63 6f 6d 6d 6f 6e 63 61 73 65 28 77 69 25 2c 69 |commoncase(wi%,i| 00004110 63 25 29 0d 01 fd 09 ea 20 6f 6e 25 0d 01 fe 17 |c%)..... on%....| 00004120 e7 20 ac 20 63 6f 6d 6d 6f 6e 63 61 73 65 25 20 |. . commoncase% | 00004130 8c 20 e1 0d 01 ff 1a 6f 6e 25 3d a4 73 65 6c 65 |. .....on%=.sele| 00004140 63 74 65 64 28 77 69 25 2c 69 63 25 29 0d 02 00 |cted(wi%,ic%)...| 00004150 1d f2 73 65 74 5f 69 63 6f 6e 28 6d 61 74 63 68 |..set_icon(match| 00004160 57 25 2c 31 36 2c 6f 6e 25 29 0d 02 01 1e f2 73 |W%,16,on%).....s| 00004170 65 74 5f 69 63 6f 6e 28 6b 65 79 70 61 64 57 25 |et_icon(keypadW%| 00004180 2c 33 32 2c 6f 6e 25 29 0d 02 02 1b f2 73 65 74 |,32,on%).....set| 00004190 5f 69 63 6f 6e 28 6d 6f 76 65 57 25 2c 39 2c 6f |_icon(moveW%,9,o| 000041a0 6e 25 29 0d 02 03 1d f2 73 65 74 5f 69 63 6f 6e |n%).....set_icon| 000041b0 28 63 68 61 6e 67 65 57 25 2c 35 2c 6f 6e 25 29 |(changeW%,5,on%)| 000041c0 0d 02 04 1e f2 73 65 74 5f 69 63 6f 6e 28 73 61 |.....set_icon(sa| 000041d0 76 65 73 75 62 57 25 2c 35 2c 6f 6e 25 29 0d 02 |vesubW%,5,on%)..| 000041e0 05 1d f2 73 65 74 5f 69 63 6f 6e 28 6d 65 72 67 |...set_icon(merg| 000041f0 65 57 25 2c 31 32 2c 6f 6e 25 29 0d 02 06 05 e1 |eW%,12,on%).....| 00004200 0d 02 07 05 3a 0d 02 08 1c dd 20 a4 6e 65 77 5f |....:..... .new_| 00004210 77 69 6e 64 6f 77 28 6e 61 6d 65 24 2c 73 70 25 |window(name$,sp%| 00004220 29 0d 02 09 0d ea 20 68 61 6e 64 6c 65 25 0d 02 |)..... handle%..| 00004230 0a 46 c8 99 20 22 57 69 6d 70 5f 4c 6f 61 64 54 |.F.. "Wimp_LoadT| 00004240 65 6d 70 6c 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 |emplate",,block%| 00004250 2c 62 75 66 66 25 2c 65 6e 64 62 75 66 66 25 2c |,buff%,endbuff%,| 00004260 2d 31 2c 6e 61 6d 65 24 2c 30 20 b8 20 2c 2c 62 |-1,name$,0 . ,,b| 00004270 75 66 66 25 0d 02 0b 27 e7 20 6e 61 6d 65 24 3d |uff%...'. name$=| 00004280 22 6d 61 69 6e 22 20 8c 20 62 6c 6f 63 6b 25 3f |"main" . block%?| 00004290 33 35 3d 77 69 6e 62 61 63 6b 25 0d 02 0c 11 62 |35=winback%....b| 000042a0 6c 6f 63 6b 25 21 36 34 3d 73 70 25 0d 02 0d 2c |lock%!64=sp%...,| 000042b0 c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 57 |.. "Wimp_CreateW| 000042c0 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 20 b8 |indow",,block% .| 000042d0 20 68 61 6e 64 6c 65 25 0d 02 0e 0c 3d 68 61 6e | handle%....=han| 000042e0 64 6c 65 25 0d 02 0f 05 3a 0d 02 10 13 dd 20 f2 |dle%....:..... .| 000042f0 73 68 6f 77 5f 77 69 6e 64 6f 77 73 0d 02 11 18 |show_windows....| 00004300 f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 6d 61 69 |.open_window(mai| 00004310 6e 57 25 29 0d 02 12 18 e7 20 28 70 72 65 73 65 |nW%)..... (prese| 00004320 6e 74 25 20 80 20 37 29 3d 37 20 8c 0d 02 13 1d |nt% . 7)=7 .....| 00004330 20 20 e7 20 a4 73 65 6c 65 63 74 65 64 28 70 61 | . .selected(pa| 00004340 73 73 57 25 2c 39 29 20 8c 0d 02 14 39 20 20 20 |ssW%,9) ....9 | 00004350 20 21 62 6c 6f 63 6b 25 3d 6b 65 79 70 61 64 57 | !block%=keypadW| 00004360 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 57 69 |%:.. "Wimp_GetWi| 00004370 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 |ndowState",,bloc| 00004380 6b 25 0d 02 15 35 20 20 20 20 62 6c 6f 63 6b 25 |k%...5 block%| 00004390 21 31 32 3d 62 6c 6f 63 6b 25 21 34 2b 36 36 30 |!12=block%!4+660| 000043a0 3a 62 6c 6f 63 6b 25 21 38 3d 62 6c 6f 63 6b 25 |:block%!8=block%| 000043b0 21 31 36 2d 33 32 38 0d 02 16 2c 20 20 20 20 62 |!16-328..., b| 000043c0 6c 6f 63 6b 25 21 32 30 3d 30 3a 62 6c 6f 63 6b |lock%!20=0:block| 000043d0 25 21 32 34 3d 30 3a 62 6c 6f 63 6b 25 21 32 38 |%!24=0:block%!28| 000043e0 3d 2d 31 0d 02 17 24 20 20 20 20 c8 99 20 22 57 |=-1...$ .. "W| 000043f0 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c |imp_OpenWindow",| 00004400 2c 62 6c 6f 63 6b 25 0d 02 18 07 20 20 cd 0d 02 |,block%.... ...| 00004410 19 1e 20 20 61 64 64 72 3d a4 6d 6f 76 65 74 6f |.. addr=.moveto| 00004420 28 6b 65 79 25 2c 74 6f 70 2c 31 29 0d 02 1a 05 |(key%,top,1)....| 00004430 cd 0d 02 1b 24 e7 20 4c 69 73 74 65 64 25 20 8c |....$. Listed% .| 00004440 20 f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 6c 69 | .open_window(li| 00004450 73 74 57 25 29 0d 02 1c 05 e1 0d 02 1d 05 3a 0d |stW%).........:.| 00004460 02 1e 1c dd 20 f2 6f 70 65 6e 5f 77 69 6e 64 6f |.... .open_windo| 00004470 77 28 77 68 61 6e 64 6c 65 25 29 0d 02 1f 15 62 |w(whandle%)....b| 00004480 6c 6f 63 6b 25 21 30 3d 77 68 61 6e 64 6c 65 25 |lock%!0=whandle%| 00004490 0d 02 20 24 c8 99 20 22 57 69 6d 70 5f 47 65 74 |.. $.. "Wimp_Get| 000044a0 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c |WindowState",,bl| 000044b0 6f 63 6b 25 0d 02 21 10 62 6c 6f 63 6b 25 21 32 |ock%..!.block%!2| 000044c0 38 3d 2d 31 0d 02 22 20 c8 99 20 22 57 69 6d 70 |8=-1.." .. "Wimp| 000044d0 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c |_OpenWindow",,bl| 000044e0 6f 63 6b 25 0d 02 23 05 e1 0d 02 24 05 3a 0d 02 |ock%..#....$.:..| 000044f0 25 22 dd 20 f2 73 65 74 5f 68 65 69 67 68 74 28 |%". .set_height(| 00004500 68 61 6e 64 6c 65 25 2c 68 65 69 67 68 74 25 29 |handle%,height%)| 00004510 0d 02 26 34 21 62 6c 6f 63 6b 25 3d 68 61 6e 64 |..&4!block%=hand| 00004520 6c 65 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 |le%:.. "Wimp_Get| 00004530 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c |WindowState",,bl| 00004540 6f 63 6b 25 0d 02 27 1e 62 6c 6f 63 6b 25 21 31 |ock%..'.block%!1| 00004550 36 3d 62 6c 6f 63 6b 25 21 38 2b 68 65 69 67 68 |6=block%!8+heigh| 00004560 74 25 0d 02 28 20 c8 99 20 22 57 69 6d 70 5f 4f |t%..( .. "Wimp_O| 00004570 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 |penWindow",,bloc| 00004580 6b 25 0d 02 29 05 e1 0d 02 2a 05 3a 0d 02 2b 19 |k%..)....*.:..+.| 00004590 dd 20 f2 70 65 72 66 6f 72 6d 5f 63 6c 6f 73 65 |. .perform_close| 000045a0 28 77 69 25 29 0d 02 2c 0c c8 8e 20 77 69 25 20 |(wi%)..,... wi% | 000045b0 ca 0d 02 2d 26 20 20 c9 20 6d 61 69 6e 57 25 3a |...-& . mainW%:| 000045c0 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 6b 65 |.close_window(ke| 000045d0 79 70 61 64 57 25 29 0d 02 2e 1b 20 20 c9 20 6d |ypadW%).... . m| 000045e0 61 74 63 68 57 25 3a 6d 61 74 63 68 69 6e 67 25 |atchW%:matching%| 000045f0 3d a3 0d 02 2f 1a 20 20 c9 20 63 61 6c 63 57 25 |=.../. . calcW%| 00004600 3a 63 61 6c 63 6c 69 6e 6b 25 3d 30 0d 02 30 0e |:calclink%=0..0.| 00004610 20 20 c9 20 6b 65 79 57 25 3a 0d 02 31 1a 20 20 | . keyW%:..1. | 00004620 64 65 73 69 67 6e 25 3d a3 3a 6e 65 77 74 72 65 |design%=.:newtre| 00004630 65 25 3d a3 0d 02 32 1d 20 20 21 62 6c 6f 63 6b |e%=...2. !block| 00004640 25 3d 30 3a 62 6c 6f 63 6b 25 21 34 3d 2d 37 30 |%=0:block%!4=-70| 00004650 30 0d 02 33 1e 20 20 62 6c 6f 63 6b 25 21 38 3d |0..3. block%!8=| 00004660 35 30 36 3a 62 6c 6f 63 6b 25 21 31 32 3d 30 0d |506:block%!12=0.| 00004670 02 34 26 20 20 c8 99 20 22 57 69 6d 70 5f 53 65 |.4& .. "Wimp_Se| 00004680 74 45 78 74 65 6e 74 22 2c 6b 65 79 57 25 2c 62 |tExtent",keyW%,b| 00004690 6c 6f 63 6b 25 0d 02 35 13 20 20 21 62 6c 6f 63 |lock%..5. !bloc| 000046a0 6b 25 3d 6b 65 79 57 25 0d 02 36 10 20 20 c9 20 |k%=keyW%..6. . | 000046b0 6d 65 72 67 65 57 25 3a 0d 02 37 6c 20 20 e7 20 |mergeW%:..7l . | 000046c0 6d 65 72 67 65 77 69 74 68 24 3c 3e 22 22 20 8c |mergewith$<>"" .| 000046d0 20 c8 99 20 22 49 6d 70 75 6c 73 65 5f 53 65 6e | .. "Impulse_Sen| 000046e0 64 4d 65 73 73 61 67 65 22 2c 26 32 30 30 2c 22 |dMessage",&200,"| 000046f0 3a 22 2b 6d 65 72 67 65 77 69 74 68 24 2b 22 2e |:"+mergewith$+".| 00004700 22 2b 64 6f 63 75 6d 65 6e 74 24 2b 22 20 45 64 |"+document$+" Ed| 00004710 69 74 20 4f 6e 22 2c 2c 2c 2c 2d 31 2c 6d 79 74 |it On",,,,-1,myt| 00004720 61 73 6b 25 0d 02 38 10 20 20 6d 65 72 67 69 6e |ask%..8. mergin| 00004730 67 25 3d a3 0d 02 39 05 cb 0d 02 3a 16 f2 63 6c |g%=...9....:..cl| 00004740 6f 73 65 5f 77 69 6e 64 6f 77 28 77 69 25 29 0d |ose_window(wi%).| 00004750 02 3b 05 e1 0d 02 3c 05 3a 0d 02 3d 13 dd 20 f2 |.;....<.:..=.. .| 00004760 68 69 64 65 5f 77 69 6e 64 6f 77 73 0d 02 3e 1a |hide_windows..>.| 00004770 f2 70 65 72 66 6f 72 6d 5f 63 6c 6f 73 65 28 6d |.perform_close(m| 00004780 61 69 6e 57 25 29 0d 02 3f 1c f2 70 65 72 66 6f |ainW%)..?..perfo| 00004790 72 6d 5f 63 6c 6f 73 65 28 6b 65 79 70 61 64 57 |rm_close(keypadW| 000047a0 25 29 0d 02 40 1d f2 70 65 72 66 6f 72 6d 5f 63 |%)..@..perform_c| 000047b0 6c 6f 73 65 28 64 61 74 61 64 69 63 57 25 29 0d |lose(datadicW%).| 000047c0 02 41 1a f2 70 65 72 66 6f 72 6d 5f 63 6c 6f 73 |.A..perform_clos| 000047d0 65 28 6c 69 73 74 57 25 29 0d 02 42 1b f2 70 65 |e(listW%)..B..pe| 000047e0 72 66 6f 72 6d 5f 63 6c 6f 73 65 28 6d 61 74 63 |rform_close(matc| 000047f0 68 57 25 29 0d 02 43 1c f2 70 65 72 66 6f 72 6d |hW%)..C..perform| 00004800 5f 63 6c 6f 73 65 28 72 65 6c 61 74 65 57 25 29 |_close(relateW%)| 00004810 0d 02 44 19 f2 70 65 72 66 6f 72 6d 5f 63 6c 6f |..D..perform_clo| 00004820 73 65 28 6b 65 79 57 25 29 0d 02 45 1c f2 70 65 |se(keyW%)..E..pe| 00004830 72 66 6f 72 6d 5f 63 6c 6f 73 65 28 72 65 66 6f |rform_close(refo| 00004840 72 6d 57 25 29 0d 02 46 1a f2 70 65 72 66 6f 72 |rmW%)..F..perfor| 00004850 6d 5f 63 6c 6f 73 65 28 63 61 6c 63 57 25 29 0d |m_close(calcW%).| 00004860 02 47 1b f2 70 65 72 66 6f 72 6d 5f 63 6c 6f 73 |.G..perform_clos| 00004870 65 28 6d 65 72 67 65 57 25 29 0d 02 48 19 f2 70 |e(mergeW%)..H..p| 00004880 65 72 66 6f 72 6d 5f 63 6c 6f 73 65 28 63 73 76 |erform_close(csv| 00004890 57 25 29 0d 02 49 05 e1 0d 02 4a 05 3a 0d 02 4b |W%)..I....J.:..K| 000048a0 1d dd 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 |.. .close_window| 000048b0 28 77 68 61 6e 64 6c 65 25 29 0d 02 4c 14 21 62 |(whandle%)..L.!b| 000048c0 6c 6f 63 6b 25 3d 77 68 61 6e 64 6c 65 25 0d 02 |lock%=whandle%..| 000048d0 4d 21 c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 |M!.. "Wimp_Close| 000048e0 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d |Window",,block%.| 000048f0 02 4e 05 e1 0d 02 4f 05 3a 0d 02 50 16 dd 20 f2 |.N....O.:..P.. .| 00004900 72 65 64 72 61 77 28 68 61 6e 64 6c 65 25 29 0d |redraw(handle%).| 00004910 02 51 08 ea 20 4c 25 0d 02 52 11 4c 25 3d a9 28 |.Q.. L%..R.L%=.(| 00004920 6d 61 72 67 69 6e 24 29 0d 02 53 13 21 62 6c 6f |margin$)..S.!blo| 00004930 63 6b 25 3d 68 61 6e 64 6c 65 25 0d 02 54 2a c8 |ck%=handle%..T*.| 00004940 99 20 22 57 69 6d 70 5f 52 65 64 72 61 77 57 69 |. "Wimp_RedrawWi| 00004950 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 20 b8 20 |ndow",,block% . | 00004960 6d 6f 72 65 25 0d 02 55 1f f2 67 65 74 5f 6f 72 |more%..U..get_or| 00004970 69 67 69 6e 28 62 6c 6f 63 6b 25 2c 78 30 25 2c |igin(block%,x0%,| 00004980 79 30 25 29 0d 02 56 0c c8 95 20 6d 6f 72 65 25 |y0%)..V... more%| 00004990 0d 02 57 14 20 20 f2 64 72 61 77 28 78 30 25 2c |..W. .draw(x0%,| 000049a0 79 30 25 29 0d 02 58 42 20 20 e7 20 68 61 6e 64 |y0%)..XB . hand| 000049b0 6c 65 25 3c 3e 64 61 74 61 64 69 63 57 25 20 8c |le%<>datadicW% .| 000049c0 20 c8 99 20 22 49 6e 74 65 72 66 61 63 65 5f 52 | .. "Interface_R| 000049d0 65 6e 64 65 72 33 64 57 69 6e 64 6f 77 22 2c 2c |ender3dWindow",,| 000049e0 62 6c 6f 63 6b 25 0d 02 59 2c 20 20 c8 99 20 22 |block%..Y, .. "| 000049f0 57 69 6d 70 5f 47 65 74 52 65 63 74 61 6e 67 6c |Wimp_GetRectangl| 00004a00 65 22 2c 2c 62 6c 6f 63 6b 25 20 b8 20 6d 6f 72 |e",,block% . mor| 00004a10 65 25 0d 02 5a 05 ce 0d 02 5b 05 e1 0d 02 5c 05 |e%..Z....[....\.| 00004a20 3a 0d 02 5d 25 dd 20 f2 67 65 74 5f 6f 72 69 67 |:..]%. .get_orig| 00004a30 69 6e 28 62 6c 6f 63 6b 25 2c f8 20 78 30 25 2c |in(block%,. x0%,| 00004a40 f8 20 79 30 25 29 0d 02 5e 1a 78 30 25 3d 62 6c |. y0%)..^.x0%=bl| 00004a50 6f 63 6b 25 21 34 2d 62 6c 6f 63 6b 25 21 32 30 |ock%!4-block%!20| 00004a60 0d 02 5f 1b 79 30 25 3d 62 6c 6f 63 6b 25 21 31 |.._.y0%=block%!1| 00004a70 36 2d 62 6c 6f 63 6b 25 21 32 34 0d 02 60 05 e1 |6-block%!24..`..| 00004a80 0d 02 61 05 3a 0d 02 62 14 dd 20 f2 64 72 61 77 |..a.:..b.. .draw| 00004a90 28 78 30 25 2c 79 30 25 29 0d 02 63 20 ea 20 54 |(x0%,y0%)..c . T| 00004aa0 65 78 74 50 74 72 25 2c 79 31 25 2c 79 32 25 2c |extPtr%,y1%,y2%,| 00004ab0 49 25 2c 63 68 61 72 73 25 0d 02 64 10 c8 8e 20 |I%,chars%..d... | 00004ac0 68 61 6e 64 6c 65 25 20 ca 0d 02 65 0e 20 20 c9 |handle% ...e. .| 00004ad0 20 6c 69 73 74 57 25 0d 02 66 1a 20 20 79 31 25 | listW%..f. y1%| 00004ae0 3d 2d 28 62 6c 6f 63 6b 25 21 34 30 2d 79 30 25 |=-(block%!40-y0%| 00004af0 29 0d 02 67 1a 20 20 79 32 25 3d 2d 28 62 6c 6f |)..g. y2%=-(blo| 00004b00 63 6b 25 21 33 32 2d 79 30 25 29 0d 02 68 14 20 |ck%!32-y0%)..h. | 00004b10 20 79 31 25 3d 79 31 25 20 81 20 33 32 2b 31 0d | y1%=y1% . 32+1.| 00004b20 02 69 14 20 20 79 32 25 3d 79 32 25 20 81 20 33 |.i. y2%=y2% . 3| 00004b30 32 2b 31 0d 02 6a 2e 20 20 54 65 78 74 50 74 72 |2+1..j. TextPtr| 00004b40 25 3d 28 21 74 65 78 74 61 6e 63 68 6f 72 25 29 |%=(!textanchor%)| 00004b50 2b 28 79 31 25 2d 31 29 2a 4c 65 6e 4c 69 6e 65 |+(y1%-1)*LenLine| 00004b60 25 0d 02 6b 1f 20 20 e7 20 79 32 25 3e 43 6f 75 |%..k. . y2%>Cou| 00004b70 6e 74 25 20 8c 20 79 32 25 3d 43 6f 75 6e 74 25 |nt% . y2%=Count%| 00004b80 0d 02 6c 14 20 20 e3 20 49 25 3d 79 31 25 20 b8 |..l. . I%=y1% .| 00004b90 20 79 32 25 0d 02 6d 16 20 20 20 20 f2 64 72 61 | y2%..m. .dra| 00004ba0 77 5f 6c 69 6e 65 28 49 25 29 0d 02 6e 1a 20 20 |w_line(I%)..n. | 00004bb0 20 20 54 65 78 74 50 74 72 25 2b 3d 4c 65 6e 4c | TextPtr%+=LenL| 00004bc0 69 6e 65 25 0d 02 6f 0a 20 20 ed 20 49 25 0d 02 |ine%..o. . I%..| 00004bd0 70 05 cb 0d 02 71 05 e1 0d 02 72 05 3a 0d 02 73 |p....q....r.:..s| 00004be0 17 dd 20 f2 64 72 61 77 5f 6c 69 6e 65 28 4c 69 |.. .draw_line(Li| 00004bf0 6e 65 25 29 0d 02 74 1c ec 20 78 30 25 2c 79 30 |ne%)..t.. x0%,y0| 00004c00 25 2d 28 4c 69 6e 65 25 2d 31 29 2a 33 32 2d 34 |%-(Line%-1)*32-4| 00004c10 0d 02 75 18 e7 20 54 65 78 74 50 74 72 25 3f 4c |..u.. TextPtr%?L| 00004c20 25 3d 31 32 20 8c 20 e1 0d 02 76 24 c8 99 20 22 |%=12 . ...v$.. "| 00004c30 4f 53 5f 57 72 69 74 65 4e 22 2c 54 65 78 74 50 |OS_WriteN",TextP| 00004c40 74 72 25 2c 4c 65 6e 4c 69 6e 65 25 0d 02 77 05 |tr%,LenLine%..w.| 00004c50 e1 0d 02 78 05 3a 0d 02 79 4b f4 20 4d 65 6e 75 |...x.:..yK. Menu| 00004c60 20 68 61 6e 64 6c 69 6e 67 20 2d 2d 2d 2d 2d 2d | handling ------| 00004c70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00004ca0 2d 0d 02 7a 05 3a 0d 02 7b 11 dd 20 f2 6d 61 6b |-..z.:..{.. .mak| 00004cb0 65 5f 6d 65 6e 75 73 0d 02 7c 08 ea 20 49 25 0d |e_menus..|.. I%.| 00004cc0 02 7d f1 6d 65 6e 75 25 28 31 30 29 3d a4 63 72 |.}.menu%(10)=.cr| 00004cd0 65 61 74 65 5f 6d 65 6e 75 28 6d 65 6e 75 5f 70 |eate_menu(menu_p| 00004ce0 74 72 25 2c 32 36 30 2c 22 46 69 65 6c 64 2c 49 |tr%,260,"Field,I| 00004cf0 6e 64 65 78 20 66 69 65 6c 64 2e 2e 2e 2c 41 6e |ndex field...,An| 00004d00 61 6c 79 73 65 20 6d 6f 6e 74 68 73 2c 47 6c 6f |alyse months,Glo| 00004d10 62 61 6c 20 63 68 61 6e 67 65 73 3e 22 2b c3 28 |bal changes>"+.(| 00004d20 63 68 61 6e 67 65 57 25 29 2b 22 2c 4c 69 6e 6b |changeW%)+",Link| 00004d30 20 74 6f 20 74 61 62 6c 65 2e 2e 2e 2c 43 6f 6d | to table...,Com| 00004d40 62 69 6e 65 20 66 69 65 6c 64 73 3e 22 2b c3 28 |bine fields>"+.(| 00004d50 63 61 6c 63 57 25 29 2b 22 2c 53 74 61 72 74 20 |calcW%)+",Start | 00004d60 65 64 69 74 69 6e 67 2c 43 6c 65 61 72 20 63 6f |editing,Clear co| 00004d70 6e 74 65 6e 74 73 2c 57 61 72 6e 20 6f 66 20 64 |ntents,Warn of d| 00004d80 65 6c 65 74 65 2c 53 61 76 65 20 63 6f 6e 74 65 |elete,Save conte| 00004d90 6e 74 73 3e 22 2b c3 28 73 61 76 65 57 25 29 2b |nts>"+.(saveW%)+| 00004da0 22 2c 55 6e 64 6f 20 63 68 61 6e 67 65 73 22 29 |",Undo changes")| 00004db0 0d 02 7e 4f 6d 65 6e 69 63 25 3d 6d 65 6e 75 25 |..~Omenic%=menu%| 00004dc0 28 31 30 29 2b 32 38 2b 28 31 2a 32 34 29 3a 41 |(10)+28+(1*24):A| 00004dd0 6e 61 6c 79 73 65 46 75 6e 63 25 3d 6d 65 6e 69 |nalyseFunc%=meni| 00004de0 63 25 21 31 32 3a 6d 65 6e 69 63 25 21 31 36 3d |c%!12:menic%!16=| 00004df0 2d 31 3a 6d 65 6e 69 63 25 21 32 30 3d 31 34 0d |-1:menic%!20=14.| 00004e00 02 7f 4c 6d 65 6e 69 63 25 3d 6d 65 6e 75 25 28 |..Lmenic%=menu%(| 00004e10 31 30 29 2b 32 38 2b 28 34 2a 32 34 29 3a 43 61 |10)+28+(4*24):Ca| 00004e20 6c 63 46 75 6e 63 25 3d 6d 65 6e 69 63 25 21 31 |lcFunc%=menic%!1| 00004e30 32 3a 6d 65 6e 69 63 25 21 31 36 3d 2d 31 3a 6d |2:menic%!16=-1:m| 00004e40 65 6e 69 63 25 21 32 30 3d 31 34 0d 02 80 3f 6d |enic%!20=14...?m| 00004e50 65 6e 75 25 28 31 33 29 3d a4 63 72 65 61 74 65 |enu%(13)=.create| 00004e60 5f 6d 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 2c |_menu(menu_ptr%,| 00004e70 31 32 30 2c 22 49 6e 74 65 72 76 61 6c 3a 2c 22 |120,"Interval:,"| 00004e80 2b c4 31 33 2c 22 30 22 29 29 0d 02 81 17 6d 65 |+.13,"0"))....me| 00004e90 6e 69 63 25 3d 6d 65 6e 75 25 28 31 33 29 2b 32 |nic%=menu%(13)+2| 00004ea0 38 0d 02 82 3e 49 6e 74 65 72 76 61 6c 25 3d 6d |8...>Interval%=m| 00004eb0 65 6e 69 63 25 21 31 32 3a 6d 65 6e 69 63 25 21 |enic%!12:menic%!| 00004ec0 31 36 3d 62 75 66 66 25 3a 24 62 75 66 66 25 3d |16=buff%:$buff%=| 00004ed0 22 41 30 2d 39 22 3a 62 75 66 66 25 2b 3d 35 0d |"A0-9":buff%+=5.| 00004ee0 02 83 30 3f 6d 65 6e 69 63 25 3d 3f 6d 65 6e 69 |..0?menic%=?meni| 00004ef0 63 25 20 84 20 28 31 3c 3c 32 29 3a 24 49 6e 74 |c% . (1<<2):$Int| 00004f00 65 72 76 61 6c 25 3d 22 31 30 20 6d 69 6e 22 0d |erval%="10 min".| 00004f10 02 84 73 6d 65 6e 75 25 28 31 32 29 3d a4 63 72 |..smenu%(12)=.cr| 00004f20 65 61 74 65 5f 6d 65 6e 75 28 6d 65 6e 75 5f 70 |eate_menu(menu_p| 00004f30 74 72 25 2c 31 36 30 2c 22 53 61 76 65 20 69 6e |tr%,160,"Save in| 00004f40 64 69 63 65 73 2c 41 75 74 6f 6d 61 74 69 63 3e |dices,Automatic>| 00004f50 22 2b c3 28 6d 65 6e 75 25 28 31 33 29 29 2b 22 |"+.(menu%(13))+"| 00004f60 2c 57 61 72 6e 69 6e 67 3e 22 2b c3 28 6d 65 6e |,Warning>"+.(men| 00004f70 75 25 28 31 33 29 29 2b 22 2c 4d 61 6e 75 61 6c |u%(13))+",Manual| 00004f80 22 29 0d 02 85 83 6d 65 6e 75 25 28 32 29 3d a4 |")....menu%(2)=.| 00004f90 63 72 65 61 74 65 5f 6d 65 6e 75 28 6d 65 6e 75 |create_menu(menu| 00004fa0 5f 70 74 72 25 2c 32 36 35 2c 22 56 61 6c 69 64 |_ptr%,265,"Valid| 00004fb0 61 74 69 6f 6e 2c 43 72 65 61 74 65 20 74 61 62 |ation,Create tab| 00004fc0 6c 65 2e 2e 2e 2c 7e 44 69 73 70 6c 61 79 20 74 |le...,~Display t| 00004fd0 61 62 6c 65 2c 53 68 6f 77 20 74 61 62 6c 65 20 |able,Show table | 00004fe0 66 69 6c 65 73 2c 56 61 6c 69 64 61 74 65 20 69 |files,Validate i| 00004ff0 6e 70 75 74 2c 53 68 6f 77 20 72 65 6c 61 74 69 |nput,Show relati| 00005000 6f 6e 73 22 29 0d 02 86 17 f2 74 69 63 6b 28 6d |ons").....tick(m| 00005010 65 6e 75 25 28 32 29 2c 33 2c b9 29 0d 02 87 18 |enu%(2),3,.)....| 00005020 f2 74 69 63 6b 28 6d 65 6e 75 25 28 31 30 29 2c |.tick(menu%(10),| 00005030 37 2c b9 29 0d 02 88 9d 6d 65 6e 75 25 28 37 29 |7,.)....menu%(7)| 00005040 3d a4 63 72 65 61 74 65 5f 6d 65 6e 75 28 6d 65 |=.create_menu(me| 00005050 6e 75 5f 70 74 72 25 2c 32 36 30 2c 22 4d 69 73 |nu_ptr%,260,"Mis| 00005060 63 2e 2c 42 61 74 63 68 20 64 65 6c 65 74 65 21 |c.,Batch delete!| 00005070 22 2b c3 28 6d 6f 76 65 57 25 29 2b 22 2c 53 65 |"+.(moveW%)+",Se| 00005080 74 20 70 61 73 73 77 6f 72 64 73 2e 2e 2e 2c 43 |t passwords...,C| 00005090 6f 6c 6f 75 72 73 21 22 2b c3 28 63 6f 6c 57 25 |olours!"+.(colW%| 000050a0 29 2b 22 2c 53 61 76 65 20 69 6e 64 69 63 65 73 |)+",Save indices| 000050b0 3e 22 2b c3 28 6d 65 6e 75 25 28 31 32 29 29 2b |>"+.(menu%(12))+| 000050c0 22 2c 45 64 69 74 20 74 65 6d 70 6c 61 74 65 22 |",Edit template"| 000050d0 29 0d 02 89 4e 6d 65 6e 75 25 28 31 35 29 3d a4 |)...Nmenu%(15)=.| 000050e0 63 72 65 61 74 65 5f 6d 65 6e 75 28 6d 65 6e 75 |create_menu(menu| 000050f0 5f 70 74 72 25 2c 39 30 2c 22 53 65 70 61 72 61 |_ptr%,90,"Separa| 00005100 74 6f 72 2c 43 6f 6d 6d 61 2c 54 41 42 2c 43 52 |tor,Comma,TAB,CR| 00005110 2c 4c 46 2c 22 2b c4 31 33 2c 22 30 22 29 29 0d |,LF,"+.13,"0")).| 00005120 02 8a 1e 6d 65 6e 69 63 25 3d 6d 65 6e 75 25 28 |...menic%=menu%(| 00005130 31 35 29 2b 32 38 2b 28 34 2a 32 34 29 0d 02 8b |15)+28+(4*24)...| 00005140 2d 44 65 6c 69 6d 25 3d 6d 65 6e 69 63 25 21 31 |-Delim%=menic%!1| 00005150 32 3a 6d 65 6e 69 63 25 21 31 36 3d 2d 31 3a 6d |2:menic%!16=-1:m| 00005160 65 6e 69 63 25 21 32 30 3d 33 0d 02 8c 27 3f 6d |enic%!20=3...'?m| 00005170 65 6e 69 63 25 3d 3f 6d 65 6e 69 63 25 20 84 20 |enic%=?menic% . | 00005180 28 31 3c 3c 32 29 3a 24 44 65 6c 69 6d 25 3d 22 |(1<<2):$Delim%="| 00005190 22 0d 02 8d 5d 6d 65 6e 75 25 28 32 30 29 3d a4 |"...]menu%(20)=.| 000051a0 63 72 65 61 74 65 5f 6d 65 6e 75 28 6d 65 6e 75 |create_menu(menu| 000051b0 5f 70 74 72 25 2c 39 30 2c 22 54 65 72 6d 69 6e |_ptr%,90,"Termin| 000051c0 61 74 6f 72 2c 43 52 2c 4c 46 2c 4c 46 20 43 52 |ator,CR,LF,LF CR| 000051d0 2c 43 52 20 4c 46 2c 43 52 20 43 52 2c 4c 46 20 |,CR LF,CR CR,LF | 000051e0 4c 46 2c 22 2b c4 31 33 2c 22 30 22 29 29 0d 02 |LF,"+.13,"0"))..| 000051f0 8e 1e 6d 65 6e 69 63 25 3d 6d 65 6e 75 25 28 32 |..menic%=menu%(2| 00005200 30 29 2b 32 38 2b 28 36 2a 32 34 29 0d 02 8f 2e |0)+28+(6*24)....| 00005210 54 65 72 6d 69 6e 25 3d 6d 65 6e 69 63 25 21 31 |Termin%=menic%!1| 00005220 32 3a 6d 65 6e 69 63 25 21 31 36 3d 2d 31 3a 6d |2:menic%!16=-1:m| 00005230 65 6e 69 63 25 21 32 30 3d 33 0d 02 90 28 3f 6d |enic%!20=3...(?m| 00005240 65 6e 69 63 25 3d 3f 6d 65 6e 69 63 25 20 84 20 |enic%=?menic% . | 00005250 28 31 3c 3c 32 29 3a 24 54 65 72 6d 69 6e 25 3d |(1<<2):$Termin%=| 00005260 22 22 0d 02 91 c6 73 74 72 69 6e 67 24 3d 22 50 |""....string$="P| 00005270 72 69 6e 74 2c 4d 61 74 63 68 2c 53 68 6f 77 20 |rint,Match,Show | 00005280 72 65 73 6f 75 72 63 65 73 2c 53 68 6f 77 20 6a |resources,Show j| 00005290 6f 62 73 20 64 6f 6e 65 2c 4f 70 74 69 6f 6e 73 |obs done,Options| 000052a0 2e 2e 2e 2c 53 61 76 65 20 6f 70 74 69 6f 6e 73 |...,Save options| 000052b0 21 22 2b c3 28 73 61 76 65 57 25 29 2b 22 2c 53 |!"+.(saveW%)+",S| 000052c0 61 76 65 20 71 75 65 72 79 21 22 2b c3 28 73 61 |ave query!"+.(sa| 000052d0 76 65 57 25 29 2b 22 2c 7e 4e 75 6d 65 72 69 63 |veW%)+",~Numeric| 000052e0 20 66 69 65 6c 64 73 3e 22 2b c3 28 70 73 65 6c | fields>"+.(psel| 000052f0 65 63 74 57 25 29 2b 22 2c 7e 53 61 76 65 20 73 |ectW%)+",~Save s| 00005300 65 6c 65 63 74 69 6f 6e 21 22 2b c3 28 73 61 76 |election!"+.(sav| 00005310 65 57 25 29 2b 22 2c 7e 43 6c 65 61 72 20 73 65 |eW%)+",~Clear se| 00005320 6c 65 63 74 69 6f 6e 22 0d 02 92 3e 6d 65 6e 75 |lection"...>menu| 00005330 25 28 36 29 3d a4 63 72 65 61 74 65 5f 6d 65 6e |%(6)=.create_men| 00005340 75 28 6d 65 6e 75 5f 70 74 72 25 2c 32 36 30 2c |u(menu_ptr%,260,| 00005350 73 74 72 69 6e 67 24 2b 22 2c 53 65 6c 65 63 74 |string$+",Select| 00005360 20 61 6c 6c 22 29 0d 02 93 7a 73 74 72 69 6e 67 | all")...zstring| 00005370 24 3d 22 50 6f 77 65 72 62 61 73 65 2c 49 6e 66 |$="Powerbase,Inf| 00005380 6f 72 6d 61 74 69 6f 6e 21 22 2b c3 28 6d 69 73 |ormation!"+.(mis| 00005390 63 57 25 29 2b 22 2c 46 69 65 6c 64 3a 20 27 27 |cW%)+",Field: ''| 000053a0 3e 22 2b c3 28 6d 65 6e 75 25 28 31 30 29 29 2b |>"+.(menu%(10))+| 000053b0 22 2c 50 72 69 6e 74 3e 22 2b c3 28 6d 65 6e 75 |",Print>"+.(menu| 000053c0 25 28 36 29 29 2b 22 2c 56 61 6c 69 64 61 74 69 |%(6))+",Validati| 000053d0 6f 6e 3e 22 2b c3 28 6d 65 6e 75 25 28 32 29 29 |on>"+.(menu%(2))| 000053e0 0d 02 94 b1 73 74 72 69 6e 67 32 24 3d 22 2c 43 |....string2$=",C| 000053f0 75 72 72 65 6e 74 20 6b 65 79 2e 2e 2e 2c 4d 69 |urrent key...,Mi| 00005400 73 63 65 6c 6c 61 6e 65 6f 75 73 3e 22 2b c3 28 |scellaneous>"+.(| 00005410 6d 65 6e 75 25 28 37 29 29 2b 22 2c 53 68 6f 77 |menu%(7))+",Show| 00005420 20 6b 65 79 70 61 64 2c 45 78 70 6f 72 74 20 73 | keypad,Export s| 00005430 75 62 73 65 74 21 22 2b c3 28 73 61 76 65 73 75 |ubset!"+.(savesu| 00005440 62 57 25 29 2b 22 2c 45 78 70 6f 72 74 20 43 53 |bW%)+",Export CS| 00005450 56 21 22 2b c3 28 73 61 76 65 73 75 62 57 25 29 |V!"+.(savesubW%)| 00005460 2b 22 2c 43 53 56 20 6f 70 74 69 6f 6e 73 2e 2e |+",CSV options..| 00005470 2e 2c 53 61 76 65 20 63 68 6f 69 63 65 73 2c 55 |.,Save choices,U| 00005480 6e 64 6f 20 63 68 61 6e 67 65 73 2c 48 65 6c 70 |ndo changes,Help| 00005490 22 0d 02 95 39 6d 65 6e 75 25 28 31 29 3d a4 63 |"...9menu%(1)=.c| 000054a0 72 65 61 74 65 5f 6d 65 6e 75 28 6d 65 6e 75 5f |reate_menu(menu_| 000054b0 70 74 72 25 2c 32 33 36 2c 73 74 72 69 6e 67 24 |ptr%,236,string$| 000054c0 2b 73 74 72 69 6e 67 32 24 29 0d 02 96 23 46 69 |+string2$)...#Fi| 000054d0 65 6c 64 70 6f 73 25 3d 6d 65 6e 75 25 28 31 29 |eldpos%=menu%(1)| 000054e0 2b 32 38 2b 28 31 2a 32 34 29 2b 31 32 0d 02 97 |+28+(1*24)+12...| 000054f0 4a 6d 65 6e 75 25 28 34 29 3d a4 63 72 65 61 74 |Jmenu%(4)=.creat| 00005500 65 5f 6d 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 |e_menu(menu_ptr%| 00005510 2c 32 30 30 2c 22 50 72 69 6e 74 20 74 72 65 65 |,200,"Print tree| 00005520 2c 43 6f 6d 70 6c 65 74 65 2c 54 6f 74 61 6c 73 |,Complete,Totals| 00005530 20 6f 6e 6c 79 22 29 0d 02 98 3c 6d 65 6e 75 25 | only")...<menu%| 00005540 28 32 32 29 3d a4 63 72 65 61 74 65 5f 6d 65 6e |(22)=.create_men| 00005550 75 28 6d 65 6e 75 5f 70 74 72 25 2c 31 32 30 2c |u(menu_ptr%,120,| 00005560 22 45 76 65 72 79 3a 2c 22 2b c4 31 33 2c 22 30 |"Every:,"+.13,"0| 00005570 22 29 29 0d 02 99 17 6d 65 6e 69 63 25 3d 6d 65 |"))....menic%=me| 00005580 6e 75 25 28 32 32 29 2b 32 38 0d 02 9a 3b 45 76 |nu%(22)+28...;Ev| 00005590 65 72 79 25 3d 6d 65 6e 69 63 25 21 31 32 3a 6d |ery%=menic%!12:m| 000055a0 65 6e 69 63 25 21 31 36 3d 62 75 66 66 25 3a 24 |enic%!16=buff%:$| 000055b0 62 75 66 66 25 3d 22 41 30 2d 39 22 3a 62 75 66 |buff%="A0-9":buf| 000055c0 66 25 2b 3d 35 0d 02 9b 2e 3f 6d 65 6e 69 63 25 |f%+=5....?menic%| 000055d0 3d 3f 6d 65 6e 69 63 25 20 84 20 28 31 3c 3c 32 |=?menic% . (1<<2| 000055e0 29 3a 24 45 76 65 72 79 25 3d 22 32 35 20 72 65 |):$Every%="25 re| 000055f0 63 73 22 0d 02 9c 58 6d 65 6e 75 25 28 32 31 29 |cs"...Xmenu%(21)| 00005600 3d a4 63 72 65 61 74 65 5f 6d 65 6e 75 28 6d 65 |=.create_menu(me| 00005610 6e 75 5f 70 74 72 25 2c 31 36 30 2c 22 42 61 6c |nu_ptr%,160,"Bal| 00005620 61 6e 63 65 2c 41 75 74 6f 6d 61 74 69 63 3e 22 |ance,Automatic>"| 00005630 2b c3 28 6d 65 6e 75 25 28 32 32 29 29 2b 22 2c |+.(menu%(22))+",| 00005640 52 69 67 68 74 20 6e 6f 77 22 29 0d 02 9d f1 6d |Right now")....m| 00005650 65 6e 75 25 28 33 29 3d a4 63 72 65 61 74 65 5f |enu%(3)=.create_| 00005660 6d 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 2c 33 |menu(menu_ptr%,3| 00005670 30 30 2c 22 55 74 69 6c 69 74 69 65 73 2c 4e 65 |00,"Utilities,Ne| 00005680 77 20 70 72 69 6d 61 72 79 20 6b 65 79 2e 2e 2e |w primary key...| 00005690 2c 41 64 6a 75 73 74 20 66 6f 72 6d 61 74 2c 4e |,Adjust format,N| 000056a0 65 77 20 72 65 63 6f 72 64 20 66 6f 72 6d 61 74 |ew record format| 000056b0 2c 4d 65 72 67 65 20 64 61 74 61 62 61 73 65 2c |,Merge database,| 000056c0 7e 43 68 61 6e 67 65 20 6c 65 6e 67 74 68 3e 22 |~Change length>"| 000056d0 2b c3 28 73 69 7a 65 57 25 29 2b 22 2c 42 61 6c |+.(sizeW%)+",Bal| 000056e0 61 6e 63 65 20 69 6e 64 65 78 3e 22 2b c3 28 6d |ance index>"+.(m| 000056f0 65 6e 75 25 28 32 31 29 29 2b 22 2c 50 72 69 6e |enu%(21))+",Prin| 00005700 74 20 69 6e 64 65 78 3e 22 2b c3 28 6d 65 6e 75 |t index>"+.(menu| 00005710 25 28 34 29 29 2b 22 2c 46 69 6e 64 20 64 75 70 |%(4))+",Find dup| 00005720 6c 69 63 61 74 65 73 2c 57 61 72 6e 20 6f 66 20 |licates,Warn of | 00005730 64 75 70 6c 69 63 61 74 65 73 22 29 0d 02 9e ce |duplicates")....| 00005740 6d 65 6e 75 25 28 30 29 3d a4 63 72 65 61 74 65 |menu%(0)=.create| 00005750 5f 6d 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 2c |_menu(menu_ptr%,| 00005760 32 36 36 2c 22 5c 50 6f 77 65 72 62 61 73 65 2c |266,"\Powerbase,| 00005770 49 6e 66 6f 72 6d 61 74 69 6f 6e 3e 22 2b c3 28 |Information>"+.(| 00005780 69 6e 66 6f 57 25 29 2b 22 2c 4e 65 77 20 64 61 |infoW%)+",New da| 00005790 74 61 62 61 73 65 21 22 2b c3 28 73 61 76 65 57 |tabase!"+.(saveW| 000057a0 25 29 2b 22 2c 7e 55 74 69 6c 69 74 69 65 73 3e |%)+",~Utilities>| 000057b0 22 2b c3 28 6d 65 6e 75 25 28 33 29 29 2b 22 2c |"+.(menu%(3))+",| 000057c0 7e 43 6c 6f 73 65 20 64 61 74 61 62 61 73 65 2c |~Close database,| 000057d0 7e 41 62 61 6e 64 6f 6e 20 64 61 74 61 62 61 73 |~Abandon databas| 000057e0 65 2c 53 61 76 65 20 63 68 6f 69 63 65 73 2c 44 |e,Save choices,D| 000057f0 65 66 61 75 6c 74 20 63 68 6f 69 63 65 73 2c 48 |efault choices,H| 00005800 65 6c 70 2c 51 75 69 74 22 29 0d 02 9f b2 6d 65 |elp,Quit")....me| 00005810 6e 75 25 28 39 29 3d a4 63 72 65 61 74 65 5f 6d |nu%(9)=.create_m| 00005820 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 2c 32 37 |enu(menu_ptr%,27| 00005830 30 2c 22 4e 65 77 20 64 61 74 61 62 61 73 65 2c |0,"New database,| 00005840 44 65 73 69 67 6e 20 66 69 65 6c 64 2e 2e 2e 2c |Design field...,| 00005850 7e 5f 44 65 66 61 75 6c 74 20 64 61 74 61 62 61 |~_Default databa| 00005860 73 65 2c 7e 53 61 76 65 20 66 6f 72 6d 20 66 69 |se,~Save form fi| 00005870 6c 65 21 22 2b c3 28 73 61 76 65 57 25 29 2b 22 |le!"+.(saveW%)+"| 00005880 2c 7e 44 61 74 61 62 61 73 65 20 73 69 7a 65 3e |,~Database size>| 00005890 22 2b c3 28 73 69 7a 65 57 25 29 2b 22 2c 7e 50 |"+.(sizeW%)+",~P| 000058a0 72 69 6d 61 72 79 20 6b 65 79 2e 2e 2e 2c 7e 51 |rimary key...,~Q| 000058b0 75 69 74 20 64 65 73 69 67 6e 22 29 0d 02 a0 6a |uit design")...j| 000058c0 6d 65 6e 75 25 28 31 37 29 3d a4 63 72 65 61 74 |menu%(17)=.creat| 000058d0 65 5f 6d 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 |e_menu(menu_ptr%| 000058e0 2c 32 30 30 2c 22 54 61 62 6c 65 2c 43 6c 65 61 |,200,"Table,Clea| 000058f0 72 2c 53 61 76 65 21 22 2b c3 28 73 61 76 65 57 |r,Save!"+.(saveW| 00005900 25 29 2b 22 2c 50 72 69 6e 74 2c 53 6f 72 74 2c |%)+",Print,Sort,| 00005910 55 6e 64 6f 20 63 68 61 6e 67 65 2c 55 6e 64 6f |Undo change,Undo| 00005920 20 61 6c 6c 22 29 0d 02 a1 56 6d 65 6e 75 25 28 | all")...Vmenu%(| 00005930 31 38 29 3d a4 63 72 65 61 74 65 5f 6d 65 6e 75 |18)=.create_menu| 00005940 28 6d 65 6e 75 5f 70 74 72 25 2c 32 35 30 2c 22 |(menu_ptr%,250,"| 00005950 4c 69 73 74 2c 53 61 76 65 20 61 73 20 74 65 78 |List,Save as tex| 00005960 74 21 22 2b c3 28 73 61 76 65 57 25 29 2b 22 2c |t!"+.(saveW%)+",| 00005970 53 6f 72 74 2c 53 63 72 61 70 22 29 0d 02 a2 10 |Sort,Scrap")....| 00005980 6d 65 6e 75 24 3d 22 44 61 74 61 22 0d 02 a3 0e |menu$="Data"....| 00005990 e3 20 49 25 3d 30 20 b8 20 38 0d 02 a4 1b 20 20 |. I%=0 . 8.... | 000059a0 6d 65 6e 75 24 2b 3d 22 2c 22 2b 76 6e 61 6d 65 |menu$+=","+vname| 000059b0 24 28 49 25 29 0d 02 a5 08 ed 20 49 25 0d 02 a6 |$(I%)..... I%...| 000059c0 42 6d 65 6e 75 25 28 38 29 3d a4 63 72 65 61 74 |Bmenu%(8)=.creat| 000059d0 65 5f 6d 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 |e_menu(menu_ptr%| 000059e0 2c 32 30 30 2c 6d 65 6e 75 24 29 3a f2 74 69 63 |,200,menu$):.tic| 000059f0 6b 28 6d 65 6e 75 25 28 38 29 2c 31 2c b9 29 0d |k(menu%(8),1,.).| 00005a00 02 a7 14 6d 65 6e 75 24 3d 22 45 78 74 65 72 6e |...menu$="Extern| 00005a10 61 6c 22 0d 02 a8 10 e3 20 49 25 3d 33 36 20 b8 |al"..... I%=36 .| 00005a20 20 34 30 0d 02 a9 1b 20 20 6d 65 6e 75 24 2b 3d | 40.... menu$+=| 00005a30 22 2c 22 2b 76 6e 61 6d 65 24 28 49 25 29 0d 02 |","+vname$(I%)..| 00005a40 aa 08 ed 20 49 25 0d 02 ab 44 6d 65 6e 75 25 28 |... I%...Dmenu%(| 00005a50 31 31 29 3d a4 63 72 65 61 74 65 5f 6d 65 6e 75 |11)=.create_menu| 00005a60 28 6d 65 6e 75 5f 70 74 72 25 2c 31 38 30 2c 6d |(menu_ptr%,180,m| 00005a70 65 6e 75 24 29 3a f2 74 69 63 6b 28 6d 65 6e 75 |enu$):.tick(menu| 00005a80 25 28 31 31 29 2c 30 2c b9 29 0d 02 ac 15 6d 65 |%(11),0,.)....me| 00005a90 6e 75 24 3d 22 43 68 65 63 6b 20 62 6f 78 22 0d |nu$="Check box".| 00005aa0 02 ad 10 e3 20 49 25 3d 34 31 20 b8 20 34 35 0d |.... I%=41 . 45.| 00005ab0 02 ae 1b 20 20 6d 65 6e 75 24 2b 3d 22 2c 22 2b |... menu$+=","+| 00005ac0 76 6e 61 6d 65 24 28 49 25 29 0d 02 af 08 ed 20 |vname$(I%)..... | 00005ad0 49 25 0d 02 b0 44 6d 65 6e 75 25 28 31 34 29 3d |I%...Dmenu%(14)=| 00005ae0 a4 63 72 65 61 74 65 5f 6d 65 6e 75 28 6d 65 6e |.create_menu(men| 00005af0 75 5f 70 74 72 25 2c 31 38 30 2c 6d 65 6e 75 24 |u_ptr%,180,menu$| 00005b00 29 3a f2 74 69 63 6b 28 6d 65 6e 75 25 28 31 34 |):.tick(menu%(14| 00005b10 29 2c 30 2c b9 29 0d 02 b1 11 6d 65 6e 75 24 3d |),0,.)....menu$=| 00005b20 22 53 74 61 6d 70 22 0d 02 b2 10 e3 20 49 25 3d |"Stamp"..... I%=| 00005b30 34 36 20 b8 20 35 39 0d 02 b3 1b 20 20 6d 65 6e |46 . 59.... men| 00005b40 75 24 2b 3d 22 2c 22 2b 76 6e 61 6d 65 24 28 49 |u$+=","+vname$(I| 00005b50 25 29 0d 02 b4 08 ed 20 49 25 0d 02 b5 44 6d 65 |%)..... I%...Dme| 00005b60 6e 75 25 28 31 36 29 3d a4 63 72 65 61 74 65 5f |nu%(16)=.create_| 00005b70 6d 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 2c 32 |menu(menu_ptr%,2| 00005b80 35 30 2c 6d 65 6e 75 24 29 3a f2 74 69 63 6b 28 |50,menu$):.tick(| 00005b90 6d 65 6e 75 25 28 31 36 29 2c 30 2c b9 29 0d 02 |menu%(16),0,.)..| 00005ba0 b6 12 6d 65 6e 75 24 3d 22 42 75 74 74 6f 6e 22 |..menu$="Button"| 00005bb0 0d 02 b7 0f e3 20 49 25 3d 39 20 b8 20 33 35 0d |..... I%=9 . 35.| 00005bc0 02 b8 1b 20 20 6d 65 6e 75 24 2b 3d 22 2c 22 2b |... menu$+=","+| 00005bd0 76 6e 61 6d 65 24 28 49 25 29 0d 02 b9 08 ed 20 |vname$(I%)..... | 00005be0 49 25 0d 02 ba 44 6d 65 6e 75 25 28 31 39 29 3d |I%...Dmenu%(19)=| 00005bf0 a4 63 72 65 61 74 65 5f 6d 65 6e 75 28 6d 65 6e |.create_menu(men| 00005c00 75 5f 70 74 72 25 2c 32 37 30 2c 6d 65 6e 75 24 |u_ptr%,270,menu$| 00005c10 29 3a f2 74 69 63 6b 28 6d 65 6e 75 25 28 31 39 |):.tick(menu%(19| 00005c20 29 2c 30 2c b9 29 0d 02 bb 11 79 62 61 72 25 3d |),0,.)....ybar%=| 00005c30 39 36 2b 39 2a 34 34 0d 02 bc 05 e1 0d 02 bd 05 |96+9*44.........| 00005c40 3a 0d 02 be 1b dd 20 f2 66 69 65 6c 64 5f 6d 65 |:..... .field_me| 00005c50 6e 75 28 6d 65 6e 75 25 2c 4e 25 29 0d 02 bf 14 |nu(menu%,N%)....| 00005c60 ea 20 46 25 2c 50 25 2c 4c 25 2c 44 24 2c 46 24 |. F%,P%,L%,D$,F$| 00005c70 0d 02 c0 17 24 6d 65 6e 75 25 3d 22 46 69 65 6c |....$menu%="Fiel| 00005c80 64 20 6c 69 73 74 22 0d 02 c1 53 6d 65 6e 75 25 |d list"...Smenu%| 00005c90 3f 31 32 3d 37 3a 6d 65 6e 75 25 3f 31 33 3d 32 |?12=7:menu%?13=2| 00005ca0 3a 6d 65 6e 75 25 3f 31 34 3d 37 3a 6d 65 6e 75 |:menu%?14=7:menu| 00005cb0 25 3f 31 35 3d 30 3a 6d 65 6e 75 25 21 31 36 3d |%?15=0:menu%!16=| 00005cc0 32 37 30 3a 6d 65 6e 75 25 21 32 30 3d 34 34 3a |270:menu%!20=44:| 00005cd0 6d 65 6e 75 25 21 32 34 3d 30 0d 02 c2 0f 50 25 |menu%!24=0....P%| 00005ce0 3d 6d 65 6e 75 25 2b 32 38 0d 02 c3 0f e3 20 46 |=menu%+28..... F| 00005cf0 25 3d 31 20 b8 20 4e 25 0d 02 c4 22 20 20 46 24 |%=1 . N%..." F$| 00005d00 3d c3 28 46 25 29 3a 46 24 3d c4 33 2d a9 28 46 |=.(F%):F$=.3-.(F| 00005d10 24 29 2c 22 20 22 29 2b 46 24 0d 02 c5 37 20 20 |$)," ")+F$...7 | 00005d20 44 24 3d c0 24 a4 74 65 78 74 28 6d 61 69 6e 57 |D$=.$.text(mainW| 00005d30 25 2c 64 65 73 63 25 28 46 25 29 29 2c 37 29 3a |%,desc%(F%)),7):| 00005d40 44 24 2b 3d c4 37 2d a9 28 44 24 29 2c 22 20 22 |D$+=.7-.(D$)," "| 00005d50 29 0d 02 c6 26 20 20 46 24 2b 3d 22 20 22 2b 44 |)...& F$+=" "+D| 00005d60 24 2b 22 20 22 2b 54 61 67 24 28 46 25 29 3a 4c |$+" "+Tag$(F%):L| 00005d70 25 3d a9 28 46 24 29 0d 02 c7 41 20 20 21 50 25 |%=.(F$)...A !P%| 00005d80 3d 30 3a 50 25 21 34 3d 2d 31 3a 50 25 21 38 3d |=0:P%!4=-1:P%!8=| 00005d90 26 37 30 30 30 31 32 31 3a 50 25 21 31 32 3d 62 |&7000121:P%!12=b| 00005da0 75 66 66 25 3a 50 25 21 31 36 3d 2d 31 3a 50 25 |uff%:P%!16=-1:P%| 00005db0 21 32 30 3d 4c 25 2b 31 0d 02 c8 1b 20 20 24 62 |!20=L%+1.... $b| 00005dc0 75 66 66 25 3d 46 24 3a 62 75 66 66 25 2b 3d 4c |uff%=F$:buff%+=L| 00005dd0 25 2b 31 0d 02 c9 0c 20 20 50 25 2b 3d 32 34 0d |%+1.... P%+=24.| 00005de0 02 ca 08 ed 20 46 25 0d 02 cb 17 50 25 21 2d 32 |.... F%....P%!-2| 00005df0 34 3d 50 25 21 2d 32 34 20 84 20 26 38 30 0d 02 |4=P%!-24 . &80..| 00005e00 cc 05 e1 0d 02 cd 05 3a 0d 02 ce 28 dd 20 a4 63 |.......:...(. .c| 00005e10 72 65 61 74 65 5f 6d 65 6e 75 28 f8 20 6d 65 6e |reate_menu(. men| 00005e20 75 25 2c 77 69 64 74 68 25 2c 6c 69 73 74 24 29 |u%,width%,list$)| 00005e30 0d 02 cf 34 ea 20 73 74 61 72 74 25 2c 63 68 6f |...4. start%,cho| 00005e40 69 63 65 24 2c 65 6e 74 72 69 65 73 25 2c 69 74 |ice$,entries%,it| 00005e50 65 6d 25 2c 50 25 2c 51 25 2c 53 25 2c 73 68 61 |em%,P%,Q%,S%,sha| 00005e60 64 65 64 25 0d 02 d0 10 73 74 61 72 74 25 3d 6d |ded%....start%=m| 00005e70 65 6e 75 25 0d 02 d1 41 e7 20 c0 6c 69 73 74 24 |enu%...A. .list$| 00005e80 2c 31 29 3d 22 5c 22 20 80 20 28 52 49 53 43 4f |,1)="\" . (RISCO| 00005e90 53 33 3d a3 20 84 20 6c 65 66 74 6d 65 6e 75 25 |S3=. . leftmenu%| 00005ea0 3d a3 29 20 8c 20 6c 69 73 74 24 3d c1 6c 69 73 |=.) . list$=.lis| 00005eb0 74 24 2c 32 29 0d 02 d2 12 50 25 3d a7 6c 69 73 |t$,2)....P%=.lis| 00005ec0 74 24 2c 22 2c 22 29 0d 02 d3 17 24 6d 65 6e 75 |t$,",")....$menu| 00005ed0 25 3d c0 6c 69 73 74 24 2c 50 25 2d 31 29 0d 02 |%=.list$,P%-1)..| 00005ee0 d4 19 6d 65 6e 75 25 3f 31 32 3d 37 3a 6d 65 6e |..menu%?12=7:men| 00005ef0 75 25 3f 31 33 3d 32 0d 02 d5 19 6d 65 6e 75 25 |u%?13=2....menu%| 00005f00 3f 31 34 3d 37 3a 6d 65 6e 75 25 3f 31 35 3d 30 |?14=7:menu%?15=0| 00005f10 0d 02 d6 2a 6d 65 6e 75 25 21 31 36 3d 77 69 64 |...*menu%!16=wid| 00005f20 74 68 25 3a 6d 65 6e 75 25 21 32 30 3d 34 34 3a |th%:menu%!20=44:| 00005f30 6d 65 6e 75 25 21 32 34 3d 30 0d 02 d7 12 69 74 |menu%!24=0....it| 00005f40 65 6d 25 3d 6d 65 6e 75 25 2b 32 38 0d 02 d8 0e |em%=menu%+28....| 00005f50 6c 69 73 74 24 2b 3d 22 2c 22 0d 02 d9 0e 65 6e |list$+=","....en| 00005f60 74 72 69 65 73 25 3d 30 0d 02 da 05 f5 0d 02 db |tries%=0........| 00005f70 0d 20 20 51 25 3d 50 25 2b 31 0d 02 dc 17 20 20 |. Q%=P%+1.... | 00005f80 50 25 3d a7 6c 69 73 74 24 2c 22 2c 22 2c 51 25 |P%=.list$,",",Q%| 00005f90 29 0d 02 dd 0e 20 20 e7 20 50 25 3e 30 20 8c 0d |).... . P%>0 ..| 00005fa0 02 de 1a 20 20 20 20 21 69 74 65 6d 25 3d 30 3a |... !item%=0:| 00005fb0 73 68 61 64 65 64 25 3d 30 0d 02 df 20 20 20 20 |shaded%=0... | 00005fc0 20 63 68 6f 69 63 65 24 3d c1 6c 69 73 74 24 2c | choice$=.list$,| 00005fd0 51 25 2c 50 25 2d 51 25 29 0d 02 e0 3f 20 20 20 |Q%,P%-Q%)...? | 00005fe0 20 e7 20 c0 63 68 6f 69 63 65 24 2c 31 29 3d 22 | . .choice$,1)="| 00005ff0 7e 22 20 8c 20 63 68 6f 69 63 65 24 3d c1 63 68 |~" . choice$=.ch| 00006000 6f 69 63 65 24 2c 32 29 3a 73 68 61 64 65 64 25 |oice$,2):shaded%| 00006010 3d 28 31 3c 3c 32 32 29 0d 02 e1 41 20 20 20 20 |=(1<<22)...A | 00006020 e7 20 c0 63 68 6f 69 63 65 24 2c 31 29 3d 22 5f |. .choice$,1)="_| 00006030 22 20 8c 20 63 68 6f 69 63 65 24 3d c1 63 68 6f |" . choice$=.cho| 00006040 69 63 65 24 2c 32 29 3a 3f 69 74 65 6d 25 3d 3f |ice$,2):?item%=?| 00006050 69 74 65 6d 25 20 84 20 32 0d 02 e2 18 20 20 20 |item% . 2.... | 00006060 20 53 25 3d a7 63 68 6f 69 63 65 24 2c 22 21 22 | S%=.choice$,"!"| 00006070 29 0d 02 e3 35 20 20 20 20 e7 20 53 25 3e 30 20 |)...5 . S%>0 | 00006080 8c 20 3f 69 74 65 6d 25 3d 3f 69 74 65 6d 25 20 |. ?item%=?item% | 00006090 84 20 38 3a c1 63 68 6f 69 63 65 24 2c 53 25 2c |. 8:.choice$,S%,| 000060a0 31 29 3d 22 3e 22 0d 02 e4 18 20 20 20 20 53 25 |1)=">".... S%| 000060b0 3d a7 63 68 6f 69 63 65 24 2c 22 3e 22 29 0d 02 |=.choice$,">")..| 000060c0 e5 10 20 20 20 20 e7 20 53 25 3d 30 20 8c 0d 02 |.. . S%=0 ...| 000060d0 e6 14 20 20 20 20 20 20 69 74 65 6d 25 21 34 3d |.. item%!4=| 000060e0 2d 31 0d 02 e7 0b 20 20 20 20 20 20 cc 0d 02 e8 |-1.... ....| 000060f0 23 20 20 20 20 20 20 69 74 65 6d 25 21 34 3d bb |# item%!4=.| 00006100 28 c1 63 68 6f 69 63 65 24 2c 53 25 2b 31 29 29 |(.choice$,S%+1))| 00006110 0d 02 e9 20 20 20 20 20 20 20 63 68 6f 69 63 65 |... choice| 00006120 24 3d c0 63 68 6f 69 63 65 24 2c 53 25 2d 31 29 |$=.choice$,S%-1)| 00006130 0d 02 ea 09 20 20 20 20 cd 0d 02 eb 1a 20 20 20 |.... ..... | 00006140 20 e7 20 a9 28 63 68 6f 69 63 65 24 29 3c 3d 31 | . .(choice$)<=1| 00006150 32 20 8c 0d 02 ec 1d 20 20 20 20 20 20 24 28 69 |2 ..... $(i| 00006160 74 65 6d 25 2b 31 32 29 3d 63 68 6f 69 63 65 24 |tem%+12)=choice$| 00006170 0d 02 ed 1a 20 20 20 20 20 20 69 74 65 6d 25 21 |.... item%!| 00006180 38 3d 26 37 30 30 30 30 32 31 0d 02 ee 0b 20 20 |8=&7000021.... | 00006190 20 20 20 20 cc 0d 02 ef 19 20 20 20 20 20 20 4c | ..... L| 000061a0 25 3d a9 28 63 68 6f 69 63 65 24 29 2b 31 0d 02 |%=.(choice$)+1..| 000061b0 f0 49 20 20 20 20 20 20 69 74 65 6d 25 21 31 32 |.I item%!12| 000061c0 3d 62 75 66 66 25 3a 24 62 75 66 66 25 3d 63 68 |=buff%:$buff%=ch| 000061d0 6f 69 63 65 24 3a 62 75 66 66 25 2b 3d 4c 25 3a |oice$:buff%+=L%:| 000061e0 69 74 65 6d 25 21 31 36 3d 2d 31 3a 69 74 65 6d |item%!16=-1:item| 000061f0 25 21 32 30 3d 4c 25 0d 02 f1 1a 20 20 20 20 20 |%!20=L%.... | 00006200 20 69 74 65 6d 25 21 38 3d 26 37 30 30 30 31 32 | item%!8=&700012| 00006210 31 0d 02 f2 09 20 20 20 20 cd 0d 02 f3 21 20 20 |1.... ....! | 00006220 20 20 69 74 65 6d 25 21 38 3d 69 74 65 6d 25 21 | item%!8=item%!| 00006230 38 20 84 20 73 68 61 64 65 64 25 0d 02 f4 11 20 |8 . shaded%.... | 00006240 20 20 20 69 74 65 6d 25 2b 3d 32 34 0d 02 f5 13 | item%+=24....| 00006250 20 20 20 20 65 6e 74 72 69 65 73 25 2b 3d 31 0d | entries%+=1.| 00006260 02 f6 07 20 20 cd 0d 02 f7 0a fd 20 50 25 3d 30 |... ...... P%=0| 00006270 0d 02 f8 1d 69 74 65 6d 25 21 2d 32 34 3d 69 74 |....item%!-24=it| 00006280 65 6d 25 21 2d 32 34 20 84 20 26 38 30 0d 02 f9 |em%!-24 . &80...| 00006290 0f 6d 65 6e 75 25 3d 69 74 65 6d 25 0d 02 fa 51 |.menu%=item%...Q| 000062a0 e7 20 6d 65 6e 75 25 3e 6d 65 6e 5f 65 6e 64 25 |. menu%>men_end%| 000062b0 20 8c 20 85 20 a2 20 30 2c 22 4e 6f 74 20 65 6e | . . . 0,"Not en| 000062c0 6f 75 67 68 20 72 6f 6f 6d 20 66 6f 72 20 6d 65 |ough room for me| 000062d0 6e 75 73 20 28 69 6e 74 65 72 6e 61 6c 20 65 72 |nus (internal er| 000062e0 72 6f 72 20 63 6f 64 65 20 35 30 29 22 0d 02 fb |ror code 50)"...| 000062f0 0b 3d 73 74 61 72 74 25 0d 02 fc 05 3a 0d 02 fd |.=start%....:...| 00006300 1c dd 20 f2 74 69 63 6b 28 6d 65 6e 75 25 2c 69 |.. .tick(menu%,i| 00006310 74 65 6d 25 2c 6f 6e 25 29 0d 02 fe 1b 69 74 65 |tem%,on%)....ite| 00006320 6d 25 3d 6d 65 6e 75 25 2b 32 38 2b 69 74 65 6d |m%=menu%+28+item| 00006330 25 2a 32 34 0d 02 ff 0c c8 8e 20 6f 6e 25 20 ca |%*24...... on% .| 00006340 0d 03 00 1b 20 20 c9 20 b9 3a 3f 69 74 65 6d 25 |.... . .:?item%| 00006350 3d 3f 69 74 65 6d 25 20 84 20 31 0d 03 01 1d 20 |=?item% . 1.... | 00006360 20 c9 20 a3 3a 3f 69 74 65 6d 25 3d 3f 69 74 65 | . .:?item%=?ite| 00006370 6d 25 20 80 20 32 35 34 0d 03 02 05 cb 0d 03 03 |m% . 254........| 00006380 05 e1 0d 03 04 05 3a 0d 03 05 29 dd 20 f2 74 69 |......:...). .ti| 00006390 63 6b 5f 6f 6e 65 28 6d 65 6e 75 25 2c 66 69 72 |ck_one(menu%,fir| 000063a0 73 74 25 2c 6c 61 73 74 25 2c 69 74 65 6d 25 29 |st%,last%,item%)| 000063b0 0d 03 06 08 ea 20 49 25 0d 03 07 17 e3 20 49 25 |..... I%..... I%| 000063c0 3d 66 69 72 73 74 25 20 b8 20 6c 61 73 74 25 0d |=first% . last%.| 000063d0 03 08 20 20 20 f2 74 69 63 6b 28 6d 65 6e 75 25 |.. .tick(menu%| 000063e0 2c 49 25 2c 28 49 25 3d 69 74 65 6d 25 29 29 0d |,I%,(I%=item%)).| 000063f0 03 09 08 ed 20 49 25 0d 03 0a 05 e1 0d 03 0b 05 |.... I%.........| 00006400 3a 0d 03 0c 1a dd 20 a4 74 69 63 6b 65 64 28 6d |:..... .ticked(m| 00006410 65 6e 75 25 2c 69 74 65 6d 25 29 0d 03 0d 1b 69 |enu%,item%)....i| 00006420 74 65 6d 25 3d 6d 65 6e 75 25 2b 32 38 2b 69 74 |tem%=menu%+28+it| 00006430 65 6d 25 2a 32 34 0d 03 0e 1a e7 20 28 3f 69 74 |em%*24..... (?it| 00006440 65 6d 25 20 80 20 31 29 20 8c 3d b9 20 8b 3d a3 |em% . 1) .=. .=.| 00006450 0d 03 0f 05 3a 0d 03 10 1b dd 20 f2 6c 69 74 28 |....:..... .lit(| 00006460 6d 65 6e 75 25 2c 69 74 65 6d 25 2c 6f 6e 25 29 |menu%,item%,on%)| 00006470 0d 03 11 1b 69 74 65 6d 25 3d 6d 65 6e 75 25 2b |....item%=menu%+| 00006480 32 38 2b 69 74 65 6d 25 2a 32 34 0d 03 12 0c c8 |28+item%*24.....| 00006490 8e 20 6f 6e 25 20 ca 0d 03 13 26 20 20 c9 20 b9 |. on% ....& . .| 000064a0 3a 20 69 74 65 6d 25 21 38 3d 69 74 65 6d 25 21 |: item%!8=item%!| 000064b0 38 20 80 20 ac 20 28 31 3c 3c 32 32 29 0d 03 14 |8 . . (1<<22)...| 000064c0 24 20 20 c9 20 a3 3a 20 69 74 65 6d 25 21 38 3d |$ . .: item%!8=| 000064d0 69 74 65 6d 25 21 38 20 84 20 28 31 3c 3c 32 32 |item%!8 . (1<<22| 000064e0 29 0d 03 15 05 cb 0d 03 16 05 e1 0d 03 17 05 3a |)..............:| 000064f0 0d 03 18 1d dd 20 f2 73 68 6f 77 5f 6d 65 6e 75 |..... .show_menu| 00006500 28 6d 65 6e 75 25 2c 78 25 2c 79 25 29 0d 03 19 |(menu%,x%,y%)...| 00006510 29 6d 65 6e 75 68 61 6e 64 6c 65 25 3d 6d 65 6e |)menuhandle%=men| 00006520 75 25 3a 6d 65 6e 75 78 25 3d 78 25 3a 6d 65 6e |u%:menux%=x%:men| 00006530 75 79 25 3d 79 25 0d 03 1a 25 c8 99 20 22 57 69 |uy%=y%...%.. "Wi| 00006540 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c |mp_CreateMenu",,| 00006550 6d 65 6e 75 25 2c 78 25 2c 79 25 0d 03 1b 05 e1 |menu%,x%,y%.....| 00006560 0d 03 1c 05 3a 0d 03 1d 4b f4 20 49 63 6f 6e 20 |....:...K. Icon | 00006570 68 61 6e 64 6c 69 6e 67 20 2d 2d 2d 2d 2d 2d 2d |handling -------| 00006580 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000065b0 0d 03 1e 05 3a 0d 03 1f 54 dd 20 a4 63 72 65 61 |....:...T. .crea| 000065c0 74 65 5f 69 63 6f 6e 28 77 68 61 6e 64 6c 65 25 |te_icon(whandle%| 000065d0 2c 78 6d 69 6e 25 2c 79 6d 69 6e 25 2c 77 69 64 |,xmin%,ymin%,wid| 000065e0 74 68 25 2c 68 65 69 67 68 74 25 2c 69 63 6f 6e |th%,height%,icon| 000065f0 66 6c 61 67 73 25 2c 74 65 78 74 24 2c 64 31 25 |flags%,text$,d1%| 00006600 2c 64 32 25 2c 64 33 25 29 0d 03 20 0d ea 20 68 |,d2%,d3%).. .. h| 00006610 61 6e 64 6c 65 25 0d 03 21 15 62 6c 6f 63 6b 25 |andle%..!.block%| 00006620 21 30 3d 77 68 61 6e 64 6c 65 25 0d 03 22 21 62 |!0=whandle%.."!b| 00006630 6c 6f 63 6b 25 21 34 3d 78 6d 69 6e 25 3a 62 6c |lock%!4=xmin%:bl| 00006640 6f 63 6b 25 21 38 3d 79 6d 69 6e 25 0d 03 23 32 |ock%!8=ymin%..#2| 00006650 62 6c 6f 63 6b 25 21 31 32 3d 78 6d 69 6e 25 2b |block%!12=xmin%+| 00006660 77 69 64 74 68 25 3a 62 6c 6f 63 6b 25 21 31 36 |width%:block%!16| 00006670 3d 79 6d 69 6e 25 2b 68 65 69 67 68 74 25 0d 03 |=ymin%+height%..| 00006680 24 18 62 6c 6f 63 6b 25 21 32 30 3d 69 63 6f 6e |$.block%!20=icon| 00006690 66 6c 61 67 73 25 0d 03 25 0d e7 20 64 31 25 3d |flags%..%.. d1%=| 000066a0 30 20 8c 0d 03 26 18 20 20 24 28 62 6c 6f 63 6b |0 ...&. $(block| 000066b0 25 2b 32 34 29 3d 74 65 78 74 24 0d 03 27 07 20 |%+24)=text$..'. | 000066c0 20 cc 0d 03 28 13 20 20 62 6c 6f 63 6b 25 21 32 | ...(. block%!2| 000066d0 34 3d 64 31 25 0d 03 29 13 20 20 62 6c 6f 63 6b |4=d1%..). block| 000066e0 25 21 32 38 3d 64 32 25 0d 03 2a 13 20 20 62 6c |%!28=d2%..*. bl| 000066f0 6f 63 6b 25 21 33 32 3d 64 33 25 0d 03 2b 05 cd |ock%!32=d3%..+..| 00006700 0d 03 2c 2a c8 99 20 22 57 69 6d 70 5f 43 72 65 |..,*.. "Wimp_Cre| 00006710 61 74 65 49 63 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 |ateIcon",,block%| 00006720 20 b8 20 68 61 6e 64 6c 65 25 0d 03 2d 0c 3d 68 | . handle%..-.=h| 00006730 61 6e 64 6c 65 25 0d 03 2e 05 3a 0d 03 2f 1b dd |andle%....:../..| 00006740 20 f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 77 69 | .redraw_icon(wi| 00006750 25 2c 69 63 25 29 0d 03 30 1c 21 62 6c 6f 63 6b |%,ic%)..0.!block| 00006760 25 3d 77 69 25 3a 62 6c 6f 63 6b 25 21 34 3d 69 |%=wi%:block%!4=i| 00006770 63 25 0d 03 31 1a 62 6c 6f 63 6b 25 21 38 3d 30 |c%..1.block%!8=0| 00006780 3a 62 6c 6f 63 6b 25 21 31 32 3d 30 0d 03 32 22 |:block%!12=0..2"| 00006790 c8 99 20 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e |.. "Wimp_SetIcon| 000067a0 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 03 |State",,block%..| 000067b0 33 2a 62 6c 6f 63 6b 25 21 38 3d 30 3a 62 6c 6f |3*block%!8=0:blo| 000067c0 63 6b 25 21 31 32 3d 77 69 25 3a 62 6c 6f 63 6b |ck%!12=wi%:block| 000067d0 25 21 31 36 3d 69 63 25 0d 03 34 05 e1 0d 03 35 |%!16=ic%..4....5| 000067e0 05 3a 0d 03 36 21 dd 20 f2 69 63 6f 6e 5f 62 69 |.:..6!. .icon_bi| 000067f0 74 28 62 69 74 25 2c 77 69 25 2c 69 63 25 2c 6f |t(bit%,wi%,ic%,o| 00006800 6e 25 29 0d 03 37 0f 21 62 6c 6f 63 6b 25 3d 77 |n%)..7.!block%=w| 00006810 69 25 0d 03 38 10 62 6c 6f 63 6b 25 21 34 3d 69 |i%..8.block%!4=i| 00006820 63 25 0d 03 39 0c c8 8e 20 6f 6e 25 20 ca 0d 03 |c%..9... on% ...| 00006830 3a 26 20 20 c9 20 b9 3a 62 6c 6f 63 6b 25 21 38 |:& . .:block%!8| 00006840 3d 30 3a 62 6c 6f 63 6b 25 21 31 32 3d 31 3c 3c |=0:block%!12=1<<| 00006850 62 69 74 25 0d 03 3b 2c 20 20 c9 20 a3 3a 62 6c |bit%..;, . .:bl| 00006860 6f 63 6b 25 21 38 3d 31 3c 3c 62 69 74 25 3a 62 |ock%!8=1<<bit%:b| 00006870 6c 6f 63 6b 25 21 31 32 3d 31 3c 3c 62 69 74 25 |lock%!12=1<<bit%| 00006880 0d 03 3c 05 cb 0d 03 3d 22 c8 99 20 22 57 69 6d |..<....=".. "Wim| 00006890 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c |p_SetIconState",| 000068a0 2c 62 6c 6f 63 6b 25 0d 03 3e 05 e1 0d 03 3f 05 |,block%..>....?.| 000068b0 3a 0d 03 40 16 dd 20 f2 73 65 6c 65 63 74 28 77 |:..@.. .select(w| 000068c0 69 25 2c 69 63 25 29 0d 03 41 1c 21 62 6c 6f 63 |i%,ic%)..A.!bloc| 000068d0 6b 25 3d 77 69 25 3a 62 6c 6f 63 6b 25 21 34 3d |k%=wi%:block%!4=| 000068e0 69 63 25 0d 03 42 22 62 6c 6f 63 6b 25 21 38 3d |ic%..B"block%!8=| 000068f0 31 3c 3c 32 31 3a 62 6c 6f 63 6b 25 21 31 32 3d |1<<21:block%!12=| 00006900 31 3c 3c 32 31 0d 03 43 22 c8 99 20 22 57 69 6d |1<<21..C".. "Wim| 00006910 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c |p_SetIconState",| 00006920 2c 62 6c 6f 63 6b 25 0d 03 44 05 e1 0d 03 45 05 |,block%..D....E.| 00006930 3a 0d 03 46 18 dd 20 f2 64 65 73 65 6c 65 63 74 |:..F.. .deselect| 00006940 28 77 69 25 2c 69 63 25 29 0d 03 47 1c 21 62 6c |(wi%,ic%)..G.!bl| 00006950 6f 63 6b 25 3d 77 69 25 3a 62 6c 6f 63 6b 25 21 |ock%=wi%:block%!| 00006960 34 3d 69 63 25 0d 03 48 20 62 6c 6f 63 6b 25 21 |4=ic%..H block%!| 00006970 38 3d 30 3a 62 6c 6f 63 6b 25 21 31 32 3d 28 31 |8=0:block%!12=(1| 00006980 3c 3c 32 31 29 0d 03 49 22 c8 99 20 22 57 69 6d |<<21)..I".. "Wim| 00006990 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c |p_SetIconState",| 000069a0 2c 62 6c 6f 63 6b 25 0d 03 4a 05 e1 0d 03 4b 05 |,block%..J....K.| 000069b0 3a 0d 03 4c 16 dd 20 f2 69 6e 76 65 72 74 28 77 |:..L.. .invert(w| 000069c0 69 25 2c 69 63 25 29 0d 03 4d 40 e7 20 a4 73 65 |i%,ic%)..M@. .se| 000069d0 6c 65 63 74 65 64 28 77 69 25 2c 69 63 25 29 20 |lected(wi%,ic%) | 000069e0 8c 20 f2 64 65 73 65 6c 65 63 74 28 77 69 25 2c |. .deselect(wi%,| 000069f0 69 63 25 29 20 8b 20 f2 73 65 6c 65 63 74 28 77 |ic%) . .select(w| 00006a00 69 25 2c 69 63 25 29 0d 03 4e 05 e1 0d 03 4f 05 |i%,ic%)..N....O.| 00006a10 3a 0d 03 50 1c dd 20 f2 73 65 74 5f 69 63 6f 6e |:..P.. .set_icon| 00006a20 28 77 69 25 2c 69 63 25 2c 6f 6e 25 29 0d 03 51 |(wi%,ic%,on%)..Q| 00006a30 31 e7 20 6f 6e 25 20 8c 20 f2 73 65 6c 65 63 74 |1. on% . .select| 00006a40 28 77 69 25 2c 69 63 25 29 20 8b 20 f2 64 65 73 |(wi%,ic%) . .des| 00006a50 65 6c 65 63 74 28 77 69 25 2c 69 63 25 29 0d 03 |elect(wi%,ic%)..| 00006a60 52 05 e1 0d 03 53 05 3a 0d 03 54 18 dd 20 a4 73 |R....S.:..T.. .s| 00006a70 65 6c 65 63 74 65 64 28 77 69 25 2c 69 63 25 29 |elected(wi%,ic%)| 00006a80 0d 03 55 1c 21 62 6c 6f 63 6b 25 3d 77 69 25 3a |..U.!block%=wi%:| 00006a90 62 6c 6f 63 6b 25 21 34 3d 69 63 25 0d 03 56 22 |block%!4=ic%..V"| 00006aa0 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e |.. "Wimp_GetIcon| 00006ab0 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 03 |State",,block%..| 00006ac0 57 1e 3d 28 28 62 6c 6f 63 6b 25 21 32 34 29 20 |W.=((block%!24) | 00006ad0 80 20 28 31 3c 3c 32 31 29 29 3e 30 0d 03 58 05 |. (1<<21))>0..X.| 00006ae0 3a 0d 03 59 16 dd 20 a4 73 68 61 64 65 64 28 77 |:..Y.. .shaded(w| 00006af0 69 25 2c 69 63 25 29 0d 03 5a 1c 21 62 6c 6f 63 |i%,ic%)..Z.!bloc| 00006b00 6b 25 3d 77 69 25 3a 62 6c 6f 63 6b 25 21 34 3d |k%=wi%:block%!4=| 00006b10 69 63 25 0d 03 5b 22 c8 99 20 22 57 69 6d 70 5f |ic%..[".. "Wimp_| 00006b20 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 62 |GetIconState",,b| 00006b30 6c 6f 63 6b 25 0d 03 5c 1e 3d 28 28 62 6c 6f 63 |lock%..\.=((bloc| 00006b40 6b 25 21 32 34 29 20 80 20 28 31 3c 3c 32 32 29 |k%!24) . (1<<22)| 00006b50 29 3e 30 0d 03 5d 05 3b 0d 03 5e 1d dd 20 a4 73 |)>0..].;..^.. .s| 00006b60 65 6c 65 63 74 65 64 5f 65 73 67 28 77 69 25 2c |elected_esg(wi%,| 00006b70 65 73 67 25 29 0d 03 5f 41 c8 99 20 22 57 69 6d |esg%).._A.. "Wim| 00006b80 70 5f 57 68 69 63 68 49 63 6f 6e 22 2c 77 69 25 |p_WhichIcon",wi%| 00006b90 2c 62 6c 6f 63 6b 25 2c 26 30 30 33 46 30 30 30 |,block%,&003F000| 00006ba0 30 2c 26 30 30 32 30 30 30 30 30 2b 28 65 73 67 |0,&00200000+(esg| 00006bb0 25 3c 3c 31 36 29 0d 03 60 0c 3d 21 62 6c 6f 63 |%<<16)..`.=!bloc| 00006bc0 6b 25 0d 03 61 05 3a 0d 03 62 24 dd 20 a4 6e 65 |k%..a.:..b$. .ne| 00006bd0 78 74 5f 77 72 69 74 65 61 62 6c 65 28 77 69 25 |xt_writeable(wi%| 00006be0 2c 69 63 25 2c 64 25 2c 72 25 29 0d 03 63 11 ea |,ic%,d%,r%)..c..| 00006bf0 20 50 25 2c 45 25 2c 6e 65 78 74 25 0d 03 64 35 | P%,E%,next%..d5| 00006c00 c8 99 20 22 57 69 6d 70 5f 57 68 69 63 68 49 63 |.. "Wimp_WhichIc| 00006c10 6f 6e 22 2c 77 69 25 2c 62 6c 6f 63 6b 25 2c 26 |on",wi%,block%,&| 00006c20 30 30 43 30 45 30 30 30 2c 28 31 34 3c 3c 31 32 |00C0E000,(14<<12| 00006c30 29 0d 03 65 05 f5 0d 03 66 0b 20 20 45 25 2b 3d |)..e....f. E%+=| 00006c40 34 0d 03 67 12 fd 20 62 6c 6f 63 6b 25 21 45 25 |4..g.. block%!E%| 00006c50 3d 2d 31 0d 03 68 1d c8 95 20 62 6c 6f 63 6b 25 |=-1..h... block%| 00006c60 21 50 25 3c 3e 69 63 25 20 80 20 50 25 3c 45 25 |!P%<>ic% . P%<E%| 00006c70 0d 03 69 0b 20 20 50 25 2b 3d 34 0d 03 6a 05 ce |..i. P%+=4..j..| 00006c80 0d 03 6b 13 e7 20 50 25 3d 45 25 20 8c 20 50 25 |..k.. P%=E% . P%| 00006c90 2d 3d 34 0d 03 6c 18 e7 20 72 25 3d 31 20 80 20 |-=4..l.. r%=1 . | 00006ca0 50 25 2b 34 3d 45 25 20 8c 3d b9 0d 03 6d 0b c8 |P%+4=E% .=...m..| 00006cb0 8e 20 64 25 20 ca 0d 03 6e 0f 20 20 c9 20 30 3a |. d% ...n. . 0:| 00006cc0 50 25 3d 45 25 0d 03 6f 0f 20 20 c9 20 32 3a 50 |P%=E%..o. . 2:P| 00006cd0 25 3d 2d 34 0d 03 70 10 20 20 7f 3a 50 25 2b 3d |%=-4..p. .:P%+=| 00006ce0 34 2a 64 25 0d 03 71 05 cb 0d 03 72 0b c8 8e 20 |4*d%..q....r... | 00006cf0 50 25 20 ca 0d 03 73 18 20 20 c9 20 45 25 3a 6e |P% ...s. . E%:n| 00006d00 65 78 74 25 3d 21 62 6c 6f 63 6b 25 0d 03 74 1e |ext%=!block%..t.| 00006d10 20 20 c9 20 2d 34 3a 6e 65 78 74 25 3d 62 6c 6f | . -4:next%=blo| 00006d20 63 6b 25 21 28 45 25 2d 34 29 0d 03 75 17 20 20 |ck%!(E%-4)..u. | 00006d30 7f 3a 6e 65 78 74 25 3d 62 6c 6f 63 6b 25 21 50 |.:next%=block%!P| 00006d40 25 0d 03 76 05 cb 0d 03 77 19 f2 73 65 74 5f 63 |%..v....w..set_c| 00006d50 61 72 65 74 28 77 69 25 2c 6e 65 78 74 25 29 0d |aret(wi%,next%).| 00006d60 03 78 06 3d a3 0d 03 79 05 3a 0d 03 7a 14 dd 20 |.x.=...y.:..z.. | 00006d70 a4 74 65 78 74 28 77 69 25 2c 69 63 25 29 0d 03 |.text(wi%,ic%)..| 00006d80 7b 1c 21 62 6c 6f 63 6b 25 3d 77 69 25 3a 62 6c |{.!block%=wi%:bl| 00006d90 6f 63 6b 25 21 34 3d 69 63 25 0d 03 7c 22 c8 99 |ock%!4=ic%..|"..| 00006da0 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 | "Wimp_GetIconSt| 00006db0 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 03 7d 0e |ate",,block%..}.| 00006dc0 3d 62 6c 6f 63 6b 25 21 32 38 0d 03 7e 05 3a 0d |=block%!28..~.:.| 00006dd0 03 7f 13 dd 20 a4 76 61 6c 28 77 69 25 2c 69 63 |.... .val(wi%,ic| 00006de0 25 29 0d 03 80 1c 21 62 6c 6f 63 6b 25 3d 77 69 |%)....!block%=wi| 00006df0 25 3a 62 6c 6f 63 6b 25 21 34 3d 69 63 25 0d 03 |%:block%!4=ic%..| 00006e00 81 22 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 |.".. "Wimp_GetIc| 00006e10 6f 6e 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 |onState",,block%| 00006e20 0d 03 82 0e 3d 62 6c 6f 63 6b 25 21 33 32 0d 03 |....=block%!32..| 00006e30 83 05 3a 0d 03 84 1b dd 20 a4 74 65 78 74 5f 6c |..:..... .text_l| 00006e40 65 6e 67 74 68 28 77 69 25 2c 69 63 25 29 0d 03 |ength(wi%,ic%)..| 00006e50 85 1c 21 62 6c 6f 63 6b 25 3d 77 69 25 3a 62 6c |..!block%=wi%:bl| 00006e60 6f 63 6b 25 21 34 3d 69 63 25 0d 03 86 22 c8 99 |ock%!4=ic%..."..| 00006e70 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 | "Wimp_GetIconSt| 00006e80 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 03 87 14 |ate",,block%....| 00006e90 3d a9 28 24 28 62 6c 6f 63 6b 25 21 32 38 29 29 |=.($(block%!28))| 00006ea0 0d 03 88 05 3a 0d 03 89 1d dd 20 f2 73 65 74 5f |....:..... .set_| 00006eb0 63 61 72 65 74 28 68 61 6e 64 6c 65 25 2c 69 63 |caret(handle%,ic| 00006ec0 25 29 0d 03 8a 0e e7 20 69 63 25 3d 2d 31 20 8c |%)..... ic%=-1 .| 00006ed0 0d 03 8b 2c 20 20 c8 99 20 22 57 69 6d 70 5f 53 |..., .. "Wimp_S| 00006ee0 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f 6e 22 |etCaretPosition"| 00006ef0 2c 68 61 6e 64 6c 65 25 2c 69 63 25 0d 03 8c 07 |,handle%,ic%....| 00006f00 20 20 cc 0d 03 8d 4d 20 20 c8 99 20 22 57 69 6d | ....M .. "Wim| 00006f10 70 5f 53 65 74 43 61 72 65 74 50 6f 73 69 74 69 |p_SetCaretPositi| 00006f20 6f 6e 22 2c 68 61 6e 64 6c 65 25 2c 69 63 25 2c |on",handle%,ic%,| 00006f30 30 2c 30 2c 2d 31 2c a4 74 65 78 74 5f 6c 65 6e |0,0,-1,.text_len| 00006f40 67 74 68 28 68 61 6e 64 6c 65 25 2c 69 63 25 29 |gth(handle%,ic%)| 00006f50 0d 03 8e 05 cd 0d 03 8f 05 e1 0d 03 90 05 3a 0d |..............:.| 00006f60 03 91 22 dd 20 f2 61 6c 74 65 72 5f 66 6c 61 67 |..". .alter_flag| 00006f70 73 28 64 66 67 25 2c 66 66 67 25 2c 62 66 67 25 |s(dfg%,ffg%,bfg%| 00006f80 29 0d 03 92 0c ea 20 69 63 25 2c 46 25 0d 03 93 |)..... ic%,F%...| 00006f90 12 21 62 6c 6f 63 6b 25 3d 6d 61 69 6e 57 25 0d |.!block%=mainW%.| 00006fa0 03 94 19 e3 20 69 63 25 3d 30 20 b8 20 66 69 65 |.... ic%=0 . fie| 00006fb0 6c 64 73 25 2a 32 2d 31 0d 03 95 14 20 20 46 25 |lds%*2-1.... F%| 00006fc0 3d 28 69 63 25 2b 31 29 20 81 20 32 0d 03 96 31 |=(ic%+1) . 2...1| 00006fd0 20 20 62 6c 6f 63 6b 25 21 34 3d 69 63 25 3a c8 | block%!4=ic%:.| 00006fe0 99 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 |. "Wimp_GetIconS| 00006ff0 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 03 97 |tate",,block%...| 00007000 15 20 20 e7 20 28 69 63 25 20 83 20 32 29 3d 31 |. . (ic% . 2)=1| 00007010 20 8c 0d 03 98 1a 20 20 20 20 c8 8e 20 63 68 61 | ..... .. cha| 00007020 72 74 79 70 65 25 28 46 25 29 20 ca 0d 03 99 55 |rtype%(F%) ....U| 00007030 20 20 20 20 20 20 c9 20 30 2c 31 2c 32 2c 33 2c | . 0,1,2,3,| 00007040 34 2c 35 2c 36 2c 37 2c 38 2c 34 30 2c 34 36 2c |4,5,6,7,8,40,46,| 00007050 34 37 2c 34 38 2c 34 39 2c 35 30 2c 35 31 2c 35 |47,48,49,50,51,5| 00007060 32 2c 35 33 2c 35 34 2c 35 35 2c 35 36 2c 35 37 |2,53,54,55,56,57| 00007070 2c 35 38 3a 62 6c 6f 63 6b 25 21 38 3d 66 66 67 |,58:block%!8=ffg| 00007080 25 0d 03 9a 27 20 20 20 20 20 20 c9 20 33 39 3a |%...' . 39:| 00007090 62 6c 6f 63 6b 25 21 38 3d 66 66 67 25 3a 6c 65 |block%!8=ffg%:le| 000070a0 6e 25 28 46 25 29 3d 30 0d 03 9b 42 20 20 20 20 |n%(F%)=0...B | 000070b0 20 20 c9 20 35 39 3a e7 20 6c 6f 67 6f 73 6c 6f | . 59:. logoslo| 000070c0 61 64 65 64 25 20 8c 20 62 6c 6f 63 6b 25 21 38 |aded% . block%!8| 000070d0 3d 26 30 30 30 30 36 31 31 45 20 8b 20 62 6c 6f |=&0000611E . blo| 000070e0 63 6b 25 21 38 3d 66 66 67 25 0d 03 9c 19 20 20 |ck%!8=ffg%.... | 000070f0 20 20 20 20 7f 3a 62 6c 6f 63 6b 25 21 38 3d 62 | .:block%!8=b| 00007100 66 67 25 0d 03 9d 09 20 20 20 20 cb 0d 03 9e 17 |fg%.... .....| 00007110 20 20 20 20 cc 20 62 6c 6f 63 6b 25 21 38 3d 64 | . block%!8=d| 00007120 66 67 25 0d 03 9f 07 20 20 cd 0d 03 a0 19 20 20 |fg%.... ..... | 00007130 62 6c 6f 63 6b 25 21 31 32 3d 26 46 46 46 46 46 |block%!12=&FFFFF| 00007140 46 46 46 0d 03 a1 24 20 20 c8 99 20 22 57 69 6d |FFF...$ .. "Wim| 00007150 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c |p_SetIconState",| 00007160 2c 62 6c 6f 63 6b 25 0d 03 a2 09 ed 20 69 63 25 |,block%..... ic%| 00007170 0d 03 a3 05 e1 0d 03 a4 05 3a 0d 03 a5 1a dd 20 |.........:..... | 00007180 f2 6c 69 6d 69 74 5f 61 63 74 69 6f 6e 73 28 6f |.limit_actions(o| 00007190 66 66 25 29 0d 03 a6 09 ea 20 69 63 25 0d 03 a7 |ff%)..... ic%...| 000071a0 08 f7 20 2b 30 0d 03 a8 09 f3 20 69 63 25 0d 03 |.. +0..... ic%..| 000071b0 a9 05 f5 0d 03 aa 25 20 20 f2 69 63 6f 6e 5f 62 |......% .icon_b| 000071c0 69 74 28 32 32 2c 6b 65 79 70 61 64 57 25 2c 69 |it(22,keypadW%,i| 000071d0 63 25 2c 6f 66 66 25 29 0d 03 ab 51 20 20 e7 20 |c%,off%)...Q . | 000071e0 62 75 74 74 6f 6e 66 69 65 6c 64 25 28 69 63 25 |buttonfield%(ic%| 000071f0 29 3e 30 20 8c 20 f2 69 63 6f 6e 5f 62 69 74 28 |)>0 . .icon_bit(| 00007200 32 32 2c 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 |22,mainW%,field%| 00007210 28 62 75 74 74 6f 6e 66 69 65 6c 64 25 28 69 63 |(buttonfield%(ic| 00007220 25 29 29 2c 6f 66 66 25 29 0d 03 ac 0b 20 20 f3 |%)),off%).... .| 00007230 20 69 63 25 0d 03 ad 0c fd 20 69 63 25 3d 2d 31 | ic%..... ic%=-1| 00007240 0d 03 ae 1a f2 6c 69 74 28 6d 65 6e 75 25 28 31 |.....lit(menu%(1| 00007250 30 29 2c 30 2c 6f 66 66 25 29 0d 03 af 1a f2 6c |0),0,off%).....l| 00007260 69 74 28 6d 65 6e 75 25 28 31 30 29 2c 31 2c 6f |it(menu%(10),1,o| 00007270 66 66 25 29 0d 03 b0 1a f2 6c 69 74 28 6d 65 6e |ff%).....lit(men| 00007280 75 25 28 31 30 29 2c 32 2c 6f 66 66 25 29 0d 03 |u%(10),2,off%)..| 00007290 b1 05 3a 0d 03 b2 23 dc 20 31 32 2c 31 34 2c 31 |..:...#. 12,14,1| 000072a0 35 2c 31 36 2c 31 37 2c 31 38 2c 32 30 2c 32 31 |5,16,17,18,20,21| 000072b0 2c 32 32 2c 2d 31 0d 03 b3 05 3a 0d 03 b4 05 e1 |,22,-1....:.....| 000072c0 0d 03 b5 05 3a 0d 03 b6 1a dd 20 f2 69 64 65 6e |....:..... .iden| 000072d0 74 69 66 79 5f 66 69 65 6c 64 28 69 63 25 29 0d |tify_field(ic%).| 000072e0 03 b7 2e 46 69 65 6c 64 6e 75 6d 62 65 72 25 3d |...Fieldnumber%=| 000072f0 30 3a 46 69 65 6c 64 6e 61 6d 65 24 3d 22 22 3a |0:Fieldname$="":| 00007300 54 65 78 74 4c 65 6e 67 74 68 25 3d 30 0d 03 b8 |TextLength%=0...| 00007310 13 e7 20 28 69 63 25 20 83 20 32 29 3d 31 20 8c |.. (ic% . 2)=1 .| 00007320 0d 03 b9 21 20 20 21 62 6c 6f 63 6b 25 3d 6d 61 |...! !block%=ma| 00007330 69 6e 57 25 3a 62 6c 6f 63 6b 25 21 34 3d 69 63 |inW%:block%!4=ic| 00007340 25 0d 03 ba 24 20 20 c8 99 20 22 57 69 6d 70 5f |%...$ .. "Wimp_| 00007350 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 62 |GetIconState",,b| 00007360 6c 6f 63 6b 25 0d 03 bb 1d 20 20 54 65 78 74 4c |lock%.... TextL| 00007370 65 6e 67 74 68 25 3d 62 6c 6f 63 6b 25 21 33 36 |ength%=block%!36| 00007380 2d 31 0d 03 bc 1e 20 20 46 69 65 6c 64 6e 75 6d |-1.... Fieldnum| 00007390 62 65 72 25 3d 28 69 63 25 2b 31 29 20 81 20 32 |ber%=(ic%+1) . 2| 000073a0 0d 03 bd 33 20 20 46 69 65 6c 64 6e 61 6d 65 24 |...3 Fieldname$| 000073b0 3d 24 a4 74 65 78 74 28 6d 61 69 6e 57 25 2c 64 |=$.text(mainW%,d| 000073c0 65 73 63 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 |esc%(Fieldnumber| 000073d0 25 29 29 0d 03 be 35 20 20 e7 20 46 69 65 6c 64 |%))...5 . Field| 000073e0 6e 61 6d 65 24 3d 22 22 20 8c 20 46 69 65 6c 64 |name$="" . Field| 000073f0 6e 61 6d 65 24 3d 54 61 67 24 28 46 69 65 6c 64 |name$=Tag$(Field| 00007400 6e 75 6d 62 65 72 25 29 0d 03 bf 22 20 20 c8 8e |number%)..." ..| 00007410 20 63 68 61 72 74 79 70 65 25 28 46 69 65 6c 64 | chartype%(Field| 00007420 6e 75 6d 62 65 72 25 29 20 ca 0d 03 c0 24 20 20 |number%) ....$ | 00007430 20 20 c9 20 32 2c 34 3a c8 99 20 22 4f 53 5f 42 | . 2,4:.. "OS_B| 00007440 79 74 65 22 2c 32 30 32 2c 30 2c 32 33 39 0d 03 |yte",202,0,239..| 00007450 c1 21 20 20 20 20 7f 3a c8 99 20 22 4f 53 5f 42 |.! .:.. "OS_B| 00007460 79 74 65 22 2c 32 30 32 2c 31 36 2c 31 31 31 0d |yte",202,16,111.| 00007470 03 c2 07 20 20 cb 0d 03 c3 16 20 20 c8 99 20 22 |... ..... .. "| 00007480 4f 53 5f 42 79 74 65 22 2c 31 31 38 0d 03 c4 05 |OS_Byte",118....| 00007490 cd 0d 03 c5 05 e1 0d 03 c6 05 3a 0d 03 c7 12 dd |..........:.....| 000074a0 20 a4 66 69 72 73 74 5f 66 69 65 6c 64 0d 03 c8 | .first_field...| 000074b0 08 ea 20 49 25 0d 03 c9 0b f5 20 49 25 2b 3d 31 |.. I%..... I%+=1| 000074c0 0d 03 ca 31 fd 20 28 6c 65 6e 25 28 49 25 29 3e |...1. (len%(I%)>| 000074d0 30 20 80 20 63 68 61 72 74 79 70 65 25 28 49 25 |0 . chartype%(I%| 000074e0 29 3c 36 29 20 84 20 49 25 3e 66 69 65 6c 64 73 |)<6) . I%>fields| 000074f0 25 0d 03 cb 19 e7 20 49 25 3e 66 69 65 6c 64 73 |%..... I%>fields| 00007500 25 20 8c 3d 30 20 8b 3d 49 25 0d 03 cc 05 3a 0d |% .=0 .=I%....:.| 00007510 03 cd 4b f4 20 4d 6f 75 73 65 5f 63 6c 69 63 6b |..K. Mouse_click| 00007520 20 70 72 6f 63 65 73 73 69 6e 67 20 2d 2d 2d 2d | processing ----| 00007530 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00007550 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 03 ce 05 3a 0d |----------....:.| 00007560 03 cf 1e dd 20 f2 6d 6f 75 73 65 28 78 25 2c 79 |.... .mouse(x%,y| 00007570 25 2c 62 25 2c 77 69 25 2c 69 63 25 29 0d 03 d0 |%,b%,wi%,ic%)...| 00007580 15 6f 6c 64 78 25 3d 78 25 3a 6f 6c 64 79 25 3d |.oldx%=x%:oldy%=| 00007590 79 25 0d 03 d1 43 62 6c 6f 63 6b 25 21 30 3d 78 |y%...Cblock%!0=x| 000075a0 25 3a 62 6c 6f 63 6b 25 21 34 3d 79 25 3a 62 6c |%:block%!4=y%:bl| 000075b0 6f 63 6b 25 21 38 3d 62 25 3a 62 6c 6f 63 6b 25 |ock%!8=b%:block%| 000075c0 21 31 32 3d 77 69 25 3a 62 6c 6f 63 6b 25 21 31 |!12=wi%:block%!1| 000075d0 36 3d 69 63 25 0d 03 d2 52 e7 20 28 62 25 20 80 |6=ic%...R. (b% .| 000075e0 20 32 29 3c 3e 32 20 80 20 ac 20 28 64 65 73 69 | 2)<>2 . . (desi| 000075f0 67 6e 25 20 80 20 28 77 69 25 3d 6d 61 69 6e 57 |gn% . (wi%=mainW| 00007600 25 29 29 20 8c 20 c8 99 20 22 49 6e 74 65 72 66 |%)) . .. "Interf| 00007610 61 63 65 5f 53 6c 61 62 42 75 74 74 6f 6e 22 2c |ace_SlabButton",| 00007620 2c 62 6c 6f 63 6b 25 0d 03 d3 0c c8 8e 20 77 69 |,block%...... wi| 00007630 25 20 ca 0d 03 d4 19 20 20 c9 20 2d 32 3a f2 69 |% ..... . -2:.i| 00007640 63 6f 6e 62 61 72 5f 63 6c 69 63 6b 0d 03 d5 22 |conbar_click..."| 00007650 20 20 c9 20 61 63 63 65 73 73 57 25 3a 61 63 63 | . accessW%:acc| 00007660 65 73 73 62 75 74 74 6f 6e 25 3d 69 63 25 0d 03 |essbutton%=ic%..| 00007670 d6 1a 20 20 c9 20 6d 61 69 6e 57 25 3a f2 6d 61 |.. . mainW%:.ma| 00007680 69 6e 5f 63 6c 69 63 6b 0d 03 d7 2a 20 20 c9 20 |in_click...* . | 00007690 6b 65 79 70 61 64 57 25 3a f2 6b 65 79 70 61 64 |keypadW%:.keypad| 000076a0 5f 63 6c 69 63 6b 28 77 69 25 2c 69 63 25 2c 62 |_click(wi%,ic%,b| 000076b0 25 29 0d 03 d8 30 20 20 c9 20 73 61 76 65 57 25 |%)...0 . saveW%| 000076c0 2c 73 61 76 65 73 75 62 57 25 3a f2 73 61 76 65 |,savesubW%:.save| 000076d0 5f 63 6c 69 63 6b 28 77 69 25 2c 69 63 25 2c 62 |_click(wi%,ic%,b| 000076e0 25 29 0d 03 d9 18 20 20 c9 20 6b 65 79 57 25 3a |%).... . keyW%:| 000076f0 f2 6b 65 79 5f 63 6c 69 63 6b 0d 03 da 1d 20 20 |.key_click.... | 00007700 c9 20 74 61 62 6c 65 57 25 3a f2 63 72 65 61 74 |. tableW%:.creat| 00007710 65 5f 74 61 62 6c 65 0d 03 db 1d 20 20 c9 20 6c |e_table.... . l| 00007720 69 6e 6b 57 25 3a f2 6c 69 6e 6b 5f 74 6f 5f 74 |inkW%:.link_to_t| 00007730 61 62 6c 65 0d 03 dc 19 20 20 c9 20 70 61 73 73 |able.... . pass| 00007740 57 25 3a f2 70 61 73 73 77 6f 72 64 73 0d 03 dd |W%:.passwords...| 00007750 1c 20 20 c9 20 70 72 69 6e 74 57 25 3a f2 70 72 |. . printW%:.pr| 00007760 69 6e 74 5f 63 6c 69 63 6b 0d 03 de 28 20 20 c9 |int_click...( .| 00007770 20 6d 61 74 63 68 57 25 3a f2 6d 61 74 63 68 5f | matchW%:.match_| 00007780 63 6c 69 63 6b 28 62 25 2c 77 69 25 2c 69 63 25 |click(b%,wi%,ic%| 00007790 29 0d 03 df 1e 20 20 c9 20 63 72 65 61 74 65 57 |).... . createW| 000077a0 25 3a f2 63 72 65 61 74 65 5f 63 6c 69 63 6b 0d |%:.create_click.| 000077b0 03 e0 20 20 20 c9 20 64 61 74 61 64 69 63 57 25 |.. . datadicW%| 000077c0 3a f2 64 61 74 61 64 69 63 5f 63 6c 69 63 6b 0d |:.datadic_click.| 000077d0 03 e1 1e 20 20 c9 20 63 68 61 6e 67 65 57 25 3a |... . changeW%:| 000077e0 f2 63 68 61 6e 67 65 5f 63 6c 69 63 6b 0d 03 e2 |.change_click...| 000077f0 1a 20 20 c9 20 6d 6f 76 65 57 25 3a f2 6d 6f 76 |. . moveW%:.mov| 00007800 65 5f 63 6c 69 63 6b 0d 03 e3 28 20 20 c9 20 6c |e_click...( . l| 00007810 69 73 74 57 25 3a f2 6c 69 73 74 5f 63 6c 69 63 |istW%:.list_clic| 00007820 6b 28 78 25 2c 79 25 2c 62 25 2c 77 69 25 29 0d |k(x%,y%,b%,wi%).| 00007830 03 e4 1a 20 20 c9 20 63 6f 6c 57 25 3a f2 73 65 |... . colW%:.se| 00007840 74 5f 63 6f 6c 6f 75 72 73 0d 03 e5 32 20 20 c9 |t_colours...2 .| 00007850 20 63 61 6c 63 57 25 3a e7 20 69 63 25 3d 31 20 | calcW%:. ic%=1 | 00007860 8c 20 f2 63 61 6c 63 5f 66 6f 72 6d 75 6c 61 28 |. .calc_formula(| 00007870 24 43 61 6c 63 46 6f 72 6d 25 29 0d 03 e6 10 20 |$CalcForm%).... | 00007880 20 c9 20 6c 61 62 65 6c 57 25 3a 0d 03 e7 0e 20 | . labelW%:.... | 00007890 20 c8 8e 20 69 63 25 20 ca 0d 03 e8 3b 20 20 20 | .. ic% ....; | 000078a0 20 c9 20 31 31 3a f2 69 63 6f 6e 5f 62 69 74 28 | . 11:.icon_bit(| 000078b0 32 32 2c 6c 61 62 65 6c 57 25 2c 31 32 2c a4 73 |22,labelW%,12,.s| 000078c0 65 6c 65 63 74 65 64 28 6c 61 62 65 6c 57 25 2c |elected(labelW%,| 000078d0 31 31 29 29 0d 03 e9 25 20 20 20 20 c9 20 31 35 |11))...% . 15| 000078e0 3a c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 |:.. "Wimp_Create| 000078f0 4d 65 6e 75 22 2c 2c 2d 31 0d 03 ea 07 20 20 cb |Menu",,-1.... .| 00007900 0d 03 eb 1c 20 20 c9 20 6d 65 72 67 65 57 25 3a |.... . mergeW%:| 00007910 f2 6d 65 72 67 65 5f 63 6c 69 63 6b 0d 03 ec 1a |.merge_click....| 00007920 20 20 c9 20 73 69 7a 65 57 25 3a f2 73 69 7a 65 | . sizeW%:.size| 00007930 5f 63 6c 69 63 6b 0d 03 ed 18 20 20 c9 20 63 73 |_click.... . cs| 00007940 76 57 25 3a f2 63 73 76 5f 63 6c 69 63 6b 0d 03 |vW%:.csv_click..| 00007950 ee 4e 20 20 c9 20 70 73 65 6c 65 63 74 57 25 2c |.N . pselectW%,| 00007960 72 65 6c 61 74 65 57 25 2c 72 65 66 6f 72 6d 57 |relateW%,reformW| 00007970 25 2c 69 6e 66 6f 57 25 2c 6d 69 73 63 57 25 3a |%,infoW%,miscW%:| 00007980 f4 20 23 23 23 20 4e 6f 20 61 63 74 69 6f 6e 20 |. ### No action | 00007990 6f 6e 20 74 68 65 73 65 20 23 23 23 0d 03 ef 16 |on these ###....| 000079a0 20 20 7f 3a f2 73 70 65 63 69 61 6c 5f 63 6c 69 | .:.special_cli| 000079b0 63 6b 0d 03 f0 05 cb 0d 03 f1 2a 62 6c 6f 63 6b |ck........*block| 000079c0 25 21 38 3d 30 3a 62 6c 6f 63 6b 25 21 31 32 3d |%!8=0:block%!12=| 000079d0 77 69 25 3a 62 6c 6f 63 6b 25 21 31 36 3d 69 63 |wi%:block%!16=ic| 000079e0 25 0d 03 f2 25 c8 99 20 22 49 6e 74 65 72 66 61 |%...%.. "Interfa| 000079f0 63 65 5f 53 6c 61 62 42 75 74 74 6f 6e 22 2c 2c |ce_SlabButton",,| 00007a00 62 6c 6f 63 6b 25 0d 03 f3 05 e1 0d 03 f4 05 3a |block%.........:| 00007a10 0d 03 f5 13 dd 20 f2 63 68 61 6e 67 65 5f 63 6c |..... .change_cl| 00007a20 69 63 6b 0d 03 f6 15 e7 20 28 62 25 20 80 20 25 |ick..... (b% . %| 00007a30 31 31 31 29 3d 34 20 8c 0d 03 f7 0e 20 20 c8 8e |111)=4 ..... ..| 00007a40 20 69 63 25 20 ca 0d 03 f8 1a 20 20 20 20 c9 20 | ic% ..... . | 00007a50 34 3a f2 63 68 61 6e 67 65 73 28 6b 65 79 25 29 |4:.changes(key%)| 00007a60 0d 03 f9 20 20 20 20 20 c9 20 35 3a f2 63 6f 6d |... . 5:.com| 00007a70 6d 6f 6e 63 61 73 65 28 77 69 25 2c 69 63 25 29 |moncase(wi%,ic%)| 00007a80 0d 03 fa 07 20 20 cb 0d 03 fb 05 cd 0d 03 fc 05 |.... ..........| 00007a90 e1 0d 03 fd 05 3a 0d 03 fe 11 dd 20 f2 6d 6f 76 |.....:..... .mov| 00007aa0 65 5f 63 6c 69 63 6b 0d 03 ff 15 e7 20 28 62 25 |e_click..... (b%| 00007ab0 20 80 20 25 31 31 31 29 3d 34 20 8c 0d 04 00 0e | . %111)=4 .....| 00007ac0 20 20 c8 8e 20 69 63 25 20 ca 0d 04 01 12 20 20 | .. ic% ..... | 00007ad0 20 20 c9 20 38 3a f2 63 6c 65 61 72 0d 04 02 20 | . 8:.clear... | 00007ae0 20 20 20 20 c9 20 39 3a f2 63 6f 6d 6d 6f 6e 63 | . 9:.commonc| 00007af0 61 73 65 28 77 69 25 2c 69 63 25 29 0d 04 03 07 |ase(wi%,ic%)....| 00007b00 20 20 cb 0d 04 04 05 cd 0d 04 05 05 e1 0d 04 06 | ..............| 00007b10 05 3a 0d 04 07 10 dd 20 f2 63 73 76 5f 63 6c 69 |.:..... .csv_cli| 00007b20 63 6b 0d 04 08 14 c8 8e 20 28 62 25 20 80 20 25 |ck...... (b% . %| 00007b30 31 31 31 29 20 ca 0d 04 09 0c 20 20 c9 20 32 2c |111) ..... . 2,| 00007b40 34 3a 0d 04 0a 0e 20 20 c8 8e 20 69 63 25 20 ca |4:.... .. ic% .| 00007b50 0d 04 0b 30 20 20 20 20 c9 20 35 3a f2 73 68 6f |...0 . 5:.sho| 00007b60 77 5f 6d 65 6e 75 28 6d 65 6e 75 25 28 31 35 29 |w_menu(menu%(15)| 00007b70 2c 6f 6c 64 78 25 2b 33 32 2c 6f 6c 64 79 25 29 |,oldx%+32,oldy%)| 00007b80 0d 04 0c 30 20 20 20 20 c9 20 36 3a f2 73 68 6f |...0 . 6:.sho| 00007b90 77 5f 6d 65 6e 75 28 6d 65 6e 75 25 28 32 30 29 |w_menu(menu%(20)| 00007ba0 2c 6f 6c 64 78 25 2b 33 32 2c 6f 6c 64 79 25 29 |,oldx%+32,oldy%)| 00007bb0 0d 04 0d 07 20 20 cb 0d 04 0e 05 cb 0d 04 0f 14 |.... ..........| 00007bc0 c8 8e 20 28 62 25 20 80 20 25 31 31 31 29 20 ca |.. (b% . %111) .| 00007bd0 0d 04 10 0a 20 20 c9 20 34 3a 0d 04 11 0e 20 20 |.... . 4:.... | 00007be0 c8 8e 20 69 63 25 20 ca 0d 04 12 36 20 20 20 20 |.. ic% ....6 | 00007bf0 c9 20 31 3a f2 69 63 6f 6e 5f 62 69 74 28 32 32 |. 1:.icon_bit(22| 00007c00 2c 63 73 76 57 25 2c 34 2c 28 a4 73 65 6c 65 63 |,csvW%,4,(.selec| 00007c10 74 65 64 28 63 73 76 57 25 2c 31 29 29 29 0d 04 |ted(csvW%,1)))..| 00007c20 13 2a 20 20 20 20 c9 20 39 3a f2 63 6f 6e 76 65 |.* . 9:.conve| 00007c30 72 74 5f 63 73 76 28 24 a4 74 65 78 74 28 63 73 |rt_csv($.text(cs| 00007c40 76 57 25 2c 31 33 29 29 0d 04 14 21 20 20 20 20 |vW%,13))...! | 00007c50 c9 20 31 30 3a f2 63 6c 6f 73 65 5f 77 69 6e 64 |. 10:.close_wind| 00007c60 6f 77 28 63 73 76 57 25 29 0d 04 15 07 20 20 cb |ow(csvW%).... .| 00007c70 0d 04 16 05 cb 0d 04 17 05 e1 0d 04 18 05 3a 0d |..............:.| 00007c80 04 19 12 dd 20 f2 6d 65 72 67 65 5f 63 6c 69 63 |.... .merge_clic| 00007c90 6b 0d 04 1a 22 e7 20 28 62 25 20 80 20 25 31 31 |k...". (b% . %11| 00007ca0 31 29 3d 34 20 8c 20 7a 25 3d 31 20 8b 20 7a 25 |1)=4 . z%=1 . z%| 00007cb0 3d 2d 31 0d 04 1b 0c c8 8e 20 69 63 25 20 ca 0d |=-1...... ic% ..| 00007cc0 04 1c 2f 20 20 c9 20 34 3a 43 6c 69 65 6e 74 50 |../ . 4:ClientP| 00007cd0 74 72 25 3d a4 6d 65 72 67 65 5f 6e 65 78 74 28 |tr%=.merge_next(| 00007ce0 43 6c 69 65 6e 74 50 74 72 25 2c 7a 25 29 0d 04 |ClientPtr%,z%)..| 00007cf0 1d 30 20 20 c9 20 39 3a 43 6c 69 65 6e 74 50 74 |.0 . 9:ClientPt| 00007d00 72 25 3d a4 6d 65 72 67 65 5f 6e 65 78 74 28 43 |r%=.merge_next(C| 00007d10 6c 69 65 6e 74 50 74 72 25 2c 2d 7a 25 29 0d 04 |lientPtr%,-z%)..| 00007d20 1e 29 20 20 c9 20 31 31 3a 43 6c 69 65 6e 74 50 |.) . 11:ClientP| 00007d30 74 72 25 3d a4 6d 65 72 67 65 5f 6e 65 78 74 28 |tr%=.merge_next(| 00007d40 74 6f 70 2c 7a 25 29 0d 04 1f 2a 20 20 c9 20 31 |top,z%)...* . 1| 00007d50 30 3a 43 6c 69 65 6e 74 50 74 72 25 3d a4 6d 65 |0:ClientPtr%=.me| 00007d60 72 67 65 5f 6e 65 78 74 28 74 6f 70 2c 2d 7a 25 |rge_next(top,-z%| 00007d70 29 0d 04 20 1f 20 20 c9 20 31 32 3a f2 63 6f 6d |).. . . 12:.com| 00007d80 6d 6f 6e 63 61 73 65 28 77 69 25 2c 69 63 25 29 |moncase(wi%,ic%)| 00007d90 0d 04 21 0a 20 20 c9 20 35 3a 0d 04 22 5e 20 20 |..!. . 5:.."^ | 00007da0 c8 99 20 22 49 6d 70 75 6c 73 65 5f 53 65 6e 64 |.. "Impulse_Send| 00007db0 4d 65 73 73 61 67 65 22 2c 26 32 30 31 2c 22 3a |Message",&201,":| 00007dc0 22 2b 6d 65 72 67 65 77 69 74 68 24 2b 22 2e 22 |"+mergewith$+"."| 00007dd0 2b 64 6f 63 75 6d 65 6e 74 24 2b 22 20 50 72 69 |+document$+" Pri| 00007de0 6e 74 22 2c 2c 2c 2c 70 72 69 6e 74 74 61 67 25 |nt",,,,printtag%| 00007df0 2c 6d 79 74 61 73 6b 25 0d 04 23 0a 20 20 c9 20 |,mytask%..#. . | 00007e00 37 3a 0d 04 24 11 20 20 6d 65 72 67 65 6e 75 6d |7:..$. mergenum| 00007e10 25 3d 30 0d 04 25 43 20 20 43 6c 69 65 6e 74 53 |%=0..%C ClientS| 00007e20 65 61 72 63 68 24 3d a4 70 61 72 73 65 28 24 a4 |earch$=.parse($.| 00007e30 74 65 78 74 28 6d 65 72 67 65 57 25 2c 33 29 2c |text(mergeW%,3),| 00007e40 a4 73 65 6c 65 63 74 65 64 28 6d 65 72 67 65 57 |.selected(mergeW| 00007e50 25 2c 31 32 29 29 0d 04 26 23 20 20 43 6c 69 65 |%,12))..&# Clie| 00007e60 6e 74 50 74 72 25 3d a4 6d 65 72 67 65 5f 6e 65 |ntPtr%=.merge_ne| 00007e70 78 74 28 74 6f 70 2c 31 29 0d 04 27 21 20 20 c9 |xt(top,1)..'! .| 00007e80 20 38 3a f2 70 65 72 66 6f 72 6d 5f 63 6c 6f 73 | 8:.perform_clos| 00007e90 65 28 6d 65 72 67 65 57 25 29 0d 04 28 05 cb 0d |e(mergeW%)..(...| 00007ea0 04 29 05 e1 0d 04 2a 05 3a 0d 04 2b 11 dd 20 f2 |.)....*.:..+.. .| 00007eb0 73 69 7a 65 5f 63 6c 69 63 6b 0d 04 2c 0a c8 8e |size_click..,...| 00007ec0 20 b9 20 ca 0d 04 2d 18 20 20 c9 20 bb 28 24 52 | . ...-. . .($R| 00007ed0 65 63 6f 72 64 73 25 29 3c 3d 30 3a 0d 04 2e 17 |ecords%)<=0:....| 00007ee0 20 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 2c | .softerror("",| 00007ef0 37 31 29 0d 04 2f 2c 20 20 24 52 65 63 6f 72 64 |71)../, $Record| 00007f00 73 25 3d 22 31 30 30 22 3a f2 72 65 64 72 61 77 |s%="100":.redraw| 00007f10 5f 69 63 6f 6e 28 73 69 7a 65 57 25 2c 31 29 0d |_icon(sizeW%,1).| 00007f20 04 30 18 20 20 c9 20 bb 28 24 49 6e 63 72 65 6d |.0. . .($Increm| 00007f30 65 6e 74 25 29 3c 30 0d 04 31 17 20 20 f2 73 6f |ent%)<0..1. .so| 00007f40 66 74 65 72 72 6f 72 28 22 22 2c 37 32 29 0d 04 |fterror("",72)..| 00007f50 32 2d 20 20 24 49 6e 63 72 65 6d 65 6e 74 25 3d |2- $Increment%=| 00007f60 22 32 35 22 3a f2 72 65 64 72 61 77 5f 69 63 6f |"25":.redraw_ico| 00007f70 6e 28 73 69 7a 65 57 25 2c 33 29 0d 04 33 08 20 |n(sizeW%,3)..3. | 00007f80 20 7f 3a 0d 04 34 33 20 20 e7 20 70 72 65 73 65 | .:..43 . prese| 00007f90 6e 74 25 3d 37 20 8c 20 f2 63 68 61 6e 67 65 5f |nt%=7 . .change_| 00007fa0 6c 65 6e 67 74 68 28 bb 28 24 52 65 63 6f 72 64 |length(.($Record| 00007fb0 73 25 29 2c b9 29 0d 04 35 1e 20 20 c8 99 20 22 |s%),.)..5. .. "| 00007fc0 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 |Wimp_CreateMenu"| 00007fd0 2c 2c 2d 31 0d 04 36 05 cb 0d 04 37 05 e1 0d 04 |,,-1..6....7....| 00007fe0 38 05 3a 0d 04 39 14 dd 20 f2 64 61 74 61 64 69 |8.:..9.. .datadi| 00007ff0 63 5f 63 6c 69 63 6b 0d 04 3a 12 c8 8e 20 62 25 |c_click..:... b%| 00008000 20 80 20 25 31 31 31 20 ca 0d 04 3b 0a 20 20 c9 | . %111 ...;. .| 00008010 20 34 3a 0d 04 3c 38 20 20 21 62 6c 6f 63 6b 25 | 4:..<8 !block%| 00008020 3d 64 61 74 61 64 69 63 57 25 3a c8 99 20 22 57 |=datadicW%:.. "W| 00008030 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 |imp_GetWindowSta| 00008040 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 04 3d 4d 20 |te",,block%..=M | 00008050 20 c8 99 20 22 57 69 6d 70 5f 53 65 74 43 61 72 | .. "Wimp_SetCar| 00008060 65 74 50 6f 73 69 74 69 6f 6e 22 2c 64 61 74 61 |etPosition",data| 00008070 64 69 63 57 25 2c 69 63 25 2c 78 25 2d 62 6c 6f |dicW%,ic%,x%-blo| 00008080 63 6b 25 21 34 2b 62 6c 6f 63 6b 25 21 32 30 2c |ck%!4+block%!20,| 00008090 79 25 2c 2d 31 2c 2d 31 0d 04 3e 2b 20 20 c9 20 |y%,-1,-1..>+ . | 000080a0 32 3a f2 73 68 6f 77 5f 6d 65 6e 75 28 6d 65 6e |2:.show_menu(men| 000080b0 75 25 28 31 37 29 2c 78 25 2d 36 34 2c 79 25 2d |u%(17),x%-64,y%-| 000080c0 32 30 29 0d 04 3f 0a 20 20 c9 20 31 3a 0d 04 40 |20)..?. . 1:..@| 000080d0 10 20 20 e7 20 69 63 25 3e 3d 30 20 8c 0d 04 41 |. . ic%>=0 ...A| 000080e0 25 20 20 20 20 66 69 65 6c 64 25 3d 28 69 63 25 |% field%=(ic%| 000080f0 20 83 20 28 54 61 62 46 69 65 6c 64 73 25 2b 31 | . (TabFields%+1| 00008100 29 29 0d 04 42 1b 20 20 20 20 f2 69 6e 76 65 72 |))..B. .inver| 00008110 74 28 77 69 25 2c 66 69 65 6c 64 25 29 0d 04 43 |t(wi%,field%)..C| 00008120 18 20 20 20 20 66 69 65 6c 64 24 3d c3 28 66 69 |. field$=.(fi| 00008130 65 6c 64 25 29 0d 04 44 21 20 20 20 20 e7 20 a4 |eld%)..D! . .| 00008140 73 65 6c 65 63 74 65 64 28 77 69 25 2c 66 69 65 |selected(wi%,fie| 00008150 6c 64 25 29 20 8c 0d 04 45 29 20 20 20 20 20 20 |ld%) ...E) | 00008160 70 72 69 6e 74 72 65 6c 24 28 54 61 62 6c 65 6e |printrel$(Tablen| 00008170 75 6d 62 65 72 25 29 2b 3d 66 69 65 6c 64 24 0d |umber%)+=field$.| 00008180 04 46 0b 20 20 20 20 20 20 cc 0d 04 47 2d 20 20 |.F. ...G- | 00008190 20 20 20 20 50 25 3d a7 70 72 69 6e 74 72 65 6c | P%=.printrel| 000081a0 24 28 54 61 62 6c 65 6e 75 6d 62 65 72 25 29 2c |$(Tablenumber%),| 000081b0 66 69 65 6c 64 24 29 0d 04 48 5f 20 20 20 20 20 |field$)..H_ | 000081c0 20 70 72 69 6e 74 72 65 6c 24 28 54 61 62 6c 65 | printrel$(Table| 000081d0 6e 75 6d 62 65 72 25 29 3d c0 70 72 69 6e 74 72 |number%)=.printr| 000081e0 65 6c 24 28 54 61 62 6c 65 6e 75 6d 62 65 72 25 |el$(Tablenumber%| 000081f0 29 2c 50 25 2d 31 29 2b c1 70 72 69 6e 74 72 65 |),P%-1)+.printre| 00008200 6c 24 28 54 61 62 6c 65 6e 75 6d 62 65 72 25 29 |l$(Tablenumber%)| 00008210 2c 50 25 2b 31 29 0d 04 49 09 20 20 20 20 cd 0d |,P%+1)..I. ..| 00008220 04 4a 07 20 20 cd 0d 04 4b 05 cb 0d 04 4c 05 e1 |.J. ...K....L..| 00008230 0d 04 4d 05 3a 0d 04 4e 1f dd 20 f2 6c 69 73 74 |..M.:..N.. .list| 00008240 5f 63 6c 69 63 6b 28 78 25 2c 79 25 2c 62 25 2c |_click(x%,y%,b%,| 00008250 77 69 25 29 0d 04 4f 08 ea 20 4e 25 0d 04 50 14 |wi%)..O.. N%..P.| 00008260 c8 8e 20 28 62 25 20 80 20 25 31 31 31 29 20 ca |.. (b% . %111) .| 00008270 0d 04 51 2b 20 20 c9 20 32 3a f2 73 68 6f 77 5f |..Q+ . 2:.show_| 00008280 6d 65 6e 75 28 6d 65 6e 75 25 28 31 38 29 2c 78 |menu(menu%(18),x| 00008290 25 2d 36 34 2c 79 25 2d 32 30 29 0d 04 52 0a 20 |%-64,y%-20)..R. | 000082a0 20 c9 20 34 3a 0d 04 53 11 20 20 21 62 6c 6f 63 | . 4:..S. !bloc| 000082b0 6b 25 3d 77 69 25 0d 04 54 26 20 20 c8 99 20 22 |k%=wi%..T& .. "| 000082c0 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 |Wimp_GetWindowSt| 000082d0 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 04 55 2c |ate",,block%..U,| 000082e0 20 20 6c 69 6e 65 25 3d 28 62 6c 6f 63 6b 25 21 | line%=(block%!| 000082f0 31 36 2d 62 6c 6f 63 6b 25 21 32 34 2d 79 25 2b |16-block%!24-y%+| 00008300 33 32 29 20 81 20 33 32 0d 04 56 2a 20 20 63 6f |32) . 32..V* co| 00008310 6c 75 6d 6e 25 3d 28 78 25 2d 62 6c 6f 63 6b 25 |lumn%=(x%-block%| 00008320 21 34 2b 62 6c 6f 63 6b 25 21 32 30 29 20 81 20 |!4+block%!20) . | 00008330 31 36 0d 04 57 19 20 20 52 65 63 50 74 72 25 3d |16..W. RecPtr%=| 00008340 21 72 65 63 61 6e 63 68 6f 72 25 0d 04 58 1a 20 |!recanchor%..X. | 00008350 20 52 25 3d 52 65 63 50 74 72 25 21 28 6c 69 6e | R%=RecPtr%!(lin| 00008360 65 25 2a 34 29 0d 04 59 15 20 20 45 25 3d a9 28 |e%*4)..Y. E%=.(| 00008370 46 6f 72 6d 24 29 20 81 20 32 0d 04 5a 0f 20 20 |Form$) . 2..Z. | 00008380 e7 20 52 25 3e 3d 30 20 8c 0d 04 5b 26 20 20 20 |. R%>=0 ...[& | 00008390 20 61 64 64 72 3d a4 66 69 6e 64 28 22 23 22 2b | addr=.find("#"+| 000083a0 c3 28 52 25 29 2c 6b 65 79 25 2c 31 2c b9 29 0d |.(R%),key%,1,.).| 000083b0 04 5c 14 20 20 20 20 c8 8e 20 66 6f 72 6d 61 74 |.\. .. format| 000083c0 24 20 ca 0d 04 5d 1b 20 20 20 20 20 20 c9 20 22 |$ ...]. . "| 000083d0 68 6f 72 69 7a 22 2c 22 74 61 62 6c 65 22 0d 04 |horiz","table"..| 000083e0 5e 0b 20 20 20 20 20 20 f5 0d 04 5f 11 20 20 20 |^. ..._. | 000083f0 20 20 20 20 20 4e 25 2b 3d 31 0d 04 60 26 20 20 | N%+=1..`& | 00008400 20 20 20 20 fd 20 54 61 62 25 28 4e 25 29 3e 63 | . Tab%(N%)>c| 00008410 6f 6c 75 6d 6e 25 2b 31 20 84 20 4e 25 3d 45 25 |olumn%+1 . N%=E%| 00008420 0d 04 61 24 20 20 20 20 20 20 46 25 3d a4 66 6e |..a$ F%=.fn| 00008430 75 6d 28 c1 46 6f 72 6d 24 2c 4e 25 2a 32 2d 31 |um(.Form$,N%*2-1| 00008440 2c 32 29 29 0d 04 62 13 20 20 20 20 20 20 c9 20 |,2))..b. . | 00008450 22 76 65 72 74 22 3a 0d 04 63 0b 20 20 20 20 20 |"vert":..c. | 00008460 20 f5 0d 04 64 1a 20 20 20 20 20 20 20 20 4e 25 | ...d. N%| 00008470 2b 3d 31 3a 6c 69 6e 65 25 2d 3d 31 0d 04 65 29 |+=1:line%-=1..e)| 00008480 20 20 20 20 20 20 fd 20 52 65 63 50 74 72 25 21 | . RecPtr%!| 00008490 28 6c 69 6e 65 25 2a 34 29 3c 3e 52 25 20 84 20 |(line%*4)<>R% . | 000084a0 4e 25 3d 45 25 0d 04 66 24 20 20 20 20 20 20 46 |N%=E%..f$ F| 000084b0 25 3d a4 66 6e 75 6d 28 c1 46 6f 72 6d 24 2c 4e |%=.fnum(.Form$,N| 000084c0 25 2a 32 2d 31 2c 32 29 29 0d 04 67 22 20 20 20 |%*2-1,2))..g" | 000084d0 20 20 20 c9 20 22 74 72 65 65 22 3a 46 25 3d 4b | . "tree":F%=K| 000084e0 46 25 28 74 6b 65 79 25 2c 30 29 0d 04 68 1d 20 |F%(tkey%,0)..h. | 000084f0 20 20 20 20 20 c9 20 22 64 75 70 22 3a 46 25 3d | . "dup":F%=| 00008500 4b 46 25 28 30 2c 30 29 0d 04 69 09 20 20 20 20 |KF%(0,0)..i. | 00008510 cb 0d 04 6a 3b 20 20 20 20 e7 20 63 68 61 72 74 |...j; . chart| 00008520 79 70 65 25 28 46 25 29 3c 3d 31 30 20 8c 20 f2 |ype%(F%)<=10 . .| 00008530 73 65 74 5f 63 61 72 65 74 28 6d 61 69 6e 57 25 |set_caret(mainW%| 00008540 2c 66 69 65 6c 64 25 28 46 25 29 29 0d 04 6b 17 |,field%(F%))..k.| 00008550 20 20 20 20 46 69 65 6c 64 6e 75 6d 62 65 72 25 | Fieldnumber%| 00008560 3d 46 25 0d 04 6c 07 20 20 cd 0d 04 6d 05 cb 0d |=F%..l. ...m...| 00008570 04 6e 05 e1 0d 04 6f 05 3a 0d 04 70 1e dd 20 f2 |.n....o.:..p.. .| 00008580 6d 61 74 63 68 5f 63 6c 69 63 6b 28 62 25 2c 77 |match_click(b%,w| 00008590 69 25 2c 69 63 25 29 0d 04 71 13 ea 20 6e 6f 74 |i%,ic%)..q.. not| 000085a0 25 2c 61 6e 64 25 2c 6f 72 25 0d 04 72 2f e7 20 |%,and%,or%..r/. | 000085b0 62 25 3d 32 20 8c 20 f2 73 68 6f 77 5f 6d 65 6e |b%=2 . .show_men| 000085c0 75 28 6d 65 6e 75 25 28 31 29 2c 78 25 2d 36 34 |u(menu%(1),x%-64| 000085d0 2c 79 25 2d 32 30 29 3a e1 0d 04 73 21 c8 8e 20 |,y%-20):...s!.. | 000085e0 a4 73 65 6c 65 63 74 65 64 5f 65 73 67 28 70 72 |.selected_esg(pr| 000085f0 69 6e 74 57 25 2c 34 29 20 ca 0d 04 74 1f 20 20 |intW%,4) ...t. | 00008600 c9 20 33 38 3a 72 65 70 6f 72 74 64 65 73 74 24 |. 38:reportdest$| 00008610 3d 22 57 69 6e 64 6f 77 22 0d 04 75 1d 20 20 c9 |="Window"..u. .| 00008620 20 33 39 3a 72 65 70 6f 72 74 64 65 73 74 24 3d | 39:reportdest$=| 00008630 22 46 69 6c 65 22 0d 04 76 20 20 20 c9 20 34 31 |"File"..v . 41| 00008640 3a 72 65 70 6f 72 74 64 65 73 74 24 3d 22 50 72 |:reportdest$="Pr| 00008650 69 6e 74 65 72 22 0d 04 77 05 cb 0d 04 78 0c c8 |inter"..w....x..| 00008660 8e 20 69 63 25 20 ca 0d 04 79 1f 20 20 c9 20 31 |. ic% ...y. . 1| 00008670 36 3a f2 63 6f 6d 6d 6f 6e 63 61 73 65 28 77 69 |6:.commoncase(wi| 00008680 25 2c 69 63 25 29 0d 04 7a 0b 20 20 c9 20 32 37 |%,ic%)..z. . 27| 00008690 3a 0d 04 7b 63 20 20 e7 20 a4 73 65 6c 65 63 74 |:..{c . .select| 000086a0 65 64 28 6d 61 74 63 68 57 25 2c 32 37 29 20 8c |ed(matchW%,27) .| 000086b0 20 24 a4 74 65 78 74 28 6d 61 74 63 68 57 25 2c | $.text(matchW%,| 000086c0 32 35 29 3d 22 4e 75 6d 62 65 72 20 66 6f 75 6e |25)="Number foun| 000086d0 64 22 20 8b 20 24 a4 74 65 78 74 28 6d 61 74 63 |d" . $.text(matc| 000086e0 68 57 25 2c 32 35 29 3d 22 54 69 6d 65 20 74 61 |hW%,25)="Time ta| 000086f0 6b 65 6e 22 0d 04 7c 1e 20 20 f2 72 65 64 72 61 |ken"..|. .redra| 00008700 77 5f 69 63 6f 6e 28 6d 61 74 63 68 57 25 2c 32 |w_icon(matchW%,2| 00008710 35 29 0d 04 7d 0d 20 20 c9 20 31 2c 32 34 3a 0d |5)..}. . 1,24:.| 00008720 04 7e 6f 20 20 e7 20 69 63 25 3d 32 34 20 8c 20 |.~o . ic%=24 . | 00008730 53 65 61 72 63 68 24 3d 22 22 3a 64 69 73 70 6c |Search$="":displ| 00008740 61 79 65 64 25 3d b9 20 8b 20 53 65 61 72 63 68 |ayed%=. . Search| 00008750 24 3d a4 70 61 72 73 65 28 24 a4 74 65 78 74 28 |$=.parse($.text(| 00008760 6d 61 74 63 68 57 25 2c 30 29 2c a4 73 65 6c 65 |matchW%,0),.sele| 00008770 63 74 65 64 28 6d 61 74 63 68 57 25 2c 31 36 29 |cted(matchW%,16)| 00008780 29 3a 64 69 73 70 6c 61 79 65 64 25 3d a3 0d 04 |):displayed%=...| 00008790 7f 1a 20 20 e7 20 53 65 61 72 63 68 24 3c 3e 22 |.. . Search$<>"| 000087a0 46 41 4c 53 45 22 20 8c 0d 04 80 1d 20 20 20 20 |FALSE" ..... | 000087b0 24 a4 74 65 78 74 28 6d 61 74 63 68 57 25 2c 31 |$.text(matchW%,1| 000087c0 34 29 3d 22 22 0d 04 81 20 20 20 20 20 f2 72 65 |4)=""... .re| 000087d0 64 72 61 77 5f 69 63 6f 6e 28 6d 61 74 63 68 57 |draw_icon(matchW| 000087e0 25 2c 31 34 29 0d 04 82 18 20 20 20 20 c8 8e 20 |%,14).... .. | 000087f0 72 65 70 6f 72 74 64 65 73 74 24 20 ca 0d 04 83 |reportdest$ ....| 00008800 39 20 20 20 20 20 20 c9 20 22 57 69 6e 64 6f 77 |9 . "Window| 00008810 22 2c 22 50 72 69 6e 74 65 72 22 3a f2 64 6f 5f |","Printer":.do_| 00008820 69 74 28 53 65 61 72 63 68 24 2c 64 69 73 70 6c |it(Search$,displ| 00008830 61 79 65 64 25 29 0d 04 84 13 20 20 20 20 20 20 |ayed%).... | 00008840 c9 20 22 46 69 6c 65 22 3a 0d 04 85 1f 20 20 20 |. "File":.... | 00008850 20 20 20 73 61 76 65 66 75 6e 63 24 3d 22 53 61 | savefunc$="Sa| 00008860 76 65 20 6c 69 73 74 22 0d 04 86 31 20 20 20 20 |ve list"...1 | 00008870 20 20 24 53 61 76 65 4e 61 6d 65 25 3d 24 64 61 | $SaveName%=$da| 00008880 74 61 62 61 73 65 25 2b 22 2e 50 72 69 6e 74 4a |tabase%+".PrintJ| 00008890 6f 62 73 2e 4c 69 73 74 22 0d 04 87 34 20 20 20 |obs.List"...4 | 000088a0 20 20 20 24 53 61 76 65 53 70 72 69 74 65 25 3d | $SaveSprite%=| 000088b0 22 73 66 69 6c 65 5f 66 66 66 3b 50 70 74 72 5f |"sfile_fff;Pptr_| 000088c0 68 61 6e 64 2c 31 32 2c 38 3b 42 33 22 0d 04 88 |hand,12,8;B3"...| 000088d0 3a 20 20 20 20 20 20 21 62 6c 6f 63 6b 25 3d 6d |: !block%=m| 000088e0 61 74 63 68 57 25 3a c8 99 20 22 57 69 6d 70 5f |atchW%:.. "Wimp_| 000088f0 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c |GetWindowState",| 00008900 2c 62 6c 6f 63 6b 25 0d 04 89 2c 20 20 20 20 20 |,block%..., | 00008910 20 78 6d 69 6e 25 3d 62 6c 6f 63 6b 25 21 34 2b | xmin%=block%!4+| 00008920 32 30 30 3a 79 6d 61 78 25 3d 62 6c 6f 63 6b 25 |200:ymax%=block%| 00008930 21 31 36 0d 04 8a 39 20 20 20 20 20 20 21 62 6c |!16...9 !bl| 00008940 6f 63 6b 25 3d 73 61 76 65 57 25 3a c8 99 20 22 |ock%=saveW%:.. "| 00008950 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 |Wimp_GetWindowSt| 00008960 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 04 8b 3b |ate",,block%...;| 00008970 20 20 20 20 20 20 62 6c 6f 63 6b 25 21 31 32 3d | block%!12=| 00008980 78 6d 69 6e 25 2b 62 6c 6f 63 6b 25 21 31 32 2d |xmin%+block%!12-| 00008990 62 6c 6f 63 6b 25 21 34 3a 62 6c 6f 63 6b 25 21 |block%!4:block%!| 000089a0 34 3d 78 6d 69 6e 25 0d 04 8c 3b 20 20 20 20 20 |4=xmin%...; | 000089b0 20 62 6c 6f 63 6b 25 21 38 3d 79 6d 61 78 25 2d | block%!8=ymax%-| 000089c0 62 6c 6f 63 6b 25 21 31 36 2b 62 6c 6f 63 6b 25 |block%!16+block%| 000089d0 21 38 3a 62 6c 6f 63 6b 25 21 31 36 3d 79 6d 61 |!8:block%!16=yma| 000089e0 78 25 0d 04 8d 33 20 20 20 20 20 20 62 6c 6f 63 |x%...3 bloc| 000089f0 6b 25 21 32 38 3d 2d 31 3a c8 99 20 22 57 69 6d |k%!28=-1:.. "Wim| 00008a00 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 |p_OpenWindow",,b| 00008a10 6c 6f 63 6b 25 0d 04 8e 1e 20 20 20 20 20 20 f2 |lock%.... .| 00008a20 73 65 74 5f 63 61 72 65 74 28 73 61 76 65 57 25 |set_caret(saveW%| 00008a30 2c 30 29 0d 04 8f 09 20 20 20 20 cb 0d 04 90 07 |,0).... .....| 00008a40 20 20 cd 0d 04 91 5e 20 20 e7 20 28 62 25 20 80 | ....^ . (b% .| 00008a50 20 25 31 31 31 29 3d 34 20 80 20 ac 20 a4 73 65 | %111)=4 . . .se| 00008a60 6c 65 63 74 65 64 28 6d 61 74 63 68 57 25 2c 32 |lected(matchW%,2| 00008a70 37 29 20 8c 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 |7) . .close_wind| 00008a80 6f 77 28 6d 61 74 63 68 57 25 29 3a f2 73 65 74 |ow(matchW%):.set| 00008a90 5f 63 61 72 65 74 28 6d 61 69 6e 57 25 2c 2d 31 |_caret(mainW%,-1| 00008aa0 29 0d 04 92 0e 20 20 c9 20 32 31 2c 32 32 3a 0d |).... . 21,22:.| 00008ab0 04 93 36 20 20 e7 20 28 62 25 20 80 20 25 31 31 |..6 . (b% . %11| 00008ac0 31 29 3d 34 20 8c 20 7a 25 3d 31 20 8b 20 e7 20 |1)=4 . z%=1 . . | 00008ad0 28 62 25 20 80 20 25 31 31 31 29 3d 31 20 8c 20 |(b% . %111)=1 . | 00008ae0 7a 25 3d 2d 31 0d 04 94 30 20 20 e7 20 69 63 25 |z%=-1...0 . ic%| 00008af0 3d 32 31 20 8c 20 4d 61 74 63 68 5f 74 61 67 25 |=21 . Match_tag%| 00008b00 2b 3d 7a 25 20 8b 20 4d 61 74 63 68 5f 74 61 67 |+=z% . Match_tag| 00008b10 25 2d 3d 7a 25 0d 04 95 29 20 20 e7 20 4d 61 74 |%-=z%...) . Mat| 00008b20 63 68 5f 74 61 67 25 3e 66 69 65 6c 64 73 25 20 |ch_tag%>fields% | 00008b30 8c 20 4d 61 74 63 68 5f 74 61 67 25 3d 31 0d 04 |. Match_tag%=1..| 00008b40 96 29 20 20 e7 20 4d 61 74 63 68 5f 74 61 67 25 |.) . Match_tag%| 00008b50 3c 31 20 8c 20 4d 61 74 63 68 5f 74 61 67 25 3d |<1 . Match_tag%=| 00008b60 66 69 65 6c 64 73 25 0d 04 97 28 20 20 24 a4 74 |fields%...( $.t| 00008b70 65 78 74 28 6d 61 74 63 68 57 25 2c 33 29 3d 54 |ext(matchW%,3)=T| 00008b80 61 67 24 28 4d 61 74 63 68 5f 74 61 67 25 29 0d |ag$(Match_tag%).| 00008b90 04 98 1d 20 20 f2 72 65 64 72 61 77 5f 69 63 6f |... .redraw_ico| 00008ba0 6e 28 6d 61 74 63 68 57 25 2c 33 29 0d 04 99 34 |n(matchW%,3)...4| 00008bb0 20 20 f2 74 69 63 6b 5f 6f 6e 65 28 66 69 65 6c | .tick_one(fiel| 00008bc0 64 6d 65 6e 75 25 2c 30 2c 66 69 65 6c 64 73 25 |dmenu%,0,fields%| 00008bd0 2d 31 2c 4d 61 74 63 68 5f 74 61 67 25 2d 31 29 |-1,Match_tag%-1)| 00008be0 0d 04 9a 30 20 20 c9 20 32 36 3a f2 73 68 6f 77 |...0 . 26:.show| 00008bf0 5f 6d 65 6e 75 28 66 69 65 6c 64 6d 65 6e 75 25 |_menu(fieldmenu%| 00008c00 2c 6f 6c 64 78 25 2b 33 32 2c 6f 6c 64 79 25 29 |,oldx%+32,oldy%)| 00008c10 0d 04 9b 0b 20 20 c9 20 31 30 3a 0d 04 9c 22 20 |.... . 10:..." | 00008c20 20 6f 70 25 3d a4 73 65 6c 65 63 74 65 64 5f 65 | op%=.selected_e| 00008c30 73 67 28 6d 61 74 63 68 57 25 2c 31 29 0d 04 9d |sg(matchW%,1)...| 00008c40 0e 20 20 c8 8e 20 6f 70 25 20 ca 0d 04 9e 13 20 |. .. op% ..... | 00008c50 20 20 20 c9 20 35 3a 6f 70 24 3d 22 3d 22 0d 04 | . 5:op$="="..| 00008c60 9f 13 20 20 20 20 c9 20 36 3a 6f 70 24 3d 22 7b |.. . 6:op$="{| 00008c70 22 0d 04 a0 13 20 20 20 20 c9 20 37 3a 6f 70 24 |".... . 7:op$| 00008c80 3d 22 3c 22 0d 04 a1 13 20 20 20 20 c9 20 38 3a |="<".... . 8:| 00008c90 6f 70 24 3d 22 3e 22 0d 04 a2 15 20 20 20 20 c9 |op$=">".... .| 00008ca0 20 31 35 3a 6f 70 24 3d 22 3c 3e 22 0d 04 a3 15 | 15:op$="<>"....| 00008cb0 20 20 20 20 c9 20 31 38 3a 6f 70 24 3d 22 3e 3d | . 18:op$=">=| 00008cc0 22 0d 04 a4 15 20 20 20 20 c9 20 31 39 3a 6f 70 |".... . 19:op| 00008cd0 24 3d 22 3c 3d 22 0d 04 a5 15 20 20 20 20 c9 20 |$="<=".... . | 00008ce0 32 30 3a 6f 70 24 3d 22 7d 7b 22 0d 04 a6 07 20 |20:op$="}{".... | 00008cf0 20 cb 0d 04 a7 34 20 20 6e 6f 74 25 3d a4 73 65 | ....4 not%=.se| 00008d00 6c 65 63 74 65 64 28 6d 61 74 63 68 57 25 2c 34 |lected(matchW%,4| 00008d10 29 3a f2 64 65 73 65 6c 65 63 74 28 6d 61 74 63 |):.deselect(matc| 00008d20 68 57 25 2c 34 29 0d 04 a8 36 20 20 61 6e 64 25 |hW%,4)...6 and%| 00008d30 3d a4 73 65 6c 65 63 74 65 64 28 6d 61 74 63 68 |=.selected(match| 00008d40 57 25 2c 31 32 29 3a f2 64 65 73 65 6c 65 63 74 |W%,12):.deselect| 00008d50 28 6d 61 74 63 68 57 25 2c 31 32 29 0d 04 a9 35 |(matchW%,12)...5| 00008d60 20 20 6f 72 25 3d a4 73 65 6c 65 63 74 65 64 28 | or%=.selected(| 00008d70 6d 61 74 63 68 57 25 2c 31 33 29 3a f2 64 65 73 |matchW%,13):.des| 00008d80 65 6c 65 63 74 28 6d 61 74 63 68 57 25 2c 31 33 |elect(matchW%,13| 00008d90 29 0d 04 aa 1c 20 20 74 61 67 24 3d 24 a4 74 65 |).... tag$=$.te| 00008da0 78 74 28 6d 61 74 63 68 57 25 2c 33 29 0d 04 ab |xt(matchW%,3)...| 00008db0 21 20 20 63 6f 6e 74 65 6e 74 73 24 3d 24 a4 74 |! contents$=$.t| 00008dc0 65 78 74 28 6d 61 74 63 68 57 25 2c 39 29 0d 04 |ext(matchW%,9)..| 00008dd0 ac 1d 20 20 6e 65 77 24 3d 74 61 67 24 2b 6f 70 |.. new$=tag$+op| 00008de0 24 2b 63 6f 6e 74 65 6e 74 73 24 0d 04 ad 24 20 |$+contents$...$ | 00008df0 20 e7 20 6e 6f 74 25 20 8c 20 6e 65 77 24 3d 22 | . not% . new$="| 00008e00 4e 4f 54 20 28 22 2b 6e 65 77 24 2b 22 29 22 0d |NOT ("+new$+")".| 00008e10 04 ae 1c 20 20 e7 20 61 6e 64 25 20 8c 20 6e 65 |... . and% . ne| 00008e20 77 24 2b 3d 22 20 41 4e 44 20 22 0d 04 af 1a 20 |w$+=" AND ".... | 00008e30 20 e7 20 6f 72 25 20 8c 20 6e 65 77 24 2b 3d 22 | . or% . new$+="| 00008e40 20 4f 52 20 22 0d 04 b0 46 20 20 24 a4 74 65 78 | OR "...F $.tex| 00008e50 74 28 6d 61 74 63 68 57 25 2c 30 29 3d 24 a4 74 |t(matchW%,0)=$.t| 00008e60 65 78 74 28 6d 61 74 63 68 57 25 2c 30 29 2b 6e |ext(matchW%,0)+n| 00008e70 65 77 24 3a f2 72 65 64 72 61 77 5f 69 63 6f 6e |ew$:.redraw_icon| 00008e80 28 6d 61 74 63 68 57 25 2c 30 29 0d 04 b1 32 20 |(matchW%,0)...2 | 00008e90 20 24 a4 74 65 78 74 28 6d 61 74 63 68 57 25 2c | $.text(matchW%,| 00008ea0 39 29 3d 22 22 3a f2 72 65 64 72 61 77 5f 69 63 |9)="":.redraw_ic| 00008eb0 6f 6e 28 6d 61 74 63 68 57 25 2c 39 29 0d 04 b2 |on(matchW%,9)...| 00008ec0 2c 20 20 c9 20 32 34 3a 72 65 70 6f 72 74 64 65 |, . 24:reportde| 00008ed0 73 74 24 3d 22 57 69 6e 64 6f 77 22 3a f2 64 6f |st$="Window":.do| 00008ee0 5f 69 74 28 22 22 2c b9 29 0d 04 b3 5e 20 20 e7 |_it("",.)...^ .| 00008ef0 20 28 62 25 20 80 20 25 31 31 31 29 3d 34 20 80 | (b% . %111)=4 .| 00008f00 20 ac 20 a4 73 65 6c 65 63 74 65 64 28 6d 61 74 | . .selected(mat| 00008f10 63 68 57 25 2c 32 37 29 20 8c 20 f2 63 6c 6f 73 |chW%,27) . .clos| 00008f20 65 5f 77 69 6e 64 6f 77 28 6d 61 74 63 68 57 25 |e_window(matchW%| 00008f30 29 3a f2 73 65 74 5f 63 61 72 65 74 28 6d 61 69 |):.set_caret(mai| 00008f40 6e 57 25 2c 2d 31 29 0d 04 b4 05 cb 0d 04 b5 05 |nW%,-1).........| 00008f50 e1 0d 04 b6 05 3a 0d 04 b7 14 dd 20 f2 69 63 6f |.....:..... .ico| 00008f60 6e 62 61 72 5f 63 6c 69 63 6b 0d 04 b8 12 c8 8e |nbar_click......| 00008f70 20 62 25 20 80 20 25 31 31 31 20 ca 0d 04 b9 0a | b% . %111 .....| 00008f80 20 20 c9 20 32 3a 0d 04 ba 1e 20 20 e7 20 a4 73 | . 2:.... . .s| 00008f90 65 6c 65 63 74 65 64 28 70 61 73 73 57 25 2c 31 |elected(passW%,1| 00008fa0 32 29 20 8c 0d 04 bb 1d 20 20 20 20 f2 63 6c 6f |2) ..... .clo| 00008fb0 73 65 5f 77 69 6e 64 6f 77 28 73 61 76 65 57 25 |se_window(saveW%| 00008fc0 29 0d 04 bc 28 20 20 20 20 f2 73 68 6f 77 5f 6d |)...( .show_m| 00008fd0 65 6e 75 28 6d 65 6e 75 25 28 30 29 2c 78 25 2d |enu(menu%(0),x%-| 00008fe0 36 34 2c 79 62 61 72 25 29 0d 04 bd 07 20 20 cd |64,ybar%).... .| 00008ff0 0d 04 be 0a 20 20 c9 20 34 3a 0d 04 bf 1b 20 20 |.... . 4:.... | 00009000 e7 20 24 64 62 61 73 65 25 3d 22 4e 6f 20 64 61 |. $dbase%="No da| 00009010 74 61 22 20 8c 0d 04 c0 1e 20 20 20 20 24 53 61 |ta" ..... $Sa| 00009020 76 65 4e 61 6d 65 25 3d 22 21 44 61 74 61 42 61 |veName%="!DataBa| 00009030 73 65 22 0d 04 c1 32 20 20 20 20 24 53 61 76 65 |se"...2 $Save| 00009040 53 70 72 69 74 65 25 3d 22 73 6e 65 77 5f 61 70 |Sprite%="snew_ap| 00009050 70 6c 3b 50 70 74 72 5f 68 61 6e 64 2c 31 32 2c |pl;Pptr_hand,12,| 00009060 38 3b 42 33 22 0d 04 c2 1c 20 20 20 20 73 61 76 |8;B3".... sav| 00009070 65 66 75 6e 63 24 3d 63 68 6f 69 63 65 24 28 31 |efunc$=choice$(1| 00009080 29 0d 04 c3 31 20 20 20 20 c8 99 20 22 57 69 6d |)...1 .. "Wim| 00009090 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 73 |p_CreateMenu",,s| 000090a0 61 76 65 57 25 2c 78 25 2d 35 30 2c 79 25 2b 33 |aveW%,x%-50,y%+3| 000090b0 30 30 0d 04 c4 17 20 20 20 20 cc 20 f2 73 68 6f |00.... . .sho| 000090c0 77 5f 77 69 6e 64 6f 77 73 0d 04 c5 07 20 20 cd |w_windows.... .| 000090d0 0d 04 c6 05 cb 0d 04 c7 05 e1 0d 04 c8 05 3a 0d |..............:.| 000090e0 04 c9 11 dd 20 f2 6d 61 69 6e 5f 63 6c 69 63 6b |.... .main_click| 000090f0 0d 04 ca 1e ea 20 50 25 2c 46 25 2c 48 24 2c 4c |..... P%,F%,H$,L| 00009100 25 2c 54 25 2c 4e 24 2c 66 69 65 6c 64 24 0d 04 |%,T%,N$,field$..| 00009110 cb 62 e7 20 70 72 65 73 65 6e 74 25 3d 37 20 80 |.b. present%=7 .| 00009120 20 61 64 6a 75 73 74 25 3d a3 20 8c 20 e7 20 a4 | adjust%=. . . .| 00009130 76 61 6c 69 64 61 74 65 28 46 69 65 6c 64 6e 75 |validate(Fieldnu| 00009140 6d 62 65 72 25 2c 54 25 2c 4e 24 29 3d a3 20 8c |mber%,T%,N$)=. .| 00009150 20 e1 20 8b 20 f2 75 70 64 61 74 65 5f 63 61 6c | . . .update_cal| 00009160 63 73 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 |cs(Fieldnumber%)| 00009170 0d 04 cc 38 e7 20 66 6c 61 73 68 25 20 8c 20 f2 |...8. flash% . .| 00009180 64 65 73 65 6c 65 63 74 28 6d 61 69 6e 57 25 2c |deselect(mainW%,| 00009190 66 69 65 6c 64 25 28 66 6c 61 73 68 25 29 29 3a |field%(flash%)):| 000091a0 66 6c 61 73 68 25 3d a3 0d 04 cd 11 c8 8e 20 70 |flash%=....... p| 000091b0 72 65 73 65 6e 74 25 20 ca 0d 04 ce 19 20 20 c9 |resent% ..... .| 000091c0 20 30 2c 33 3a f2 64 65 73 69 67 6e 5f 66 69 65 | 0,3:.design_fie| 000091d0 6c 64 0d 04 cf 0a 20 20 c9 20 31 3a 0d 04 d0 25 |ld.... . 1:...%| 000091e0 20 20 e7 20 a4 66 69 72 73 74 5f 66 69 65 6c 64 | . .first_field| 000091f0 3e 30 20 8c 20 f2 64 65 66 61 75 6c 74 5f 6b 65 |>0 . .default_ke| 00009200 79 0d 04 d1 13 20 20 f2 64 65 73 69 67 6e 5f 66 |y.... .design_f| 00009210 69 65 6c 64 0d 04 d2 0c 20 20 c9 20 35 2c 37 3a |ield.... . 5,7:| 00009220 0d 04 d3 11 20 20 e7 20 61 64 6a 75 73 74 25 20 |.... . adjust% | 00009230 8c 0d 04 d4 15 20 20 20 20 f2 64 65 73 69 67 6e |..... .design| 00009240 5f 66 69 65 6c 64 0d 04 d5 09 20 20 20 20 cc 0d |_field.... ..| 00009250 04 d6 1c 20 20 20 20 f2 69 64 65 6e 74 69 66 79 |... .identify| 00009260 5f 66 69 65 6c 64 28 69 63 25 29 0d 04 d7 26 20 |_field(ic%)...& | 00009270 20 20 20 e7 20 72 65 6c 61 74 69 6f 6e 73 25 3d | . relations%=| 00009280 b9 20 8c 20 f2 72 65 6c 61 74 69 6f 6e 73 28 a3 |. . .relations(.| 00009290 29 0d 04 d8 16 20 20 20 20 c8 8e 20 62 25 20 80 |).... .. b% .| 000092a0 20 32 30 34 37 20 ca 0d 04 d9 0e 20 20 20 20 20 | 2047 ..... | 000092b0 20 c9 20 32 3a 0d 04 da 2c 20 20 20 20 20 20 e7 | . 2:..., .| 000092c0 20 a4 73 65 6c 65 63 74 65 64 28 70 61 73 73 57 | .selected(passW| 000092d0 25 2c 31 31 29 20 84 20 4d 6f 64 69 66 79 25 20 |%,11) . Modify% | 000092e0 8c 0d 04 db 1e 20 20 20 20 20 20 20 20 f2 73 65 |..... .se| 000092f0 74 5f 75 70 5f 66 69 65 6c 64 5f 6d 65 6e 75 0d |t_up_field_menu.| 00009300 04 dc 2c 20 20 20 20 20 20 20 20 f2 73 68 6f 77 |.., .show| 00009310 5f 6d 65 6e 75 28 6d 65 6e 75 25 28 31 29 2c 78 |_menu(menu%(1),x| 00009320 25 2d 36 34 2c 79 25 2d 32 30 29 0d 04 dd 0b 20 |%-64,y%-20).... | 00009330 20 20 20 20 20 cd 0d 04 de 0e 20 20 20 20 20 20 | ..... | 00009340 c9 20 31 3a 0d 04 df 26 20 20 20 20 20 20 c8 8e |. 1:...& ..| 00009350 20 63 68 61 72 74 79 70 65 25 28 46 69 65 6c 64 | chartype%(Field| 00009360 6e 75 6d 62 65 72 25 29 20 ca 0d 04 e0 1d 20 20 |number%) ..... | 00009370 20 20 20 20 20 20 c9 20 34 31 2c 34 32 2c 34 33 | . 41,42,43| 00009380 2c 34 34 2c 34 35 3a 0d 04 e1 1c 20 20 20 20 20 |,44,45:.... | 00009390 20 20 20 f2 69 6e 76 65 72 74 28 77 69 25 2c 69 | .invert(wi%,i| 000093a0 63 25 29 0d 04 e2 28 20 20 20 20 20 20 20 20 63 |c%)...( c| 000093b0 6f 6c 25 3d a4 67 65 74 5f 69 63 6f 6e 5f 63 6f |ol%=.get_icon_co| 000093c0 6c 73 28 77 69 25 2c 69 63 25 29 0d 04 e3 34 20 |ls(wi%,ic%)...4 | 000093d0 20 20 20 20 20 20 20 63 6f 6c 25 3d 28 28 63 6f | col%=((co| 000093e0 6c 25 3e 3e 34 29 20 84 20 28 63 6f 6c 25 3c 3c |l%>>4) . (col%<<| 000093f0 34 29 29 20 80 20 25 31 31 31 31 31 31 31 31 0d |4)) . %11111111.| 00009400 04 e4 28 20 20 20 20 20 20 20 20 f2 73 65 74 5f |..( .set_| 00009410 69 63 6f 6e 5f 63 6f 6c 73 28 77 69 25 2c 69 63 |icon_cols(wi%,ic| 00009420 25 2c 63 6f 6c 25 29 0d 04 e5 25 20 20 20 20 20 |%,col%)...% | 00009430 20 20 20 62 6f 78 6f 6e 25 3d 28 28 63 6f 6c 25 | boxon%=((col%| 00009440 20 80 20 25 31 31 31 31 29 3c 32 29 0d 04 e6 25 | . %1111)<2)...%| 00009450 20 20 20 20 20 20 20 20 f2 75 70 64 61 74 65 5f | .update_| 00009460 73 65 6c 65 63 74 69 6f 6e 28 62 6f 78 6f 6e 25 |selection(boxon%| 00009470 29 0d 04 e7 0b 20 20 20 20 20 20 cb 0d 04 e8 0e |).... .....| 00009480 20 20 20 20 20 20 c9 20 34 3a 0d 04 e9 26 20 20 | . 4:...& | 00009490 20 20 20 20 c8 8e 20 63 68 61 72 74 79 70 65 25 | .. chartype%| 000094a0 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 20 ca |(Fieldnumber%) .| 000094b0 0d 04 ea 39 20 20 20 20 20 20 20 20 c9 20 33 31 |...9 . 31| 000094c0 3a f2 66 69 6c 74 65 72 28 6d 61 69 6e 57 25 2c |:.filter(mainW%,| 000094d0 66 69 65 6c 64 25 28 62 75 74 74 6f 6e 66 69 65 |field%(buttonfie| 000094e0 6c 64 25 28 32 32 29 29 29 0d 04 eb 1d 20 20 20 |ld%(22))).... | 000094f0 20 20 20 20 20 c9 20 34 31 2c 34 32 2c 34 33 2c | . 41,42,43,| 00009500 34 34 2c 34 35 3a 0d 04 ec 26 20 20 20 20 20 20 |44,45:...& | 00009510 20 20 e7 20 a6 28 2d 33 29 20 8c 20 f2 69 6e 76 | . .(-3) . .inv| 00009520 65 72 74 28 77 69 25 2c 69 63 25 29 0d 04 ed 51 |ert(wi%,ic%)...Q| 00009530 20 20 20 20 20 20 20 20 e7 20 a4 73 65 6c 65 63 | . .selec| 00009540 74 65 64 28 77 69 25 2c 69 63 25 29 20 8c 20 24 |ted(wi%,ic%) . $| 00009550 52 66 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 |Rf%(Fieldnumber%| 00009560 29 3d 22 20 22 20 8b 20 24 52 66 25 28 46 69 65 |)=" " . $Rf%(Fie| 00009570 6c 64 6e 75 6d 62 65 72 25 29 3d 22 22 0d 04 ee |ldnumber%)=""...| 00009580 1b 20 20 20 20 20 20 20 20 7f 3a f2 72 65 6c 61 |. .:.rela| 00009590 74 69 6f 6e 73 28 b9 29 0d 04 ef 0b 20 20 20 20 |tions(.).... | 000095a0 20 20 cb 0d 04 f0 10 20 20 20 20 20 20 c9 20 32 | ..... . 2| 000095b0 35 36 3a 0d 04 f1 26 20 20 20 20 20 20 c8 8e 20 |56:...& .. | 000095c0 63 68 61 72 74 79 70 65 25 28 46 69 65 6c 64 6e |chartype%(Fieldn| 000095d0 75 6d 62 65 72 25 29 20 ca 0d 04 f2 4a 20 20 20 |umber%) ....J | 000095e0 20 20 20 20 20 c9 20 30 2c 31 2c 32 2c 33 2c 34 | . 0,1,2,3,4| 000095f0 2c 35 2c 36 2c 37 2c 38 2c 33 36 2c 33 39 2c 34 |,5,6,7,8,36,39,4| 00009600 36 2c 34 37 2c 34 38 2c 34 39 2c 35 30 2c 35 31 |6,47,48,49,50,51| 00009610 2c 35 32 2c 35 33 2c 35 34 2c 35 35 2c 35 36 2c |,52,53,54,55,56,| 00009620 35 37 3a 0d 04 f3 1c 20 20 20 20 20 20 20 20 f2 |57:.... .| 00009630 69 6e 76 65 72 74 28 77 69 25 2c 69 63 25 29 0d |invert(wi%,ic%).| 00009640 04 f4 31 20 20 20 20 20 20 20 20 f2 75 70 64 61 |..1 .upda| 00009650 74 65 5f 73 65 6c 65 63 74 69 6f 6e 28 a4 73 65 |te_selection(.se| 00009660 6c 65 63 74 65 64 28 77 69 25 2c 69 63 25 29 29 |lected(wi%,ic%))| 00009670 0d 04 f5 7d 20 20 20 20 20 20 20 20 c9 20 39 2c |...} . 9,| 00009680 31 30 2c 31 31 2c 31 32 2c 31 33 2c 31 34 2c 31 |10,11,12,13,14,1| 00009690 35 2c 31 36 2c 31 37 2c 31 38 2c 31 39 2c 32 30 |5,16,17,18,19,20| 000096a0 2c 32 31 2c 32 32 2c 32 33 2c 32 34 2c 32 35 2c |,21,22,23,24,25,| 000096b0 32 36 2c 32 37 2c 32 38 2c 32 39 2c 33 30 3a f2 |26,27,28,29,30:.| 000096c0 6b 65 79 70 61 64 5f 63 6c 69 63 6b 28 77 69 25 |keypad_click(wi%| 000096d0 2c 63 68 61 72 74 79 70 65 25 28 46 69 65 6c 64 |,chartype%(Field| 000096e0 6e 75 6d 62 65 72 25 29 2d 39 2c 31 29 0d 04 f6 |number%)-9,1)...| 000096f0 0b 20 20 20 20 20 20 cb 0d 04 f7 11 20 20 20 20 |. ..... | 00009700 20 20 c9 20 31 30 32 34 3a 0d 04 f8 13 20 20 20 | . 1024:.... | 00009710 20 20 20 e7 20 a6 28 2d 33 29 20 8c 0d 04 f9 2e | . .(-3) .....| 00009720 20 20 20 20 20 20 20 20 c8 99 20 22 57 69 6d 70 | .. "Wimp| 00009730 5f 47 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f |_GetCaretPositio| 00009740 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 04 fa 24 20 20 |n",,block%...$ | 00009750 20 20 20 20 20 20 77 69 25 3d 21 62 6c 6f 63 6b | wi%=!block| 00009760 25 3a 69 63 25 3d 62 6c 6f 63 6b 25 21 34 0d 04 |%:ic%=block%!4..| 00009770 fb 14 20 20 20 20 20 20 20 20 c8 8e 20 77 69 25 |.. .. wi%| 00009780 20 ca 0d 04 fc 28 20 20 20 20 20 20 20 20 20 20 | ....( | 00009790 c9 20 6d 61 74 63 68 57 25 3a e7 20 69 63 25 3c |. matchW%:. ic%<| 000097a0 3e 30 20 8c 20 77 69 25 3d 30 0d 04 fd 2a 20 20 |>0 . wi%=0...* | 000097b0 20 20 20 20 20 20 20 20 c9 20 6b 65 79 70 61 64 | . keypad| 000097c0 57 25 3a e7 20 69 63 25 3c 3e 32 39 20 8c 20 77 |W%:. ic%<>29 . w| 000097d0 69 25 3d 30 0d 04 fe 28 20 20 20 20 20 20 20 20 |i%=0...( | 000097e0 20 20 c9 20 6d 65 72 67 65 57 25 3a e7 20 69 63 | . mergeW%:. ic| 000097f0 25 3c 3e 33 20 8c 20 77 69 25 3d 30 0d 04 ff 15 |%<>3 . wi%=0....| 00009800 20 20 20 20 20 20 20 20 20 20 7f 3a 77 69 25 3d | .:wi%=| 00009810 30 0d 05 00 0d 20 20 20 20 20 20 20 20 cb 0d 05 |0.... ...| 00009820 01 16 20 20 20 20 20 20 20 20 e7 20 77 69 25 3c |.. . wi%<| 00009830 3e 30 20 8c 0d 05 02 31 20 20 20 20 20 20 20 20 |>0 ....1 | 00009840 20 20 24 a4 74 65 78 74 28 77 69 25 2c 69 63 25 | $.text(wi%,ic%| 00009850 29 2b 3d 54 61 67 24 28 46 69 65 6c 64 6e 75 6d |)+=Tag$(Fieldnum| 00009860 62 65 72 25 29 0d 05 03 21 20 20 20 20 20 20 20 |ber%)...! | 00009870 20 20 20 f2 73 65 74 5f 63 61 72 65 74 28 77 69 | .set_caret(wi| 00009880 25 2c 69 63 25 29 0d 05 04 23 20 20 20 20 20 20 |%,ic%)...# | 00009890 20 20 20 20 f2 72 65 64 72 61 77 5f 69 63 6f 6e | .redraw_icon| 000098a0 28 77 69 25 2c 69 63 25 29 0d 05 05 0d 20 20 20 |(wi%,ic%).... | 000098b0 20 20 20 20 20 cd 0d 05 06 0d 20 20 20 20 20 20 | ..... | 000098c0 20 20 cc 0d 05 07 28 20 20 20 20 20 20 20 20 c8 | ....( .| 000098d0 8e 20 63 68 61 72 74 79 70 65 25 28 46 69 65 6c |. chartype%(Fiel| 000098e0 64 6e 75 6d 62 65 72 25 29 20 ca 0d 05 08 1e 20 |dnumber%) ..... | 000098f0 20 20 20 20 20 20 20 20 20 c9 20 30 2c 31 2c 32 | . 0,1,2| 00009900 2c 33 2c 34 2c 35 2c 38 3a 0d 05 09 20 20 20 20 |,3,4,5,8:... | 00009910 20 20 20 20 20 20 20 e7 20 46 69 65 6c 64 6e 75 | . Fieldnu| 00009920 6d 62 65 72 25 3e 30 20 8c 0d 05 0a 3f 20 20 20 |mber%>0 ....? | 00009930 20 20 20 20 20 20 20 20 20 21 62 6c 6f 63 6b 25 | !block%| 00009940 3d 6d 61 69 6e 57 25 3a c8 99 20 22 57 69 6d 70 |=mainW%:.. "Wimp| 00009950 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 |_GetWindowState"| 00009960 2c 2c 62 6c 6f 63 6b 25 0d 05 0b 60 20 20 20 20 |,,block%...` | 00009970 20 20 20 20 20 20 20 20 e7 20 41 63 63 65 73 73 | . Access| 00009980 25 20 8c 20 c8 99 20 22 57 69 6d 70 5f 53 65 74 |% . .. "Wimp_Set| 00009990 43 61 72 65 74 50 6f 73 69 74 69 6f 6e 22 2c 6d |CaretPosition",m| 000099a0 61 69 6e 57 25 2c 69 63 25 2c 78 25 2d 62 6c 6f |ainW%,ic%,x%-blo| 000099b0 63 6b 25 21 34 2b 62 6c 6f 63 6b 25 21 32 30 2c |ck%!4+block%!20,| 000099c0 79 25 2c 2d 31 2c 2d 31 0d 05 0c 0f 20 20 20 20 |y%,-1,-1.... | 000099d0 20 20 20 20 20 20 cd 0d 05 0d 7b 20 20 20 20 20 | ....{ | 000099e0 20 20 20 20 20 c9 20 33 35 3a e7 20 c0 6c 69 6e | . 35:. .lin| 000099f0 6b 24 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 |k$(Fieldnumber%)| 00009a00 2c 31 29 3d 22 40 22 20 8c 20 c8 99 20 22 4f 53 |,1)="@" . .. "OS| 00009a10 5f 43 4c 49 22 2c 22 46 69 6c 65 72 5f 4f 70 65 |_CLI","Filer_Ope| 00009a20 6e 44 69 72 20 22 2b c1 6c 69 6e 6b 24 28 46 69 |nDir "+.link$(Fi| 00009a30 65 6c 64 6e 75 6d 62 65 72 25 29 2c 32 29 20 8b |eldnumber%),2) .| 00009a40 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 2c 39 | .softerror("",9| 00009a50 31 29 0d 05 0e 4e 20 20 20 20 20 20 20 20 20 20 |1)...N | 00009a60 c9 20 33 36 2c 33 37 2c 33 38 3a f2 65 64 69 74 |. 36,37,38:.edit| 00009a70 5f 62 6c 6f 62 28 52 45 43 25 2c 46 69 65 6c 64 |_blob(REC%,Field| 00009a80 6e 75 6d 62 65 72 25 2c 63 68 61 72 74 79 70 65 |number%,chartype| 00009a90 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 29 |%(Fieldnumber%))| 00009aa0 0d 05 0f 7f 20 20 20 20 20 20 20 20 20 20 c9 20 |.... . | 00009ab0 39 2c 31 30 2c 31 31 2c 31 32 2c 31 33 2c 31 34 |9,10,11,12,13,14| 00009ac0 2c 31 35 2c 31 36 2c 31 37 2c 31 38 2c 31 39 2c |,15,16,17,18,19,| 00009ad0 32 30 2c 32 31 2c 32 32 2c 32 33 2c 32 34 2c 32 |20,21,22,23,24,2| 00009ae0 35 2c 32 36 2c 32 37 2c 32 38 2c 32 39 2c 33 30 |5,26,27,28,29,30| 00009af0 3a f2 6b 65 79 70 61 64 5f 63 6c 69 63 6b 28 77 |:.keypad_click(w| 00009b00 69 25 2c 63 68 61 72 74 79 70 65 25 28 46 69 65 |i%,chartype%(Fie| 00009b10 6c 64 6e 75 6d 62 65 72 25 29 2d 39 2c 34 29 0d |ldnumber%)-9,4).| 00009b20 05 10 19 20 20 20 20 20 20 20 20 20 20 c9 20 33 |... . 3| 00009b30 32 3a f2 6d 61 74 63 68 0d 05 11 1b 20 20 20 20 |2:.match.... | 00009b40 20 20 20 20 20 20 c9 20 33 33 3a f2 65 78 69 74 | . 33:.exit| 00009b50 28 30 29 0d 05 12 1a 20 20 20 20 20 20 20 20 20 |(0).... | 00009b60 20 c9 20 33 34 3a 71 75 69 74 25 3d b9 0d 05 13 | . 34:quit%=....| 00009b70 0d 20 20 20 20 20 20 20 20 cb 0d 05 14 0b 20 20 |. ..... | 00009b80 20 20 20 20 cd 0d 05 15 09 20 20 20 20 cb 0d 05 | ..... ...| 00009b90 16 07 20 20 cd 0d 05 17 05 cb 0d 05 18 05 e1 0d |.. ............| 00009ba0 05 19 05 3a 0d 05 1a 18 dd 20 f2 73 65 74 5f 75 |...:..... .set_u| 00009bb0 70 5f 66 69 65 6c 64 5f 6d 65 6e 75 0d 05 1b 08 |p_field_menu....| 00009bc0 ea 20 49 25 0d 05 1c 31 f2 74 69 63 6b 5f 6f 6e |. I%...1.tick_on| 00009bd0 65 28 6d 65 6e 75 25 28 35 29 2c 30 2c 4c 61 73 |e(menu%(5),0,Las| 00009be0 74 54 61 62 6c 65 25 2c 4c 61 73 74 54 61 62 6c |tTable%,LastTabl| 00009bf0 65 25 2b 31 29 0d 05 1d 16 e7 20 46 69 65 6c 64 |e%+1)..... Field| 00009c00 6e 75 6d 62 65 72 25 3e 30 20 8c 0d 05 1e 18 20 |number%>0 ..... | 00009c10 20 f2 6c 69 74 28 6d 65 6e 75 25 28 31 29 2c 31 | .lit(menu%(1),1| 00009c20 2c b9 29 0d 05 1f 1d 20 20 24 41 6e 61 6c 79 73 |,.).... $Analys| 00009c30 65 46 75 6e 63 25 3d 22 41 6e 61 6c 79 73 65 22 |eFunc%="Analyse"| 00009c40 0d 05 20 2d 20 20 24 46 69 65 6c 64 70 6f 73 25 |.. - $Fieldpos%| 00009c50 3d 22 46 69 65 6c 64 3a 20 22 2b 54 61 67 24 28 |="Field: "+Tag$(| 00009c60 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 0d 05 21 |Fieldnumber%)..!| 00009c70 1c 20 20 24 4c 69 6e 6b 54 69 74 6c 65 25 3d 46 |. $LinkTitle%=F| 00009c80 69 65 6c 64 6e 61 6d 65 24 0d 05 22 27 20 20 24 |ieldname$.."' $| 00009c90 43 61 6c 63 46 6f 72 6d 25 3d 54 61 67 24 28 46 |CalcForm%=Tag$(F| 00009ca0 69 65 6c 64 6e 75 6d 62 65 72 25 29 2b 22 3d 22 |ieldnumber%)+"="| 00009cb0 0d 05 23 10 20 20 e3 20 49 25 3d 30 20 b8 20 39 |..#. . I%=0 . 9| 00009cc0 0d 05 24 1c 20 20 20 20 f2 6c 69 74 28 6d 65 6e |..$. .lit(men| 00009cd0 75 25 28 31 30 29 2c 49 25 2c a3 29 0d 05 25 0a |u%(10),I%,.)..%.| 00009ce0 20 20 ed 20 49 25 0d 05 26 20 20 20 56 25 3d 63 | . I%..& V%=c| 00009cf0 68 61 72 74 79 70 65 25 28 46 69 65 6c 64 6e 75 |hartype%(Fieldnu| 00009d00 6d 62 65 72 25 29 0d 05 27 0d 20 20 c8 8e 20 56 |mber%)..'. .. V| 00009d10 25 20 ca 0d 05 28 12 20 20 20 20 c9 20 35 2c 35 |% ...(. . 5,5| 00009d20 30 2c 35 31 3a 0d 05 29 26 20 20 20 20 69 73 61 |0,51:..)& isa| 00009d30 64 61 74 65 25 3d b9 3a f2 6c 69 74 28 6d 65 6e |date%=.:.lit(men| 00009d40 75 25 28 31 30 29 2c 31 2c b9 29 0d 05 2a 26 20 |u%(10),1,.)..*& | 00009d50 20 20 20 24 41 6e 61 6c 79 73 65 46 75 6e 63 25 | $AnalyseFunc%| 00009d60 3d 22 41 6e 61 6c 79 73 65 20 6d 6f 6e 74 68 73 |="Analyse months| 00009d70 22 0d 05 2b 14 20 20 20 20 7f 3a 69 73 61 64 61 |"..+. .:isada| 00009d80 74 65 25 3d a3 0d 05 2c 07 20 20 cb 0d 05 2d 24 |te%=...,. ...-$| 00009d90 20 20 e7 20 a4 69 73 5f 61 5f 6b 65 79 28 46 69 | . .is_a_key(Fi| 00009da0 65 6c 64 6e 75 6d 62 65 72 25 29 3e 3d 30 20 8c |eldnumber%)>=0 .| 00009db0 0d 05 2e 1b 20 20 20 20 f2 6c 69 74 28 6d 65 6e |.... .lit(men| 00009dc0 75 25 28 31 30 29 2c 31 2c b9 29 0d 05 2f 5f 20 |u%(10),1,.)../_ | 00009dd0 20 20 20 e7 20 69 73 61 64 61 74 65 25 3d a3 20 | . isadate%=. | 00009de0 84 20 ac 20 a4 73 65 6c 65 63 74 65 64 28 6d 61 |. . .selected(ma| 00009df0 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 69 65 6c |inW%,field%(Fiel| 00009e00 64 6e 75 6d 62 65 72 25 29 29 20 8c 20 24 41 6e |dnumber%)) . $An| 00009e10 61 6c 79 73 65 46 75 6e 63 25 3d 22 41 6e 61 6c |alyseFunc%="Anal| 00009e20 79 73 65 20 69 6e 64 65 78 22 0d 05 30 07 20 20 |yse index"..0. | 00009e30 cd 0d 05 31 0d 20 20 c8 8e 20 56 25 20 ca 0d 05 |...1. .. V% ...| 00009e40 32 16 20 20 20 20 c9 20 30 2c 31 2c 32 2c 33 2c |2. . 0,1,2,3,| 00009e50 34 2c 35 3a 0d 05 33 21 20 20 20 20 f2 6c 69 74 |4,5:..3! .lit| 00009e60 28 6d 65 6e 75 25 28 31 30 29 2c 30 2c 41 63 63 |(menu%(10),0,Acc| 00009e70 65 73 73 25 29 0d 05 34 21 20 20 20 20 f2 6c 69 |ess%)..4! .li| 00009e80 74 28 6d 65 6e 75 25 28 31 30 29 2c 32 2c 41 63 |t(menu%(10),2,Ac| 00009e90 63 65 73 73 25 29 0d 05 35 21 20 20 20 20 f2 6c |cess%)..5! .l| 00009ea0 69 74 28 6d 65 6e 75 25 28 31 30 29 2c 33 2c 41 |it(menu%(10),3,A| 00009eb0 63 63 65 73 73 25 29 0d 05 36 21 20 20 20 20 f2 |ccess%)..6! .| 00009ec0 6c 69 74 28 6d 65 6e 75 25 28 31 30 29 2c 35 2c |lit(menu%(10),5,| 00009ed0 41 63 63 65 73 73 25 29 0d 05 37 21 20 20 20 20 |Access%)..7! | 00009ee0 f2 6c 69 74 28 6d 65 6e 75 25 28 31 30 29 2c 39 |.lit(menu%(10),9| 00009ef0 2c 41 63 63 65 73 73 25 29 0d 05 38 34 20 20 20 |,Access%)..84 | 00009f00 20 4b 65 79 66 6c 64 30 25 3d 46 69 65 6c 64 6e | Keyfld0%=Fieldn| 00009f10 75 6d 62 65 72 25 3a 4b 65 79 66 6c 64 31 25 3d |umber%:Keyfld1%=| 00009f20 30 3a 24 46 32 64 6b 65 79 25 3d 22 22 0d 05 39 |0:$F2dkey%=""..9| 00009f30 23 20 20 20 20 24 46 31 64 6b 65 79 25 3d 54 61 |# $F1dkey%=Ta| 00009f40 67 24 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 |g$(Fieldnumber%)| 00009f50 0d 05 3a 28 20 20 20 20 6b 65 79 6c 69 6d 69 74 |..:( keylimit| 00009f60 25 3d 54 65 78 74 4c 65 6e 67 74 68 25 3a 24 4b |%=TextLength%:$K| 00009f70 65 79 4e 6f 25 3d 22 22 0d 05 3b 32 20 20 20 20 |eyNo%=""..;2 | 00009f80 57 44 25 28 29 3d 30 3a 57 44 25 28 30 29 3d 6b |WD%()=0:WD%(0)=k| 00009f90 65 79 6c 69 6d 69 74 25 3a 6b 65 79 6c 65 6e 25 |eylimit%:keylen%| 00009fa0 3d 6b 65 79 6c 69 6d 69 74 25 0d 05 3c 12 20 20 |=keylimit%..<. | 00009fb0 20 20 e3 20 4a 25 3d 30 20 b8 20 33 0d 05 3d 1f | . J%=0 . 3..=.| 00009fc0 20 20 20 20 20 20 24 57 6b 65 79 25 28 4a 25 29 | $Wkey%(J%)| 00009fd0 3d c3 28 57 44 25 28 4a 25 29 29 0d 05 3e 0c 20 |=.(WD%(J%))..>. | 00009fe0 20 20 20 ed 20 4a 25 0d 05 3f 2a 20 20 20 20 24 | . J%..?* $| 00009ff0 43 68 61 6e 67 65 54 69 74 6c 65 25 3d 22 46 69 |ChangeTitle%="Fi| 0000a000 65 6c 64 3a 20 22 2b 46 69 65 6c 64 6e 61 6d 65 |eld: "+Fieldname| 0000a010 24 0d 05 40 1d 20 20 20 20 24 a4 74 65 78 74 28 |$..@. $.text(| 0000a020 63 68 61 6e 67 65 57 25 2c 31 29 3d 22 22 0d 05 |changeW%,1)=""..| 0000a030 41 2b 20 20 20 20 e7 20 ac 20 63 6f 6d 6d 6f 6e |A+ . . common| 0000a040 25 20 8c 20 24 a4 74 65 78 74 28 63 68 61 6e 67 |% . $.text(chang| 0000a050 65 57 25 2c 33 29 3d 22 22 0d 05 42 14 20 20 20 |eW%,3)=""..B. | 0000a060 20 f2 6c 69 6e 6b 5f 73 74 61 74 75 73 0d 05 43 | .link_status..C| 0000a070 0c 20 20 20 20 c9 20 36 3a 0d 05 44 21 20 20 20 |. . 6:..D! | 0000a080 20 f2 6c 69 74 28 6d 65 6e 75 25 28 31 30 29 2c | .lit(menu%(10),| 0000a090 34 2c 4d 6f 64 69 66 79 25 29 0d 05 45 21 20 20 |4,Modify%)..E! | 0000a0a0 20 20 f2 6c 69 74 28 6d 65 6e 75 25 28 31 30 29 | .lit(menu%(10)| 0000a0b0 2c 33 2c 41 63 63 65 73 73 25 29 0d 05 46 24 20 |,3,Access%)..F$ | 0000a0c0 20 20 20 f2 63 61 6c 63 5f 6c 69 6e 6b 28 22 43 | .calc_link("C| 0000a0d0 61 6c 63 75 6c 61 74 69 6f 6e 73 22 2c 36 29 0d |alculations",6).| 0000a0e0 05 47 14 20 20 20 20 f2 6c 69 6e 6b 5f 73 74 61 |.G. .link_sta| 0000a0f0 74 75 73 0d 05 48 0c 20 20 20 20 c9 20 37 3a 0d |tus..H. . 7:.| 0000a100 05 49 21 20 20 20 20 f2 6c 69 74 28 6d 65 6e 75 |.I! .lit(menu| 0000a110 25 28 31 30 29 2c 34 2c 4d 6f 64 69 66 79 25 29 |%(10),4,Modify%)| 0000a120 0d 05 4a 21 20 20 20 20 f2 6c 69 74 28 6d 65 6e |..J! .lit(men| 0000a130 75 25 28 31 30 29 2c 33 2c 41 63 63 65 73 73 25 |u%(10),3,Access%| 0000a140 29 0d 05 4b 26 20 20 20 20 f2 63 61 6c 63 5f 6c |)..K& .calc_l| 0000a150 69 6e 6b 28 22 43 6f 6d 62 69 6e 65 20 66 69 65 |ink("Combine fie| 0000a160 6c 64 73 22 2c 37 29 0d 05 4c 14 20 20 20 20 f2 |lds",7)..L. .| 0000a170 6c 69 6e 6b 5f 73 74 61 74 75 73 0d 05 4d 2e 20 |link_status..M. | 0000a180 20 20 20 c9 20 34 36 2c 34 37 2c 34 38 2c 34 39 | . 46,47,48,49| 0000a190 2c 35 30 2c 35 31 2c 35 32 2c 35 33 2c 35 34 2c |,50,51,52,53,54,| 0000a1a0 35 35 2c 35 36 2c 35 37 3a 0d 05 4e 11 20 20 20 |55,56,57:..N. | 0000a1b0 20 e7 20 56 25 3d 34 37 20 8c 0d 05 4f 23 20 20 | . V%=47 ...O# | 0000a1c0 20 20 20 20 f2 6c 69 74 28 6d 65 6e 75 25 28 31 | .lit(menu%(1| 0000a1d0 30 29 2c 34 2c 4d 6f 64 69 66 79 25 29 0d 05 50 |0),4,Modify%)..P| 0000a1e0 29 20 20 20 20 20 20 f2 63 61 6c 63 5f 6c 69 6e |) .calc_lin| 0000a1f0 6b 28 22 53 65 74 20 62 61 73 65 20 76 61 6c 75 |k("Set base valu| 0000a200 65 22 2c 34 37 29 0d 05 51 09 20 20 20 20 cd 0d |e",47)..Q. ..| 0000a210 05 52 21 20 20 20 20 f2 6c 69 74 28 6d 65 6e 75 |.R! .lit(menu| 0000a220 25 28 31 30 29 2c 30 2c 41 63 63 65 73 73 25 29 |%(10),0,Access%)| 0000a230 0d 05 53 34 20 20 20 20 4b 65 79 66 6c 64 30 25 |..S4 Keyfld0%| 0000a240 3d 46 69 65 6c 64 6e 75 6d 62 65 72 25 3a 4b 65 |=Fieldnumber%:Ke| 0000a250 79 66 6c 64 31 25 3d 30 3a 24 46 32 64 6b 65 79 |yfld1%=0:$F2dkey| 0000a260 25 3d 22 22 0d 05 54 74 20 20 20 20 e7 20 46 69 |%=""..Tt . Fi| 0000a270 65 6c 64 6e 61 6d 65 24 3c 3e 54 61 67 24 28 46 |eldname$<>Tag$(F| 0000a280 69 65 6c 64 6e 75 6d 62 65 72 25 29 20 8c 20 24 |ieldnumber%) . $| 0000a290 46 31 64 6b 65 79 25 3d c0 46 69 65 6c 64 6e 61 |F1dkey%=.Fieldna| 0000a2a0 6d 65 24 2c 38 29 2b 22 20 28 22 2b 54 61 67 24 |me$,8)+" ("+Tag$| 0000a2b0 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 2b 22 |(Fieldnumber%)+"| 0000a2c0 29 22 20 8b 20 24 46 31 64 6b 65 79 25 3d 46 69 |)" . $F1dkey%=Fi| 0000a2d0 65 6c 64 6e 61 6d 65 24 0d 05 55 28 20 20 20 20 |eldname$..U( | 0000a2e0 6b 65 79 6c 69 6d 69 74 25 3d 54 65 78 74 4c 65 |keylimit%=TextLe| 0000a2f0 6e 67 74 68 25 3a 24 4b 65 79 4e 6f 25 3d 22 22 |ngth%:$KeyNo%=""| 0000a300 0d 05 56 32 20 20 20 20 57 44 25 28 29 3d 30 3a |..V2 WD%()=0:| 0000a310 57 44 25 28 30 29 3d 6b 65 79 6c 69 6d 69 74 25 |WD%(0)=keylimit%| 0000a320 3a 6b 65 79 6c 65 6e 25 3d 6b 65 79 6c 69 6d 69 |:keylen%=keylimi| 0000a330 74 25 0d 05 57 12 20 20 20 20 e3 20 4a 25 3d 30 |t%..W. . J%=0| 0000a340 20 b8 20 33 0d 05 58 1f 20 20 20 20 20 20 24 57 | . 3..X. $W| 0000a350 6b 65 79 25 28 4a 25 29 3d c3 28 57 44 25 28 4a |key%(J%)=.(WD%(J| 0000a360 25 29 29 0d 05 59 0c 20 20 20 20 ed 20 4a 25 0d |%))..Y. . J%.| 0000a370 05 5a 10 20 20 20 20 c9 20 33 36 2c 33 39 3a 0d |.Z. . 36,39:.| 0000a380 05 5b 44 20 20 20 20 e7 20 a4 62 6c 6f 62 5f 70 |.[D . .blob_p| 0000a390 61 74 68 28 a3 2c 24 64 61 74 61 62 61 73 65 25 |ath(.,$database%| 0000a3a0 2c 52 45 43 25 2c 46 69 65 6c 64 6e 75 6d 62 65 |,REC%,Fieldnumbe| 0000a3b0 72 25 2c 56 25 2c 6f 62 6a 65 63 74 24 29 3e 3d |r%,V%,object$)>=| 0000a3c0 30 20 8c 0d 05 5c 23 20 20 20 20 20 20 f2 6c 69 |0 ...\# .li| 0000a3d0 74 28 6d 65 6e 75 25 28 31 30 29 2c 36 2c 41 63 |t(menu%(10),6,Ac| 0000a3e0 63 65 73 73 25 29 0d 05 5d 1d 20 20 20 20 20 20 |cess%)..]. | 0000a3f0 f2 6c 69 74 28 6d 65 6e 75 25 28 31 30 29 2c 37 |.lit(menu%(10),7| 0000a400 2c b9 29 0d 05 5e 1d 20 20 20 20 20 20 f2 6c 69 |,.)..^. .li| 0000a410 74 28 6d 65 6e 75 25 28 31 30 29 2c 38 2c b9 29 |t(menu%(10),8,.)| 0000a420 0d 05 5f 1f 20 20 20 20 20 20 24 53 61 76 65 4e |.._. $SaveN| 0000a430 61 6d 65 25 3d 22 54 65 78 74 46 69 6c 65 22 0d |ame%="TextFile".| 0000a440 05 60 34 20 20 20 20 20 20 24 53 61 76 65 53 70 |.`4 $SaveSp| 0000a450 72 69 74 65 25 3d 22 73 66 69 6c 65 5f 66 66 66 |rite%="sfile_fff| 0000a460 3b 50 70 74 72 5f 68 61 6e 64 2c 31 32 2c 38 3b |;Pptr_hand,12,8;| 0000a470 42 33 22 0d 05 61 1f 20 20 20 20 20 20 73 61 76 |B3"..a. sav| 0000a480 65 66 75 6e 63 24 3d 22 53 61 76 65 20 74 65 78 |efunc$="Save tex| 0000a490 74 22 0d 05 62 09 20 20 20 20 cd 0d 05 63 10 20 |t"..b. ...c. | 0000a4a0 20 20 20 c9 20 33 37 2c 34 30 3a 0d 05 64 44 20 | . 37,40:..dD | 0000a4b0 20 20 20 e7 20 a4 62 6c 6f 62 5f 70 61 74 68 28 | . .blob_path(| 0000a4c0 a3 2c 24 64 61 74 61 62 61 73 65 25 2c 52 45 43 |.,$database%,REC| 0000a4d0 25 2c 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c 56 |%,Fieldnumber%,V| 0000a4e0 25 2c 6f 62 6a 65 63 74 24 29 3e 3d 30 20 8c 0d |%,object$)>=0 ..| 0000a4f0 05 65 23 20 20 20 20 20 20 f2 6c 69 74 28 6d 65 |.e# .lit(me| 0000a500 6e 75 25 28 31 30 29 2c 36 2c 41 63 63 65 73 73 |nu%(10),6,Access| 0000a510 25 29 0d 05 66 1d 20 20 20 20 20 20 f2 6c 69 74 |%)..f. .lit| 0000a520 28 6d 65 6e 75 25 28 31 30 29 2c 37 2c b9 29 0d |(menu%(10),7,.).| 0000a530 05 67 1d 20 20 20 20 20 20 f2 6c 69 74 28 6d 65 |.g. .lit(me| 0000a540 6e 75 25 28 31 30 29 2c 38 2c b9 29 0d 05 68 1d |nu%(10),8,.)..h.| 0000a550 20 20 20 20 20 20 24 53 61 76 65 4e 61 6d 65 25 | $SaveName%| 0000a560 3d 22 53 70 72 69 74 65 22 0d 05 69 34 20 20 20 |="Sprite"..i4 | 0000a570 20 20 20 24 53 61 76 65 53 70 72 69 74 65 25 3d | $SaveSprite%=| 0000a580 22 73 66 69 6c 65 5f 66 66 39 3b 50 70 74 72 5f |"sfile_ff9;Pptr_| 0000a590 68 61 6e 64 2c 31 32 2c 38 3b 42 33 22 0d 05 6a |hand,12,8;B3"..j| 0000a5a0 21 20 20 20 20 20 20 73 61 76 65 66 75 6e 63 24 |! savefunc$| 0000a5b0 3d 22 53 61 76 65 20 73 70 72 69 74 65 22 0d 05 |="Save sprite"..| 0000a5c0 6b 09 20 20 20 20 cd 0d 05 6c 0d 20 20 20 20 c9 |k. ...l. .| 0000a5d0 20 33 38 3a 0d 05 6d 44 20 20 20 20 e7 20 a4 62 | 38:..mD . .b| 0000a5e0 6c 6f 62 5f 70 61 74 68 28 a3 2c 24 64 61 74 61 |lob_path(.,$data| 0000a5f0 62 61 73 65 25 2c 52 45 43 25 2c 46 69 65 6c 64 |base%,REC%,Field| 0000a600 6e 75 6d 62 65 72 25 2c 56 25 2c 6f 62 6a 65 63 |number%,V%,objec| 0000a610 74 24 29 3e 3d 30 20 8c 0d 05 6e 23 20 20 20 20 |t$)>=0 ...n# | 0000a620 20 20 f2 6c 69 74 28 6d 65 6e 75 25 28 31 30 29 | .lit(menu%(10)| 0000a630 2c 36 2c 41 63 63 65 73 73 25 29 0d 05 6f 1d 20 |,6,Access%)..o. | 0000a640 20 20 20 20 20 f2 6c 69 74 28 6d 65 6e 75 25 28 | .lit(menu%(| 0000a650 31 30 29 2c 37 2c b9 29 0d 05 70 1d 20 20 20 20 |10),7,.)..p. | 0000a660 20 20 f2 6c 69 74 28 6d 65 6e 75 25 28 31 30 29 | .lit(menu%(10)| 0000a670 2c 38 2c b9 29 0d 05 71 1f 20 20 20 20 20 20 24 |,8,.)..q. $| 0000a680 53 61 76 65 4e 61 6d 65 25 3d 22 44 72 61 77 46 |SaveName%="DrawF| 0000a690 69 6c 65 22 0d 05 72 34 20 20 20 20 20 20 24 53 |ile"..r4 $S| 0000a6a0 61 76 65 53 70 72 69 74 65 25 3d 22 73 66 69 6c |aveSprite%="sfil| 0000a6b0 65 5f 61 66 66 3b 50 70 74 72 5f 68 61 6e 64 2c |e_aff;Pptr_hand,| 0000a6c0 31 32 2c 38 3b 42 33 22 0d 05 73 1f 20 20 20 20 |12,8;B3"..s. | 0000a6d0 20 20 73 61 76 65 66 75 6e 63 24 3d 22 53 61 76 | savefunc$="Sav| 0000a6e0 65 20 64 72 61 77 22 0d 05 74 09 20 20 20 20 cd |e draw"..t. .| 0000a6f0 0d 05 75 07 20 20 cb 0d 05 76 31 20 20 cc 20 f2 |..u. ...v1 . .| 0000a700 6c 69 74 28 6d 65 6e 75 25 28 31 29 2c 31 2c a3 |lit(menu%(1),1,.| 0000a710 29 3a 24 46 69 65 6c 64 70 6f 73 25 3d 22 46 69 |):$Fieldpos%="Fi| 0000a720 65 6c 64 3a 20 27 27 22 0d 05 77 05 cd 0d 05 78 |eld: ''"..w....x| 0000a730 05 e1 0d 05 79 05 3a 0d 05 7a 1d dd 20 f2 75 70 |....y.:..z.. .up| 0000a740 64 61 74 65 5f 73 65 6c 65 63 74 69 6f 6e 28 61 |date_selection(a| 0000a750 64 64 25 29 0d 05 7b 13 ea 20 50 25 2c 53 50 25 |dd%)..{.. P%,SP%| 0000a760 2c 46 25 2c 53 46 25 0d 05 7c 22 46 25 3d 46 69 |,F%,SF%..|"F%=Fi| 0000a770 65 6c 64 6e 75 6d 62 65 72 25 3a 53 46 25 3d 28 |eldnumber%:SF%=(| 0000a780 46 25 20 84 20 31 32 38 29 0d 05 7d 2d 66 69 65 |F% . 128)..}-fie| 0000a790 6c 64 24 3d c3 7e 28 46 25 29 3a e7 20 46 25 3c |ld$=.~(F%):. F%<| 0000a7a0 31 36 20 8c 20 66 69 65 6c 64 24 3d 22 30 22 2b |16 . field$="0"+| 0000a7b0 66 69 65 6c 64 24 0d 05 7e 32 73 66 69 65 6c 64 |field$..~2sfield| 0000a7c0 24 3d c3 7e 28 53 46 25 29 3a e7 20 53 46 25 3c |$=.~(SF%):. SF%<| 0000a7d0 31 36 20 8c 20 73 66 69 65 6c 64 24 3d 22 30 22 |16 . sfield$="0"| 0000a7e0 2b 73 66 69 65 6c 64 24 0d 05 7f 0c e7 20 61 64 |+sfield$..... ad| 0000a7f0 64 25 20 8c 0d 05 80 3b 20 20 e7 20 a6 28 2d 31 |d% ....; . .(-1| 0000a800 29 20 8c 20 70 72 69 6e 74 6f 72 64 65 72 24 2b |) . printorder$+| 0000a810 3d 73 66 69 65 6c 64 24 20 8b 20 70 72 69 6e 74 |=sfield$ . print| 0000a820 6f 72 64 65 72 24 2b 3d 66 69 65 6c 64 24 20 0d |order$+=field$ .| 0000a830 05 81 2a 20 20 f2 65 6e 61 62 6c 65 5f 72 6f 77 |..* .enable_row| 0000a840 28 63 61 6c 63 72 6f 77 25 3f 46 69 65 6c 64 6e |(calcrow%?Fieldn| 0000a850 75 6d 62 65 72 25 2c b9 29 0d 05 82 18 20 20 f2 |umber%,.).... .| 0000a860 6c 69 74 28 6d 65 6e 75 25 28 36 29 2c 37 2c b9 |lit(menu%(6),7,.| 0000a870 29 0d 05 83 18 20 20 f2 6c 69 74 28 6d 65 6e 75 |).... .lit(menu| 0000a880 25 28 36 29 2c 38 2c b9 29 0d 05 84 07 20 20 cc |%(6),8,.).... .| 0000a890 0d 05 85 07 20 20 f5 0d 05 86 24 20 20 20 20 50 |.... ....$ P| 0000a8a0 25 3d a7 70 72 69 6e 74 6f 72 64 65 72 24 2c 66 |%=.printorder$,f| 0000a8b0 69 65 6c 64 24 2c 50 25 2b 31 29 0d 05 87 1d 20 |ield$,P%+1).... | 0000a8c0 20 fd 20 28 28 50 25 2d 31 29 20 83 20 32 29 3d | . ((P%-1) . 2)=| 0000a8d0 30 20 84 20 50 25 3d 30 0d 05 88 0e 20 20 e7 20 |0 . P%=0.... . | 0000a8e0 50 25 3e 30 20 8c 0d 05 89 39 20 20 20 20 70 72 |P%>0 ....9 pr| 0000a8f0 69 6e 74 6f 72 64 65 72 24 3d c0 70 72 69 6e 74 |intorder$=.print| 0000a900 6f 72 64 65 72 24 2c 50 25 2d 31 29 2b c1 70 72 |order$,P%-1)+.pr| 0000a910 69 6e 74 6f 72 64 65 72 24 2c 50 25 2b 32 29 0d |intorder$,P%+2).| 0000a920 05 8a 2c 20 20 20 20 f2 65 6e 61 62 6c 65 5f 72 |.., .enable_r| 0000a930 6f 77 28 63 61 6c 63 72 6f 77 25 3f 46 69 65 6c |ow(calcrow%?Fiel| 0000a940 64 6e 75 6d 62 65 72 25 2c a3 29 0d 05 8b 09 20 |dnumber%,.).... | 0000a950 20 20 20 cc 0d 05 8c 09 20 20 20 20 f5 0d 05 8d | ..... ....| 0000a960 29 20 20 20 20 20 20 53 50 25 3d a7 70 72 69 6e |) SP%=.prin| 0000a970 74 6f 72 64 65 72 24 2c 73 66 69 65 6c 64 24 2c |torder$,sfield$,| 0000a980 53 50 25 2b 31 29 0d 05 8e 21 20 20 20 20 fd 20 |SP%+1)...! . | 0000a990 28 28 53 50 25 2d 31 29 20 83 20 32 29 3d 30 20 |((SP%-1) . 2)=0 | 0000a9a0 84 20 53 50 25 3d 30 0d 05 8f 11 20 20 20 20 e7 |. SP%=0.... .| 0000a9b0 20 53 50 25 3e 30 20 8c 0d 05 90 3d 20 20 20 20 | SP%>0 ....= | 0000a9c0 20 20 70 72 69 6e 74 6f 72 64 65 72 24 3d c0 70 | printorder$=.p| 0000a9d0 72 69 6e 74 6f 72 64 65 72 24 2c 53 50 25 2d 31 |rintorder$,SP%-1| 0000a9e0 29 2b c1 70 72 69 6e 74 6f 72 64 65 72 24 2c 53 |)+.printorder$,S| 0000a9f0 50 25 2b 32 29 0d 05 91 2e 20 20 20 20 20 20 f2 |P%+2).... .| 0000aa00 65 6e 61 62 6c 65 5f 72 6f 77 28 63 61 6c 63 72 |enable_row(calcr| 0000aa10 6f 77 25 3f 46 69 65 6c 64 6e 75 6d 62 65 72 25 |ow%?Fieldnumber%| 0000aa20 2c a3 29 0d 05 92 0c 20 20 20 20 cd 20 20 20 0d |,.).... . .| 0000aa30 05 93 07 20 20 cd 0d 05 94 18 20 20 e7 20 70 72 |... ..... . pr| 0000aa40 69 6e 74 6f 72 64 65 72 24 3d 22 22 20 8c 0d 05 |intorder$="" ...| 0000aa50 95 1a 20 20 20 20 f2 6c 69 74 28 6d 65 6e 75 25 |.. .lit(menu%| 0000aa60 28 36 29 2c 37 2c a3 29 0d 05 96 1a 20 20 20 20 |(6),7,.).... | 0000aa70 f2 6c 69 74 28 6d 65 6e 75 25 28 36 29 2c 38 2c |.lit(menu%(6),8,| 0000aa80 a3 29 0d 05 97 07 20 20 cd 0d 05 98 05 cd 0d 05 |.).... ........| 0000aa90 99 05 e1 0d 05 9a 05 3a 0d 05 9b 12 dd 20 f2 70 |.......:..... .p| 0000aaa0 72 69 6e 74 5f 63 6c 69 63 6b 0d 05 9c 14 c8 8e |rint_click......| 0000aab0 20 28 62 25 20 80 20 25 31 31 31 29 20 ca 0d 05 | (b% . %111) ...| 0000aac0 9d 45 20 20 c9 20 32 3a e7 20 a4 73 65 6c 65 63 |.E . 2:. .selec| 0000aad0 74 65 64 28 70 72 69 6e 74 57 25 2c 32 36 29 20 |ted(printW%,26) | 0000aae0 8c 20 f2 73 68 6f 77 5f 6d 65 6e 75 28 6c 61 62 |. .show_menu(lab| 0000aaf0 65 6c 57 25 2c 78 25 2d 35 30 30 2c 79 25 2b 32 |elW%,x%-500,y%+2| 0000ab00 30 30 29 0d 05 9e 0c 20 20 c9 20 31 2c 34 3a 0d |00).... . 1,4:.| 0000ab10 05 9f 0e 20 20 c8 8e 20 69 63 25 20 ca 0d 05 a0 |... .. ic% ....| 0000ab20 13 20 20 20 20 c9 20 32 33 2c 32 34 2c 32 35 3a |. . 23,24,25:| 0000ab30 0d 05 a1 36 20 20 20 20 f2 69 63 6f 6e 5f 62 69 |...6 .icon_bi| 0000ab40 74 28 32 32 2c 70 72 69 6e 74 57 25 2c 31 35 2c |t(22,printW%,15,| 0000ab50 a4 73 65 6c 65 63 74 65 64 28 70 72 69 6e 74 57 |.selected(printW| 0000ab60 25 2c 32 35 29 29 0d 05 a2 36 20 20 20 20 f2 69 |%,25))...6 .i| 0000ab70 63 6f 6e 5f 62 69 74 28 32 32 2c 70 72 69 6e 74 |con_bit(22,print| 0000ab80 57 25 2c 34 35 2c a4 73 65 6c 65 63 74 65 64 28 |W%,45,.selected(| 0000ab90 70 72 69 6e 74 57 25 2c 32 35 29 29 0d 05 a3 0d |printW%,25))....| 0000aba0 20 20 20 20 c9 20 32 36 3a 0d 05 a4 36 20 20 20 | . 26:...6 | 0000abb0 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 70 72 | .icon_bit(22,pr| 0000abc0 69 6e 74 57 25 2c 31 35 2c a4 73 65 6c 65 63 74 |intW%,15,.select| 0000abd0 65 64 28 70 72 69 6e 74 57 25 2c 32 35 29 29 0d |ed(printW%,25)).| 0000abe0 05 a5 36 20 20 20 20 f2 69 63 6f 6e 5f 62 69 74 |..6 .icon_bit| 0000abf0 28 32 32 2c 70 72 69 6e 74 57 25 2c 34 35 2c a4 |(22,printW%,45,.| 0000ac00 73 65 6c 65 63 74 65 64 28 70 72 69 6e 74 57 25 |selected(printW%| 0000ac10 2c 32 35 29 29 0d 05 a6 29 20 20 20 20 f2 73 68 |,25))...) .sh| 0000ac20 6f 77 5f 6d 65 6e 75 28 6c 61 62 65 6c 57 25 2c |ow_menu(labelW%,| 0000ac30 78 25 2d 35 30 30 2c 79 25 2b 32 30 30 29 0d 05 |x%-500,y%+200)..| 0000ac40 a7 3d 20 20 20 20 c9 20 32 38 3a f2 64 72 61 67 |.= . 28:.drag| 0000ac50 5f 6f 70 74 69 6f 6e 73 28 22 3c 50 62 61 73 65 |_options("<Pbase| 0000ac60 24 44 69 72 3e 2e 52 65 73 6f 75 72 63 65 73 2e |$Dir>.Resources.| 0000ac70 50 72 69 6e 74 4f 70 74 73 22 29 0d 05 a8 0d 20 |PrintOpts").... | 0000ac80 20 20 20 c9 20 32 30 3a 0d 05 a9 1e 20 20 20 20 | . 20:.... | 0000ac90 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 70 72 |.close_window(pr| 0000aca0 69 6e 74 57 25 29 0d 05 aa 36 20 20 20 20 e7 20 |intW%)...6 . | 0000acb0 28 62 25 20 80 20 25 31 31 31 29 3d 31 20 8c 20 |(b% . %111)=1 . | 0000acc0 f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 6d 61 74 |.open_window(mat| 0000acd0 63 68 57 25 29 3a f2 6d 61 74 63 68 0d 05 ab 07 |chW%):.match....| 0000ace0 20 20 cb 0d 05 ac 05 cb 0d 05 ad 05 e1 0d 05 ae | ..............| 0000acf0 05 3a 0d 05 af 1f dd 20 f2 6b 65 79 70 61 64 5f |.:..... .keypad_| 0000ad00 63 6c 69 63 6b 28 77 69 25 2c 69 63 25 2c 62 25 |click(wi%,ic%,b%| 0000ad10 29 0d 05 b0 1f ea 20 68 61 6e 64 6c 65 25 2c 69 |)..... handle%,i| 0000ad20 63 6f 6e 25 2c 54 25 2c 4e 24 2c 64 61 74 65 24 |con%,T%,N$,date$| 0000ad30 0d 05 b1 1b f2 63 6c 6f 73 65 5f 77 69 6e 64 6f |.....close_windo| 0000ad40 77 28 72 65 6c 61 74 65 57 25 29 0d 05 b2 38 e7 |w(relateW%)...8.| 0000ad50 20 66 6c 61 73 68 25 20 8c 20 f2 64 65 73 65 6c | flash% . .desel| 0000ad60 65 63 74 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 |ect(mainW%,field| 0000ad70 25 28 66 6c 61 73 68 25 29 29 3a 66 6c 61 73 68 |%(flash%)):flash| 0000ad80 25 3d a3 0d 05 b3 53 e7 20 69 63 25 3c 3e 31 32 |%=....S. ic%<>12| 0000ad90 20 8c 20 e7 20 a4 76 61 6c 69 64 61 74 65 28 46 | . . .validate(F| 0000ada0 69 65 6c 64 6e 75 6d 62 65 72 25 2c 54 25 2c 4e |ieldnumber%,T%,N| 0000adb0 24 29 3d a3 20 8c 20 e1 20 8b 20 f2 75 70 64 61 |$)=. . . . .upda| 0000adc0 74 65 5f 63 61 6c 63 73 28 46 69 65 6c 64 6e 75 |te_calcs(Fieldnu| 0000add0 6d 62 65 72 25 29 0d 05 b4 14 c8 8e 20 28 62 25 |mber%)...... (b%| 0000ade0 20 80 20 25 31 31 31 29 20 ca 0d 05 b5 0c 20 20 | . %111) ..... | 0000adf0 c9 20 31 2c 34 3a 0d 05 b6 24 20 20 e7 20 28 62 |. 1,4:...$ . (b| 0000ae00 25 20 80 20 25 31 31 31 29 3d 34 20 8c 20 7a 25 |% . %111)=4 . z%| 0000ae10 3d 31 20 8b 20 7a 25 3d 2d 31 0d 05 b7 0e 20 20 |=1 . z%=-1.... | 0000ae20 c8 8e 20 69 63 25 20 ca 0d 05 b8 2c 20 20 20 20 |.. ic% ...., | 0000ae30 c9 20 30 3a f2 73 63 61 6e 28 7a 25 2c bb 28 24 |. 0:.scan(z%,.($| 0000ae40 a4 74 65 78 74 28 6b 65 79 70 61 64 57 25 2c 32 |.text(keypadW%,2| 0000ae50 33 29 29 29 0d 05 b9 13 20 20 20 20 c9 20 31 3a |3))).... . 1:| 0000ae60 73 74 6f 70 25 3d b9 0d 05 ba 25 20 20 20 20 c9 |stop%=....% .| 0000ae70 20 32 3a 61 64 64 72 3d a4 6d 6f 76 65 74 6f 28 | 2:addr=.moveto(| 0000ae80 6b 65 79 25 2c 74 6f 70 2c 7a 25 29 0d 05 bb 26 |key%,top,z%)...&| 0000ae90 20 20 20 20 c9 20 33 3a 61 64 64 72 3d a4 6d 6f | . 3:addr=.mo| 0000aea0 76 65 74 6f 28 6b 65 79 25 2c 74 6f 70 2c 2d 7a |veto(key%,top,-z| 0000aeb0 25 29 0d 05 bc 26 20 20 20 20 c9 20 34 3a 61 64 |%)...& . 4:ad| 0000aec0 64 72 3d a4 6d 6f 76 65 74 6f 28 6b 65 79 25 2c |dr=.moveto(key%,| 0000aed0 61 64 64 72 2c 7a 25 29 0d 05 bd 27 20 20 20 20 |addr,z%)...' | 0000aee0 c9 20 35 3a 61 64 64 72 3d a4 6d 6f 76 65 74 6f |. 5:addr=.moveto| 0000aef0 28 6b 65 79 25 2c 61 64 64 72 2c 2d 7a 25 29 0d |(key%,addr,-z%).| 0000af00 05 be 28 20 20 20 20 c9 20 36 3a 61 64 64 72 3d |..( . 6:addr=| 0000af10 a4 66 61 73 74 5f 77 69 6e 64 28 74 6f 70 2c 61 |.fast_wind(top,a| 0000af20 64 64 72 2c 7a 25 29 0d 05 bf 29 20 20 20 20 c9 |ddr,z%)...) .| 0000af30 20 37 3a 61 64 64 72 3d a4 66 61 73 74 5f 77 69 | 7:addr=.fast_wi| 0000af40 6e 64 28 74 6f 70 2c 61 64 64 72 2c 2d 7a 25 29 |nd(top,addr,-z%)| 0000af50 0d 05 c0 1b 20 20 20 20 c9 20 38 3a f2 6b 65 79 |.... . 8:.key| 0000af60 5f 73 65 6c 65 63 74 28 7a 25 29 0d 05 c1 1c 20 |_select(z%).... | 0000af70 20 20 20 c9 20 39 3a f2 6b 65 79 5f 73 65 6c 65 | . 9:.key_sele| 0000af80 63 74 28 2d 7a 25 29 0d 05 c2 19 20 20 20 20 c9 |ct(-z%).... .| 0000af90 20 31 30 3a f2 73 75 62 66 69 6c 65 28 7a 25 29 | 10:.subfile(z%)| 0000afa0 0d 05 c3 1a 20 20 20 20 c9 20 31 31 3a f2 73 75 |.... . 11:.su| 0000afb0 62 66 69 6c 65 28 2d 7a 25 29 0d 05 c4 2d 20 20 |bfile(-z%)...- | 0000afc0 20 20 c9 20 31 32 3a f2 72 6f 74 61 74 65 3a 61 | . 12:.rotate:a| 0000afd0 64 64 72 3d a4 6d 6f 76 65 74 6f 28 6b 65 79 25 |ddr=.moveto(key%| 0000afe0 2c 74 6f 70 2c 31 29 0d 05 c5 22 20 20 20 20 c9 |,top,1)..." .| 0000aff0 20 31 33 3a f2 61 6c 6c 6f 77 5f 73 65 61 72 63 | 13:.allow_searc| 0000b000 68 28 77 69 25 2c 7a 25 29 0d 05 c6 0d 20 20 20 |h(wi%,z%).... | 0000b010 20 c9 20 31 34 3a 0d 05 c7 19 20 20 20 20 f2 64 | . 14:.... .d| 0000b020 69 73 70 6c 61 79 28 6b 65 79 25 2c 2d 31 29 0d |isplay(key%,-1).| 0000b030 05 c8 23 20 20 20 20 c9 20 31 35 3a 61 64 64 72 |..# . 15:addr| 0000b040 3d a4 73 68 69 66 74 28 7a 25 2c 6b 65 79 25 2c |=.shift(z%,key%,| 0000b050 30 29 0d 05 c9 11 20 20 20 20 e7 20 a6 28 2d 33 |0).... . .(-3| 0000b060 29 20 8c 0d 05 ca 2a 20 20 20 20 20 20 61 64 64 |) ....* add| 0000b070 72 3d a4 66 69 6e 64 28 22 23 22 2b c3 28 52 45 |r=.find("#"+.(RE| 0000b080 43 25 29 2c 6b 65 79 25 2c 30 2c b9 29 0d 05 cb |C%),key%,0,.)...| 0000b090 1f 20 20 20 20 20 20 cc 20 f2 64 69 73 70 6c 61 |. . .displa| 0000b0a0 79 28 6b 65 79 25 2c 61 64 64 72 29 0d 05 cc 09 |y(key%,addr)....| 0000b0b0 20 20 20 20 cd 0d 05 cd 24 20 20 20 20 c9 20 31 | ....$ . 1| 0000b0c0 36 3a 61 64 64 72 3d a4 73 68 69 66 74 28 2d 7a |6:addr=.shift(-z| 0000b0d0 25 2c 6b 65 79 25 2c 30 29 0d 05 ce 11 20 20 20 |%,key%,0).... | 0000b0e0 20 e7 20 a6 28 2d 33 29 20 8c 0d 05 cf 2a 20 20 | . .(-3) ....* | 0000b0f0 20 20 20 20 61 64 64 72 3d a4 66 69 6e 64 28 22 | addr=.find("| 0000b100 23 22 2b c3 28 52 45 43 25 29 2c 6b 65 79 25 2c |#"+.(REC%),key%,| 0000b110 30 2c b9 29 0d 05 d0 1f 20 20 20 20 20 20 cc 20 |0,.).... . | 0000b120 f2 64 69 73 70 6c 61 79 28 6b 65 79 25 2c 61 64 |.display(key%,ad| 0000b130 64 72 29 0d 05 d1 09 20 20 20 20 cd 0d 05 d2 36 |dr).... ....6| 0000b140 20 20 20 20 c9 20 31 37 3a 61 64 64 72 3d a4 73 | . 17:addr=.s| 0000b150 68 69 66 74 28 30 2c 6b 65 79 25 2c 31 29 3a f2 |hift(0,key%,1):.| 0000b160 64 69 73 70 6c 61 79 28 6b 65 79 25 2c 61 64 64 |display(key%,add| 0000b170 72 29 0d 05 d3 16 20 20 20 20 c9 20 31 38 3a f2 |r).... . 18:.| 0000b180 76 61 6c 5f 68 65 6c 70 0d 05 d4 36 20 20 20 20 |val_help...6 | 0000b190 c9 20 31 39 3a f2 63 68 65 63 6b 5f 63 68 61 6e |. 19:.check_chan| 0000b1a0 67 65 3a f2 73 61 76 65 5f 6b 65 79 73 3a f2 73 |ge:.save_keys:.s| 0000b1b0 61 76 65 5f 61 6c 6c 5f 74 61 62 6c 65 73 0d 05 |ave_all_tables..| 0000b1c0 d5 13 20 20 20 20 c9 20 32 30 3a f2 73 74 6f 72 |.. . 20:.stor| 0000b1d0 65 0d 05 d6 16 20 20 20 20 c9 20 32 31 3a f2 72 |e.... . 21:.r| 0000b1e0 65 74 72 69 65 76 65 0d 05 d7 21 20 20 20 20 c9 |etrieve...! .| 0000b1f0 20 32 32 3a f2 66 69 6c 74 65 72 28 6b 65 79 70 | 22:.filter(keyp| 0000b200 61 64 57 25 2c 32 32 29 0d 05 d8 0d 20 20 20 20 |adW%,22).... | 0000b210 c9 20 32 38 3a 0d 05 d9 1e 20 20 20 20 53 24 3d |. 28:.... S$=| 0000b220 24 a4 74 65 78 74 28 6b 65 79 70 61 64 57 25 2c |$.text(keypadW%,| 0000b230 32 37 29 0d 05 da 23 20 20 20 20 c8 8e 20 63 68 |27)...# .. ch| 0000b240 61 72 74 79 70 65 25 28 4b 46 25 28 6b 65 79 25 |artype%(KF%(key%| 0000b250 2c 30 29 29 20 ca 0d 05 db 14 20 20 20 20 20 20 |,0)) ..... | 0000b260 c9 20 35 2c 35 30 2c 35 31 3a 0d 05 dc 3f 20 20 |. 5,50,51:...? | 0000b270 20 20 20 20 e7 20 a4 63 68 65 63 6b 5f 64 61 74 | . .check_dat| 0000b280 65 28 53 24 2c 31 2c 64 61 74 65 24 29 3d b9 20 |e(S$,1,date$)=. | 0000b290 8c 20 53 24 3d a4 72 65 76 65 72 73 65 5f 64 61 |. S$=.reverse_da| 0000b2a0 74 65 28 64 61 74 65 24 29 0d 05 dd 09 20 20 20 |te(date$).... | 0000b2b0 20 cb 0d 05 de 36 20 20 20 20 e7 20 53 24 3c 3e | ....6 . S$<>| 0000b2c0 22 22 20 8c 20 61 64 64 72 3d a4 66 69 6e 64 28 |"" . addr=.find(| 0000b2d0 c0 53 24 2c 4b 4c 25 28 6b 65 79 25 29 29 2c 6b |.S$,KL%(key%)),k| 0000b2e0 65 79 25 2c 31 2c b9 29 0d 05 df 10 20 20 20 20 |ey%,1,.).... | 0000b2f0 e7 20 7a 25 3d 31 20 8c 0d 05 e0 21 20 20 20 20 |. z%=1 ....! | 0000b300 20 20 e7 20 a4 73 65 6c 65 63 74 65 64 28 70 61 | . .selected(pa| 0000b310 73 73 57 25 2c 39 29 20 8c 0d 05 e1 3d 20 20 20 |ssW%,9) ....= | 0000b320 20 20 20 20 20 21 62 6c 6f 63 6b 25 3d 6b 65 79 | !block%=key| 0000b330 70 61 64 57 25 3a c8 99 20 22 57 69 6d 70 5f 47 |padW%:.. "Wimp_G| 0000b340 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c |etWindowState",,| 0000b350 62 6c 6f 63 6b 25 0d 05 e2 39 20 20 20 20 20 20 |block%...9 | 0000b360 20 20 62 6c 6f 63 6b 25 21 31 32 3d 62 6c 6f 63 | block%!12=bloc| 0000b370 6b 25 21 34 2b 36 36 30 3a 62 6c 6f 63 6b 25 21 |k%!4+660:block%!| 0000b380 31 36 3d 62 6c 6f 63 6b 25 21 38 2b 33 32 38 0d |16=block%!8+328.| 0000b390 05 e3 23 20 20 20 20 20 20 20 20 62 6c 6f 63 6b |..# block| 0000b3a0 25 21 32 30 3d 30 3a 62 6c 6f 63 6b 25 21 32 34 |%!20=0:block%!24| 0000b3b0 3d 30 0d 05 e4 28 20 20 20 20 20 20 20 20 c8 99 |=0...( ..| 0000b3c0 20 22 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f | "Wimp_OpenWindo| 0000b3d0 77 22 2c 2c 62 6c 6f 63 6b 25 0d 05 e5 25 20 20 |w",,block%...% | 0000b3e0 20 20 20 20 20 20 cc 20 f2 63 6c 6f 73 65 5f 77 | . .close_w| 0000b3f0 69 6e 64 6f 77 28 6b 65 79 70 61 64 57 25 29 0d |indow(keypadW%).| 0000b400 05 e6 0b 20 20 20 20 20 20 cd 0d 05 e7 09 20 20 |... ..... | 0000b410 20 20 cd 0d 05 e8 0d 20 20 20 20 c9 20 33 30 3a | ..... . 30:| 0000b420 0d 05 e9 23 20 20 20 20 e7 20 24 a4 74 65 78 74 |...# . $.text| 0000b430 28 6b 65 79 70 61 64 57 25 2c 32 39 29 3c 3e 22 |(keypadW%,29)<>"| 0000b440 22 20 8c 0d 05 ea 44 20 20 20 20 20 20 46 69 6c |" ....D Fil| 0000b450 74 65 72 24 3d a4 70 61 72 73 65 28 24 a4 74 65 |ter$=.parse($.te| 0000b460 78 74 28 6b 65 79 70 61 64 57 25 2c 32 39 29 2c |xt(keypadW%,29),| 0000b470 a4 73 65 6c 65 63 74 65 64 28 6b 65 79 70 61 64 |.selected(keypad| 0000b480 57 25 2c 33 32 29 29 0d 05 eb 13 20 20 20 20 20 |W%,32)).... | 0000b490 20 66 69 6c 74 65 72 25 3d b9 0d 05 ec 23 20 20 | filter%=....# | 0000b4a0 20 20 20 20 61 64 64 72 3d a4 6d 6f 76 65 74 6f | addr=.moveto| 0000b4b0 28 6b 65 79 25 2c 74 6f 70 2c 7a 25 29 0d 05 ed |(key%,top,z%)...| 0000b4c0 15 20 20 20 20 20 20 cc 20 66 69 6c 74 65 72 25 |. . filter%| 0000b4d0 3d a3 0d 05 ee 09 20 20 20 20 cd 0d 05 ef 21 20 |=..... ....! | 0000b4e0 20 20 20 c9 20 33 32 3a f2 63 6f 6d 6d 6f 6e 63 | . 32:.commonc| 0000b4f0 61 73 65 28 77 69 25 2c 69 63 25 29 0d 05 f0 48 |ase(wi%,ic%)...H| 0000b500 20 20 20 20 c9 20 33 37 3a c8 99 20 22 4f 53 5f | . 37:.. "OS_| 0000b510 42 79 74 65 22 2c 32 30 32 2c 30 2c 32 33 39 3a |Byte",202,0,239:| 0000b520 f2 73 68 6f 77 5f 6d 65 6e 75 28 73 70 65 63 6d |.show_menu(specm| 0000b530 65 6e 75 25 2c 6f 6c 64 78 25 2b 33 32 2c 6f 6c |enu%,oldx%+32,ol| 0000b540 64 79 25 29 0d 05 f1 24 20 20 20 20 c9 20 33 38 |dy%)...$ . 38| 0000b550 3a f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 73 70 |:.open_window(sp| 0000b560 65 63 69 61 6c 57 25 29 0d 05 f2 07 20 20 cb 0d |ecialW%).... ..| 0000b570 05 f3 05 cb 0d 05 f4 05 e1 0d 05 f5 05 3a 0d 05 |.............:..| 0000b580 f6 12 dd 20 f2 73 63 61 6e 28 7a 25 2c 73 25 29 |... .scan(z%,s%)| 0000b590 0d 05 f7 0b 73 74 6f 70 25 3d a3 0d 05 f8 05 f5 |....stop%=......| 0000b5a0 0d 05 f9 20 20 20 61 64 64 72 3d a4 6d 6f 76 65 |... addr=.move| 0000b5b0 74 6f 28 6b 65 79 25 2c 61 64 64 72 2c 7a 25 29 |to(key%,addr,z%)| 0000b5c0 0d 05 fa 0e 20 20 4b 25 3d a6 28 73 25 29 0d 05 |.... K%=.(s%)..| 0000b5d0 fb 0b 20 20 f2 70 6f 6c 6c 0d 05 fc 0b fd 20 73 |.. .poll..... s| 0000b5e0 74 6f 70 25 0d 05 fd 05 e1 0d 05 fe 05 3a 0d 05 |top%.........:..| 0000b5f0 ff 0c dd 20 f2 73 74 6f 72 65 0d 06 00 0d ea 20 |... .store..... | 0000b600 77 69 25 2c 69 63 25 0d 06 01 26 c8 99 20 22 57 |wi%,ic%...&.. "W| 0000b610 69 6d 70 5f 47 65 74 43 61 72 65 74 50 6f 73 69 |imp_GetCaretPosi| 0000b620 74 69 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 06 02 |tion",,block%...| 0000b630 1c 77 69 25 3d 21 62 6c 6f 63 6b 25 3a 69 63 25 |.wi%=!block%:ic%| 0000b640 3d 62 6c 6f 63 6b 25 21 34 0d 06 03 2e e7 20 77 |=block%!4..... w| 0000b650 69 25 3d 6d 61 69 6e 57 25 20 8c 20 73 63 72 61 |i%=mainW% . scra| 0000b660 74 63 68 70 61 64 24 3d 24 a4 74 65 78 74 28 77 |tchpad$=$.text(w| 0000b670 69 25 2c 69 63 25 29 0d 06 04 05 e1 0d 06 05 05 |i%,ic%).........| 0000b680 3a 0d 06 06 0f dd 20 f2 72 65 74 72 69 65 76 65 |:..... .retrieve| 0000b690 0d 06 07 14 ea 20 77 69 25 2c 69 63 25 2c 66 69 |..... wi%,ic%,fi| 0000b6a0 65 6c 64 25 0d 06 08 26 c8 99 20 22 57 69 6d 70 |eld%...&.. "Wimp| 0000b6b0 5f 47 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f |_GetCaretPositio| 0000b6c0 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 06 09 1c 77 69 |n",,block%....wi| 0000b6d0 25 3d 21 62 6c 6f 63 6b 25 3a 69 63 25 3d 62 6c |%=!block%:ic%=bl| 0000b6e0 6f 63 6b 25 21 34 0d 06 0a 24 e7 20 73 63 72 61 |ock%!4...$. scra| 0000b6f0 74 63 68 70 61 64 24 3c 3e 22 22 20 80 20 77 69 |tchpad$<>"" . wi| 0000b700 25 3d 6d 61 69 6e 57 25 20 8c 0d 06 0b 1c 20 20 |%=mainW% ..... | 0000b710 66 69 65 6c 64 25 3d a4 67 65 74 5f 66 69 65 6c |field%=.get_fiel| 0000b720 64 28 69 63 25 29 0d 06 0c 30 20 20 24 a4 74 65 |d(ic%)...0 $.te| 0000b730 78 74 28 77 69 25 2c 69 63 25 29 3d c0 73 63 72 |xt(wi%,ic%)=.scr| 0000b740 61 74 63 68 70 61 64 24 2c 6c 65 6e 25 28 66 69 |atchpad$,len%(fi| 0000b750 65 6c 64 25 29 29 0d 06 0d 1b 20 20 f2 72 65 64 |eld%)).... .red| 0000b760 72 61 77 5f 69 63 6f 6e 28 77 69 25 2c 69 63 25 |raw_icon(wi%,ic%| 0000b770 29 0d 06 0e 05 cd 0d 06 0f 05 e1 0d 06 10 05 3a |)..............:| 0000b780 0d 06 11 2e f4 20 23 23 23 20 42 69 6e 61 72 79 |..... ### Binary| 0000b790 20 4c 61 72 67 65 20 4f 62 6a 65 63 74 73 20 28 | Large Objects (| 0000b7a0 42 2e 4c 2e 4f 2e 42 2e 73 29 20 23 23 23 0d 06 |B.L.O.B.s) ###..| 0000b7b0 12 05 3a 0d 06 13 2a dd 20 a4 62 6c 6f 62 5f 70 |..:...*. .blob_p| 0000b7c0 61 74 68 28 63 72 65 61 74 65 25 2c 66 24 2c 52 |ath(create%,f$,R| 0000b7d0 25 2c 46 25 2c 56 25 2c f8 20 62 24 29 0d 06 14 |%,F%,V%,. b$)...| 0000b7e0 24 ea 20 4f 24 2c 6d 61 69 6e 24 2c 6c 65 76 65 |$. O$,main$,leve| 0000b7f0 6c 31 24 2c 6c 65 76 65 6c 32 24 2c 64 25 2c 4c |l1$,level2$,d%,L| 0000b800 25 0d 06 15 0b c8 8e 20 56 25 20 ca 0d 06 16 18 |%...... V% .....| 0000b810 20 20 c9 20 33 36 2c 33 39 3a 4f 24 3d 22 2e 4d | . 36,39:O$=".M| 0000b820 65 6d 6f 22 0d 06 17 1a 20 20 c9 20 33 37 2c 34 |emo".... . 37,4| 0000b830 30 3a 4f 24 3d 22 2e 53 70 72 69 74 65 22 0d 06 |0:O$=".Sprite"..| 0000b840 18 15 20 20 c9 20 33 38 3a 4f 24 3d 22 2e 44 72 |.. . 38:O$=".Dr| 0000b850 61 77 22 0d 06 19 05 cb 0d 06 1a 15 6d 61 69 6e |aw".........main| 0000b860 24 3d 66 24 2b 4f 24 2b c3 28 46 25 29 0d 06 1b |$=f$+O$+.(F%)...| 0000b870 22 6c 65 76 65 6c 31 24 3d 6d 61 69 6e 24 2b 22 |"level1$=main$+"| 0000b880 2e 22 2b c3 28 52 25 20 81 20 34 39 30 30 29 0d |."+.(R% . 4900).| 0000b890 06 1c 22 6c 65 76 65 6c 32 24 3d 6c 65 76 65 6c |.."level2$=level| 0000b8a0 31 24 2b 22 2e 22 2b c3 28 52 25 20 81 20 37 30 |1$+"."+.(R% . 70| 0000b8b0 29 0d 06 1d 1d 62 24 3d 6c 65 76 65 6c 32 24 2b |)....b$=level2$+| 0000b8c0 22 2e 22 2b c3 28 52 25 20 83 20 37 30 29 0d 06 |"."+.(R% . 70)..| 0000b8d0 1e 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 |. .. "OS_File",5| 0000b8e0 2c 62 24 20 b8 20 64 25 2c 2c 2c 2c 4c 25 0d 06 |,b$ . d%,,,,L%..| 0000b8f0 1f 18 e7 20 64 25 3d 30 20 80 20 63 72 65 61 74 |... d%=0 . creat| 0000b900 65 25 3d b9 20 8c 0d 06 20 1a 20 20 c8 99 20 22 |e%=. ... . .. "| 0000b910 4f 53 5f 46 69 6c 65 22 2c 38 2c 6d 61 69 6e 24 |OS_File",8,main$| 0000b920 0d 06 21 1c 20 20 c8 99 20 22 4f 53 5f 46 69 6c |..!. .. "OS_Fil| 0000b930 65 22 2c 38 2c 6c 65 76 65 6c 31 24 0d 06 22 1c |e",8,level1$..".| 0000b940 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 38 | .. "OS_File",8| 0000b950 2c 6c 65 76 65 6c 32 24 0d 06 23 05 cd 0d 06 24 |,level2$..#....$| 0000b960 14 e7 20 64 25 3d 31 20 8c 3d 4c 25 20 8b 3d 2d |.. d%=1 .=L% .=-| 0000b970 31 0d 06 25 05 3a 0d 06 26 1d dd 20 a4 6c 6f 61 |1..%.:..&.. .loa| 0000b980 64 5f 62 6c 6f 62 28 66 24 2c 52 25 2c 46 25 2c |d_blob(f$,R%,F%,| 0000b990 56 25 29 0d 06 27 0b ea 20 4c 25 2c 62 24 0d 06 |V%)..'.. L%,b$..| 0000b9a0 28 23 4c 25 3d a4 62 6c 6f 62 5f 70 61 74 68 28 |(#L%=.blob_path(| 0000b9b0 a3 2c 66 24 2c 52 25 2c 46 25 2c 56 25 2c 62 24 |.,f$,R%,F%,V%,b$| 0000b9c0 29 0d 06 29 0d e7 20 4c 25 3e 3d 30 20 8c 0d 06 |)..).. L%>=0 ...| 0000b9d0 2a 33 20 20 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 |*3 .extend_name| 0000b9e0 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 |d_sliding_block(| 0000b9f0 74 65 6d 70 61 6e 63 68 6f 72 25 2c 4c 25 2b 31 |tempanchor%,L%+1| 0000ba00 29 0d 06 2b 26 20 20 c8 99 20 22 4f 53 5f 46 69 |)..+& .. "OS_Fi| 0000ba10 6c 65 22 2c 32 35 35 2c 62 24 2c 21 74 65 6d 70 |le",255,b$,!temp| 0000ba20 61 6e 63 68 6f 72 25 0d 06 2c 05 cd 0d 06 2d 07 |anchor%..,....-.| 0000ba30 3d 4c 25 0d 06 2e 05 3a 0d 06 2f 19 dd 20 f2 62 |=L%....:../.. .b| 0000ba40 6c 6f 62 5f 74 6f 5f 66 69 6c 65 28 46 2c 4c 25 |lob_to_file(F,L%| 0000ba50 29 0d 06 30 2d e7 20 4c 25 3e 30 20 8c 20 c8 99 |)..0-. L%>0 . ..| 0000ba60 20 22 4f 53 5f 47 42 50 42 22 2c 32 2c 46 2c 21 | "OS_GBPB",2,F,!| 0000ba70 74 65 6d 70 61 6e 63 68 6f 72 25 2c 4c 25 0d 06 |tempanchor%,L%..| 0000ba80 31 05 e1 0d 06 32 05 3a 0d 06 33 32 dd 20 f2 63 |1....2.:..32. .c| 0000ba90 6f 70 79 5f 62 6c 6f 62 28 73 6f 75 72 63 65 24 |opy_blob(source$| 0000baa0 2c 64 65 73 74 24 2c 52 53 25 2c 52 44 25 2c 46 |,dest$,RS%,RD%,F| 0000bab0 53 25 2c 46 44 25 2c 56 25 29 0d 06 34 13 ea 20 |S%,FD%,V%)..4.. | 0000bac0 4c 25 2c 5a 25 2c 62 73 24 2c 62 64 24 0d 06 35 |L%,Z%,bs$,bd$..5| 0000bad0 2b 4c 25 3d a4 62 6c 6f 62 5f 70 61 74 68 28 a3 |+L%=.blob_path(.| 0000bae0 2c 73 6f 75 72 63 65 24 2c 52 53 25 2c 46 53 25 |,source$,RS%,FS%| 0000baf0 2c 56 25 2c 62 73 24 29 0d 06 36 0c e7 20 4c 25 |,V%,bs$)..6.. L%| 0000bb00 3e 30 20 8c 0d 06 37 2b 20 20 5a 25 3d a4 62 6c |>0 ...7+ Z%=.bl| 0000bb10 6f 62 5f 70 61 74 68 28 b9 2c 64 65 73 74 24 2c |ob_path(.,dest$,| 0000bb20 52 44 25 2c 46 44 25 2c 56 25 2c 62 64 24 29 0d |RD%,FD%,V%,bd$).| 0000bb30 06 38 2f 20 20 c8 99 20 22 4f 53 5f 43 4c 49 22 |.8/ .. "OS_CLI"| 0000bb40 2c 22 43 6f 70 79 20 22 2b 62 73 24 2b 22 20 22 |,"Copy "+bs$+" "| 0000bb50 2b 62 64 24 2b 22 20 7e 43 7e 56 7e 51 22 0d 06 |+bd$+" ~C~V~Q"..| 0000bb60 39 05 cd 0d 06 3a 05 e1 0d 06 3b 05 3a 0d 06 3c |9....:....;.:..<| 0000bb70 21 dd 20 f2 64 65 6c 65 74 65 5f 62 6c 6f 62 28 |!. .delete_blob(| 0000bb80 46 25 2c 46 24 2c 77 69 25 2c 69 63 25 29 0d 06 |F%,F$,wi%,ic%)..| 0000bb90 3d 0b ea 20 66 6c 61 67 25 0d 06 3e 12 e7 20 64 |=.. flag%..>.. d| 0000bba0 65 6c 77 61 72 6e 25 3d a3 20 8c 0d 06 3f 26 20 |elwarn%=. ...?& | 0000bbb0 20 c8 99 20 22 4f 53 5f 43 4c 49 22 2c 22 44 65 | .. "OS_CLI","De| 0000bbc0 6c 65 74 65 20 22 2b 46 24 3a 66 6c 61 67 25 3d |lete "+F$:flag%=| 0000bbd0 b9 0d 06 40 34 20 20 cc 20 e7 20 a4 63 6f 6e 66 |...@4 . . .conf| 0000bbe0 69 72 6d 28 22 44 65 6c 65 74 65 20 6f 62 6a 65 |irm("Delete obje| 0000bbf0 63 74 3f 20 41 72 65 20 79 6f 75 20 73 75 72 65 |ct? Are you sure| 0000bc00 3f 22 29 20 8c 0d 06 41 28 20 20 20 20 c8 99 20 |?") ...A( .. | 0000bc10 22 4f 53 5f 43 4c 49 22 2c 22 44 65 6c 65 74 65 |"OS_CLI","Delete| 0000bc20 20 22 2b 46 24 3a 66 6c 61 67 25 3d b9 0d 06 42 | "+F$:flag%=...B| 0000bc30 07 20 20 cd 0d 06 43 05 cd 0d 06 44 0d e7 20 66 |. ...C....D.. f| 0000bc40 6c 61 67 25 20 8c 0d 06 45 18 20 20 c8 8e 20 63 |lag% ...E. .. c| 0000bc50 68 61 72 74 79 70 65 25 28 46 25 29 20 ca 0d 06 |hartype%(F%) ...| 0000bc60 46 29 20 20 20 20 c9 20 33 36 3a 24 a4 76 61 6c |F) . 36:$.val| 0000bc70 28 77 69 25 2c 69 63 25 29 3d 22 5a 30 3b 53 73 |(wi%,ic%)="Z0;Ss| 0000bc80 6d 21 65 64 69 74 22 0d 06 47 2a 20 20 20 20 c9 |m!edit"..G* .| 0000bc90 20 33 37 3a 24 a4 76 61 6c 28 77 69 25 2c 69 63 | 37:$.val(wi%,ic| 0000bca0 25 29 3d 22 5a 30 3b 53 73 6d 21 70 61 69 6e 74 |%)="Z0;Ssm!paint| 0000bcb0 22 0d 06 48 29 20 20 20 20 c9 20 33 38 3a 24 a4 |"..H) . 38:$.| 0000bcc0 76 61 6c 28 77 69 25 2c 69 63 25 29 3d 22 5a 30 |val(wi%,ic%)="Z0| 0000bcd0 3b 53 73 6d 21 64 72 61 77 22 0d 06 49 1f 20 20 |;Ssm!draw"..I. | 0000bce0 20 20 c9 20 33 39 3a 24 a4 74 65 78 74 28 77 69 | . 39:$.text(wi| 0000bcf0 25 2c 69 63 25 29 3d 22 22 0d 06 4a 07 20 20 cb |%,ic%)=""..J. .| 0000bd00 0d 06 4b 1b 20 20 f2 72 65 64 72 61 77 5f 69 63 |..K. .redraw_ic| 0000bd10 6f 6e 28 77 69 25 2c 69 63 25 29 0d 06 4c 05 cd |on(wi%,ic%)..L..| 0000bd20 0d 06 4d 05 e1 0d 06 4e 05 3a 0d 06 4f 20 dd 20 |..M....N.:..O . | 0000bd30 f2 73 65 74 5f 62 6c 6f 62 5f 73 70 72 69 74 65 |.set_blob_sprite| 0000bd40 28 52 25 2c 46 25 2c 56 25 29 0d 06 50 13 ea 20 |(R%,F%,V%)..P.. | 0000bd50 4c 25 2c 62 24 2c 73 70 72 69 74 65 24 0d 06 51 |L%,b$,sprite$..Q| 0000bd60 3e e7 20 52 25 3d 52 41 25 20 8c 20 4c 25 3d 2d |>. R%=RA% . L%=-| 0000bd70 31 20 8b 20 4c 25 3d a4 62 6c 6f 62 5f 70 61 74 |1 . L%=.blob_pat| 0000bd80 68 28 a3 2c 24 64 61 74 61 62 61 73 65 25 2c 52 |h(.,$database%,R| 0000bd90 25 2c 46 25 2c 56 25 2c 62 24 29 0d 06 52 0b c8 |%,F%,V%,b$)..R..| 0000bda0 8e 20 56 25 20 ca 0d 06 53 3c 20 20 c9 20 33 36 |. V% ...S< . 36| 0000bdb0 3a e7 20 4c 25 3e 3d 30 20 8c 20 73 70 72 69 74 |:. L%>=0 . sprit| 0000bdc0 65 24 3d 22 73 6d 61 6c 6c 5f 66 66 66 22 20 8b |e$="small_fff" .| 0000bdd0 20 73 70 72 69 74 65 24 3d 22 73 6d 21 65 64 69 | sprite$="sm!edi| 0000bde0 74 22 0d 06 54 3d 20 20 c9 20 33 37 3a e7 20 4c |t"..T= . 37:. L| 0000bdf0 25 3e 3d 30 20 8c 20 73 70 72 69 74 65 24 3d 22 |%>=0 . sprite$="| 0000be00 73 6d 61 6c 6c 5f 66 66 39 22 20 8b 20 73 70 72 |small_ff9" . spr| 0000be10 69 74 65 24 3d 22 73 6d 21 70 61 69 6e 74 22 0d |ite$="sm!paint".| 0000be20 06 55 3c 20 20 c9 20 33 38 3a e7 20 4c 25 3e 3d |.U< . 38:. L%>=| 0000be30 30 20 8c 20 73 70 72 69 74 65 24 3d 22 73 6d 61 |0 . sprite$="sma| 0000be40 6c 6c 5f 61 66 66 22 20 8b 20 73 70 72 69 74 65 |ll_aff" . sprite| 0000be50 24 3d 22 73 6d 21 64 72 61 77 22 0d 06 56 05 cb |$="sm!draw"..V..| 0000be60 0d 06 57 38 24 a4 76 61 6c 28 6d 61 69 6e 57 25 |..W8$.val(mainW%| 0000be70 2c 66 69 65 6c 64 25 28 46 25 29 29 3d 22 5a 30 |,field%(F%))="Z0| 0000be80 3b 50 70 74 72 5f 65 78 74 2c 38 2c 34 3b 53 22 |;Pptr_ext,8,4;S"| 0000be90 2b 73 70 72 69 74 65 24 0d 06 58 23 f2 72 65 64 |+sprite$..X#.red| 0000bea0 72 61 77 5f 69 63 6f 6e 28 6d 61 69 6e 57 25 2c |raw_icon(mainW%,| 0000beb0 66 69 65 6c 64 25 28 46 25 29 29 0d 06 59 05 e1 |field%(F%))..Y..| 0000bec0 0d 06 5a 05 3a 0d 06 5b 1a dd 20 f2 65 64 69 74 |..Z.:..[.. .edit| 0000bed0 5f 62 6c 6f 62 28 52 25 2c 46 25 2c 56 25 29 0d |_blob(R%,F%,V%).| 0000bee0 06 5c 18 ea 20 77 69 25 2c 69 63 25 2c 62 24 2c |.\.. wi%,ic%,b$,| 0000bef0 4f 24 2c 76 61 6c 24 0d 06 5d 32 e7 20 52 25 3d |O$,val$..]2. R%=| 0000bf00 52 41 25 20 8c 20 f2 63 68 65 63 6b 5f 63 68 61 |RA% . .check_cha| 0000bf10 6e 67 65 3a e7 20 52 45 43 25 3c 3e 52 41 25 20 |nge:. REC%<>RA% | 0000bf20 8c 20 52 25 3d 52 45 43 25 0d 06 5e 1d 77 69 25 |. R%=REC%..^.wi%| 0000bf30 3d 6d 61 69 6e 57 25 3a 69 63 25 3d 66 69 65 6c |=mainW%:ic%=fiel| 0000bf40 64 25 28 46 25 29 0d 06 5f 0b c8 8e 20 56 25 20 |d%(F%).._... V% | 0000bf50 ca 0d 06 60 35 20 20 c9 20 33 36 3a 4f 24 3d 22 |...`5 . 36:O$="| 0000bf60 4d 65 6d 6f 22 3a 76 61 6c 24 3d 22 5a 30 3b 53 |Memo":val$="Z0;S| 0000bf70 73 6d 61 6c 6c 5f 66 66 66 22 3a 66 74 79 70 65 |small_fff":ftype| 0000bf80 25 3d 26 66 66 66 0d 06 61 37 20 20 c9 20 33 37 |%=&fff..a7 . 37| 0000bf90 3a 4f 24 3d 22 53 70 72 69 74 65 22 3a 76 61 6c |:O$="Sprite":val| 0000bfa0 24 3d 22 5a 30 3b 53 73 6d 61 6c 6c 5f 66 66 39 |$="Z0;Ssmall_ff9| 0000bfb0 22 3a 66 74 79 70 65 25 3d 26 66 66 39 0d 06 62 |":ftype%=&ff9..b| 0000bfc0 35 20 20 c9 20 33 38 3a 4f 24 3d 22 44 72 61 77 |5 . 38:O$="Draw| 0000bfd0 22 3a 76 61 6c 24 3d 22 5a 30 3b 53 73 6d 61 6c |":val$="Z0;Ssmal| 0000bfe0 6c 5f 61 66 66 22 3a 66 74 79 70 65 25 3d 26 61 |l_aff":ftype%=&a| 0000bff0 66 66 0d 06 63 05 cb 0d 06 64 2e e7 20 a4 62 6c |ff..c....d.. .bl| 0000c000 6f 62 5f 70 61 74 68 28 b9 2c 24 64 61 74 61 62 |ob_path(.,$datab| 0000c010 61 73 65 25 2c 52 25 2c 46 25 2c 56 25 2c 62 24 |ase%,R%,F%,V%,b$| 0000c020 29 3c 30 20 8c 0d 06 65 19 20 20 24 a4 76 61 6c |)<0 ...e. $.val| 0000c030 28 77 69 25 2c 69 63 25 29 3d 76 61 6c 24 0d 06 |(wi%,ic%)=val$..| 0000c040 66 49 20 20 c8 99 20 22 4f 53 5f 43 4c 49 22 2c |fI .. "OS_CLI",| 0000c050 22 43 6f 70 79 20 3c 50 42 61 73 65 24 44 69 72 |"Copy <PBase$Dir| 0000c060 3e 2e 52 65 73 6f 75 72 63 65 73 2e 4f 62 6a 65 |>.Resources.Obje| 0000c070 63 74 73 2e 22 2b 4f 24 2b 22 20 22 2b 62 24 2b |cts."+O$+" "+b$+| 0000c080 22 20 7e 43 7e 56 22 0d 06 67 1b 20 20 f2 72 65 |" ~C~V"..g. .re| 0000c090 64 72 61 77 5f 69 63 6f 6e 28 77 69 25 2c 69 63 |draw_icon(wi%,ic| 0000c0a0 25 29 0d 06 68 05 cd 0d 06 69 34 62 6c 6f 63 6b |%)..h....i4block| 0000c0b0 25 21 30 3d 32 35 36 3a 62 6c 6f 63 6b 25 21 31 |%!0=256:block%!1| 0000c0c0 32 3d 30 3a 62 6c 6f 63 6b 25 21 31 36 3d 35 3a |2=0:block%!16=5:| 0000c0d0 62 6c 6f 63 6b 25 21 32 30 3d 30 0d 06 6a 33 62 |block%!20=0..j3b| 0000c0e0 6c 6f 63 6b 25 21 32 34 3d 30 3a 62 6c 6f 63 6b |lock%!24=0:block| 0000c0f0 25 21 32 38 3d 30 3a 62 6c 6f 63 6b 25 21 33 32 |%!28=0:block%!32| 0000c100 3d 30 3a 62 6c 6f 63 6b 25 21 33 36 3d 30 0d 06 |=0:block%!36=0..| 0000c110 6b 29 62 6c 6f 63 6b 25 21 34 30 3d 66 74 79 70 |k)block%!40=ftyp| 0000c120 65 25 3a 24 28 62 6c 6f 63 6b 25 2b 34 34 29 3d |e%:$(block%+44)=| 0000c130 62 24 2b bd 28 30 29 0d 06 6c 25 c8 99 20 22 57 |b$+.(0)..l%.. "W| 0000c140 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 |imp_SendMessage"| 0000c150 2c 31 38 2c 62 6c 6f 63 6b 25 2c 30 0d 06 6d 05 |,18,block%,0..m.| 0000c160 e1 0d 06 6e 05 3a 0d 06 6f 2a dd 20 f2 74 72 61 |...n.:..o*. .tra| 0000c170 6e 73 66 65 72 5f 62 6c 6f 62 28 77 69 25 2c 69 |nsfer_blob(wi%,i| 0000c180 63 25 2c 52 25 2c 66 69 6c 65 24 2c 66 74 25 29 |c%,R%,file$,ft%)| 0000c190 0d 06 70 14 ea 20 46 25 2c 56 25 2c 4c 25 2c 57 |..p.. F%,V%,L%,W| 0000c1a0 25 2c 62 24 0d 06 71 15 e7 20 77 69 25 3c 3e 6d |%,b$..q.. wi%<>m| 0000c1b0 61 69 6e 57 25 20 8c 20 e1 0d 06 72 32 e7 20 52 |ainW% . ...r2. R| 0000c1c0 25 3d 52 41 25 20 8c 20 f2 63 68 65 63 6b 5f 63 |%=RA% . .check_c| 0000c1d0 68 61 6e 67 65 3a e7 20 52 45 43 25 3c 3e 52 41 |hange:. REC%<>RA| 0000c1e0 25 20 8c 20 52 25 3d 52 45 43 25 0d 06 73 23 46 |% . R%=REC%..s#F| 0000c1f0 25 3d 28 69 63 25 2b 31 29 20 81 20 32 3a 56 25 |%=(ic%+1) . 2:V%| 0000c200 3d 63 68 61 72 74 79 70 65 25 28 46 25 29 0d 06 |=chartype%(F%)..| 0000c210 74 0b c8 8e 20 56 25 20 ca 0d 06 75 3b 20 20 c9 |t... V% ...u; .| 0000c220 20 33 35 3a e7 20 66 74 25 3d 2d 31 20 8c 20 6c | 35:. ft%=-1 . l| 0000c230 69 6e 6b 24 28 46 25 29 3d 22 40 22 2b 66 69 6c |ink$(F%)="@"+fil| 0000c240 65 24 3a 6c 69 6e 6b 24 28 30 29 3d 22 4c 4f 41 |e$:link$(0)="LOA| 0000c250 44 45 44 22 0d 06 76 0b 20 20 c9 20 33 36 3a 0d |DED"..v. . 36:.| 0000c260 06 77 3f 20 20 e7 20 66 74 25 3d 26 66 66 66 20 |.w? . ft%=&fff | 0000c270 8c 20 f2 69 6e 73 74 61 6c 6c 5f 62 6c 6f 62 3a |. .install_blob:| 0000c280 24 a4 76 61 6c 28 77 69 25 2c 69 63 25 29 3d 22 |$.val(wi%,ic%)="| 0000c290 5a 30 3b 53 73 6d 61 6c 6c 5f 66 66 66 22 0d 06 |Z0;Ssmall_fff"..| 0000c2a0 78 0b 20 20 c9 20 33 37 3a 0d 06 79 3f 20 20 e7 |x. . 37:..y? .| 0000c2b0 20 66 74 25 3d 26 66 66 39 20 8c 20 f2 69 6e 73 | ft%=&ff9 . .ins| 0000c2c0 74 61 6c 6c 5f 62 6c 6f 62 3a 24 a4 76 61 6c 28 |tall_blob:$.val(| 0000c2d0 77 69 25 2c 69 63 25 29 3d 22 5a 30 3b 53 73 6d |wi%,ic%)="Z0;Ssm| 0000c2e0 61 6c 6c 5f 66 66 39 22 0d 06 7a 0b 20 20 c9 20 |all_ff9"..z. . | 0000c2f0 33 38 3a 0d 06 7b 3f 20 20 e7 20 66 74 25 3d 26 |38:..{? . ft%=&| 0000c300 61 66 66 20 8c 20 f2 69 6e 73 74 61 6c 6c 5f 62 |aff . .install_b| 0000c310 6c 6f 62 3a 24 a4 76 61 6c 28 77 69 25 2c 69 63 |lob:$.val(wi%,ic| 0000c320 25 29 3d 22 5a 30 3b 53 73 6d 61 6c 6c 5f 61 66 |%)="Z0;Ssmall_af| 0000c330 66 22 0d 06 7c 0b 20 20 c9 20 33 39 3a 0d 06 7d |f"..|. . 39:..}| 0000c340 35 20 20 e7 20 66 74 25 3d 26 66 66 66 20 8c 20 |5 . ft%=&fff . | 0000c350 f2 69 6e 73 74 61 6c 6c 5f 62 6c 6f 62 3a f2 73 |.install_blob:.s| 0000c360 68 6f 77 5f 74 65 78 74 5f 62 6c 6f 63 6b 28 46 |how_text_block(F| 0000c370 25 29 0d 06 7e 0b 20 20 c9 20 34 30 3a 0d 06 7f |%)..~. . 40:...| 0000c380 32 20 20 e7 20 66 74 25 3d 26 66 66 39 20 8c 20 |2 . ft%=&ff9 . | 0000c390 f2 69 6e 73 74 61 6c 6c 5f 62 6c 6f 62 3a f2 73 |.install_blob:.s| 0000c3a0 68 6f 77 5f 70 69 63 74 75 72 65 28 46 25 29 0d |how_picture(F%).| 0000c3b0 06 80 05 cb 0d 06 81 19 f2 72 65 64 72 61 77 5f |.........redraw_| 0000c3c0 69 63 6f 6e 28 77 69 25 2c 69 63 25 29 0d 06 82 |icon(wi%,ic%)...| 0000c3d0 05 e1 0d 06 83 05 3a 0d 06 84 13 dd 20 f2 69 6e |......:..... .in| 0000c3e0 73 74 61 6c 6c 5f 62 6c 6f 62 0d 06 85 2b 4c 25 |stall_blob...+L%| 0000c3f0 3d a4 62 6c 6f 62 5f 70 61 74 68 28 b9 2c 24 64 |=.blob_path(.,$d| 0000c400 61 74 61 62 61 73 65 25 2c 52 25 2c 46 25 2c 56 |atabase%,R%,F%,V| 0000c410 25 2c 62 24 29 0d 06 86 1c c8 99 20 22 4f 53 5f |%,b$)...... "OS_| 0000c420 43 4c 49 22 2c 22 52 65 6d 6f 76 65 20 22 2b 62 |CLI","Remove "+b| 0000c430 24 0d 06 87 2c c8 99 20 22 4f 53 5f 43 4c 49 22 |$...,.. "OS_CLI"| 0000c440 2c 22 43 6f 70 79 20 22 2b 66 69 6c 65 24 2b 22 |,"Copy "+file$+"| 0000c450 20 22 2b 62 24 2b 22 20 7e 43 7e 56 22 0d 06 88 | "+b$+" ~C~V"...| 0000c460 05 e1 0d 06 89 05 3a 0d 06 8a 1a dd 20 f2 73 68 |......:..... .sh| 0000c470 6f 77 5f 74 65 78 74 5f 62 6c 6f 63 6b 28 46 25 |ow_text_block(F%| 0000c480 29 0d 06 8b 16 ea 20 46 2c 62 24 2c 49 25 2c 4c |)..... F,b$,I%,L| 0000c490 25 2c 62 61 73 65 25 0d 06 8c 0e e7 20 46 25 3d |%,base%..... F%=| 0000c4a0 30 20 8c 20 e1 0d 06 8d 11 62 61 73 65 25 3d 52 |0 . .....base%=R| 0000c4b0 66 25 28 46 25 29 0d 06 8e 2d 4c 25 3d a4 62 6c |f%(F%)...-L%=.bl| 0000c4c0 6f 62 5f 70 61 74 68 28 a3 2c 24 64 61 74 61 62 |ob_path(.,$datab| 0000c4d0 61 73 65 25 2c 52 45 43 25 2c 46 25 2c 33 39 2c |ase%,REC%,F%,39,| 0000c4e0 62 24 29 0d 06 8f 0c e7 20 4c 25 3e 30 20 8c 0d |b$)..... L%>0 ..| 0000c4f0 06 90 21 20 20 e7 20 4c 25 3e 6c 65 6e 25 28 46 |..! . L%>len%(F| 0000c500 25 29 20 8c 20 4c 25 3d 6c 65 6e 25 28 46 25 29 |%) . L%=len%(F%)| 0000c510 0d 06 91 3b 20 20 f4 20 23 23 23 20 4c 6f 61 64 |...; . ### Load| 0000c520 20 6f 6e 6c 79 20 61 73 20 6d 75 63 68 20 6f 66 | only as much of| 0000c530 20 66 69 6c 65 20 61 73 20 77 65 20 63 61 6e 20 | file as we can | 0000c540 64 69 73 70 6c 61 79 20 23 23 23 0d 06 92 3e 20 |display ###...> | 0000c550 20 46 3d 8e 28 62 24 29 3a e7 20 46 3e 30 20 8c | F=.(b$):. F>0 .| 0000c560 20 c8 99 20 22 4f 53 5f 47 42 50 42 22 2c 34 2c | .. "OS_GBPB",4,| 0000c570 46 2c 62 61 73 65 25 2c 4c 25 3a f2 63 6c 6f 73 |F,base%,L%:.clos| 0000c580 65 5f 66 69 6c 65 28 46 29 0d 06 93 4a 20 20 f4 |e_file(F)...J .| 0000c590 20 23 23 23 20 52 65 70 6c 61 63 65 20 61 6e 79 | ### Replace any| 0000c5a0 20 63 68 61 72 61 63 74 65 72 73 3c 33 32 20 62 | characters<32 b| 0000c5b0 79 20 73 70 61 63 65 73 20 2d 20 62 75 74 20 4f |y spaces - but O| 0000c5c0 4e 4c 59 20 66 6f 72 20 64 69 73 70 6c 61 79 20 |NLY for display | 0000c5d0 23 23 23 0d 06 94 13 20 20 e3 20 49 25 3d 30 20 |###.... . I%=0 | 0000c5e0 b8 20 4c 25 2d 31 0d 06 95 23 20 20 20 20 e7 20 |. L%-1...# . | 0000c5f0 62 61 73 65 25 3f 49 25 3c 33 32 20 8c 20 62 61 |base%?I%<32 . ba| 0000c600 73 65 25 3f 49 25 3d 33 32 0d 06 96 0a 20 20 ed |se%?I%=32.... .| 0000c610 20 49 25 0d 06 97 11 20 20 62 61 73 65 25 3f 4c | I%.... base%?L| 0000c620 25 3d 31 30 0d 06 98 11 20 20 cc 20 24 62 61 73 |%=10.... . $bas| 0000c630 65 25 3d 22 22 0d 06 99 05 cd 0d 06 9a 05 e1 0d |e%=""...........| 0000c640 06 9b 05 3a 0d 06 9c 17 dd 20 f2 73 68 6f 77 5f |...:..... .show_| 0000c650 70 69 63 74 75 72 65 28 46 25 29 0d 06 9d 23 ea |picture(F%)...#.| 0000c660 20 46 2c 66 24 2c 49 25 2c 6d 61 78 25 2c 6c 65 | F,f$,I%,max%,le| 0000c670 6e 25 2c 78 25 2c 79 25 2c 77 25 2c 68 25 0d 06 |n%,x%,y%,w%,h%..| 0000c680 9e 0e e7 20 46 25 3d 30 20 8c 20 e1 0d 06 9f 2f |... F%=0 . ..../| 0000c690 6c 65 6e 25 3d a4 62 6c 6f 62 5f 70 61 74 68 28 |len%=.blob_path(| 0000c6a0 a3 2c 24 64 61 74 61 62 61 73 65 25 2c 52 45 43 |.,$database%,REC| 0000c6b0 25 2c 46 25 2c 34 30 2c 66 24 29 0d 06 a0 45 21 |%,F%,40,f$)...E!| 0000c6c0 62 6c 6f 63 6b 25 3d 6d 61 69 6e 57 25 3a 62 6c |block%=mainW%:bl| 0000c6d0 6f 63 6b 25 21 34 3d 66 69 65 6c 64 25 28 46 25 |ock%!4=field%(F%| 0000c6e0 29 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 |):.. "Wimp_GetIc| 0000c6f0 6f 6e 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 |onState",,block%| 0000c700 0d 06 a1 3c 78 25 3d 62 6c 6f 63 6b 25 21 38 3a |...<x%=block%!8:| 0000c710 79 25 3d 62 6c 6f 63 6b 25 21 31 32 3a 77 25 3d |y%=block%!12:w%=| 0000c720 62 6c 6f 63 6b 25 21 31 36 2d 78 25 3a 68 25 3d |block%!16-x%:h%=| 0000c730 62 6c 6f 63 6b 25 21 32 30 2d 79 25 0d 06 a2 20 |block%!20-y%... | 0000c740 c8 99 20 22 57 69 6d 70 5f 44 65 6c 65 74 65 49 |.. "Wimp_DeleteI| 0000c750 63 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 06 a3 0f |con",,block%....| 0000c760 e7 20 6c 65 6e 25 3e 3d 30 20 8c 0d 06 a4 40 20 |. len%>=0 ....@ | 0000c770 20 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 | .extend_named_s| 0000c780 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 52 66 25 |liding_block(Rf%| 0000c790 28 46 25 29 2c 6c 65 6e 25 2b 34 29 3a 62 61 73 |(F%),len%+4):bas| 0000c7a0 65 25 3d 21 52 66 25 28 46 25 29 0d 06 a5 2f 20 |e%=!Rf%(F%).../ | 0000c7b0 20 21 62 61 73 65 25 3d 6c 65 6e 25 2b 34 3a c8 | !base%=len%+4:.| 0000c7c0 99 20 22 4f 53 5f 46 69 6c 65 22 2c 32 35 35 2c |. "OS_File",255,| 0000c7d0 66 24 2c 62 61 73 65 25 2b 34 0d 06 a6 4f 20 20 |f$,base%+4...O | 0000c7e0 66 69 65 6c 64 25 28 46 25 29 3d a4 63 72 65 61 |field%(F%)=.crea| 0000c7f0 74 65 5f 69 63 6f 6e 28 6d 61 69 6e 57 25 2c 78 |te_icon(mainW%,x| 0000c800 25 2c 79 25 2c 77 25 2c 68 25 2c 26 30 37 30 30 |%,y%,w%,h%,&0700| 0000c810 41 35 33 45 2c 22 22 2c 62 61 73 65 25 2b 31 36 |A53E,"",base%+16| 0000c820 2c 62 61 73 65 25 2c 30 29 0d 06 a7 07 20 20 cc |,base%,0).... .| 0000c830 0d 06 a8 4b 20 20 66 69 65 6c 64 25 28 46 25 29 |...K field%(F%)| 0000c840 3d a4 63 72 65 61 74 65 5f 69 63 6f 6e 28 6d 61 |=.create_icon(ma| 0000c850 69 6e 57 25 2c 78 25 2c 79 25 2c 77 25 2c 68 25 |inW%,x%,y%,w%,h%| 0000c860 2c 26 30 37 30 30 41 35 33 45 2c 22 22 2c 70 61 |,&0700A53E,"",pa| 0000c870 69 6e 74 25 2c 31 2c 33 38 34 29 0d 06 a9 05 cd |int%,1,384).....| 0000c880 0d 06 aa 05 e1 0d 06 ab 05 3a 0d 06 ac 16 dd 20 |.........:..... | 0000c890 f2 66 69 6c 74 65 72 28 77 69 25 2c 69 63 25 29 |.filter(wi%,ic%)| 0000c8a0 0d 06 ad 10 ea 20 68 25 2c 6f 78 25 2c 6f 79 25 |..... h%,ox%,oy%| 0000c8b0 0d 06 ae 0c c8 8e 20 77 69 25 20 ca 0d 06 af 23 |...... wi% ....#| 0000c8c0 20 20 c9 20 6b 65 79 70 61 64 57 25 3a 68 25 3d | . keypadW%:h%=| 0000c8d0 35 33 30 3a 6f 78 25 3d 30 3a 6f 79 25 3d 30 0d |530:ox%=0:oy%=0.| 0000c8e0 06 b0 24 20 20 c9 20 6d 61 69 6e 57 25 3a 68 25 |..$ . mainW%:h%| 0000c8f0 3d 32 30 30 3a 6f 78 25 3d 30 3a 6f 79 25 3d 2d |=200:ox%=0:oy%=-| 0000c900 33 33 30 0d 06 b1 05 cb 0d 06 b2 1a e7 20 a4 73 |330.......... .s| 0000c910 65 6c 65 63 74 65 64 28 77 69 25 2c 69 63 25 29 |elected(wi%,ic%)| 0000c920 20 8c 0d 06 b3 37 20 20 21 62 6c 6f 63 6b 25 3d | ....7 !block%=| 0000c930 6b 65 79 70 61 64 57 25 3a c8 99 20 22 57 69 6d |keypadW%:.. "Wim| 0000c940 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 |p_GetWindowState| 0000c950 22 2c 2c 62 6c 6f 63 6b 25 0d 06 b4 32 20 20 62 |",,block%...2 b| 0000c960 6c 6f 63 6b 25 21 31 32 3d 62 6c 6f 63 6b 25 21 |lock%!12=block%!| 0000c970 34 2b 36 36 30 3a 62 6c 6f 63 6b 25 21 38 3d 62 |4+660:block%!8=b| 0000c980 6c 6f 63 6b 25 21 31 36 2d 68 25 0d 06 b5 21 20 |lock%!16-h%...! | 0000c990 20 62 6c 6f 63 6b 25 21 32 30 3d 6f 78 25 3a 62 | block%!20=ox%:b| 0000c9a0 6c 6f 63 6b 25 21 32 34 3d 6f 79 25 0d 06 b6 22 |lock%!24=oy%..."| 0000c9b0 20 20 c8 99 20 22 57 69 6d 70 5f 4f 70 65 6e 57 | .. "Wimp_OpenW| 0000c9c0 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d 06 |indow",,block%..| 0000c9d0 b7 2a 20 20 e7 20 ac 20 63 6f 6d 6d 6f 6e 25 20 |.* . . common% | 0000c9e0 8c 20 24 a4 74 65 78 74 28 6b 65 79 70 61 64 57 |. $.text(keypadW| 0000c9f0 25 2c 32 39 29 3d 22 22 0d 06 b8 1d 20 20 f2 73 |%,29)="".... .s| 0000ca00 65 74 5f 63 61 72 65 74 28 6b 65 79 70 61 64 57 |et_caret(keypadW| 0000ca10 25 2c 32 39 29 0d 06 b9 21 20 20 e7 20 24 a4 74 |%,29)...! . $.t| 0000ca20 65 78 74 28 6b 65 79 70 61 64 57 25 2c 32 39 29 |ext(keypadW%,29)| 0000ca30 3c 3e 22 22 20 8c 0d 06 ba 42 20 20 20 20 46 69 |<>"" ....B Fi| 0000ca40 6c 74 65 72 24 3d a4 70 61 72 73 65 28 24 a4 74 |lter$=.parse($.t| 0000ca50 65 78 74 28 6b 65 79 70 61 64 57 25 2c 32 39 29 |ext(keypadW%,29)| 0000ca60 2c a4 73 65 6c 65 63 74 65 64 28 6b 65 79 70 61 |,.selected(keypa| 0000ca70 64 57 25 2c 33 32 29 29 0d 06 bb 11 20 20 20 20 |dW%,32)).... | 0000ca80 66 69 6c 74 65 72 25 3d b9 0d 06 bc 21 20 20 20 |filter%=....! | 0000ca90 20 61 64 64 72 3d a4 6d 6f 76 65 74 6f 28 6b 65 | addr=.moveto(ke| 0000caa0 79 25 2c 74 6f 70 2c 7a 25 29 0d 06 bd 13 20 20 |y%,top,z%).... | 0000cab0 20 20 cc 20 66 69 6c 74 65 72 25 3d a3 0d 06 be | . filter%=....| 0000cac0 07 20 20 cd 0d 06 bf 07 20 20 cc 0d 06 c0 16 20 |. ..... ..... | 0000cad0 20 e7 20 77 69 25 3d 6b 65 79 70 61 64 57 25 20 | . wi%=keypadW% | 0000cae0 8c 0d 06 c1 39 20 20 20 20 21 62 6c 6f 63 6b 25 |....9 !block%| 0000caf0 3d 6b 65 79 70 61 64 57 25 3a c8 99 20 22 57 69 |=keypadW%:.. "Wi| 0000cb00 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 |mp_GetWindowStat| 0000cb10 65 22 2c 2c 62 6c 6f 63 6b 25 0d 06 c2 35 20 20 |e",,block%...5 | 0000cb20 20 20 62 6c 6f 63 6b 25 21 31 32 3d 62 6c 6f 63 | block%!12=bloc| 0000cb30 6b 25 21 34 2b 36 36 30 3a 62 6c 6f 63 6b 25 21 |k%!4+660:block%!| 0000cb40 38 3d 62 6c 6f 63 6b 25 21 31 36 2d 33 33 30 0d |8=block%!16-330.| 0000cb50 06 c3 1f 20 20 20 20 62 6c 6f 63 6b 25 21 32 30 |... block%!20| 0000cb60 3d 30 3a 62 6c 6f 63 6b 25 21 32 34 3d 30 0d 06 |=0:block%!24=0..| 0000cb70 c4 24 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 4f |.$ .. "Wimp_O| 0000cb80 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 |penWindow",,bloc| 0000cb90 6b 25 0d 06 c5 21 20 20 20 20 cc 20 f2 63 6c 6f |k%...! . .clo| 0000cba0 73 65 5f 77 69 6e 64 6f 77 28 6b 65 79 70 61 64 |se_window(keypad| 0000cbb0 57 25 29 0d 06 c6 07 20 20 cd 0d 06 c7 0f 20 20 |W%).... ..... | 0000cbc0 66 69 6c 74 65 72 25 3d a3 0d 06 c8 05 cd 0d 06 |filter%=........| 0000cbd0 c9 05 e1 0d 06 ca 05 3a 0d 06 cb 1a dd 20 a4 66 |.......:..... .f| 0000cbe0 61 73 74 5f 77 69 6e 64 28 54 25 2c 50 25 2c 44 |ast_wind(T%,P%,D| 0000cbf0 25 29 0d 06 cc 08 ea 20 49 25 0d 06 cd 20 66 61 |%)..... I%... fa| 0000cc00 73 74 25 3d bb 28 24 a4 74 65 78 74 28 6b 65 79 |st%=.($.text(key| 0000cc10 70 61 64 57 25 2c 32 33 29 29 0d 06 ce 11 44 25 |padW%,23))....D%| 0000cc20 3d 28 44 25 2b 31 29 20 81 20 32 0d 06 cf 18 c8 |=(D%+1) . 2.....| 0000cc30 95 20 50 25 3c 3e 54 25 20 80 20 49 25 3c 66 61 |. P%<>T% . I%<fa| 0000cc40 73 74 25 0d 06 d0 4b 20 20 e7 20 66 69 6c 74 65 |st%...K . filte| 0000cc50 72 25 20 8c 20 50 25 3d a4 6e 65 78 74 5f 6d 61 |r% . P%=.next_ma| 0000cc60 74 63 68 28 50 25 2c 44 25 2c 46 69 6c 74 65 72 |tch(P%,D%,Filter| 0000cc70 24 29 20 8b 20 50 25 3d a4 6e 65 69 67 68 62 6f |$) . P%=.neighbo| 0000cc80 75 72 28 6b 65 79 25 2c 50 25 2c 44 25 29 0d 06 |ur(key%,P%,D%)..| 0000cc90 d1 0b 20 20 49 25 2b 3d 31 0d 06 d2 05 ce 0d 06 |.. I%+=1.......| 0000cca0 d3 39 e7 20 50 25 3d 54 25 20 80 20 ac 20 66 69 |.9. P%=T% . . fi| 0000ccb0 6c 74 65 72 25 20 8c 20 ef 20 37 3a 50 25 3d a4 |lter% . . 7:P%=.| 0000ccc0 6e 65 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 50 |neighbour(key%,P| 0000ccd0 25 2c 31 2d 44 25 29 0d 06 d4 15 f2 64 69 73 70 |%,1-D%).....disp| 0000cce0 6c 61 79 28 6b 65 79 25 2c 50 25 29 0d 06 d5 07 |lay(key%,P%)....| 0000ccf0 3d 50 25 0d 06 d6 05 3a 0d 06 d7 14 dd 20 f2 73 |=P%....:..... .s| 0000cd00 75 62 66 69 6c 65 28 64 69 72 25 29 0d 06 d8 0f |ubfile(dir%)....| 0000cd10 66 69 6c 65 25 2b 3d 64 69 72 25 0d 06 d9 17 e7 |file%+=dir%.....| 0000cd20 20 66 69 6c 65 25 3d 36 20 8c 20 66 69 6c 65 25 | file%=6 . file%| 0000cd30 3d 30 0d 06 da 18 e7 20 66 69 6c 65 25 3d 2d 31 |=0..... file%=-1| 0000cd40 20 8c 20 66 69 6c 65 25 3d 35 0d 06 db 13 74 6f | . file%=5....to| 0000cd50 70 3d 38 2a 66 69 6c 65 25 2b 4c 48 25 0d 06 dc |p=8*file%+LH%...| 0000cd60 1c 61 64 64 72 3d a4 6d 6f 76 65 74 6f 28 6b 65 |.addr=.moveto(ke| 0000cd70 79 25 2c 74 6f 70 2c 31 29 0d 06 dd 05 e1 0d 06 |y%,top,1).......| 0000cd80 de 05 3a 0d 06 df 1b dd 20 f2 61 6c 6c 6f 77 5f |..:..... .allow_| 0000cd90 73 65 61 72 63 68 28 77 69 25 2c 65 25 29 0d 06 |search(wi%,e%)..| 0000cda0 e0 10 ea 20 77 25 2c 6f 78 25 2c 6f 79 25 0d 06 |... w%,ox%,oy%..| 0000cdb0 e1 0b c8 8e 20 65 25 20 ca 0d 06 e2 35 20 20 c9 |.... e% ....5 .| 0000cdc0 20 31 3a f2 73 65 6c 65 63 74 28 6b 65 79 70 61 | 1:.select(keypa| 0000cdd0 64 57 25 2c 32 34 29 3a f2 64 65 73 65 6c 65 63 |dW%,24):.deselec| 0000cde0 74 28 6b 65 79 70 61 64 57 25 2c 32 35 29 0d 06 |t(keypadW%,25)..| 0000cdf0 e3 36 20 20 c9 20 2d 31 3a f2 73 65 6c 65 63 74 |.6 . -1:.select| 0000ce00 28 6b 65 79 70 61 64 57 25 2c 32 35 29 3a f2 64 |(keypadW%,25):.d| 0000ce10 65 73 65 6c 65 63 74 28 6b 65 79 70 61 64 57 25 |eselect(keypadW%| 0000ce20 2c 32 34 29 0d 06 e4 05 cb 0d 06 e5 1a f2 64 65 |,24)..........de| 0000ce30 73 65 6c 65 63 74 28 6b 65 79 70 61 64 57 25 2c |select(keypadW%,| 0000ce40 32 32 29 0d 06 e6 45 e7 20 62 75 74 74 6f 6e 66 |22)...E. buttonf| 0000ce50 69 65 6c 64 25 28 32 32 29 3e 30 20 8c 20 f2 64 |ield%(22)>0 . .d| 0000ce60 65 73 65 6c 65 63 74 28 6d 61 69 6e 57 25 2c 66 |eselect(mainW%,f| 0000ce70 69 65 6c 64 25 28 62 75 74 74 6f 6e 66 69 65 6c |ield%(buttonfiel| 0000ce80 64 25 28 32 32 29 29 29 0d 06 e7 0d 66 69 6c 74 |d%(22)))....filt| 0000ce90 65 72 25 3d a3 0d 06 e8 31 24 a4 74 65 78 74 28 |er%=....1$.text(| 0000cea0 6b 65 79 70 61 64 57 25 2c 32 37 29 3d 22 22 3a |keypadW%,27)="":| 0000ceb0 24 a4 74 65 78 74 28 6b 65 79 70 61 64 57 25 2c |$.text(keypadW%,| 0000cec0 33 36 29 3d 22 22 0d 06 e9 24 24 a4 74 65 78 74 |36)=""...$$.text| 0000ced0 28 6b 65 79 70 61 64 57 25 2c 33 33 29 3d 49 6e |(keypadW%,33)=In| 0000cee0 64 65 78 24 28 6b 65 79 25 29 0d 06 ea 0c c8 8e |dex$(key%)......| 0000cef0 20 77 69 25 20 ca 0d 06 eb 24 20 20 c9 20 6b 65 | wi% ....$ . ke| 0000cf00 79 70 61 64 57 25 3a 77 25 3d 31 30 30 30 3a 6f |ypadW%:w%=1000:o| 0000cf10 78 25 3d 30 3a 6f 79 25 3d 30 0d 06 ec 23 20 20 |x%=0:oy%=0...# | 0000cf20 c9 20 6d 61 69 6e 57 25 3a 77 25 3d 33 34 30 3a |. mainW%:w%=340:| 0000cf30 6f 78 25 3d 36 36 30 3a 6f 79 25 3d 30 0d 06 ed |ox%=660:oy%=0...| 0000cf40 05 cb 0d 06 ee 35 21 62 6c 6f 63 6b 25 3d 6b 65 |.....5!block%=ke| 0000cf50 79 70 61 64 57 25 3a c8 99 20 22 57 69 6d 70 5f |ypadW%:.. "Wimp_| 0000cf60 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c |GetWindowState",| 0000cf70 2c 62 6c 6f 63 6b 25 0d 06 ef 30 62 6c 6f 63 6b |,block%...0block| 0000cf80 25 21 31 32 3d 62 6c 6f 63 6b 25 21 34 2b 77 25 |%!12=block%!4+w%| 0000cf90 3a 62 6c 6f 63 6b 25 21 38 3d 62 6c 6f 63 6b 25 |:block%!8=block%| 0000cfa0 21 31 36 2d 33 32 38 0d 06 f0 1f 62 6c 6f 63 6b |!16-328....block| 0000cfb0 25 21 32 30 3d 6f 78 25 3a 62 6c 6f 63 6b 25 21 |%!20=ox%:block%!| 0000cfc0 32 34 3d 6f 79 25 0d 06 f1 20 c8 99 20 22 57 69 |24=oy%... .. "Wi| 0000cfd0 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c |mp_OpenWindow",,| 0000cfe0 62 6c 6f 63 6b 25 0d 06 f2 1b f2 73 65 74 5f 63 |block%.....set_c| 0000cff0 61 72 65 74 28 6b 65 79 70 61 64 57 25 2c 32 37 |aret(keypadW%,27| 0000d000 29 0d 06 f3 05 e1 0d 06 f4 05 3a 0d 06 f5 0f dd |).........:.....| 0000d010 20 f2 76 61 6c 5f 68 65 6c 70 0d 06 f6 0b ea 20 | .val_help..... | 0000d020 6e 61 6d 65 24 0d 06 f7 16 e7 20 46 69 65 6c 64 |name$..... Field| 0000d030 6e 75 6d 62 65 72 25 3e 30 20 8c 0d 06 f8 21 20 |number%>0 ....! | 0000d040 20 6e 61 6d 65 24 3d c0 6c 69 6e 6b 24 28 46 69 | name$=.link$(Fi| 0000d050 65 6c 64 6e 75 6d 62 65 72 25 29 29 0d 06 f9 34 |eldnumber%))...4| 0000d060 20 20 e7 20 97 28 6e 61 6d 65 24 29 3c 35 38 20 | . .(name$)<58 | 0000d070 80 20 97 28 6e 61 6d 65 24 29 3c 3e 2d 31 20 8c |. .(name$)<>-1 .| 0000d080 20 6e 61 6d 65 24 3d c1 6e 61 6d 65 24 2c 32 29 | name$=.name$,2)| 0000d090 0d 06 fa 27 20 20 54 61 62 6c 65 6e 75 6d 62 65 |...' Tablenumbe| 0000d0a0 72 25 3d a4 74 61 62 6c 65 5f 6e 75 6d 62 65 72 |r%=.table_number| 0000d0b0 28 6e 61 6d 65 24 29 0d 06 fb 34 20 20 e7 20 54 |(name$)...4 . T| 0000d0c0 61 62 6c 65 6e 75 6d 62 65 72 25 3c 3e 2d 31 20 |ablenumber%<>-1 | 0000d0d0 8c 20 f2 73 68 6f 77 5f 74 61 62 6c 65 28 54 61 |. .show_table(Ta| 0000d0e0 62 6c 65 6e 75 6d 62 65 72 25 29 0d 06 fc 05 cd |blenumber%).....| 0000d0f0 0d 06 fd 05 e1 0d 06 fe 05 3a 0d 06 ff 11 dd 20 |.........:..... | 0000d100 f2 76 61 6c 5f 6f 6e 5f 6f 66 66 0d 07 00 08 ea |.val_on_off.....| 0000d110 20 49 25 0d 07 01 19 76 61 6c 69 64 61 74 65 25 | I%....validate%| 0000d120 3d ac 20 76 61 6c 69 64 61 74 65 25 0d 07 02 1f |=. validate%....| 0000d130 f2 74 69 63 6b 28 6d 65 6e 75 25 28 32 29 2c 33 |.tick(menu%(2),3| 0000d140 2c 76 61 6c 69 64 61 74 65 25 29 0d 07 03 12 c8 |,validate%).....| 0000d150 8e 20 76 61 6c 69 64 61 74 65 25 20 ca 0d 07 04 |. validate% ....| 0000d160 0a 20 20 c9 20 b9 3a 0d 07 05 18 20 20 e3 20 49 |. . .:.... . I| 0000d170 25 3d 31 20 b8 20 76 73 74 72 69 6e 67 73 25 0d |%=1 . vstrings%.| 0000d180 07 06 20 20 20 20 20 24 76 61 6c 69 64 25 28 49 |.. $valid%(I| 0000d190 25 29 3d 24 72 76 61 6c 69 64 25 28 49 25 29 0d |%)=$rvalid%(I%).| 0000d1a0 07 07 0a 20 20 ed 20 49 25 0d 07 08 0a 20 20 c9 |... . I%.... .| 0000d1b0 20 a3 3a 0d 07 09 18 20 20 e3 20 49 25 3d 31 20 | .:.... . I%=1 | 0000d1c0 b8 20 76 73 74 72 69 6e 67 73 25 0d 07 0a 24 20 |. vstrings%...$ | 0000d1d0 20 20 20 24 76 61 6c 69 64 25 28 49 25 29 3d 22 | $valid%(I%)="| 0000d1e0 50 70 74 72 5f 77 72 69 74 65 2c 34 2c 34 22 0d |Pptr_write,4,4".| 0000d1f0 07 0b 0a 20 20 ed 20 49 25 0d 07 0c 05 cb 0d 07 |... . I%.......| 0000d200 0d 05 e1 0d 07 0e 05 3a 0d 07 0f 1d dd 20 f2 73 |.......:..... .s| 0000d210 61 76 65 5f 63 6c 69 63 6b 28 77 69 25 2c 69 63 |ave_click(wi%,ic| 0000d220 25 2c 62 25 29 0d 07 10 0b ea 20 70 24 2c 48 24 |%,b%)..... p$,H$| 0000d230 0d 07 11 15 62 75 74 74 25 3d 28 62 25 20 80 20 |....butt%=(b% . | 0000d240 25 31 31 31 29 0d 07 12 0c c8 8e 20 77 69 25 20 |%111)...... wi% | 0000d250 ca 0d 07 13 0f 20 20 c9 20 73 61 76 65 57 25 3a |..... . saveW%:| 0000d260 0d 07 14 1a 20 20 46 69 6c 65 6e 61 6d 65 24 3d |.... Filename$=| 0000d270 24 53 61 76 65 4e 61 6d 65 25 0d 07 15 14 20 20 |$SaveName%.... | 0000d280 c8 8e 20 73 61 76 65 66 75 6e 63 24 20 ca 0d 07 |.. savefunc$ ...| 0000d290 16 19 20 20 20 20 c9 20 22 4e 65 77 20 64 61 74 |.. . "New dat| 0000d2a0 61 62 61 73 65 22 3a 0d 07 17 0f 20 20 20 20 54 |abase":.... T| 0000d2b0 79 70 65 25 3d 30 0d 07 18 64 20 20 20 20 e7 20 |ype%=0...d . | 0000d2c0 c0 46 69 6c 65 6e 61 6d 65 24 2c 31 29 3c 3e 22 |.Filename$,1)<>"| 0000d2d0 21 22 20 8c 20 46 69 6c 65 6e 61 6d 65 24 3d 22 |!" . Filename$="| 0000d2e0 21 22 2b 46 69 6c 65 6e 61 6d 65 24 3a 46 69 6c |!"+Filename$:Fil| 0000d2f0 65 6e 61 6d 65 24 3d c0 46 69 6c 65 6e 61 6d 65 |ename$=.Filename| 0000d300 24 2c 31 30 29 3a 24 53 61 76 65 4e 61 6d 65 25 |$,10):$SaveName%| 0000d310 3d 46 69 6c 65 6e 61 6d 65 24 0d 07 19 18 20 20 |=Filename$.... | 0000d320 20 20 c9 20 22 4c 6f 67 20 63 68 61 6e 67 65 73 | . "Log changes| 0000d330 22 3a 0d 07 1a 1e 20 20 20 20 54 79 70 65 25 3d |":.... Type%=| 0000d340 26 66 66 66 3a 73 74 61 72 74 6c 6f 67 25 3d b9 |&fff:startlog%=.| 0000d350 0d 07 1b 19 20 20 20 20 c9 20 22 53 61 76 65 20 |.... . "Save | 0000d360 61 73 20 74 65 78 74 22 3a 0d 07 1c 12 20 20 20 |as text":.... | 0000d370 20 54 79 70 65 25 3d 26 66 66 66 0d 07 1d 37 20 | Type%=&fff...7 | 0000d380 20 20 20 53 74 61 72 74 25 3d 21 74 65 78 74 61 | Start%=!texta| 0000d390 6e 63 68 6f 72 25 3a 45 6e 64 25 3d 53 74 61 72 |nchor%:End%=Star| 0000d3a0 74 25 2b 43 6f 75 6e 74 25 2a 4c 65 6e 4c 69 6e |t%+Count%*LenLin| 0000d3b0 65 25 0d 07 1e 16 20 20 20 20 24 53 74 61 72 74 |e%.... $Start| 0000d3c0 25 3d 70 69 74 63 68 24 0d 07 1f 16 20 20 20 20 |%=pitch$.... | 0000d3d0 c9 20 22 53 61 76 65 20 6c 69 73 74 22 3a 0d 07 |. "Save list":..| 0000d3e0 20 20 20 20 20 20 54 79 70 65 25 3d 26 66 66 66 | Type%=&fff| 0000d3f0 3a 73 61 76 65 74 6f 66 69 6c 65 25 3d b9 0d 07 |:savetofile%=...| 0000d400 21 16 20 20 20 20 c9 20 22 53 61 76 65 20 74 65 |!. . "Save te| 0000d410 78 74 22 3a 0d 07 22 13 20 20 20 20 54 79 70 65 |xt":..". Type| 0000d420 25 3d 26 66 66 66 3a 0d 07 23 3d 20 20 20 20 6c |%=&fff:..#= l| 0000d430 65 6e 25 3d a4 62 6c 6f 62 5f 70 61 74 68 28 b9 |en%=.blob_path(.| 0000d440 2c 24 64 61 74 61 62 61 73 65 25 2c 52 45 43 25 |,$database%,REC%| 0000d450 2c 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c 33 36 |,Fieldnumber%,36| 0000d460 2c 66 24 29 0d 07 24 37 20 20 20 20 f2 65 78 74 |,f$)..$7 .ext| 0000d470 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e |end_named_slidin| 0000d480 67 5f 62 6c 6f 63 6b 28 73 61 76 65 61 6e 63 68 |g_block(saveanch| 0000d490 6f 72 25 2c 6c 65 6e 25 2b 31 29 0d 07 25 28 20 |or%,len%+1)..%( | 0000d4a0 20 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c | .. "OS_File",| 0000d4b0 32 35 35 2c 66 24 2c 21 73 61 76 65 61 6e 63 68 |255,f$,!saveanch| 0000d4c0 6f 72 25 0d 07 26 2c 20 20 20 20 53 74 61 72 74 |or%..&, Start| 0000d4d0 25 3d 21 73 61 76 65 61 6e 63 68 6f 72 25 3a 45 |%=!saveanchor%:E| 0000d4e0 6e 64 25 3d 53 74 61 72 74 25 2b 6c 65 6e 25 0d |nd%=Start%+len%.| 0000d4f0 07 27 18 20 20 20 20 c9 20 22 53 61 76 65 20 73 |.'. . "Save s| 0000d500 70 72 69 74 65 22 3a 0d 07 28 12 20 20 20 20 54 |prite":..(. T| 0000d510 79 70 65 25 3d 26 66 66 39 0d 07 29 3d 20 20 20 |ype%=&ff9..)= | 0000d520 20 6c 65 6e 25 3d a4 62 6c 6f 62 5f 70 61 74 68 | len%=.blob_path| 0000d530 28 b9 2c 24 64 61 74 61 62 61 73 65 25 2c 52 45 |(.,$database%,RE| 0000d540 43 25 2c 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c |C%,Fieldnumber%,| 0000d550 33 37 2c 66 24 29 0d 07 2a 37 20 20 20 20 f2 65 |37,f$)..*7 .e| 0000d560 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 |xtend_named_slid| 0000d570 69 6e 67 5f 62 6c 6f 63 6b 28 73 61 76 65 61 6e |ing_block(savean| 0000d580 63 68 6f 72 25 2c 6c 65 6e 25 2b 31 29 0d 07 2b |chor%,len%+1)..+| 0000d590 28 20 20 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 |( .. "OS_File| 0000d5a0 22 2c 32 35 35 2c 66 24 2c 21 73 61 76 65 61 6e |",255,f$,!savean| 0000d5b0 63 68 6f 72 25 0d 07 2c 2c 20 20 20 20 53 74 61 |chor%..,, Sta| 0000d5c0 72 74 25 3d 21 73 61 76 65 61 6e 63 68 6f 72 25 |rt%=!saveanchor%| 0000d5d0 3a 45 6e 64 25 3d 53 74 61 72 74 25 2b 6c 65 6e |:End%=Start%+len| 0000d5e0 25 0d 07 2d 16 20 20 20 20 c9 20 22 53 61 76 65 |%..-. . "Save| 0000d5f0 20 64 72 61 77 22 3a 0d 07 2e 12 20 20 20 20 54 | draw":.... T| 0000d600 79 70 65 25 3d 26 61 66 66 0d 07 2f 3d 20 20 20 |ype%=&aff../= | 0000d610 20 6c 65 6e 25 3d a4 62 6c 6f 62 5f 70 61 74 68 | len%=.blob_path| 0000d620 28 b9 2c 24 64 61 74 61 62 61 73 65 25 2c 52 45 |(.,$database%,RE| 0000d630 43 25 2c 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c |C%,Fieldnumber%,| 0000d640 33 38 2c 66 24 29 0d 07 30 37 20 20 20 20 f2 65 |38,f$)..07 .e| 0000d650 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 |xtend_named_slid| 0000d660 69 6e 67 5f 62 6c 6f 63 6b 28 73 61 76 65 61 6e |ing_block(savean| 0000d670 63 68 6f 72 25 2c 6c 65 6e 25 2b 31 29 0d 07 31 |chor%,len%+1)..1| 0000d680 28 20 20 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 |( .. "OS_File| 0000d690 22 2c 32 35 35 2c 66 24 2c 21 73 61 76 65 61 6e |",255,f$,!savean| 0000d6a0 63 68 6f 72 25 0d 07 32 2c 20 20 20 20 53 74 61 |chor%..2, Sta| 0000d6b0 72 74 25 3d 21 73 61 76 65 61 6e 63 68 6f 72 25 |rt%=!saveanchor%| 0000d6c0 3a 45 6e 64 25 3d 53 74 61 72 74 25 2b 6c 65 6e |:End%=Start%+len| 0000d6d0 25 0d 07 33 19 20 20 20 20 c9 20 22 53 61 76 65 |%..3. . "Save| 0000d6e0 20 6f 70 74 69 6f 6e 73 22 3a 0d 07 34 12 20 20 | options":..4. | 0000d6f0 20 20 54 79 70 65 25 3d 26 37 66 35 0d 07 35 17 | Type%=&7f5..5.| 0000d700 20 20 20 20 c9 20 22 53 61 76 65 20 71 75 65 72 | . "Save quer| 0000d710 79 22 3a 0d 07 36 43 20 20 20 20 53 74 61 72 74 |y":..6C Start| 0000d720 25 3d a4 74 65 78 74 28 6d 61 74 63 68 57 25 2c |%=.text(matchW%,| 0000d730 30 29 3a 45 6e 64 25 3d 53 74 61 72 74 25 2b a9 |0):End%=Start%+.| 0000d740 28 24 53 74 61 72 74 25 29 2b 31 3a 54 79 70 65 |($Start%)+1:Type| 0000d750 25 3d 26 37 66 34 0d 07 37 1b 20 20 20 20 c9 20 |%=&7f4..7. . | 0000d760 22 53 61 76 65 20 73 65 6c 65 63 74 69 6f 6e 22 |"Save selection"| 0000d770 3a 0d 07 38 31 20 20 20 20 50 25 3d 73 61 76 65 |:..81 P%=save| 0000d780 62 75 66 66 25 3a 24 50 25 3d 70 72 69 6e 74 6f |buff%:$P%=printo| 0000d790 72 64 65 72 24 3a 50 25 2b 3d a9 28 24 50 25 29 |rder$:P%+=.($P%)| 0000d7a0 2b 31 0d 07 39 1b 20 20 20 20 e3 20 54 25 3d 30 |+1..9. . T%=0| 0000d7b0 20 b8 20 4c 61 73 74 54 61 62 6c 65 25 0d 07 3a | . LastTable%..:| 0000d7c0 27 20 20 20 20 20 24 50 25 3d 70 72 69 6e 74 72 |' $P%=printr| 0000d7d0 65 6c 24 28 54 25 29 3a 50 25 2b 3d a9 28 24 50 |el$(T%):P%+=.($P| 0000d7e0 25 29 2b 31 0d 07 3b 0c 20 20 20 20 ed 20 54 25 |%)+1..;. . T%| 0000d7f0 0d 07 3c 3e 20 20 20 20 53 74 61 72 74 25 3d 73 |..<> Start%=s| 0000d800 61 76 65 62 75 66 66 25 3a 45 6e 64 25 3d 53 74 |avebuff%:End%=St| 0000d810 61 72 74 25 2b 50 25 2d 73 61 76 65 62 75 66 66 |art%+P%-savebuff| 0000d820 25 2b 31 3a 54 79 70 65 25 3d 26 37 46 33 0d 07 |%+1:Type%=&7F3..| 0000d830 3d 17 20 20 20 20 c9 20 22 53 61 76 65 20 74 61 |=. . "Save ta| 0000d840 62 6c 65 22 3a 0d 07 3e 47 20 20 20 20 24 54 61 |ble":..>G $Ta| 0000d850 62 54 69 74 6c 65 25 3d a4 74 61 62 6c 65 5f 69 |bTitle%=.table_i| 0000d860 6e 66 6f 28 54 25 2c 52 6f 77 73 25 2c 54 61 62 |nfo(T%,Rows%,Tab| 0000d870 46 69 65 6c 64 73 25 2c 52 65 63 25 2c 74 61 62 |Fields%,Rec%,tab| 0000d880 66 69 65 6c 64 6c 65 6e 25 28 29 29 0d 07 3f 44 |fieldlen%())..?D| 0000d890 20 20 20 20 53 74 61 72 74 25 3d 21 74 61 62 61 | Start%=!taba| 0000d8a0 6e 63 68 6f 72 25 28 54 25 29 3a 45 6e 64 25 3d |nchor%(T%):End%=| 0000d8b0 53 74 61 72 74 25 2b 31 36 30 2b 52 6f 77 73 25 |Start%+160+Rows%| 0000d8c0 2a 52 65 63 25 3a 54 79 70 65 25 3d 26 37 66 31 |*Rec%:Type%=&7f1| 0000d8d0 0d 07 40 1b 20 20 20 20 c9 20 22 53 61 76 65 20 |..@. . "Save | 0000d8e0 66 6f 72 6d 20 66 69 6c 65 22 3a 0d 07 41 12 20 |form file":..A. | 0000d8f0 20 20 20 54 79 70 65 25 3d 26 37 66 32 0d 07 42 | Type%=&7f2..B| 0000d900 1a 20 20 20 20 f2 6c 69 74 28 6d 65 6e 75 25 28 |. .lit(menu%(| 0000d910 39 29 2c 33 2c b9 29 0d 07 43 1a 20 20 20 20 f2 |9),3,.)..C. .| 0000d920 6c 69 74 28 6d 65 6e 75 25 28 39 29 2c 34 2c b9 |lit(menu%(9),4,.| 0000d930 29 0d 07 44 33 20 20 20 20 e7 20 61 64 6a 75 73 |)..D3 . adjus| 0000d940 74 25 3d a3 20 80 20 a4 66 69 72 73 74 5f 66 69 |t%=. . .first_fi| 0000d950 65 6c 64 3e 30 20 8c 20 f2 64 65 66 61 75 6c 74 |eld>0 . .default| 0000d960 5f 6b 65 79 0d 07 45 07 20 20 cb 0d 07 46 12 20 |_key..E. ...F. | 0000d970 20 c9 20 73 61 76 65 73 75 62 57 25 3a 0d 07 47 | . savesubW%:..G| 0000d980 14 20 20 c8 8e 20 73 61 76 65 66 75 6e 63 24 20 |. .. savefunc$ | 0000d990 ca 0d 07 48 1a 20 20 20 20 c9 20 22 45 78 70 6f |...H. . "Expo| 0000d9a0 72 74 20 73 75 62 73 65 74 22 3a 0d 07 49 23 20 |rt subset":..I# | 0000d9b0 20 20 20 46 69 6c 65 6e 61 6d 65 24 3d 24 53 75 | Filename$=$Su| 0000d9c0 62 4e 61 6d 65 25 3a 54 79 70 65 25 3d 30 0d 07 |bName%:Type%=0..| 0000d9d0 4a 17 20 20 20 20 c9 20 22 45 78 70 6f 72 74 20 |J. . "Export | 0000d9e0 43 53 56 22 3a 0d 07 4b 26 20 20 20 20 46 69 6c |CSV":..K& Fil| 0000d9f0 65 6e 61 6d 65 24 3d 24 53 75 62 4e 61 6d 65 25 |ename$=$SubName%| 0000da00 3a 54 79 70 65 25 3d 26 64 66 65 0d 07 4c 07 20 |:Type%=&dfe..L. | 0000da10 20 cb 0d 07 4d 05 cb 0d 07 4e 0c c8 8e 20 69 63 | ...M....N... ic| 0000da20 25 20 ca 0d 07 4f 0a 20 20 c9 20 31 3a 0d 07 50 |% ...O. . 1:..P| 0000da30 32 20 20 e7 20 28 62 25 20 80 20 25 31 31 31 31 |2 . (b% . %1111| 0000da40 30 30 30 30 29 3e 30 20 8c 20 f2 69 6e 69 74 5f |0000)>0 . .init_| 0000da50 64 72 61 67 28 77 69 25 2c 69 63 25 2c 35 29 0d |drag(wi%,ic%,5).| 0000da60 07 51 0a 20 20 c9 20 32 3a 0d 07 52 1b 20 20 e7 |.Q. . 2:..R. .| 0000da70 20 a7 46 69 6c 65 6e 61 6d 65 24 2c 22 2e 22 29 | .Filename$,".")| 0000da80 3e 30 20 8c 0d 07 53 37 20 20 20 20 e7 20 62 75 |>0 ...S7 . bu| 0000da90 74 74 25 3c 3e 32 20 8c 20 f2 73 61 76 65 28 46 |tt%<>2 . .save(F| 0000daa0 69 6c 65 6e 61 6d 65 24 2c 54 79 70 65 25 2c 53 |ilename$,Type%,S| 0000dab0 74 61 72 74 25 2c 45 6e 64 25 29 0d 07 54 2c 20 |tart%,End%)..T, | 0000dac0 20 20 20 e7 20 62 75 74 74 25 3d 34 20 8c 20 c8 | . butt%=4 . .| 0000dad0 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 |. "Wimp_CreateMe| 0000dae0 6e 75 22 2c 2c 2d 31 0d 07 55 1b 20 20 20 20 cc |nu",,-1..U. .| 0000daf0 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 2c 33 | .softerror("",3| 0000db00 33 29 0d 07 56 07 20 20 cd 0d 07 57 42 20 20 c9 |3)..V. ...WB .| 0000db10 20 31 32 3a e7 20 62 75 74 74 25 3d 32 20 84 20 | 12:. butt%=2 . | 0000db20 62 75 74 74 25 3d 34 20 8c 20 f2 73 68 6f 77 5f |butt%=4 . .show_| 0000db30 6d 65 6e 75 28 6d 65 6e 75 25 28 31 35 29 2c 78 |menu(menu%(15),x| 0000db40 25 2d 36 34 2c 79 25 2d 32 30 29 0d 07 58 42 20 |%-64,y%-20)..XB | 0000db50 20 c9 20 31 33 3a e7 20 62 75 74 74 25 3d 32 20 | . 13:. butt%=2 | 0000db60 84 20 62 75 74 74 25 3d 34 20 8c 20 f2 73 68 6f |. butt%=4 . .sho| 0000db70 77 5f 6d 65 6e 75 28 6d 65 6e 75 25 28 32 30 29 |w_menu(menu%(20)| 0000db80 2c 78 25 2d 36 34 2c 79 25 2d 32 30 29 0d 07 59 |,x%-64,y%-20)..Y| 0000db90 1e 20 20 c9 20 35 3a f2 63 6f 6d 6d 6f 6e 63 61 |. . 5:.commonca| 0000dba0 73 65 28 77 69 25 2c 69 63 25 29 0d 07 5a 05 cb |se(wi%,ic%)..Z..| 0000dbb0 0d 07 5b 05 e1 0d 07 5c 05 3a 0d 07 5d 10 dd 20 |..[....\.:..].. | 0000dbc0 f2 6b 65 79 5f 63 6c 69 63 6b 0d 07 5e 08 ea 20 |.key_click..^.. | 0000dbd0 4a 25 0d 07 5f 12 c8 8e 20 62 25 20 80 20 25 31 |J%.._... b% . %1| 0000dbe0 31 31 20 ca 0d 07 60 0e 20 20 c9 20 34 3a 7a 25 |11 ...`. . 4:z%| 0000dbf0 3d 31 0d 07 61 0f 20 20 c9 20 31 3a 7a 25 3d 2d |=1..a. . 1:z%=-| 0000dc00 31 0d 07 62 05 cb 0d 07 63 0c c8 8e 20 69 63 25 |1..b....c... ic%| 0000dc10 20 ca 0d 07 64 29 20 20 c9 20 31 36 3a f2 6b 63 | ...d) . 16:.kc| 0000dc20 79 63 6c 65 28 4b 65 79 66 6c 64 30 25 2c 46 31 |ycle(Keyfld0%,F1| 0000dc30 64 6b 65 79 25 2c 30 2c 7a 25 29 0d 07 65 2a 20 |dkey%,0,z%)..e* | 0000dc40 20 c9 20 31 37 3a f2 6b 63 79 63 6c 65 28 4b 65 | . 17:.kcycle(Ke| 0000dc50 79 66 6c 64 30 25 2c 46 31 64 6b 65 79 25 2c 30 |yfld0%,F1dkey%,0| 0000dc60 2c 2d 7a 25 29 0d 07 66 29 20 20 c9 20 31 38 3a |,-z%)..f) . 18:| 0000dc70 f2 6b 63 79 63 6c 65 28 4b 65 79 66 6c 64 31 25 |.kcycle(Keyfld1%| 0000dc80 2c 46 32 64 6b 65 79 25 2c 31 2c 7a 25 29 0d 07 |,F2dkey%,1,z%)..| 0000dc90 67 2a 20 20 c9 20 31 39 3a f2 6b 63 79 63 6c 65 |g* . 19:.kcycle| 0000dca0 28 4b 65 79 66 6c 64 31 25 2c 46 32 64 6b 65 79 |(Keyfld1%,F2dkey| 0000dcb0 25 2c 31 2c 2d 7a 25 29 0d 07 68 0b 20 20 c9 20 |%,1,-z%)..h. . | 0000dcc0 32 31 3a 0d 07 69 32 20 20 f2 74 69 63 6b 5f 6f |21:..i2 .tick_o| 0000dcd0 6e 65 28 66 69 65 6c 64 6d 65 6e 75 25 2c 30 2c |ne(fieldmenu%,0,| 0000dce0 66 69 65 6c 64 73 25 2d 31 2c 4b 65 79 66 6c 64 |fields%-1,Keyfld| 0000dcf0 30 25 2d 31 29 0d 07 6a 3e 20 20 f2 73 68 6f 77 |0%-1)..j> .show| 0000dd00 5f 6d 65 6e 75 28 66 69 65 6c 64 6d 65 6e 75 25 |_menu(fieldmenu%| 0000dd10 2c 6f 6c 64 78 25 2b 33 32 2c 6f 6c 64 79 25 29 |,oldx%+32,oldy%)| 0000dd20 3a 66 69 65 6c 64 66 75 6e 63 24 3d 22 66 69 72 |:fieldfunc$="fir| 0000dd30 73 74 22 0d 07 6b 0b 20 20 c9 20 32 32 3a 0d 07 |st"..k. . 22:..| 0000dd40 6c 32 20 20 f2 74 69 63 6b 5f 6f 6e 65 28 66 69 |l2 .tick_one(fi| 0000dd50 65 6c 64 6d 65 6e 75 25 2c 30 2c 66 69 65 6c 64 |eldmenu%,0,field| 0000dd60 73 25 2d 31 2c 4b 65 79 66 6c 64 31 25 2d 31 29 |s%-1,Keyfld1%-1)| 0000dd70 0d 07 6d 3f 20 20 f2 73 68 6f 77 5f 6d 65 6e 75 |..m? .show_menu| 0000dd80 28 66 69 65 6c 64 6d 65 6e 75 25 2c 6f 6c 64 78 |(fieldmenu%,oldx| 0000dd90 25 2b 33 32 2c 6f 6c 64 79 25 29 3a 66 69 65 6c |%+32,oldy%):fiel| 0000dda0 64 66 75 6e 63 24 3d 22 73 65 63 6f 6e 64 22 0d |dfunc$="second".| 0000ddb0 07 6e 0a 20 20 c9 20 37 3a 0d 07 6f 21 20 20 e7 |.n. . 7:..o! .| 0000ddc0 20 6b 65 79 66 75 6e 63 24 3c 3e 22 43 75 72 72 | keyfunc$<>"Curr| 0000ddd0 65 6e 74 20 6b 65 79 22 20 8c 0d 07 70 2f 20 20 |ent key" ...p/ | 0000dde0 20 20 6b 65 79 6c 69 6d 69 74 25 3d 6c 65 6e 25 | keylimit%=len%| 0000ddf0 28 4b 65 79 66 6c 64 30 25 29 2b 6c 65 6e 25 28 |(Keyfld0%)+len%(| 0000de00 4b 65 79 66 6c 64 31 25 29 0d 07 71 12 20 20 20 |Keyfld1%)..q. | 0000de10 20 e3 20 4a 25 3d 30 20 b8 20 33 0d 07 72 1f 20 | . J%=0 . 3..r. | 0000de20 20 20 20 20 20 57 44 25 28 4a 25 29 3d bb 28 24 | WD%(J%)=.($| 0000de30 57 6b 65 79 25 28 4a 25 29 29 0d 07 73 0c 20 20 |Wkey%(J%))..s. | 0000de40 20 20 ed 20 4a 25 0d 07 74 0e 20 20 20 20 c8 8e | . J%..t. ..| 0000de50 20 b9 20 ca 0d 07 75 31 20 20 20 20 20 20 c9 20 | . ...u1 . | 0000de60 c6 8e 28 57 44 25 28 29 29 3e 6b 65 79 6c 69 6d |..(WD%())>keylim| 0000de70 69 74 25 3a f2 73 6f 66 74 65 72 72 6f 72 28 22 |it%:.softerror("| 0000de80 22 2c 32 36 29 0d 07 76 0c 20 20 20 20 20 20 7f |",26)..v. .| 0000de90 3a 0d 07 77 17 20 20 20 20 20 20 c8 8e 20 6b 65 |:..w. .. ke| 0000dea0 79 66 75 6e 63 24 20 ca 0d 07 78 1c 20 20 20 20 |yfunc$ ...x. | 0000deb0 20 20 20 20 c9 20 22 50 72 69 6d 61 72 79 20 6b | . "Primary k| 0000dec0 65 79 22 3a 0d 07 79 12 20 20 20 20 20 20 20 20 |ey":..y. | 0000ded0 6b 65 79 25 3d 30 0d 07 7a 1f 20 20 20 20 20 20 |key%=0..z. | 0000dee0 20 20 f2 63 6f 70 79 5f 6b 65 79 64 61 74 61 28 | .copy_keydata(| 0000def0 6b 65 79 25 29 0d 07 7b 2a 20 20 20 20 20 20 20 |key%)..{* | 0000df00 20 52 41 25 3d bb 28 24 52 65 63 6f 72 64 73 25 | RA%=.($Records%| 0000df10 29 3a 66 24 3d 24 64 61 74 61 62 61 73 65 25 0d |):f$=$database%.| 0000df20 07 7c 26 20 20 20 20 20 20 20 20 f2 6d 61 6b 65 |.|& .make| 0000df30 5f 65 6d 70 74 79 5f 69 6e 64 65 78 28 52 41 25 |_empty_index(RA%| 0000df40 2c 30 2c b9 29 0d 07 7d 2a 20 20 20 20 20 20 20 |,0,.)..}* | 0000df50 20 f2 73 61 76 65 5f 72 65 63 73 28 66 24 2b 22 | .save_recs(f$+"| 0000df60 2e 44 61 74 61 62 61 73 65 22 2c 52 41 25 29 0d |.Database",RA%).| 0000df70 07 7e 21 20 20 20 20 20 20 20 20 70 72 65 73 65 |.~! prese| 0000df80 6e 74 25 3d 37 3a f2 73 61 76 65 5f 6b 65 79 73 |nt%=7:.save_keys| 0000df90 0d 07 7f 24 20 20 20 20 20 20 20 20 64 65 73 69 |...$ desi| 0000dfa0 67 6e 25 3d a3 3a f2 67 65 74 5f 69 74 5f 69 6e |gn%=.:.get_it_in| 0000dfb0 28 66 24 29 0d 07 80 30 20 20 20 20 20 20 20 20 |(f$)...0 | 0000dfc0 c9 20 22 4e 65 77 20 70 72 69 6d 61 72 79 20 6b |. "New primary k| 0000dfd0 65 79 22 3a f2 6e 65 77 5f 74 72 65 65 28 66 69 |ey":.new_tree(fi| 0000dfe0 6c 65 25 29 0d 07 81 29 20 20 20 20 20 20 20 20 |le%)...) | 0000dff0 c9 20 22 49 6e 64 65 78 20 66 69 65 6c 64 22 3a |. "Index field":| 0000e000 f2 63 72 65 61 74 65 5f 69 6e 64 65 78 0d 07 82 |.create_index...| 0000e010 0b 20 20 20 20 20 20 cb 0d 07 83 09 20 20 20 20 |. ..... | 0000e020 cb 0d 07 84 07 20 20 cd 0d 07 85 11 20 20 6b 65 |..... ..... ke| 0000e030 79 66 75 6e 63 24 3d 22 22 0d 07 86 1a 20 20 f2 |yfunc$="".... .| 0000e040 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 6b 65 79 |close_window(key| 0000e050 57 25 29 0d 07 87 05 cb 0d 07 88 05 e1 0d 07 89 |W%).............| 0000e060 05 3a 0d 07 8a 1b dd 20 f2 73 68 61 64 65 5f 6b |.:..... .shade_k| 0000e070 65 79 5f 69 63 6f 6e 73 28 6f 6e 25 29 0d 07 8b |ey_icons(on%)...| 0000e080 10 e3 20 49 25 3d 31 36 20 b8 20 32 30 0d 07 8c |.. I%=16 . 20...| 0000e090 20 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c | .icon_bit(22,| 0000e0a0 6b 65 79 57 25 2c 49 25 2c 6f 6e 25 29 0d 07 8d |keyW%,I%,on%)...| 0000e0b0 08 ed 20 49 25 0d 07 8e 0e e3 20 49 25 3d 32 20 |.. I%..... I%=2 | 0000e0c0 b8 20 35 0d 07 8f 20 20 20 f2 69 63 6f 6e 5f 62 |. 5... .icon_b| 0000e0d0 69 74 28 32 32 2c 6b 65 79 57 25 2c 49 25 2c 6f |it(22,keyW%,I%,o| 0000e0e0 6e 25 29 0d 07 90 08 ed 20 49 25 0d 07 91 05 e1 |n%)..... I%.....| 0000e0f0 0d 07 92 05 3a 0d 07 93 1f dd 20 f2 6b 63 79 63 |....:..... .kcyc| 0000e100 6c 65 28 f8 20 46 25 2c 54 25 2c 69 63 6f 6e 25 |le(. F%,T%,icon%| 0000e110 2c 7a 25 29 0d 07 94 0a 46 25 2b 3d 7a 25 0d 07 |,z%)....F%+=z%..| 0000e120 95 17 e7 20 46 25 3e 66 69 65 6c 64 73 25 20 8c |... F%>fields% .| 0000e130 20 46 25 3d 30 0d 07 96 17 e7 20 46 25 3c 30 20 | F%=0..... F%<0 | 0000e140 8c 20 46 25 3d 66 69 65 6c 64 73 25 0d 07 97 22 |. F%=fields%..."| 0000e150 e7 20 46 25 3e 30 20 8c 20 24 54 25 3d 54 61 67 |. F%>0 . $T%=Tag| 0000e160 24 28 46 25 29 20 8b 20 24 54 25 3d 22 22 0d 07 |$(F%) . $T%=""..| 0000e170 98 1d f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 6b |...redraw_icon(k| 0000e180 65 79 57 25 2c 69 63 6f 6e 25 29 0d 07 99 2a f2 |eyW%,icon%)...*.| 0000e190 74 69 63 6b 5f 6f 6e 65 28 66 69 65 6c 64 6d 65 |tick_one(fieldme| 0000e1a0 6e 75 25 2c 30 2c 66 69 65 6c 64 73 25 2d 31 2c |nu%,0,fields%-1,| 0000e1b0 46 25 2d 31 29 0d 07 9a 05 e1 0d 07 9b 05 3a 0d |F%-1).........:.| 0000e1c0 07 9c 19 dd 20 f2 63 6f 70 79 5f 6b 65 79 64 61 |.... .copy_keyda| 0000e1d0 74 61 28 6b 65 79 25 29 0d 07 9d 2d 4b 46 25 28 |ta(key%)...-KF%(| 0000e1e0 6b 65 79 25 2c 30 29 3d 4b 65 79 66 6c 64 30 25 |key%,0)=Keyfld0%| 0000e1f0 3a 4b 46 25 28 6b 65 79 25 2c 31 29 3d 4b 65 79 |:KF%(key%,1)=Key| 0000e200 66 6c 64 31 25 0d 07 9e 17 4b 4c 25 28 6b 65 79 |fld1%....KL%(key| 0000e210 25 29 3d c6 8e 28 57 44 25 28 29 29 0d 07 9f 0e |%)=..(WD%())....| 0000e220 e3 20 4a 25 3d 30 20 b8 20 33 0d 07 a0 1a 20 20 |. J%=0 . 3.... | 0000e230 4b 57 25 28 6b 65 79 25 2c 4a 25 29 3d 57 44 25 |KW%(key%,J%)=WD%| 0000e240 28 4a 25 29 0d 07 a1 08 ed 20 4a 25 0d 07 a2 23 |(J%)..... J%...#| 0000e250 63 61 73 65 25 28 6b 65 79 25 29 3d a4 73 65 6c |case%(key%)=.sel| 0000e260 65 63 74 65 64 28 6b 65 79 57 25 2c 32 30 29 0d |ected(keyW%,20).| 0000e270 07 a3 05 e1 0d 07 a4 05 3a 0d 07 a5 18 dd 20 f2 |........:..... .| 0000e280 73 65 74 5f 6b 65 79 64 61 74 61 28 6b 65 79 25 |set_keydata(key%| 0000e290 29 0d 07 a6 0b ea 20 4a 25 2c 53 24 0d 07 a7 2d |)..... J%,S$...-| 0000e2a0 4b 65 79 66 6c 64 30 25 3d 4b 46 25 28 6b 65 79 |Keyfld0%=KF%(key| 0000e2b0 25 2c 30 29 3a 4b 65 79 66 6c 64 31 25 3d 4b 46 |%,0):Keyfld1%=KF| 0000e2c0 25 28 6b 65 79 25 2c 31 29 0d 07 a8 1b 24 46 31 |%(key%,1)....$F1| 0000e2d0 64 6b 65 79 25 3d 54 61 67 24 28 4b 65 79 66 6c |dkey%=Tag$(Keyfl| 0000e2e0 64 30 25 29 0d 07 a9 3b e7 20 4b 46 25 28 6b 65 |d0%)...;. KF%(ke| 0000e2f0 79 25 2c 31 29 3e 30 20 8c 20 24 46 32 64 6b 65 |y%,1)>0 . $F2dke| 0000e300 79 25 3d 54 61 67 24 28 4b 65 79 66 6c 64 31 25 |y%=Tag$(Keyfld1%| 0000e310 29 20 8b 20 24 46 32 64 6b 65 79 25 3d 22 22 0d |) . $F2dkey%="".| 0000e320 07 aa 15 6b 65 79 6c 65 6e 25 3d 4b 4c 25 28 6b |...keylen%=KL%(k| 0000e330 65 79 25 29 0d 07 ab 0e e3 20 4a 25 3d 30 20 b8 |ey%)..... J%=0 .| 0000e340 20 33 0d 07 ac 30 20 20 57 44 25 28 4a 25 29 3d | 3...0 WD%(J%)=| 0000e350 4b 57 25 28 6b 65 79 25 2c 4a 25 29 3a 24 57 6b |KW%(key%,J%):$Wk| 0000e360 65 79 25 28 4a 25 29 3d c3 28 57 44 25 28 4a 25 |ey%(J%)=.(WD%(J%| 0000e370 29 29 0d 07 ad 08 ed 20 4a 25 0d 07 ae 13 24 4b |))..... J%....$K| 0000e380 65 79 4e 6f 25 3d c3 28 6b 65 79 25 29 0d 07 af |eyNo%=.(key%)...| 0000e390 23 f2 73 65 74 5f 69 63 6f 6e 28 6b 65 79 57 25 |#.set_icon(keyW%| 0000e3a0 2c 32 30 2c 63 61 73 65 25 28 6b 65 79 25 29 29 |,20,case%(key%))| 0000e3b0 0d 07 b0 05 e1 0d 07 b1 05 3a 0d 07 b2 15 dd 20 |.........:..... | 0000e3c0 f2 6b 65 79 5f 73 65 6c 65 63 74 28 44 25 29 0d |.key_select(D%).| 0000e3d0 07 b3 13 f2 63 6f 6c 6f 75 72 28 6b 65 79 25 2c |....colour(key%,| 0000e3e0 32 29 0d 07 b4 0b c8 8e 20 44 25 20 ca 0d 07 b5 |2)...... D% ....| 0000e3f0 24 20 20 c9 20 2b 31 3a 6b 65 79 25 3d 28 6b 65 |$ . +1:key%=(ke| 0000e400 79 25 2b 31 29 20 83 20 28 4b 65 79 73 25 2b 31 |y%+1) . (Keys%+1| 0000e410 29 0d 07 b6 28 20 20 c9 20 2d 31 3a 6b 65 79 25 |)...( . -1:key%| 0000e420 2d 3d 31 3a e7 20 6b 65 79 25 3c 30 20 8c 20 6b |-=1:. key%<0 . k| 0000e430 65 79 25 3d 4b 65 79 73 25 0d 07 b7 05 cb 0d 07 |ey%=Keys%.......| 0000e440 b8 13 f2 63 6f 6c 6f 75 72 28 6b 65 79 25 2c 31 |...colour(key%,1| 0000e450 29 0d 07 b9 16 f2 73 65 74 5f 6b 65 79 64 61 74 |).....set_keydat| 0000e460 61 28 6b 65 79 25 29 0d 07 ba 3e 24 a4 74 65 78 |a(key%)...>$.tex| 0000e470 74 28 6b 65 79 70 61 64 57 25 2c 33 33 29 3d 49 |t(keypadW%,33)=I| 0000e480 6e 64 65 78 24 28 6b 65 79 25 29 3a f2 72 65 64 |ndex$(key%):.red| 0000e490 72 61 77 5f 69 63 6f 6e 28 6b 65 79 70 61 64 57 |raw_icon(keypadW| 0000e4a0 25 2c 33 33 29 0d 07 bb 13 74 6f 70 3d 38 2a 66 |%,33)....top=8*f| 0000e4b0 69 6c 65 25 2b 4c 48 25 0d 07 bc 1c 61 64 64 72 |ile%+LH%....addr| 0000e4c0 3d a4 6d 6f 76 65 74 6f 28 6b 65 79 25 2c 74 6f |=.moveto(key%,to| 0000e4d0 70 2c 31 29 0d 07 bd 05 e1 0d 07 be 05 3a 0d 07 |p,1).........:..| 0000e4e0 bf 12 dd 20 f2 73 65 74 5f 63 6f 6c 6f 75 72 73 |... .set_colours| 0000e4f0 0d 07 c0 08 ea 20 49 25 0d 07 c1 0c c8 8e 20 69 |..... I%...... i| 0000e500 63 25 20 ca 0d 07 c2 16 20 20 c9 20 30 2c 31 2c |c% ..... . 0,1,| 0000e510 32 2c 33 2c 34 2c 35 2c 36 3a 0d 07 c3 15 20 20 |2,3,4,5,6:.... | 0000e520 63 6f 6c 25 3d 6e 63 6f 6c 25 28 69 63 25 29 0d |col%=ncol%(ic%).| 0000e530 07 c4 20 20 20 66 62 25 3d a4 73 65 6c 65 63 74 |.. fb%=.select| 0000e540 65 64 5f 65 73 67 28 63 6f 6c 57 25 2c 32 29 0d |ed_esg(colW%,2).| 0000e550 07 c5 0e 20 20 c8 8e 20 66 62 25 20 ca 0d 07 c6 |... .. fb% ....| 0000e560 23 20 20 20 20 c9 20 31 31 3a 63 6f 6c 25 3d 28 |# . 11:col%=(| 0000e570 63 6f 6c 25 20 80 20 26 46 29 3a 66 62 25 3d 31 |col% . &F):fb%=1| 0000e580 0d 07 c7 28 20 20 20 20 c9 20 31 32 3a 63 6f 6c |...( . 12:col| 0000e590 25 3d 28 28 63 6f 6c 25 3e 3e 34 29 20 80 20 26 |%=((col%>>4) . &| 0000e5a0 46 29 3a 66 62 25 3d 30 0d 07 c8 07 20 20 cb 0d |F):fb%=0.... ..| 0000e5b0 07 c9 14 20 20 c8 8e 20 62 25 20 80 20 25 31 31 |... .. b% . %11| 0000e5c0 31 20 ca 0d 07 ca 0c 20 20 20 20 c9 20 31 3a 0d |1 ..... . 1:.| 0000e5d0 07 cb 22 20 20 20 20 63 6f 6c 25 2d 3d 31 3a e7 |.." col%-=1:.| 0000e5e0 20 63 6f 6c 25 3c 30 20 8c 20 63 6f 6c 25 3d 31 | col%<0 . col%=1| 0000e5f0 35 0d 07 cc 24 20 20 20 20 f2 64 63 6f 6c 6f 75 |5...$ .dcolou| 0000e600 72 28 63 6f 6c 57 25 2c 69 63 25 2c 63 6f 6c 25 |r(colW%,ic%,col%| 0000e610 2c 66 62 25 29 0d 07 cd 0c 20 20 20 20 c9 20 34 |,fb%).... . 4| 0000e620 3a 0d 07 ce 1a 20 20 20 20 63 6f 6c 25 3d 28 63 |:.... col%=(c| 0000e630 6f 6c 25 2b 31 29 20 83 20 31 36 0d 07 cf 24 20 |ol%+1) . 16...$ | 0000e640 20 20 20 f2 64 63 6f 6c 6f 75 72 28 63 6f 6c 57 | .dcolour(colW| 0000e650 25 2c 69 63 25 2c 63 6f 6c 25 2c 66 62 25 29 0d |%,ic%,col%,fb%).| 0000e660 07 d0 07 20 20 cb 0d 07 d1 2a 20 20 6e 63 6f 6c |... ....* ncol| 0000e670 25 28 69 63 25 29 3d a4 67 65 74 5f 69 63 6f 6e |%(ic%)=.get_icon| 0000e680 5f 63 6f 6c 73 28 63 6f 6c 57 25 2c 69 63 25 29 |_cols(colW%,ic%)| 0000e690 0d 07 d2 0d 20 20 c9 20 39 2c 31 30 3a 0d 07 d3 |.... . 9,10:...| 0000e6a0 15 20 20 66 63 6f 6c 25 28 29 3d 6e 63 6f 6c 25 |. fcol%()=ncol%| 0000e6b0 28 29 0d 07 d4 14 20 20 e3 20 49 25 3d 30 20 b8 |().... . I%=0 .| 0000e6c0 20 4b 65 79 73 25 0d 07 d5 15 20 20 20 20 f2 63 | Keys%.... .c| 0000e6d0 6f 6c 6f 75 72 28 49 25 2c 32 29 0d 07 d6 0a 20 |olour(I%,2).... | 0000e6e0 20 ed 20 49 25 0d 07 d7 12 20 20 f2 63 6f 6c 6f | . I%.... .colo| 0000e6f0 75 72 28 30 2c 30 29 0d 07 d8 15 20 20 f2 63 6f |ur(0,0).... .co| 0000e700 6c 6f 75 72 28 6b 65 79 25 2c 31 29 0d 07 d9 16 |lour(key%,1)....| 0000e710 20 20 e3 20 49 25 3d 31 20 b8 20 66 69 65 6c 64 | . I%=1 . field| 0000e720 73 25 0d 07 da 44 20 20 20 20 e7 20 6c 69 6e 6b |s%...D . link| 0000e730 24 28 49 25 29 3c 3e 22 22 20 8c 20 f2 73 65 74 |$(I%)<>"" . .set| 0000e740 5f 69 63 6f 6e 5f 63 6f 6c 73 28 6d 61 69 6e 57 |_icon_cols(mainW| 0000e750 25 2c 66 69 65 6c 64 25 28 49 25 29 2c 6e 63 6f |%,field%(I%),nco| 0000e760 6c 25 28 36 29 29 0d 07 db 0a 20 20 ed 20 49 25 |l%(6)).... . I%| 0000e770 0d 07 dc 1f 20 20 e7 20 69 63 25 3d 31 30 20 8c |.... . ic%=10 .| 0000e780 20 f2 77 72 69 74 65 5f 63 6f 6c 6f 75 72 73 0d | .write_colours.| 0000e790 07 dd 1e 20 20 c8 99 20 22 57 69 6d 70 5f 43 72 |... .. "Wimp_Cr| 0000e7a0 65 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 07 de |eateMenu",,-1...| 0000e7b0 0b 20 20 c9 20 31 35 3a 0d 07 df 34 20 20 f2 72 |. . 15:...4 .r| 0000e7c0 65 61 64 5f 63 6f 6c 6f 75 72 73 28 22 3c 50 62 |ead_colours("<Pb| 0000e7d0 61 73 65 24 44 69 72 3e 2e 52 65 73 6f 75 72 63 |ase$Dir>.Resourc| 0000e7e0 65 73 2e 43 6f 6c 6f 75 72 73 22 29 0d 07 e0 10 |es.Colours")....| 0000e7f0 20 20 e3 20 49 25 3d 30 20 b8 20 36 0d 07 e1 2a | . I%=0 . 6...*| 0000e800 20 20 20 20 f2 73 65 74 5f 69 63 6f 6e 5f 63 6f | .set_icon_co| 0000e810 6c 73 28 63 6f 6c 57 25 2c 49 25 2c 6e 63 6f 6c |ls(colW%,I%,ncol| 0000e820 25 28 49 25 29 29 0d 07 e2 0a 20 20 ed 20 49 25 |%(I%)).... . I%| 0000e830 0d 07 e3 05 cb 0d 07 e4 05 e1 0d 07 e5 05 3a 0d |..............:.| 0000e840 07 e6 13 dd 20 f2 63 72 65 61 74 65 5f 63 6c 69 |.... .create_cli| 0000e850 63 6b 0d 07 e7 0b ea 20 43 61 6c 63 24 0d 07 e8 |ck..... Calc$...| 0000e860 15 62 75 74 74 25 3d 28 62 25 20 80 20 25 31 31 |.butt%=(b% . %11| 0000e870 31 29 0d 07 e9 0e c8 8e 20 62 75 74 74 25 20 ca |1)...... butt% .| 0000e880 0d 07 ea 0c 20 20 c9 20 32 2c 34 3a 0d 07 eb 3e |.... . 2,4:...>| 0000e890 20 20 e7 20 69 63 25 3d 33 36 20 8c 20 f2 73 68 | . ic%=36 . .sh| 0000e8a0 6f 77 5f 6d 65 6e 75 28 6d 65 6e 75 25 28 6d 65 |ow_menu(menu%(me| 0000e8b0 6e 75 6e 75 6d 62 65 72 25 29 2c 6f 6c 64 78 25 |nunumber%),oldx%| 0000e8c0 2b 33 32 2c 6f 6c 64 79 25 29 0d 07 ec 05 cb 0d |+32,oldy%)......| 0000e8d0 07 ed 2c e7 20 62 75 74 74 25 3d 34 20 8c 20 7a |..,. butt%=4 . z| 0000e8e0 25 3d 31 20 8b 20 e7 20 62 75 74 74 25 3d 31 20 |%=1 . . butt%=1 | 0000e8f0 8c 20 7a 25 3d 2d 31 20 8b 20 e1 0d 07 ee 0c c8 |. z%=-1 . ......| 0000e900 8e 20 69 63 25 20 ca 0d 07 ef 1f 20 20 c9 20 32 |. ic% ..... . 2| 0000e910 31 3a f2 73 65 74 5f 6c 69 6d 69 74 73 28 31 2c |1:.set_limits(1,| 0000e920 30 2c 38 2c 38 29 0d 07 f0 23 20 20 c9 20 32 32 |0,8,8)...# . 22| 0000e930 3a f2 73 65 74 5f 6c 69 6d 69 74 73 28 33 36 2c |:.set_limits(36,| 0000e940 33 36 2c 34 30 2c 31 31 29 0d 07 f1 21 20 20 c9 |36,40,11)...! .| 0000e950 20 32 33 3a f2 73 65 74 5f 6c 69 6d 69 74 73 28 | 23:.set_limits(| 0000e960 39 2c 39 2c 33 35 2c 31 39 29 0d 07 f2 23 20 20 |9,9,35,19)...# | 0000e970 c9 20 32 34 3a f2 73 65 74 5f 6c 69 6d 69 74 73 |. 24:.set_limits| 0000e980 28 34 31 2c 34 31 2c 34 35 2c 31 34 29 0d 07 f3 |(41,41,45,14)...| 0000e990 23 20 20 c9 20 33 35 3a f2 73 65 74 5f 6c 69 6d |# . 35:.set_lim| 0000e9a0 69 74 73 28 34 36 2c 34 36 2c 35 39 2c 31 36 29 |its(46,46,59,16)| 0000e9b0 0d 07 f4 27 20 20 c9 20 31 39 3a f2 63 68 61 6e |...' . 19:.chan| 0000e9c0 67 65 5f 74 79 70 65 28 7a 25 2c 6d 65 6e 75 6e |ge_type(z%,menun| 0000e9d0 75 6d 62 65 72 25 29 0d 07 f5 28 20 20 c9 20 32 |umber%)...( . 2| 0000e9e0 30 3a f2 63 68 61 6e 67 65 5f 74 79 70 65 28 2d |0:.change_type(-| 0000e9f0 7a 25 2c 6d 65 6e 75 6e 75 6d 62 65 72 25 29 0d |z%,menunumber%).| 0000ea00 07 f6 38 20 20 c9 20 31 38 3a f2 63 72 65 61 74 |..8 . 18:.creat| 0000ea10 65 5f 66 69 65 6c 64 28 bb 28 24 49 6e 73 54 65 |e_field(.($InsTe| 0000ea20 78 74 25 29 2c 70 6f 73 78 25 2c 70 6f 73 79 25 |xt%),posx%,posy%| 0000ea30 2c 43 61 6c 63 24 29 0d 07 f7 2e 20 20 c9 20 32 |,Calc$).... . 2| 0000ea40 39 3a f2 72 65 6d 6f 76 65 5f 66 69 65 6c 64 28 |9:.remove_field(| 0000ea50 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c a3 2c 43 |Fieldnumber%,.,C| 0000ea60 61 6c 63 24 29 0d 07 f8 33 20 20 f2 63 72 65 61 |alc$)...3 .crea| 0000ea70 74 65 5f 66 69 65 6c 64 28 46 69 65 6c 64 6e 75 |te_field(Fieldnu| 0000ea80 6d 62 65 72 25 2c 70 6f 73 78 25 2c 70 6f 73 79 |mber%,posx%,posy| 0000ea90 25 2c 43 61 6c 63 24 29 0d 07 f9 2e 20 20 c9 20 |%,Calc$).... . | 0000eaa0 33 30 3a f2 72 65 6d 6f 76 65 5f 66 69 65 6c 64 |30:.remove_field| 0000eab0 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c b9 2c |(Fieldnumber%,.,| 0000eac0 43 61 6c 63 24 29 0d 07 fa 3d 20 20 c9 20 31 34 |Calc$)...= . 14| 0000ead0 3a f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 72 |:.icon_bit(22,cr| 0000eae0 65 61 74 65 57 25 2c 31 33 2c 28 a4 73 65 6c 65 |eateW%,13,(.sele| 0000eaf0 63 74 65 64 28 63 72 65 61 74 65 57 25 2c 31 34 |cted(createW%,14| 0000eb00 29 29 29 0d 07 fb 0b 20 20 c9 20 33 39 3a 0d 07 |))).... . 39:..| 0000eb10 fc 15 20 20 46 25 3d bb 28 24 49 6e 73 54 65 78 |.. F%=.($InsTex| 0000eb20 74 25 29 0d 07 fd 1c 20 20 e7 20 46 25 3e 30 20 |t%).... . F%>0 | 0000eb30 80 20 46 25 3c 3d 66 69 65 6c 64 73 25 20 8c 0d |. F%<=fields% ..| 0000eb40 07 fe 28 20 20 20 20 e7 20 46 25 3c 46 69 65 6c |..( . F%<Fiel| 0000eb50 64 6e 75 6d 62 65 72 25 20 8c 20 5a 25 3d 2d 31 |dnumber% . Z%=-1| 0000eb60 20 8b 20 5a 25 3d 31 0d 07 ff 28 20 20 20 20 f2 | . Z%=1...( .| 0000eb70 72 65 5f 73 65 71 75 65 6e 63 65 28 46 69 65 6c |re_sequence(Fiel| 0000eb80 64 6e 75 6d 62 65 72 25 2c 46 25 2c 5a 25 29 0d |dnumber%,F%,Z%).| 0000eb90 08 00 07 20 20 cd 0d 08 01 1d 20 20 f2 63 6c 6f |... ..... .clo| 0000eba0 73 65 5f 77 69 6e 64 6f 77 28 63 72 65 61 74 65 |se_window(create| 0000ebb0 57 25 29 0d 08 02 32 20 20 c9 20 34 30 3a f2 73 |W%)...2 . 40:.s| 0000ebc0 77 61 70 5f 66 69 65 6c 64 73 28 46 69 65 6c 64 |wap_fields(Field| 0000ebd0 6e 75 6d 62 65 72 25 2c bb 28 24 49 6e 73 54 65 |number%,.($InsTe| 0000ebe0 78 74 25 29 29 0d 08 03 05 cb 0d 08 04 0f f2 75 |xt%))..........u| 0000ebf0 70 64 61 74 65 5f 62 6f 78 0d 08 05 35 e7 20 28 |pdate_box...5. (| 0000ec00 70 72 65 73 65 6e 74 25 20 80 20 34 29 3d 30 20 |present% . 4)=0 | 0000ec10 8c 20 f2 6c 69 74 28 6d 65 6e 75 25 28 39 29 2c |. .lit(menu%(9),| 0000ec20 31 2c 28 66 69 65 6c 64 73 25 3e 30 29 29 0d 08 |1,(fields%>0))..| 0000ec30 06 0c c8 8e 20 69 63 25 20 ca 0d 08 07 11 20 20 |.... ic% ..... | 0000ec40 c9 20 31 38 2c 32 39 2c 33 30 3a 0d 08 08 11 20 |. 18,29,30:.... | 0000ec50 20 e7 20 62 75 74 74 25 3d 34 20 8c 0d 08 09 1f | . butt%=4 .....| 0000ec60 20 20 20 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f | .close_windo| 0000ec70 77 28 63 72 65 61 74 65 57 25 29 0d 08 0a 09 20 |w(createW%).... | 0000ec80 20 20 20 cc 0d 08 0b 23 20 20 20 20 f2 69 63 6f | ....# .ico| 0000ec90 6e 5f 62 69 74 28 32 32 2c 63 72 65 61 74 65 57 |n_bit(22,createW| 0000eca0 25 2c 31 38 2c a3 29 0d 08 0c 2b 20 20 20 20 f2 |%,18,.)...+ .| 0000ecb0 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 72 65 61 |icon_bit(22,crea| 0000ecc0 74 65 57 25 2c 33 30 2c ac 20 61 64 6a 75 73 74 |teW%,30,. adjust| 0000ecd0 25 29 0d 08 0d 23 20 20 20 20 f2 69 63 6f 6e 5f |%)...# .icon_| 0000ece0 62 69 74 28 32 32 2c 63 72 65 61 74 65 57 25 2c |bit(22,createW%,| 0000ecf0 32 39 2c b9 29 0d 08 0e 1c 20 20 20 20 46 69 65 |29,.).... Fie| 0000ed00 6c 64 6e 75 6d 62 65 72 25 3d 66 69 65 6c 64 73 |ldnumber%=fields| 0000ed10 25 0d 08 0f 07 20 20 cd 0d 08 10 05 cb 0d 08 11 |%.... .........| 0000ed20 05 e1 0d 08 12 05 3a 0d 08 13 11 dd 20 f2 75 70 |......:..... .up| 0000ed30 64 61 74 65 5f 62 6f 78 0d 08 14 13 c8 8e 20 66 |date_box...... f| 0000ed40 69 65 6c 64 74 79 70 65 25 20 ca 0d 08 15 46 20 |ieldtype% ....F | 0000ed50 20 c9 20 30 2c 31 2c 32 2c 33 2c 34 2c 35 2c 36 | . 0,1,2,3,4,5,6| 0000ed60 2c 37 2c 34 36 2c 34 37 3a e7 20 ac 20 61 64 6a |,7,46,47:. . adj| 0000ed70 75 73 74 25 20 8c 20 f2 69 63 6f 6e 5f 62 69 74 |ust% . .icon_bit| 0000ed80 28 32 32 2c 63 72 65 61 74 65 57 25 2c 36 2c b9 |(22,createW%,6,.| 0000ed90 29 0d 08 16 22 20 20 7f 3a f2 69 63 6f 6e 5f 62 |)..." .:.icon_b| 0000eda0 69 74 28 32 32 2c 63 72 65 61 74 65 57 25 2c 36 |it(22,createW%,6| 0000edb0 2c a3 29 0d 08 17 05 cb 0d 08 18 3b f2 69 63 6f |,.)........;.ico| 0000edc0 6e 5f 62 69 74 28 32 32 2c 63 72 65 61 74 65 57 |n_bit(22,createW| 0000edd0 25 2c 31 34 2c 28 66 69 65 6c 64 74 79 70 65 25 |%,14,(fieldtype%| 0000ede0 3d 33 20 84 20 66 69 65 6c 64 74 79 70 65 25 3d |=3 . fieldtype%=| 0000edf0 36 29 29 0d 08 19 54 f2 69 63 6f 6e 5f 62 69 74 |6))...T.icon_bit| 0000ee00 28 32 32 2c 63 72 65 61 74 65 57 25 2c 31 33 2c |(22,createW%,13,| 0000ee10 28 66 69 65 6c 64 74 79 70 65 25 3d 33 20 84 20 |(fieldtype%=3 . | 0000ee20 66 69 65 6c 64 74 79 70 65 25 3d 36 29 20 80 20 |fieldtype%=6) . | 0000ee30 a4 73 65 6c 65 63 74 65 64 28 63 72 65 61 74 65 |.selected(create| 0000ee40 57 25 2c 31 34 29 29 0d 08 1a 3c f2 69 63 6f 6e |W%,14))...<.icon| 0000ee50 5f 62 69 74 28 32 32 2c 63 72 65 61 74 65 57 25 |_bit(22,createW%| 0000ee60 2c 31 35 2c 28 66 69 65 6c 64 74 79 70 65 25 3d |,15,(fieldtype%=| 0000ee70 33 20 84 20 66 69 65 6c 64 74 79 70 65 25 3d 34 |3 . fieldtype%=4| 0000ee80 37 29 29 0d 08 1b 2c f2 69 63 6f 6e 5f 62 69 74 |7))...,.icon_bit| 0000ee90 28 32 32 2c 63 72 65 61 74 65 57 25 2c 32 35 2c |(22,createW%,25,| 0000eea0 28 66 69 65 6c 64 74 79 70 65 25 3d 33 29 29 0d |(fieldtype%=3)).| 0000eeb0 08 1c 27 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c |..'.icon_bit(22,| 0000eec0 63 72 65 61 74 65 57 25 2c 32 36 2c ac 20 61 64 |createW%,26,. ad| 0000eed0 6a 75 73 74 25 29 0d 08 1d 2e e7 20 ac 20 61 64 |just%)..... . ad| 0000eee0 6a 75 73 74 25 20 8c 20 f2 6c 69 74 28 6d 65 6e |just% . .lit(men| 0000eef0 75 25 28 39 29 2c 32 2c 28 66 69 65 6c 64 73 25 |u%(9),2,(fields%| 0000ef00 3e 30 29 29 0d 08 1e 20 24 56 61 6c 54 65 78 74 |>0))... $ValText| 0000ef10 25 3d 76 6e 61 6d 65 24 28 66 69 65 6c 64 74 79 |%=vname$(fieldty| 0000ef20 70 65 25 29 0d 08 1f 1d f2 72 65 64 72 61 77 5f |pe%).....redraw_| 0000ef30 69 63 6f 6e 28 63 72 65 61 74 65 57 25 2c 32 38 |icon(createW%,28| 0000ef40 29 0d 08 20 05 e1 0d 08 21 05 3a 0d 08 22 1e dd |).. ....!.:.."..| 0000ef50 20 f2 73 65 74 5f 6c 69 6d 69 74 73 28 74 25 2c | .set_limits(t%,| 0000ef60 66 25 2c 6c 25 2c 6d 25 29 0d 08 23 11 66 69 65 |f%,l%,m%)..#.fie| 0000ef70 6c 64 74 79 70 65 25 3d 74 25 0d 08 24 11 66 69 |ldtype%=t%..$.fi| 0000ef80 72 73 74 74 79 70 65 25 3d 66 25 0d 08 25 10 6c |rsttype%=f%..%.l| 0000ef90 61 73 74 74 79 70 65 25 3d 6c 25 0d 08 26 12 6d |asttype%=l%..&.m| 0000efa0 65 6e 75 6e 75 6d 62 65 72 25 3d 6d 25 0d 08 27 |enunumber%=m%..'| 0000efb0 26 f2 74 69 63 6b 5f 6f 6e 65 28 6d 65 6e 75 25 |&.tick_one(menu%| 0000efc0 28 6d 25 29 2c 30 2c 6c 25 2d 66 25 2c 74 25 2d |(m%),0,l%-f%,t%-| 0000efd0 66 25 29 0d 08 28 0f f2 75 70 64 61 74 65 5f 62 |f%)..(..update_b| 0000efe0 6f 78 0d 08 29 05 e1 0d 08 2a 05 3a 0d 08 2b 19 |ox..)....*.:..+.| 0000eff0 dd 20 f2 63 68 61 6e 67 65 5f 74 79 70 65 28 64 |. .change_type(d| 0000f000 25 2c 6d 25 29 0d 08 2c 0b c8 8e 20 64 25 20 ca |%,m%)..,... d% .| 0000f010 0d 08 2d 17 20 20 c9 20 31 3a 66 69 65 6c 64 74 |..-. . 1:fieldt| 0000f020 79 70 65 25 2b 3d 31 0d 08 2e 34 20 20 e7 20 66 |ype%+=1...4 . f| 0000f030 69 65 6c 64 74 79 70 65 25 3e 6c 61 73 74 74 79 |ieldtype%>lastty| 0000f040 70 65 25 20 8c 20 66 69 65 6c 64 74 79 70 65 25 |pe% . fieldtype%| 0000f050 3d 66 69 72 73 74 74 79 70 65 25 0d 08 2f 18 20 |=firsttype%../. | 0000f060 20 c9 20 2d 31 3a 66 69 65 6c 64 74 79 70 65 25 | . -1:fieldtype%| 0000f070 2d 3d 31 0d 08 30 34 20 20 e7 20 66 69 65 6c 64 |-=1..04 . field| 0000f080 74 79 70 65 25 3c 66 69 72 73 74 74 79 70 65 25 |type%<firsttype%| 0000f090 20 8c 20 66 69 65 6c 64 74 79 70 65 25 3d 6c 61 | . fieldtype%=la| 0000f0a0 73 74 74 79 70 65 25 0d 08 31 05 cb 0d 08 32 45 |sttype%..1....2E| 0000f0b0 f2 74 69 63 6b 5f 6f 6e 65 28 6d 65 6e 75 25 28 |.tick_one(menu%(| 0000f0c0 6d 25 29 2c 30 2c 6c 61 73 74 74 79 70 65 25 2d |m%),0,lasttype%-| 0000f0d0 66 69 72 73 74 74 79 70 65 25 2c 66 69 65 6c 64 |firsttype%,field| 0000f0e0 74 79 70 65 25 2d 66 69 72 73 74 74 79 70 65 25 |type%-firsttype%| 0000f0f0 29 0d 08 33 0f f2 75 70 64 61 74 65 5f 62 6f 78 |)..3..update_box| 0000f100 0d 08 34 05 e1 0d 08 35 05 3a 0d 08 36 10 dd 20 |..4....5.:..6.. | 0000f110 f2 70 61 73 73 77 6f 72 64 73 0d 08 37 07 ea 20 |.passwords..7.. | 0000f120 46 0d 08 38 0c c8 8e 20 69 63 25 20 ca 0d 08 39 |F..8... ic% ...9| 0000f130 0a 20 20 c9 20 34 3a 0d 08 3a 23 20 20 e7 20 24 |. . 4:..:# . $| 0000f140 57 72 69 74 65 25 3d 22 22 20 8c 20 24 57 72 69 |Write%="" . $Wri| 0000f150 74 65 25 3d 24 52 65 61 64 25 0d 08 3b 28 20 20 |te%=$Read%..;( | 0000f160 e7 20 24 4d 61 6e 61 67 65 72 25 3d 22 22 20 8c |. $Manager%="" .| 0000f170 20 24 4d 61 6e 61 67 65 72 25 3d 24 57 72 69 74 | $Manager%=$Writ| 0000f180 65 25 0d 08 3c 20 20 20 46 3d ad 28 24 64 61 74 |e%..< F=.($dat| 0000f190 61 62 61 73 65 25 2b 22 2e 43 6f 6c 6f 75 72 73 |abase%+".Colours| 0000f1a0 22 29 0d 08 3d 0c 20 20 cf 23 46 3d 33 35 0d 08 |")..=. .#F=35..| 0000f1b0 3e 22 20 20 53 24 3d a4 65 6e 63 72 79 70 74 28 |>" S$=.encrypt(| 0000f1c0 24 52 65 61 64 25 2c b9 29 3a f1 23 46 2c 53 24 |$Read%,.):.#F,S$| 0000f1d0 0d 08 3f 23 20 20 53 24 3d a4 65 6e 63 72 79 70 |..?# S$=.encryp| 0000f1e0 74 28 24 57 72 69 74 65 25 2c b9 29 3a f1 23 46 |t($Write%,.):.#F| 0000f1f0 2c 53 24 0d 08 40 25 20 20 53 24 3d a4 65 6e 63 |,S$..@% S$=.enc| 0000f200 72 79 70 74 28 24 4d 61 6e 61 67 65 72 25 2c b9 |rypt($Manager%,.| 0000f210 29 3a f1 23 46 2c 53 24 0d 08 41 11 20 20 e3 20 |):.#F,S$..A. . | 0000f220 49 25 3d 39 20 b8 20 31 36 0d 08 42 20 20 20 20 |I%=9 . 16..B | 0000f230 20 f1 23 46 2c a4 73 65 6c 65 63 74 65 64 28 70 | .#F,.selected(p| 0000f240 61 73 73 57 25 2c 49 25 29 0d 08 43 0a 20 20 ed |assW%,I%)..C. .| 0000f250 20 49 25 0d 08 44 12 20 20 f1 23 46 2c 6c 6f 67 | I%..D. .#F,log| 0000f260 70 61 74 68 24 0d 08 45 0d 20 20 a2 23 46 3d 8f |path$..E. .#F=.| 0000f270 23 46 0d 08 46 14 20 20 f2 63 6c 6f 73 65 5f 66 |#F..F. .close_f| 0000f280 69 6c 65 28 46 29 0d 08 47 2a 20 20 f2 6c 69 74 |ile(F)..G* .lit| 0000f290 28 6d 65 6e 75 25 28 31 29 2c 36 2c a4 73 65 6c |(menu%(1),6,.sel| 0000f2a0 65 63 74 65 64 28 70 61 73 73 57 25 2c 39 29 29 |ected(passW%,9))| 0000f2b0 0d 08 48 2b 20 20 f2 6c 69 74 28 6d 65 6e 75 25 |..H+ .lit(menu%| 0000f2c0 28 31 29 2c 37 2c a4 73 65 6c 65 63 74 65 64 28 |(1),7,.selected(| 0000f2d0 70 61 73 73 57 25 2c 31 33 29 29 0d 08 49 2b 20 |passW%,13))..I+ | 0000f2e0 20 f2 6c 69 74 28 6d 65 6e 75 25 28 31 29 2c 38 | .lit(menu%(1),8| 0000f2f0 2c a4 73 65 6c 65 63 74 65 64 28 70 61 73 73 57 |,.selected(passW| 0000f300 25 2c 31 33 29 29 0d 08 4a 2b 20 20 f2 6c 69 74 |%,13))..J+ .lit| 0000f310 28 6d 65 6e 75 25 28 31 29 2c 32 2c a4 73 65 6c |(menu%(1),2,.sel| 0000f320 65 63 74 65 64 28 70 61 73 73 57 25 2c 31 34 29 |ected(passW%,14)| 0000f330 29 0d 08 4b 2b 20 20 f2 6c 69 74 28 6d 65 6e 75 |)..K+ .lit(menu| 0000f340 25 28 33 29 2c 38 2c a4 73 65 6c 65 63 74 65 64 |%(3),8,.selected| 0000f350 28 70 61 73 73 57 25 2c 31 35 29 29 0d 08 4c 50 |(passW%,15))..LP| 0000f360 20 20 e7 20 ac 20 a4 73 65 6c 65 63 74 65 64 28 | . . .selected(| 0000f370 70 61 73 73 57 25 2c 39 29 20 8c 20 f2 63 6c 6f |passW%,9) . .clo| 0000f380 73 65 5f 77 69 6e 64 6f 77 28 6b 65 79 70 61 64 |se_window(keypad| 0000f390 57 25 29 20 8b 20 f2 6f 70 65 6e 5f 77 69 6e 64 |W%) . .open_wind| 0000f3a0 6f 77 28 6b 65 79 70 61 64 57 25 29 0d 08 4d 31 |ow(keypadW%)..M1| 0000f3b0 20 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 | .close_window(| 0000f3c0 70 61 73 73 57 25 29 3a f2 63 6c 6f 73 65 5f 77 |passW%):.close_w| 0000f3d0 69 6e 64 6f 77 28 73 61 76 65 57 25 29 0d 08 4e |indow(saveW%)..N| 0000f3e0 0d 20 20 77 61 72 6e 25 3d b9 0d 08 4f 0b 20 20 |. warn%=...O. | 0000f3f0 c9 20 31 36 3a 0d 08 50 1e 20 20 e7 20 a4 73 65 |. 16:..P. . .se| 0000f400 6c 65 63 74 65 64 28 70 61 73 73 57 25 2c 31 36 |lected(passW%,16| 0000f410 29 20 8c 0d 08 51 1f 20 20 20 20 73 61 76 65 66 |) ...Q. savef| 0000f420 75 6e 63 24 3d 22 4c 6f 67 20 63 68 61 6e 67 65 |unc$="Log change| 0000f430 73 22 0d 08 52 4a 20 20 20 20 e7 20 6c 6f 67 70 |s"..RJ . logp| 0000f440 61 74 68 24 3d 22 22 20 8c 20 24 53 61 76 65 4e |ath$="" . $SaveN| 0000f450 61 6d 65 25 3d 24 64 61 74 61 62 61 73 65 25 2b |ame%=$database%+| 0000f460 22 2e 4c 6f 67 22 20 8b 20 24 53 61 76 65 4e 61 |".Log" . $SaveNa| 0000f470 6d 65 25 3d 6c 6f 67 70 61 74 68 24 0d 08 53 32 |me%=logpath$..S2| 0000f480 20 20 20 20 24 53 61 76 65 53 70 72 69 74 65 25 | $SaveSprite%| 0000f490 3d 22 73 66 69 6c 65 5f 66 66 66 3b 50 70 74 72 |="sfile_fff;Pptr| 0000f4a0 5f 68 61 6e 64 2c 31 32 2c 38 3b 42 33 22 0d 08 |_hand,12,8;B3"..| 0000f4b0 54 37 20 20 20 20 21 62 6c 6f 63 6b 25 3d 70 61 |T7 !block%=pa| 0000f4c0 73 73 57 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 |ssW%:.. "Wimp_Ge| 0000f4d0 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 |tWindowState",,b| 0000f4e0 6c 6f 63 6b 25 0d 08 55 2a 20 20 20 20 78 6d 69 |lock%..U* xmi| 0000f4f0 6e 25 3d 62 6c 6f 63 6b 25 21 34 2b 32 30 30 3a |n%=block%!4+200:| 0000f500 79 6d 61 78 25 3d 62 6c 6f 63 6b 25 21 31 36 0d |ymax%=block%!16.| 0000f510 08 56 37 20 20 20 20 21 62 6c 6f 63 6b 25 3d 73 |.V7 !block%=s| 0000f520 61 76 65 57 25 3a c8 99 20 22 57 69 6d 70 5f 47 |aveW%:.. "Wimp_G| 0000f530 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c |etWindowState",,| 0000f540 62 6c 6f 63 6b 25 0d 08 57 39 20 20 20 20 62 6c |block%..W9 bl| 0000f550 6f 63 6b 25 21 31 32 3d 78 6d 69 6e 25 2b 62 6c |ock%!12=xmin%+bl| 0000f560 6f 63 6b 25 21 31 32 2d 62 6c 6f 63 6b 25 21 34 |ock%!12-block%!4| 0000f570 3a 62 6c 6f 63 6b 25 21 34 3d 78 6d 69 6e 25 0d |:block%!4=xmin%.| 0000f580 08 58 39 20 20 20 20 62 6c 6f 63 6b 25 21 38 3d |.X9 block%!8=| 0000f590 79 6d 61 78 25 2d 62 6c 6f 63 6b 25 21 31 36 2b |ymax%-block%!16+| 0000f5a0 62 6c 6f 63 6b 25 21 38 3a 62 6c 6f 63 6b 25 21 |block%!8:block%!| 0000f5b0 31 36 3d 79 6d 61 78 25 0d 08 59 31 20 20 20 20 |16=ymax%..Y1 | 0000f5c0 62 6c 6f 63 6b 25 21 32 38 3d 2d 31 3a c8 99 20 |block%!28=-1:.. | 0000f5d0 22 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 |"Wimp_OpenWindow| 0000f5e0 22 2c 2c 62 6c 6f 63 6b 25 0d 08 5a 1c 20 20 20 |",,block%..Z. | 0000f5f0 20 f2 73 65 74 5f 63 61 72 65 74 28 73 61 76 65 | .set_caret(save| 0000f600 57 25 2c 30 29 0d 08 5b 11 20 20 20 20 f2 6f 70 |W%,0)..[. .op| 0000f610 65 6e 5f 6c 6f 67 0d 08 5c 14 20 20 20 20 cc 20 |en_log..\. . | 0000f620 f2 63 6c 6f 73 65 5f 6c 6f 67 0d 08 5d 07 20 20 |.close_log..]. | 0000f630 cd 0d 08 5e 05 cb 0d 08 5f 05 e1 0d 08 60 05 3a |...^...._....`.:| 0000f640 0d 08 61 0f dd 20 f2 6f 70 65 6e 5f 6c 6f 67 0d |..a.. .open_log.| 0000f650 08 62 14 e7 20 6c 6f 67 70 61 74 68 24 3c 3e 22 |.b.. logpath$<>"| 0000f660 22 20 8c 0d 08 63 22 20 20 c8 99 20 22 4f 53 5f |" ...c" .. "OS_| 0000f670 46 69 6c 65 22 2c 35 2c 6c 6f 67 70 61 74 68 24 |File",5,logpath$| 0000f680 20 b8 20 64 25 0d 08 64 0e 20 20 e7 20 64 25 3d | . d%..d. . d%=| 0000f690 31 20 8c 0d 08 65 38 20 20 20 20 6c 6f 67 68 61 |1 ...e8 logha| 0000f6a0 6e 64 6c 65 25 3d ad 28 6c 6f 67 70 61 74 68 24 |ndle%=.(logpath$| 0000f6b0 29 3a cf 23 6c 6f 67 68 61 6e 64 6c 65 25 3d a2 |):.#loghandle%=.| 0000f6c0 23 6c 6f 67 68 61 6e 64 6c 65 25 0d 08 66 25 20 |#loghandle%..f% | 0000f6d0 20 20 20 d5 23 6c 6f 67 68 61 6e 64 6c 65 25 2c | .#loghandle%,| 0000f6e0 22 4c 6f 67 20 6f 70 65 6e 65 64 20 22 2b 91 24 |"Log opened "+.$| 0000f6f0 0d 08 67 33 20 20 20 20 d5 23 6c 6f 67 68 61 6e |..g3 .#loghan| 0000f700 64 6c 65 25 2c 22 50 61 73 73 77 6f 72 64 20 6c |dle%,"Password l| 0000f710 65 76 65 6c 20 75 73 65 64 3a 20 22 2b c3 28 70 |evel used: "+.(p| 0000f720 77 25 29 0d 08 68 1d 20 20 20 20 d5 23 6c 6f 67 |w%)..h. .#log| 0000f730 68 61 6e 64 6c 65 25 2c c4 33 35 2c 22 3d 22 29 |handle%,.35,"=")| 0000f740 0d 08 69 09 20 20 20 20 cc 0d 08 6a 19 20 20 20 |..i. ...j. | 0000f750 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 2c 39 | .softerror("",9| 0000f760 39 29 0d 08 6b 1c 20 20 20 20 f2 64 65 73 65 6c |9)..k. .desel| 0000f770 65 63 74 28 70 61 73 73 57 25 2c 31 36 29 0d 08 |ect(passW%,16)..| 0000f780 6c 13 20 20 20 20 6c 6f 67 70 61 74 68 24 3d 22 |l. logpath$="| 0000f790 22 0d 08 6d 07 20 20 cd 0d 08 6e 05 cd 0d 08 6f |"..m. ...n....o| 0000f7a0 05 e1 0d 08 70 05 3a 0d 08 71 10 dd 20 f2 63 6c |....p.:..q.. .cl| 0000f7b0 6f 73 65 5f 6c 6f 67 0d 08 72 15 e7 20 6c 6f 67 |ose_log..r.. log| 0000f7c0 68 61 6e 64 6c 65 25 3c 3e 30 20 8c 0d 08 73 15 |handle%<>0 ...s.| 0000f7d0 20 20 d5 23 6c 6f 67 68 61 6e 64 6c 65 25 2c 22 | .#loghandle%,"| 0000f7e0 22 0d 08 74 23 20 20 d5 23 6c 6f 67 68 61 6e 64 |"..t# .#loghand| 0000f7f0 6c 65 25 2c 22 4c 6f 67 20 63 6c 6f 73 65 64 20 |le%,"Log closed | 0000f800 22 2b 91 24 0d 08 75 1d 20 20 f2 63 6c 6f 73 65 |"+.$..u. .close| 0000f810 5f 66 69 6c 65 28 6c 6f 67 68 61 6e 64 6c 65 25 |_file(loghandle%| 0000f820 29 0d 08 76 23 20 20 c8 99 20 22 4f 53 5f 46 69 |)..v# .. "OS_Fi| 0000f830 6c 65 22 2c 31 38 2c 6c 6f 67 70 61 74 68 24 2c |le",18,logpath$,| 0000f840 26 66 66 66 0d 08 77 05 cd 0d 08 78 05 e1 0d 08 |&fff..w....x....| 0000f850 79 05 3a 0d 08 7a 18 dd 20 f2 63 6f 75 6e 74 28 |y.:..z.. .count(| 0000f860 6b 65 79 25 2c f8 20 52 55 25 29 0d 08 7b 1a ea |key%,. RU%)..{..| 0000f870 20 7a 65 72 6f 25 2c 66 69 6c 65 25 2c 74 6f 70 | zero%,file%,top| 0000f880 2c 73 75 6d 25 0d 08 7c 09 52 55 25 3d 30 0d 08 |,sum%..|.RU%=0..| 0000f890 7d 11 e3 20 66 69 6c 65 25 3d 30 20 b8 20 35 0d |}.. file%=0 . 5.| 0000f8a0 08 7e 15 20 20 74 6f 70 3d 38 2a 66 69 6c 65 25 |.~. top=8*file%| 0000f8b0 2b 4c 48 25 0d 08 7f 22 20 20 73 75 6d 25 3d a4 |+LH%..." sum%=.| 0000f8c0 63 6f 75 6e 74 5f 72 65 63 73 28 6b 65 79 25 2c |count_recs(key%,| 0000f8d0 7a 65 72 6f 25 29 0d 08 80 0f 20 20 52 55 25 2b |zero%).... RU%+| 0000f8e0 3d 73 75 6d 25 0d 08 81 25 20 20 24 a4 74 65 78 |=sum%...% $.tex| 0000f8f0 74 28 6d 69 73 63 57 25 2c 66 69 6c 65 25 2b 32 |t(miscW%,file%+2| 0000f900 32 29 3d c3 28 73 75 6d 25 29 0d 08 82 0b ed 20 |2)=.(sum%)..... | 0000f910 66 69 6c 65 25 0d 08 83 05 e1 0d 08 84 05 3a 0d |file%.........:.| 0000f920 08 85 1e dd 20 a4 63 6f 75 6e 74 5f 72 65 63 73 |.... .count_recs| 0000f930 28 6b 65 79 25 2c f8 20 70 74 72 25 29 0d 08 86 |(key%,. ptr%)...| 0000f940 1b ea 20 50 25 2c 63 6f 75 6e 74 25 2c 53 25 2c |.. P%,count%,S%,| 0000f950 52 25 2c 53 24 2c 6b 24 0d 08 87 15 c8 99 20 22 |R%,S$,k$...... "| 0000f960 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 08 88 |Hourglass_On"...| 0000f970 1d 50 25 3d a4 6e 65 69 67 68 62 6f 75 72 28 6b |.P%=.neighbour(k| 0000f980 65 79 25 2c 74 6f 70 2c 31 29 0d 08 89 0e c8 95 |ey%,top,1)......| 0000f990 20 50 25 3c 3e 74 6f 70 0d 08 8a 0f 20 20 63 6f | P%<>top.... co| 0000f9a0 75 6e 74 25 2b 3d 31 0d 08 8b 10 20 20 e7 20 70 |unt%+=1.... . p| 0000f9b0 74 72 25 3e 30 20 8c 0d 08 8c 1e 20 20 20 20 52 |tr%>0 ..... R| 0000f9c0 25 3d a4 72 65 63 5f 6e 6f 28 6b 24 2c 6b 65 79 |%=.rec_no(k$,key| 0000f9d0 25 2c 50 25 29 0d 08 8d 23 20 20 20 20 e7 20 52 |%,P%)...# . R| 0000f9e0 25 3e 68 69 67 68 65 73 74 25 20 8c 20 68 69 67 |%>highest% . hig| 0000f9f0 68 65 73 74 25 3d 52 25 0d 08 8e 31 20 20 20 20 |hest%=R%...1 | 0000fa00 21 70 74 72 25 3d 52 25 3a 24 28 70 74 72 25 2b |!ptr%=R%:$(ptr%+| 0000fa10 34 29 3d 6b 24 3a 70 74 72 25 2b 3d 34 2b 4b 4c |4)=k$:ptr%+=4+KL| 0000fa20 25 28 6b 65 79 25 29 2b 31 0d 08 8f 15 20 20 20 |%(key%)+1.... | 0000fa30 20 66 6c 61 67 70 74 72 25 3f 52 25 3d 30 0d 08 | flagptr%?R%=0..| 0000fa40 90 07 20 20 cd 0d 08 91 1e 20 20 50 25 3d a4 6e |.. ..... P%=.n| 0000fa50 65 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 50 25 |eighbour(key%,P%| 0000fa60 2c 31 29 0d 08 92 05 ce 0d 08 93 16 c8 99 20 22 |,1)........... "| 0000fa70 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d 08 |Hourglass_Off"..| 0000fa80 94 0b 3d 63 6f 75 6e 74 25 0d 08 95 05 3a 0d 08 |..=count%....:..| 0000fa90 96 15 dd 20 f2 61 6e 61 6c 79 73 65 28 66 75 6e |... .analyse(fun| 0000faa0 63 25 29 0d 08 97 31 ea 20 4c 25 2c 50 25 2c 53 |c%)...1. L%,P%,S| 0000fab0 25 2c 53 24 2c 4b 24 2c 6b 24 2c 70 74 72 25 2c |%,S$,K$,k$,ptr%,| 0000fac0 70 6f 73 25 2c 4e 25 2c 76 61 6c 75 65 73 25 2c |pos%,N%,values%,| 0000fad0 6b 65 79 25 0d 08 98 0f ea 20 53 24 28 29 2c 4e |key%..... S$(),N| 0000fae0 25 28 29 0d 08 99 17 f2 72 65 61 64 5f 70 72 69 |%().....read_pri| 0000faf0 6e 74 5f 6f 70 74 69 6f 6e 73 0d 08 9a 2e e7 20 |nt_options..... | 0000fb00 66 75 6e 63 25 3c 30 20 8c 20 4c 25 3d 36 20 8b |func%<0 . L%=6 .| 0000fb10 20 6b 65 79 25 3d 66 75 6e 63 25 3a 4c 25 3d 4b | key%=func%:L%=K| 0000fb20 4c 25 28 6b 65 79 25 29 0d 08 9b 38 e7 20 4c 25 |L%(key%)...8. L%| 0000fb30 3e 38 20 8c 20 54 61 62 25 28 30 29 3d 4c 6d 61 |>8 . Tab%(0)=Lma| 0000fb40 72 67 69 6e 25 2b 4c 25 2b 36 20 8b 20 54 61 62 |rgin%+L%+6 . Tab| 0000fb50 25 28 30 29 3d 4c 6d 61 72 67 69 6e 25 2b 31 34 |%(0)=Lmargin%+14| 0000fb60 0d 08 9c 15 54 61 62 25 28 31 29 3d 54 61 62 25 |....Tab%(1)=Tab%| 0000fb70 28 30 29 2b 36 0d 08 9d 0f e7 20 66 75 6e 63 25 |(0)+6..... func%| 0000fb80 3c 30 20 8c 0d 08 9e 3a 20 20 54 69 74 6c 65 24 |<0 ....: Title$| 0000fb90 3d 22 41 6e 61 6c 79 73 69 73 20 6f 66 20 64 61 |="Analysis of da| 0000fba0 74 65 20 66 69 65 6c 64 3a 20 22 2b 54 61 67 24 |te field: "+Tag$| 0000fbb0 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 0d 08 |(Fieldnumber%)..| 0000fbc0 9f 35 20 20 48 65 61 64 69 6e 67 24 3d a4 70 61 |.5 Heading$=.pa| 0000fbd0 64 28 6d 61 72 67 69 6e 24 2b 22 4d 6f 6e 74 68 |d(margin$+"Month| 0000fbe0 22 2c 54 61 62 25 28 30 29 29 2b 22 4e 75 6d 62 |",Tab%(0))+"Numb| 0000fbf0 65 72 22 0d 08 a0 07 20 20 cc 0d 08 a1 2f 20 20 |er".... ..../ | 0000fc00 54 69 74 6c 65 24 3d 22 41 6e 61 6c 79 73 69 73 |Title$="Analysis| 0000fc10 20 6f 66 20 69 6e 64 65 78 3a 20 22 2b 49 6e 64 | of index: "+Ind| 0000fc20 65 78 24 28 6b 65 79 25 29 0d 08 a2 38 20 20 48 |ex$(key%)...8 H| 0000fc30 65 61 64 69 6e 67 24 3d a4 70 61 64 28 6d 61 72 |eading$=.pad(mar| 0000fc40 67 69 6e 24 2b 22 43 6f 6e 74 65 6e 74 73 22 2c |gin$+"Contents",| 0000fc50 54 61 62 25 28 30 29 29 2b 22 4e 75 6d 62 65 72 |Tab%(0))+"Number| 0000fc60 22 0d 08 a3 05 cd 0d 08 a4 0e 54 69 74 6c 65 31 |".........Title1| 0000fc70 24 3d 91 24 0d 08 a5 1a 4c 65 6e 4c 69 6e 65 25 |$=.$....LenLine%| 0000fc80 3d a9 28 48 65 61 64 69 6e 67 24 29 2b 32 0d 08 |=.(Heading$)+2..| 0000fc90 a6 37 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f |.7.extend_named_| 0000fca0 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 6c 69 |sliding_block(li| 0000fcb0 6e 65 61 6e 63 68 6f 72 25 2c 4c 65 6e 4c 69 6e |neanchor%,LenLin| 0000fcc0 65 25 2b 34 29 0d 08 a7 49 f2 65 78 74 65 6e 64 |e%+4)...I.extend| 0000fcd0 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 |_named_sliding_b| 0000fce0 6c 6f 63 6b 28 68 65 61 64 61 6e 63 68 6f 72 25 |lock(headanchor%| 0000fcf0 2c 4c 65 6e 4c 69 6e 65 25 2b 34 29 3a 70 6f 73 |,LenLine%+4):pos| 0000fd00 25 3d 21 68 65 61 64 61 6e 63 68 6f 72 25 0d 08 |%=!headanchor%..| 0000fd10 a8 37 f2 68 65 61 70 5f 73 74 6f 72 65 28 68 65 |.7.heap_store(he| 0000fd20 61 64 61 6e 63 68 6f 72 25 2c 4c 65 6e 4c 69 6e |adanchor%,LenLin| 0000fd30 65 25 2c 30 2c 70 6f 73 25 2c 30 2c 48 65 61 64 |e%,0,pos%,0,Head| 0000fd40 69 6e 67 24 29 0d 08 a9 18 72 65 70 6f 72 74 64 |ing$)....reportd| 0000fd50 65 73 74 24 3d 22 57 69 6e 64 6f 77 22 0d 08 aa |est$="Window"...| 0000fd60 1c f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 64 |..close_window(d| 0000fd70 61 74 61 64 69 63 57 25 29 0d 08 ab 0c 43 6f 75 |atadicW%)....Cou| 0000fd80 6e 74 25 3d 30 0d 08 ac 11 f2 6c 69 73 74 5f 68 |nt%=0.....list_h| 0000fd90 65 61 64 28 30 29 0d 08 ad 15 c8 99 20 22 48 6f |ead(0)...... "Ho| 0000fda0 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 08 ae 2e e7 |urglass_On".....| 0000fdb0 20 66 75 6e 63 25 3c 30 20 8c 20 f2 61 6e 61 6c | func%<0 . .anal| 0000fdc0 79 73 65 5f 64 61 74 65 20 8b 20 f2 61 6e 61 6c |yse_date . .anal| 0000fdd0 79 73 65 5f 69 6e 64 65 78 0d 08 af 16 c8 99 20 |yse_index...... | 0000fde0 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d |"Hourglass_Off".| 0000fdf0 08 b0 11 f2 72 75 6c 65 5f 6f 66 66 28 34 35 29 |....rule_off(45)| 0000fe00 0d 08 b1 3b 4c 69 6e 65 24 3d a4 70 61 64 28 6d |...;Line$=.pad(m| 0000fe10 61 72 67 69 6e 24 2b 22 54 6f 74 61 6c 22 2c 54 |argin$+"Total",T| 0000fe20 61 62 25 28 30 29 29 2b a4 6a 75 73 74 69 66 79 |ab%(0))+.justify| 0000fe30 28 c3 28 4e 25 29 2c 31 2c 30 29 0d 08 b2 40 24 |(.(N%),1,0)...@$| 0000fe40 28 21 6c 69 6e 65 61 6e 63 68 6f 72 25 29 3d 4c |(!lineanchor%)=L| 0000fe50 69 6e 65 24 3a f2 6c 69 73 74 5f 6c 69 6e 65 28 |ine$:.list_line(| 0000fe60 2d 31 2c 6c 69 6e 65 61 6e 63 68 6f 72 25 2c a9 |-1,lineanchor%,.| 0000fe70 28 4c 69 6e 65 24 29 2c 33 32 29 0d 08 b3 11 f2 |(Line$),32).....| 0000fe80 72 75 6c 65 5f 6f 66 66 28 34 35 29 0d 08 b4 10 |rule_off(45)....| 0000fe90 f2 73 63 72 65 65 6e 5f 6c 69 73 74 0d 08 b5 05 |.screen_list....| 0000fea0 e1 0d 08 b6 05 3a 0d 08 b7 14 dd 20 f2 61 6e 61 |.....:..... .ana| 0000feb0 6c 79 73 65 5f 69 6e 64 65 78 0d 08 b8 0c 4b 24 |lyse_index....K$| 0000fec0 3d 22 2a 2a 2a 22 0d 08 b9 1d 50 25 3d a4 6e 65 |="***"....P%=.ne| 0000fed0 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 74 6f 70 |ighbour(key%,top| 0000fee0 2c 31 29 0d 08 ba 0e c8 95 20 50 25 3c 3e 74 6f |,1)...... P%<>to| 0000fef0 70 0d 08 bb 1e 20 20 20 20 52 25 3d a4 72 65 63 |p.... R%=.rec| 0000ff00 5f 6e 6f 28 6b 24 2c 6b 65 79 25 2c 50 25 29 0d |_no(k$,key%,P%).| 0000ff10 08 bc 23 20 20 20 20 e7 20 6b 24 3c 3e 4b 24 20 |..# . k$<>K$ | 0000ff20 8c 20 76 61 6c 75 65 73 25 2b 3d 31 3a 4b 24 3d |. values%+=1:K$=| 0000ff30 6b 24 0d 08 bd 20 20 20 20 20 50 25 3d a4 6e 65 |k$... P%=.ne| 0000ff40 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 50 25 2c |ighbour(key%,P%,| 0000ff50 31 29 0d 08 be 05 ce 0d 08 bf 1d de 20 53 24 28 |1).......... S$(| 0000ff60 76 61 6c 75 65 73 25 29 2c 4e 25 28 76 61 6c 75 |values%),N%(valu| 0000ff70 65 73 25 29 0d 08 c0 0c 4b 24 3d 22 2a 2a 2a 22 |es%)....K$="***"| 0000ff80 0d 08 c1 1d 50 25 3d a4 6e 65 69 67 68 62 6f 75 |....P%=.neighbou| 0000ff90 72 28 6b 65 79 25 2c 74 6f 70 2c 31 29 0d 08 c2 |r(key%,top,1)...| 0000ffa0 0e c8 95 20 50 25 3c 3e 74 6f 70 0d 08 c3 1e 20 |... P%<>top.... | 0000ffb0 20 20 20 52 25 3d a4 72 65 63 5f 6e 6f 28 6b 24 | R%=.rec_no(k$| 0000ffc0 2c 6b 65 79 25 2c 50 25 29 0d 08 c4 45 20 20 20 |,key%,P%)...E | 0000ffd0 20 e7 20 6b 24 3c 3e 4b 24 20 8c 20 70 74 72 25 | . k$<>K$ . ptr%| 0000ffe0 2b 3d 31 3a 4b 24 3d 6b 24 3a 53 24 28 70 74 72 |+=1:K$=k$:S$(ptr| 0000fff0 25 29 3d 4b 24 3a 4e 25 28 70 74 72 25 29 3d 31 |%)=K$:N%(ptr%)=1| 00010000 20 8b 20 4e 25 28 70 74 72 25 29 2b 3d 31 0d 08 | . N%(ptr%)+=1..| 00010010 c5 20 20 20 20 20 50 25 3d a4 6e 65 69 67 68 62 |. P%=.neighb| 00010020 6f 75 72 28 6b 65 79 25 2c 50 25 2c 31 29 0d 08 |our(key%,P%,1)..| 00010030 c6 05 ce 0d 08 c7 11 e3 20 49 25 3d 31 20 b8 20 |........ I%=1 . | 00010040 70 74 72 25 0d 08 c8 49 20 20 53 24 3d 53 24 28 |ptr%...I S$=S$(| 00010050 49 25 29 3a e7 20 53 24 3d 22 22 20 8c 20 53 24 |I%):. S$="" . S$| 00010060 3d 22 3c 6e 75 6c 6c 3e 22 20 8b 20 e7 20 69 73 |="<null>" . . is| 00010070 61 64 61 74 65 25 20 8c 20 53 24 3d a4 72 65 76 |adate% . S$=.rev| 00010080 65 72 73 65 5f 64 61 74 65 28 53 24 29 0d 08 c9 |erse_date(S$)...| 00010090 48 20 20 4c 69 6e 65 24 3d 6d 61 72 67 69 6e 24 |H Line$=margin$| 000100a0 2b 53 24 3a 4c 69 6e 65 24 3d a4 70 61 64 28 4c |+S$:Line$=.pad(L| 000100b0 69 6e 65 24 2c 54 61 62 25 28 30 29 29 2b a4 6a |ine$,Tab%(0))+.j| 000100c0 75 73 74 69 66 79 28 c3 28 4e 25 28 49 25 29 29 |ustify(.(N%(I%))| 000100d0 2c 31 2c 30 29 0d 08 ca 42 20 20 24 28 21 6c 69 |,1,0)...B $(!li| 000100e0 6e 65 61 6e 63 68 6f 72 25 29 3d 4c 69 6e 65 24 |neanchor%)=Line$| 000100f0 3a f2 6c 69 73 74 5f 6c 69 6e 65 28 2d 31 2c 6c |:.list_line(-1,l| 00010100 69 6e 65 61 6e 63 68 6f 72 25 2c a9 28 4c 69 6e |ineanchor%,.(Lin| 00010110 65 24 29 2c 33 32 29 0d 08 cb 10 20 20 4e 25 2b |e$),32).... N%+| 00010120 3d 4e 25 28 49 25 29 0d 08 cc 08 ed 20 49 25 0d |=N%(I%)..... I%.| 00010130 08 cd 05 e1 0d 08 ce 05 3a 0d 08 cf 13 dd 20 f2 |........:..... .| 00010140 61 6e 61 6c 79 73 65 5f 64 61 74 65 0d 08 d0 13 |analyse_date....| 00010150 de 20 53 24 28 31 32 29 2c 4e 25 28 31 32 29 0d |. S$(12),N%(12).| 00010160 08 d1 59 53 24 28 29 3d 22 3c 6e 75 6c 6c 3e 22 |..YS$()="<null>"| 00010170 2c 22 4a 61 6e 22 2c 22 46 65 62 22 2c 22 4d 61 |,"Jan","Feb","Ma| 00010180 72 22 2c 22 41 70 72 22 2c 22 4d 61 79 22 2c 22 |r","Apr","May","| 00010190 4a 75 6e 22 2c 22 4a 75 6c 22 2c 22 41 75 67 22 |Jun","Jul","Aug"| 000101a0 2c 22 53 65 70 22 2c 22 4f 63 74 22 2c 22 4e 6f |,"Sep","Oct","No| 000101b0 76 22 2c 22 44 65 63 22 0d 08 d2 2a 64 62 61 73 |v","Dec"...*dbas| 000101c0 65 68 61 6e 64 6c 65 25 3d 8e 28 24 64 61 74 61 |ehandle%=.($data| 000101d0 62 61 73 65 25 2b 22 2e 44 61 74 61 62 61 73 65 |base%+".Database| 000101e0 22 29 0d 08 d3 1d 50 25 3d a4 6e 65 69 67 68 62 |")....P%=.neighb| 000101f0 6f 75 72 28 6b 65 79 25 2c 74 6f 70 2c 31 29 0d |our(key%,top,1).| 00010200 08 d4 0e c8 95 20 50 25 3c 3e 74 6f 70 0d 08 d5 |..... P%<>top...| 00010210 1c 20 20 52 25 3d a4 72 65 63 5f 6e 6f 28 6b 24 |. R%=.rec_no(k$| 00010220 2c 6b 65 79 25 2c 50 25 29 0d 08 d6 23 20 20 f2 |,key%,P%)...# .| 00010230 72 65 61 64 73 6d 61 72 72 61 79 28 64 62 61 73 |readsmarray(dbas| 00010240 65 68 61 6e 64 6c 65 25 2c 52 25 29 0d 08 d7 19 |ehandle%,R%)....| 00010250 20 20 53 24 3d 46 24 28 46 69 65 6c 64 6e 75 6d | S$=F$(Fieldnum| 00010260 62 65 72 25 29 0d 08 d8 10 20 20 e7 20 53 24 3c |ber%).... . S$<| 00010270 3e 22 22 20 8c 0d 08 d9 16 20 20 20 20 4d 25 3d |>"" ..... M%=| 00010280 bb 28 c1 53 24 2c 34 2c 32 29 29 0d 08 da 11 20 |.(.S$,4,2)).... | 00010290 20 20 20 4e 25 28 4d 25 29 2b 3d 31 0d 08 db 12 | N%(M%)+=1....| 000102a0 20 20 20 20 cc 20 4e 25 28 30 29 2b 3d 31 0d 08 | . N%(0)+=1..| 000102b0 dc 07 20 20 cd 0d 08 dd 1e 20 20 50 25 3d a4 6e |.. ..... P%=.n| 000102c0 65 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 50 25 |eighbour(key%,P%| 000102d0 2c 31 29 0d 08 de 05 ce 0d 08 df 1d f2 63 6c 6f |,1)..........clo| 000102e0 73 65 5f 66 69 6c 65 28 64 62 61 73 65 68 61 6e |se_file(dbasehan| 000102f0 64 6c 65 25 29 0d 08 e0 0f e3 20 49 25 3d 30 20 |dle%)..... I%=0 | 00010300 b8 20 31 32 0d 08 e1 4c 20 20 4c 69 6e 65 24 3d |. 12...L Line$=| 00010310 6d 61 72 67 69 6e 24 2b 53 24 28 49 25 29 3a 4c |margin$+S$(I%):L| 00010320 69 6e 65 24 3d a4 70 61 64 28 4c 69 6e 65 24 2c |ine$=.pad(Line$,| 00010330 54 61 62 25 28 30 29 29 2b a4 6a 75 73 74 69 66 |Tab%(0))+.justif| 00010340 79 28 c3 28 4e 25 28 49 25 29 29 2c 31 2c 30 29 |y(.(N%(I%)),1,0)| 00010350 0d 08 e2 42 20 20 24 28 21 6c 69 6e 65 61 6e 63 |...B $(!lineanc| 00010360 68 6f 72 25 29 3d 4c 69 6e 65 24 3a f2 6c 69 73 |hor%)=Line$:.lis| 00010370 74 5f 6c 69 6e 65 28 2d 31 2c 6c 69 6e 65 61 6e |t_line(-1,linean| 00010380 63 68 6f 72 25 2c a9 28 4c 69 6e 65 24 29 2c 33 |chor%,.(Line$),3| 00010390 32 29 0d 08 e3 10 20 20 4e 25 2b 3d 4e 25 28 49 |2).... N%+=N%(I| 000103a0 25 29 0d 08 e4 08 ed 20 49 25 0d 08 e5 05 e1 0d |%)..... I%......| 000103b0 08 e6 05 3a 0d 08 e7 13 dd 20 f2 75 70 64 61 74 |...:..... .updat| 000103c0 65 5f 73 74 61 74 73 0d 08 e8 15 24 66 69 6c 65 |e_stats....$file| 000103d0 73 69 7a 65 25 3d c3 28 52 41 25 29 0d 08 e9 14 |size%=.(RA%)....| 000103e0 24 52 65 63 6f 72 64 73 25 3d c3 28 52 41 25 29 |$Records%=.(RA%)| 000103f0 0d 08 ea 11 24 75 73 65 64 25 3d c3 28 52 55 25 |....$used%=.(RU%| 00010400 29 0d 08 eb 23 24 70 65 72 63 65 6e 74 25 3d c3 |)...#$percent%=.| 00010410 28 a8 28 52 55 25 2a 31 30 30 2f 52 41 25 29 29 |(.(RU%*100/RA%))| 00010420 2b 22 25 22 0d 08 ec 05 e1 0d 08 ed 05 3a 0d 08 |+"%".........:..| 00010430 ee 4c f4 20 4b 65 79 70 72 65 73 73 20 70 72 6f |.L. Keypress pro| 00010440 63 65 73 73 69 6e 67 20 2d 2d 2d 2d 2d 2d 2d 2d |cessing --------| 00010450 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00010470 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 08 ef 05 3a 0d |----------....:.| 00010480 08 f0 1c dd 20 f2 73 65 74 5f 6b 65 79 62 6f 61 |.... .set_keyboa| 00010490 72 64 28 77 69 25 2c 69 63 25 29 0d 08 f1 0c c8 |rd(wi%,ic%).....| 000104a0 8e 20 77 69 25 20 ca 0d 08 f2 0f 20 20 c9 20 6d |. wi% ..... . m| 000104b0 61 69 6e 57 25 3a 0d 08 f3 21 20 20 c8 8e 20 63 |ainW%:...! .. c| 000104c0 68 61 72 74 79 70 65 25 28 28 69 63 25 2b 31 29 |hartype%((ic%+1)| 000104d0 20 81 20 32 29 20 ca 0d 08 f4 24 20 20 20 20 c9 | . 2) ....$ .| 000104e0 20 32 2c 34 3a c8 99 20 22 4f 53 5f 42 79 74 65 | 2,4:.. "OS_Byte| 000104f0 22 2c 32 30 32 2c 30 2c 32 33 39 0d 08 f5 21 20 |",202,0,239...! | 00010500 20 20 20 7f 3a c8 99 20 22 4f 53 5f 42 79 74 65 | .:.. "OS_Byte| 00010510 22 2c 32 30 32 2c 31 36 2c 31 31 31 0d 08 f6 07 |",202,16,111....| 00010520 20 20 cb 0d 08 f7 22 20 20 7f 3a c8 99 20 22 4f | ...." .:.. "O| 00010530 53 5f 42 79 74 65 22 2c 32 30 32 2c 63 61 70 73 |S_Byte",202,caps| 00010540 25 2c 31 31 31 0d 08 f8 05 cb 0d 08 f9 14 c8 99 |%,111...........| 00010550 20 22 4f 53 5f 42 79 74 65 22 2c 31 31 38 0d 08 | "OS_Byte",118..| 00010560 fa 05 e1 0d 08 fb 05 3a 0d 08 fc 12 dd 20 f2 70 |.......:..... .p| 00010570 72 6f 63 65 73 73 5f 6b 65 79 0d 08 fd 1f e7 20 |rocess_key..... | 00010580 70 72 69 6e 74 69 6e 67 25 20 84 20 69 6e 64 65 |printing% . inde| 00010590 78 69 6e 67 25 20 8c 20 e1 0d 08 fe 0b ea 20 54 |xing% . ...... T| 000105a0 25 2c 4e 24 0d 08 ff 26 c8 99 20 22 57 69 6d 70 |%,N$...&.. "Wimp| 000105b0 5f 47 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f |_GetCaretPositio| 000105c0 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 09 00 34 77 69 |n",,block%...4wi| 000105d0 25 3d 62 6c 6f 63 6b 25 21 30 3a 69 63 25 3d 62 |%=block%!0:ic%=b| 000105e0 6c 6f 63 6b 25 21 34 3a 6b 65 79 5f 70 72 65 73 |lock%!4:key_pres| 000105f0 73 65 64 25 3d 62 6c 6f 63 6b 25 21 32 34 0d 09 |sed%=block%!24..| 00010600 01 0c c8 8e 20 77 69 25 20 ca 0d 09 02 1a 20 20 |.... wi% ..... | 00010610 c9 20 6d 61 69 6e 57 25 3a f2 6d 61 69 6e 5f 70 |. mainW%:.main_p| 00010620 72 65 73 73 0d 09 03 1e 20 20 c9 20 6b 65 79 70 |ress.... . keyp| 00010630 61 64 57 25 3a f2 6b 65 79 70 61 64 5f 70 72 65 |adW%:.keypad_pre| 00010640 73 73 0d 09 04 1d 20 20 c9 20 70 61 73 73 57 25 |ss.... . passW%| 00010650 3a f2 64 62 6f 78 5f 70 72 65 73 73 28 34 29 0d |:.dbox_press(4).| 00010660 09 05 1f 20 20 c9 20 63 68 61 6e 67 65 57 25 3a |... . changeW%:| 00010670 f2 64 62 6f 78 5f 70 72 65 73 73 28 34 29 0d 09 |.dbox_press(4)..| 00010680 06 1f 20 20 c9 20 74 61 62 6c 65 57 25 3a f2 64 |.. . tableW%:.d| 00010690 62 6f 78 5f 70 72 65 73 73 28 32 36 29 0d 09 07 |box_press(26)...| 000106a0 1d 20 20 c9 20 73 61 76 65 57 25 3a f2 64 62 6f |. . saveW%:.dbo| 000106b0 78 5f 70 72 65 73 73 28 32 29 0d 09 08 20 20 20 |x_press(2)... | 000106c0 c9 20 64 61 74 61 64 69 63 57 25 3a f2 64 61 74 |. datadicW%:.dat| 000106d0 61 64 69 63 5f 70 72 65 73 73 0d 09 09 1f 20 20 |adic_press.... | 000106e0 c9 20 70 72 69 6e 74 57 25 3a f2 64 62 6f 78 5f |. printW%:.dbox_| 000106f0 70 72 65 73 73 28 32 30 29 0d 09 0a 1f 20 20 c9 |press(20).... .| 00010700 20 6c 61 62 65 6c 57 25 3a f2 64 62 6f 78 5f 70 | labelW%:.dbox_p| 00010710 72 65 73 73 28 31 35 29 0d 09 0b 1e 20 20 c9 20 |ress(15).... . | 00010720 63 72 65 61 74 65 57 25 3a f2 63 72 65 61 74 65 |createW%:.create| 00010730 5f 70 72 65 73 73 0d 09 0c 1f 20 20 c9 20 61 63 |_press.... . ac| 00010740 63 65 73 73 57 25 3a f2 64 62 6f 78 5f 70 72 65 |cessW%:.dbox_pre| 00010750 73 73 28 33 29 0d 09 0d 1c 20 20 c9 20 6b 65 79 |ss(3).... . key| 00010760 57 25 3a f2 64 62 6f 78 5f 70 72 65 73 73 28 37 |W%:.dbox_press(7| 00010770 29 0d 09 0e 20 20 20 c9 20 73 61 76 65 73 75 62 |)... . savesub| 00010780 57 25 3a f2 64 62 6f 78 5f 70 72 65 73 73 28 32 |W%:.dbox_press(2| 00010790 29 0d 09 0f 1c 20 20 c9 20 6d 61 74 63 68 57 25 |).... . matchW%| 000107a0 3a f2 6d 61 74 63 68 5f 70 72 65 73 73 0d 09 10 |:.match_press...| 000107b0 1d 20 20 c9 20 6d 6f 76 65 57 25 3a f2 64 62 6f |. . moveW%:.dbo| 000107c0 78 5f 70 72 65 73 73 28 38 29 0d 09 11 1d 20 20 |x_press(8).... | 000107d0 c9 20 63 61 6c 63 57 25 3a f2 64 62 6f 78 5f 70 |. calcW%:.dbox_p| 000107e0 72 65 73 73 28 31 29 0d 09 12 1e 20 20 c9 20 6d |ress(1).... . m| 000107f0 65 72 67 65 57 25 3a f2 64 62 6f 78 5f 70 72 65 |ergeW%:.dbox_pre| 00010800 73 73 28 37 29 0d 09 13 1d 20 20 c9 20 73 69 7a |ss(7).... . siz| 00010810 65 57 25 3a f2 64 62 6f 78 5f 70 72 65 73 73 28 |eW%:.dbox_press(| 00010820 34 29 0d 09 14 1c 20 20 c9 20 63 73 76 57 25 3a |4).... . csvW%:| 00010830 f2 64 62 6f 78 5f 70 72 65 73 73 28 39 29 0d 09 |.dbox_press(9)..| 00010840 15 05 cb 0d 09 16 05 e1 0d 09 17 05 3a 0d 09 18 |............:...| 00010850 13 dd 20 f2 6b 65 79 70 61 64 5f 70 72 65 73 73 |.. .keypad_press| 00010860 0d 09 19 17 e7 20 6b 65 79 5f 70 72 65 73 73 65 |..... key_presse| 00010870 64 25 3d 31 33 20 8c 0d 09 1a 0e 20 20 c8 8e 20 |d%=13 ..... .. | 00010880 69 63 25 20 ca 0d 09 1b 21 20 20 20 20 c9 20 32 |ic% ....! . 2| 00010890 37 3a f2 6d 6f 75 73 65 28 30 2c 30 2c 34 2c 77 |7:.mouse(0,0,4,w| 000108a0 69 25 2c 32 38 29 0d 09 1c 21 20 20 20 20 c9 20 |i%,28)...! . | 000108b0 32 39 3a f2 6d 6f 75 73 65 28 30 2c 30 2c 34 2c |29:.mouse(0,0,4,| 000108c0 77 69 25 2c 33 30 29 0d 09 1d 07 20 20 cb 0d 09 |wi%,30).... ...| 000108d0 1e 29 20 20 cc 20 c8 99 20 22 57 69 6d 70 5f 50 |.) . .. "Wimp_P| 000108e0 72 6f 63 65 73 73 4b 65 79 22 2c 6b 65 79 5f 70 |rocessKey",key_p| 000108f0 72 65 73 73 65 64 25 0d 09 1f 05 cd 0d 09 20 05 |ressed%....... .| 00010900 e1 0d 09 21 05 3a 0d 09 22 11 dd 20 f2 6d 61 69 |...!.:..".. .mai| 00010910 6e 5f 70 72 65 73 73 0d 09 23 42 e7 20 ac 20 a4 |n_press..#B. . .| 00010920 73 65 6c 65 63 74 65 64 28 70 61 73 73 57 25 2c |selected(passW%,| 00010930 31 30 29 20 8c 20 c8 99 20 22 57 69 6d 70 5f 50 |10) . .. "Wimp_P| 00010940 72 6f 63 65 73 73 4b 65 79 22 2c 6b 65 79 5f 70 |rocessKey",key_p| 00010950 72 65 73 73 65 64 25 3a e1 0d 09 24 0b ea 20 69 |ressed%:...$.. i| 00010960 63 6f 6e 25 0d 09 25 38 e7 20 66 6c 61 73 68 25 |con%..%8. flash%| 00010970 20 8c 20 f2 64 65 73 65 6c 65 63 74 28 6d 61 69 | . .deselect(mai| 00010980 6e 57 25 2c 66 69 65 6c 64 25 28 66 6c 61 73 68 |nW%,field%(flash| 00010990 25 29 29 3a 66 6c 61 73 68 25 3d a3 0d 09 26 5d |%)):flash%=...&]| 000109a0 e7 20 6b 65 79 5f 70 72 65 73 73 65 64 25 3c 3e |. key_pressed%<>| 000109b0 33 39 32 20 8c 20 e7 20 a4 76 61 6c 69 64 61 74 |392 . . .validat| 000109c0 65 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c 54 |e(Fieldnumber%,T| 000109d0 25 2c 4e 24 29 3d a3 20 8c 20 e1 20 8b 20 f2 75 |%,N$)=. . . . .u| 000109e0 70 64 61 74 65 5f 63 61 6c 63 73 28 46 69 65 6c |pdate_calcs(Fiel| 000109f0 64 6e 75 6d 62 65 72 25 29 0d 09 27 15 c8 8e 20 |dnumber%)..'... | 00010a00 6b 65 79 5f 70 72 65 73 73 65 64 25 20 ca 0d 09 |key_pressed% ...| 00010a10 28 0b 20 20 c9 20 31 33 3a 0d 09 29 0e 20 20 c8 |(. . 13:..). .| 00010a20 8e 20 77 69 25 20 ca 0d 09 2a 11 20 20 20 20 c9 |. wi% ...*. .| 00010a30 20 6d 61 69 6e 57 25 3a 0d 09 2b 22 20 20 20 20 | mainW%:..+" | 00010a40 20 20 e7 20 46 69 65 6c 64 6e 75 6d 62 65 72 25 | . Fieldnumber%| 00010a50 3d 66 69 65 6c 64 73 25 20 8c 0d 09 2c 23 20 20 |=fields% ...,# | 00010a60 20 20 20 20 20 20 f2 63 6c 6f 73 65 5f 77 69 6e | .close_win| 00010a70 64 6f 77 28 72 65 6c 61 74 65 57 25 29 0d 09 2d |dow(relateW%)..-| 00010a80 1d 20 20 20 20 20 20 20 20 f2 64 69 73 70 6c 61 |. .displa| 00010a90 79 28 6b 65 79 25 2c 2d 31 29 0d 09 2e 0d 20 20 |y(key%,-1).... | 00010aa0 20 20 20 20 20 20 cc 0d 09 2f 0d 20 20 20 20 20 | .../. | 00010ab0 20 20 20 f5 0d 09 30 45 20 20 20 20 20 20 20 20 | ...0E | 00010ac0 20 20 46 69 65 6c 64 6e 75 6d 62 65 72 25 2b 3d | Fieldnumber%+=| 00010ad0 31 3a e7 20 46 69 65 6c 64 6e 75 6d 62 65 72 25 |1:. Fieldnumber%| 00010ae0 3e 66 69 65 6c 64 73 25 20 8c 20 46 69 65 6c 64 |>fields% . Field| 00010af0 6e 75 6d 62 65 72 25 3d 31 0d 09 31 28 20 20 20 |number%=1..1( | 00010b00 20 20 20 20 20 20 20 63 25 3d 63 68 61 72 74 79 | c%=charty| 00010b10 70 65 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 |pe%(Fieldnumber%| 00010b20 29 0d 09 32 32 20 20 20 20 20 20 20 20 fd 20 6c |)..22 . l| 00010b30 65 6e 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 |en%(Fieldnumber%| 00010b40 29 3e 30 20 80 20 28 63 25 3c 36 20 84 20 63 25 |)>0 . (c%<6 . c%| 00010b50 3d 38 29 0d 09 33 26 20 20 20 20 20 20 20 20 69 |=8)..3& i| 00010b60 63 6f 6e 25 3d 66 69 65 6c 64 25 28 46 69 65 6c |con%=field%(Fiel| 00010b70 64 6e 75 6d 62 65 72 25 29 0d 09 34 24 20 20 20 |dnumber%)..4$ | 00010b80 20 20 20 20 20 f2 73 65 74 5f 63 61 72 65 74 28 | .set_caret(| 00010b90 6d 61 69 6e 57 25 2c 69 63 6f 6e 25 29 0d 09 35 |mainW%,icon%)..5| 00010ba0 2a 20 20 20 20 20 20 20 20 e7 20 72 65 6c 61 74 |* . relat| 00010bb0 69 6f 6e 73 25 3d b9 20 8c 20 f2 72 65 6c 61 74 |ions%=. . .relat| 00010bc0 69 6f 6e 73 28 a3 29 0d 09 36 0b 20 20 20 20 20 |ions(.)..6. | 00010bd0 20 cd 0d 09 37 07 20 20 cb 0d 09 38 0c 20 20 c9 | ...7. ...8. .| 00010be0 20 33 39 38 3a 0d 09 39 07 20 20 f5 0d 09 3a 3f | 398:..9. ...:?| 00010bf0 20 20 20 20 46 69 65 6c 64 6e 75 6d 62 65 72 25 | Fieldnumber%| 00010c00 2b 3d 31 3a e7 20 46 69 65 6c 64 6e 75 6d 62 65 |+=1:. Fieldnumbe| 00010c10 72 25 3e 66 69 65 6c 64 73 25 20 8c 20 46 69 65 |r%>fields% . Fie| 00010c20 6c 64 6e 75 6d 62 65 72 25 3d 31 0d 09 3b 22 20 |ldnumber%=1..;" | 00010c30 20 20 20 63 25 3d 63 68 61 72 74 79 70 65 25 28 | c%=chartype%(| 00010c40 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 0d 09 3c |Fieldnumber%)..<| 00010c50 2c 20 20 fd 20 6c 65 6e 25 28 46 69 65 6c 64 6e |, . len%(Fieldn| 00010c60 75 6d 62 65 72 25 29 3e 30 20 80 20 28 63 25 3c |umber%)>0 . (c%<| 00010c70 36 20 84 20 63 25 3d 38 29 0d 09 3d 20 20 20 69 |6 . c%=8)..= i| 00010c80 63 6f 6e 25 3d 66 69 65 6c 64 25 28 46 69 65 6c |con%=field%(Fiel| 00010c90 64 6e 75 6d 62 65 72 25 29 0d 09 3e 1e 20 20 f2 |dnumber%)..>. .| 00010ca0 73 65 74 5f 63 61 72 65 74 28 6d 61 69 6e 57 25 |set_caret(mainW%| 00010cb0 2c 69 63 6f 6e 25 29 0d 09 3f 24 20 20 e7 20 72 |,icon%)..?$ . r| 00010cc0 65 6c 61 74 69 6f 6e 73 25 3d b9 20 8c 20 f2 72 |elations%=. . .r| 00010cd0 65 6c 61 74 69 6f 6e 73 28 a3 29 0d 09 40 0c 20 |elations(.)..@. | 00010ce0 20 c9 20 33 39 39 3a 0d 09 41 07 20 20 f5 0d 09 | . 399:..A. ...| 00010cf0 42 3f 20 20 20 20 46 69 65 6c 64 6e 75 6d 62 65 |B? Fieldnumbe| 00010d00 72 25 2d 3d 31 3a e7 20 46 69 65 6c 64 6e 75 6d |r%-=1:. Fieldnum| 00010d10 62 65 72 25 3c 31 20 8c 20 46 69 65 6c 64 6e 75 |ber%<1 . Fieldnu| 00010d20 6d 62 65 72 25 3d 66 69 65 6c 64 73 25 0d 09 43 |mber%=fields%..C| 00010d30 22 20 20 20 20 63 25 3d 63 68 61 72 74 79 70 65 |" c%=chartype| 00010d40 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 0d |%(Fieldnumber%).| 00010d50 09 44 2c 20 20 fd 20 6c 65 6e 25 28 46 69 65 6c |.D, . len%(Fiel| 00010d60 64 6e 75 6d 62 65 72 25 29 3e 30 20 80 20 28 63 |dnumber%)>0 . (c| 00010d70 25 3c 36 20 84 20 63 25 3d 38 29 0d 09 45 20 20 |%<6 . c%=8)..E | 00010d80 20 69 63 6f 6e 25 3d 66 69 65 6c 64 25 28 46 69 | icon%=field%(Fi| 00010d90 65 6c 64 6e 75 6d 62 65 72 25 29 0d 09 46 1e 20 |eldnumber%)..F. | 00010da0 20 f2 73 65 74 5f 63 61 72 65 74 28 6d 61 69 6e | .set_caret(main| 00010db0 57 25 2c 69 63 6f 6e 25 29 0d 09 47 24 20 20 e7 |W%,icon%)..G$ .| 00010dc0 20 72 65 6c 61 74 69 6f 6e 73 25 3d b9 20 8c 20 | relations%=. . | 00010dd0 f2 72 65 6c 61 74 69 6f 6e 73 28 a3 29 0d 09 48 |.relations(.)..H| 00010de0 34 20 20 c9 20 33 38 39 3a e7 20 41 63 63 65 73 |4 . 389:. Acces| 00010df0 73 25 20 8c 20 f2 73 68 6f 77 5f 6d 65 6e 75 28 |s% . .show_menu(| 00010e00 63 68 61 6e 67 65 57 25 2c 35 30 30 2c 36 30 30 |changeW%,500,600| 00010e10 29 0d 09 49 0c 20 20 c9 20 34 30 35 3a 0d 09 4a |)..I. . 405:..J| 00010e20 1a 20 20 e7 20 a9 28 70 72 69 6e 74 6f 72 64 65 |. . .(printorde| 00010e30 72 24 29 3d 32 20 8c 0d 09 4b 42 20 20 20 20 46 |r$)=2 ...KB F| 00010e40 69 65 6c 64 6e 75 6d 62 65 72 25 3d a4 66 6e 75 |ieldnumber%=.fnu| 00010e50 6d 28 70 72 69 6e 74 6f 72 64 65 72 24 29 3a 56 |m(printorder$):V| 00010e60 25 3d 63 68 61 72 74 79 70 65 25 28 46 69 65 6c |%=chartype%(Fiel| 00010e70 64 6e 75 6d 62 65 72 25 29 0d 09 4c 0f 20 20 20 |dnumber%)..L. | 00010e80 20 c8 8e 20 56 25 20 ca 0d 09 4d 12 20 20 20 20 | .. V% ...M. | 00010e90 20 20 c9 20 33 36 2c 33 39 3a 0d 09 4e 46 20 20 | . 36,39:..NF | 00010ea0 20 20 20 20 e7 20 a4 62 6c 6f 62 5f 70 61 74 68 | . .blob_path| 00010eb0 28 a3 2c 24 64 61 74 61 62 61 73 65 25 2c 52 45 |(.,$database%,RE| 00010ec0 43 25 2c 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c |C%,Fieldnumber%,| 00010ed0 56 25 2c 6f 62 6a 65 63 74 24 29 3e 3d 30 20 8c |V%,object$)>=0 .| 00010ee0 0d 09 4f 1e 20 20 20 20 20 20 20 20 f2 73 65 74 |..O. .set| 00010ef0 5f 75 70 5f 66 69 65 6c 64 5f 6d 65 6e 75 0d 09 |_up_field_menu..| 00010f00 50 26 20 20 20 20 20 20 20 20 f2 73 68 6f 77 5f |P& .show_| 00010f10 6d 65 6e 75 28 73 61 76 65 57 25 2c 35 30 30 2c |menu(saveW%,500,| 00010f20 36 30 30 29 0d 09 51 0b 20 20 20 20 20 20 cd 0d |600)..Q. ..| 00010f30 09 52 09 20 20 20 20 cb 0d 09 53 07 20 20 cd 0d |.R. ...S. ..| 00010f40 09 54 17 20 20 c9 20 34 30 38 3a f2 76 61 6c 5f |.T. . 408:.val_| 00010f50 6f 6e 5f 6f 66 66 0d 09 55 24 20 20 c9 20 33 38 |on_off..U$ . 38| 00010f60 37 3a f2 6d 6f 75 73 65 28 30 2c 30 2c 34 2c 6b |7:.mouse(0,0,4,k| 00010f70 65 79 70 61 64 57 25 2c 32 29 0d 09 56 24 20 20 |eypadW%,2)..V$ | 00010f80 c9 20 34 30 33 3a f2 6d 6f 75 73 65 28 30 2c 30 |. 403:.mouse(0,0| 00010f90 2c 34 2c 6b 65 79 70 61 64 57 25 2c 33 29 0d 09 |,4,keypadW%,3)..| 00010fa0 57 24 20 20 c9 20 33 38 36 3a f2 6d 6f 75 73 65 |W$ . 386:.mouse| 00010fb0 28 30 2c 30 2c 34 2c 6b 65 79 70 61 64 57 25 2c |(0,0,4,keypadW%,| 00010fc0 34 29 0d 09 58 24 20 20 c9 20 34 30 32 3a f2 6d |4)..X$ . 402:.m| 00010fd0 6f 75 73 65 28 30 2c 30 2c 34 2c 6b 65 79 70 61 |ouse(0,0,4,keypa| 00010fe0 64 57 25 2c 35 29 0d 09 59 24 20 20 c9 20 33 39 |dW%,5)..Y$ . 39| 00010ff0 31 3a f2 6d 6f 75 73 65 28 30 2c 30 2c 34 2c 6b |1:.mouse(0,0,4,k| 00011000 65 79 70 61 64 57 25 2c 36 29 0d 09 5a 24 20 20 |eypadW%,6)..Z$ | 00011010 c9 20 34 30 37 3a f2 6d 6f 75 73 65 28 30 2c 30 |. 407:.mouse(0,0| 00011020 2c 34 2c 6b 65 79 70 61 64 57 25 2c 37 29 0d 09 |,4,keypadW%,7)..| 00011030 5b 24 20 20 c9 20 33 39 33 3a f2 6d 6f 75 73 65 |[$ . 393:.mouse| 00011040 28 30 2c 30 2c 34 2c 6b 65 79 70 61 64 57 25 2c |(0,0,4,keypadW%,| 00011050 38 29 0d 09 5c 24 20 20 c9 20 34 30 39 3a f2 6d |8)..\$ . 409:.m| 00011060 6f 75 73 65 28 30 2c 30 2c 34 2c 6b 65 79 70 61 |ouse(0,0,4,keypa| 00011070 64 57 25 2c 39 29 0d 09 5d 25 20 20 c9 20 33 38 |dW%,9)..]% . 38| 00011080 38 3a f2 6d 6f 75 73 65 28 30 2c 30 2c 34 2c 6b |8:.mouse(0,0,4,k| 00011090 65 79 70 61 64 57 25 2c 31 30 29 0d 09 5e 25 20 |eypadW%,10)..^% | 000110a0 20 c9 20 34 30 34 3a f2 6d 6f 75 73 65 28 30 2c | . 404:.mouse(0,| 000110b0 30 2c 34 2c 6b 65 79 70 61 64 57 25 2c 31 31 29 |0,4,keypadW%,11)| 000110c0 0d 09 5f 25 20 20 c9 20 34 32 30 3a f2 6d 6f 75 |.._% . 420:.mou| 000110d0 73 65 28 30 2c 30 2c 34 2c 6b 65 79 70 61 64 57 |se(0,0,4,keypadW| 000110e0 25 2c 31 32 29 0d 09 60 25 20 20 c9 20 33 38 35 |%,12)..`% . 385| 000110f0 3a f2 6d 6f 75 73 65 28 30 2c 30 2c 34 2c 6b 65 |:.mouse(0,0,4,ke| 00011100 79 70 61 64 57 25 2c 31 33 29 0d 09 61 25 20 20 |ypadW%,13)..a% | 00011110 c9 20 34 30 31 3a f2 6d 6f 75 73 65 28 30 2c 30 |. 401:.mouse(0,0| 00011120 2c 31 2c 6b 65 79 70 61 64 57 25 2c 31 33 29 0d |,1,keypadW%,13).| 00011130 09 62 25 20 20 c9 20 34 35 38 3a f2 6d 6f 75 73 |.b% . 458:.mous| 00011140 65 28 30 2c 30 2c 34 2c 6b 65 79 70 61 64 57 25 |e(0,0,4,keypadW%| 00011150 2c 31 34 29 0d 09 63 25 20 20 c9 20 33 39 30 3a |,14)..c% . 390:| 00011160 f2 6d 6f 75 73 65 28 30 2c 30 2c 34 2c 6b 65 79 |.mouse(0,0,4,key| 00011170 70 61 64 57 25 2c 31 35 29 0d 09 64 25 20 20 c9 |padW%,15)..d% .| 00011180 20 34 30 36 3a f2 6d 6f 75 73 65 28 30 2c 30 2c | 406:.mouse(0,0,| 00011190 34 2c 6b 65 79 70 61 64 57 25 2c 31 36 29 0d 09 |4,keypadW%,16)..| 000111a0 65 25 20 20 c9 20 34 32 32 3a f2 6d 6f 75 73 65 |e% . 422:.mouse| 000111b0 28 30 2c 30 2c 34 2c 6b 65 79 70 61 64 57 25 2c |(0,0,4,keypadW%,| 000111c0 31 37 29 0d 09 66 25 20 20 c9 20 33 39 32 3a f2 |17)..f% . 392:.| 000111d0 6d 6f 75 73 65 28 30 2c 30 2c 34 2c 6b 65 79 70 |mouse(0,0,4,keyp| 000111e0 61 64 57 25 2c 31 38 29 0d 09 67 17 20 20 c9 20 |adW%,18)..g. . | 000111f0 33 38 34 3a f2 70 72 69 6e 74 5f 74 68 69 73 0d |384:.print_this.| 00011200 09 68 12 20 20 c9 20 34 30 30 3a f2 6d 61 74 63 |.h. . 400:.matc| 00011210 68 0d 09 69 21 20 20 c9 20 34 31 36 3a f2 6f 70 |h..i! . 416:.op| 00011220 65 6e 5f 77 69 6e 64 6f 77 28 70 72 69 6e 74 57 |en_window(printW| 00011230 25 29 0d 09 6a 29 20 20 7f 3a c8 99 20 22 57 69 |%)..j) .:.. "Wi| 00011240 6d 70 5f 50 72 6f 63 65 73 73 4b 65 79 22 2c 6b |mp_ProcessKey",k| 00011250 65 79 5f 70 72 65 73 73 65 64 25 0d 09 6b 05 cb |ey_pressed%..k..| 00011260 0d 09 6c 20 c8 8e 20 63 68 61 72 74 79 70 65 25 |..l .. chartype%| 00011270 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 20 ca |(Fieldnumber%) .| 00011280 0d 09 6d 22 20 20 c9 20 32 2c 34 3a c8 99 20 22 |..m" . 2,4:.. "| 00011290 4f 53 5f 42 79 74 65 22 2c 32 30 32 2c 30 2c 32 |OS_Byte",202,0,2| 000112a0 33 39 0d 09 6e 1f 20 20 7f 3a c8 99 20 22 4f 53 |39..n. .:.. "OS| 000112b0 5f 42 79 74 65 22 2c 32 30 32 2c 31 36 2c 31 31 |_Byte",202,16,11| 000112c0 31 0d 09 6f 05 cb 0d 09 70 14 c8 99 20 22 4f 53 |1..o....p... "OS| 000112d0 5f 42 79 74 65 22 2c 31 31 38 0d 09 71 15 c8 99 |_Byte",118..q...| 000112e0 20 22 4f 53 5f 42 79 74 65 22 2c 31 35 2c 30 0d | "OS_Byte",15,0.| 000112f0 09 72 05 e1 0d 09 73 05 3a 0d 09 74 16 dd 20 f2 |.r....s.:..t.. .| 00011300 64 62 6f 78 5f 70 72 65 73 73 28 6f 6b 25 29 0d |dbox_press(ok%).| 00011310 09 75 15 c8 8e 20 6b 65 79 5f 70 72 65 73 73 65 |.u... key_presse| 00011320 64 25 20 ca 0d 09 76 43 20 20 c9 20 31 33 3a e7 |d% ...vC . 13:.| 00011330 20 a4 6e 65 78 74 5f 77 72 69 74 65 61 62 6c 65 | .next_writeable| 00011340 28 77 69 25 2c 69 63 25 2c 31 2c 31 29 3d b9 20 |(wi%,ic%,1,1)=. | 00011350 8c 20 f2 6d 6f 75 73 65 28 30 2c 30 2c 34 2c 77 |. .mouse(0,0,4,w| 00011360 69 25 2c 6f 6b 25 29 0d 09 77 33 20 20 c9 20 32 |i%,ok%)..w3 . 2| 00011370 37 3a f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 |7:.close_window(| 00011380 77 69 25 29 3a f2 73 65 74 5f 63 61 72 65 74 28 |wi%):.set_caret(| 00011390 6d 61 69 6e 57 25 2c 2d 31 29 0d 09 78 2b 20 20 |mainW%,-1)..x+ | 000113a0 c9 20 33 39 38 3a 66 25 3d a4 6e 65 78 74 5f 77 |. 398:f%=.next_w| 000113b0 72 69 74 65 61 62 6c 65 28 77 69 25 2c 69 63 25 |riteable(wi%,ic%| 000113c0 2c 31 2c 30 29 0d 09 79 2c 20 20 c9 20 33 39 39 |,1,0)..y, . 399| 000113d0 3a 66 25 3d a4 6e 65 78 74 5f 77 72 69 74 65 61 |:f%=.next_writea| 000113e0 62 6c 65 28 77 69 25 2c 69 63 25 2c 2d 31 2c 30 |ble(wi%,ic%,-1,0| 000113f0 29 0d 09 7a 29 20 20 7f 20 c8 99 20 22 57 69 6d |)..z) . .. "Wim| 00011400 70 5f 50 72 6f 63 65 73 73 4b 65 79 22 2c 6b 65 |p_ProcessKey",ke| 00011410 79 5f 70 72 65 73 73 65 64 25 0d 09 7b 05 cb 0d |y_pressed%..{...| 00011420 09 7c 05 e1 0d 09 7d 05 3a 0d 09 7e 14 dd 20 f2 |.|....}.:..~.. .| 00011430 64 61 74 61 64 69 63 5f 70 72 65 73 73 0d 09 7f |datadic_press...| 00011440 0c ea 20 69 63 6f 6e 73 25 0d 09 80 1f 69 63 6f |.. icons%....ico| 00011450 6e 73 25 3d 52 6f 77 73 25 2a 28 54 61 62 46 69 |ns%=Rows%*(TabFi| 00011460 65 6c 64 73 25 2b 31 29 0d 09 81 15 c8 8e 20 6b |elds%+1)...... k| 00011470 65 79 5f 70 72 65 73 73 65 64 25 20 ca 0d 09 82 |ey_pressed% ....| 00011480 0b 20 20 c9 20 31 33 3a 0d 09 83 32 20 20 e7 20 |. . 13:...2 . | 00011490 69 63 25 3c 69 63 6f 6e 73 25 2d 31 20 8c 20 f2 |ic%<icons%-1 . .| 000114a0 73 65 74 5f 63 61 72 65 74 28 64 61 74 61 64 69 |set_caret(datadi| 000114b0 63 57 25 2c 69 63 25 2b 31 29 0d 09 84 0c 20 20 |cW%,ic%+1).... | 000114c0 c9 20 33 39 38 3a 0d 09 85 48 20 20 e7 20 69 63 |. 398:...H . ic| 000114d0 25 3c 69 63 6f 6e 73 25 2d 54 61 62 46 69 65 6c |%<icons%-TabFiel| 000114e0 64 73 25 2d 31 20 8c 20 f2 73 65 74 5f 63 61 72 |ds%-1 . .set_car| 000114f0 65 74 28 64 61 74 61 64 69 63 57 25 2c 69 63 25 |et(datadicW%,ic%| 00011500 2b 54 61 62 46 69 65 6c 64 73 25 2b 31 29 0d 09 |+TabFields%+1)..| 00011510 86 0c 20 20 c9 20 33 39 39 3a 0d 09 87 42 20 20 |.. . 399:...B | 00011520 e7 20 69 63 25 3e 3d 54 61 62 46 69 65 6c 64 73 |. ic%>=TabFields| 00011530 25 2b 31 20 8c 20 f2 73 65 74 5f 63 61 72 65 74 |%+1 . .set_caret| 00011540 28 64 61 74 61 64 69 63 57 25 2c 69 63 25 2d 54 |(datadicW%,ic%-T| 00011550 61 62 46 69 65 6c 64 73 25 2d 31 29 0d 09 88 29 |abFields%-1)...)| 00011560 20 20 7f 3a c8 99 20 22 57 69 6d 70 5f 50 72 6f | .:.. "Wimp_Pro| 00011570 63 65 73 73 4b 65 79 22 2c 6b 65 79 5f 70 72 65 |cessKey",key_pre| 00011580 73 73 65 64 25 0d 09 89 05 cb 0d 09 8a 05 e1 0d |ssed%...........| 00011590 09 8b 05 3a 0d 09 8c 13 dd 20 f2 63 72 65 61 74 |...:..... .creat| 000115a0 65 5f 70 72 65 73 73 0d 09 8d 0a c8 8e 20 b9 20 |e_press...... . | 000115b0 ca 0d 09 8e 3d 20 20 c9 20 a4 73 68 61 64 65 64 |....= . .shaded| 000115c0 28 77 69 25 2c 32 39 29 3a e7 20 ac 20 a4 73 68 |(wi%,29):. . .sh| 000115d0 61 64 65 64 28 77 69 25 2c 31 38 29 20 8c 20 f2 |aded(wi%,18) . .| 000115e0 64 62 6f 78 5f 70 72 65 73 73 28 31 38 29 0d 09 |dbox_press(18)..| 000115f0 8f 2d 20 20 7f 3a e7 20 ac 20 a4 73 68 61 64 65 |.- .:. . .shade| 00011600 64 28 77 69 25 2c 32 39 29 20 8c 20 f2 64 62 6f |d(wi%,29) . .dbo| 00011610 78 5f 70 72 65 73 73 28 32 39 29 0d 09 90 05 cb |x_press(29).....| 00011620 0d 09 91 05 e1 0d 09 92 05 3a 0d 09 93 12 dd 20 |.........:..... | 00011630 f2 6d 61 74 63 68 5f 70 72 65 73 73 0d 09 94 15 |.match_press....| 00011640 c8 8e 20 6b 65 79 5f 70 72 65 73 73 65 64 25 20 |.. key_pressed% | 00011650 ca 0d 09 95 22 20 20 c9 20 31 33 3a f2 6d 6f 75 |...." . 13:.mou| 00011660 73 65 28 30 2c 30 2c 34 2c 6d 61 74 63 68 57 25 |se(0,0,4,matchW%| 00011670 2c 31 29 0d 09 96 46 20 20 c9 20 32 37 3a f2 63 |,1)...F . 27:.c| 00011680 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 6d 61 74 63 |lose_window(matc| 00011690 68 57 25 29 3a c8 99 20 22 57 69 6d 70 5f 53 65 |hW%):.. "Wimp_Se| 000116a0 74 43 61 72 65 74 50 6f 73 69 74 69 6f 6e 22 2c |tCaretPosition",| 000116b0 6d 61 69 6e 57 25 2c 2d 31 0d 09 97 17 20 20 c9 |mainW%,-1.... .| 000116c0 20 33 38 34 3a f2 70 72 69 6e 74 5f 74 68 69 73 | 384:.print_this| 000116d0 0d 09 98 29 20 20 7f 3a c8 99 20 22 57 69 6d 70 |...) .:.. "Wimp| 000116e0 5f 50 72 6f 63 65 73 73 4b 65 79 22 2c 6b 65 79 |_ProcessKey",key| 000116f0 5f 70 72 65 73 73 65 64 25 0d 09 99 05 cb 0d 09 |_pressed%.......| 00011700 9a 05 e1 0d 09 9b 05 3a 0d 09 9c 12 dd 20 f2 6d |.......:..... .m| 00011710 65 6e 75 5f 73 65 6c 65 63 74 0d 09 9d 16 ea 20 |enu_select..... | 00011720 68 61 6e 64 6c 65 25 2c 50 25 2c 51 25 2c 49 25 |handle%,P%,Q%,I%| 00011730 0d 09 9e 26 63 68 6f 69 63 65 31 25 3d 21 62 6c |...&choice1%=!bl| 00011740 6f 63 6b 25 3a 63 68 6f 69 63 65 32 25 3d 62 6c |ock%:choice2%=bl| 00011750 6f 63 6b 25 21 34 0d 09 9f 28 63 68 6f 69 63 65 |ock%!4...(choice| 00011760 33 25 3d 62 6c 6f 63 6b 25 21 38 3a 63 68 6f 69 |3%=block%!8:choi| 00011770 63 65 34 25 3d 62 6c 6f 63 6b 25 21 31 32 0d 09 |ce4%=block%!12..| 00011780 a0 08 50 25 3d 31 0d 09 a1 35 c8 99 20 22 57 69 |..P%=1...5.. "Wi| 00011790 6d 70 5f 44 65 63 6f 64 65 4d 65 6e 75 22 2c 2c |mp_DecodeMenu",,| 000117a0 6d 65 6e 75 68 61 6e 64 6c 65 25 2c 62 6c 6f 63 |menuhandle%,bloc| 000117b0 6b 25 2c 63 68 6f 69 63 65 73 25 0d 09 a2 0e e3 |k%,choices%.....| 000117c0 20 49 25 3d 31 20 b8 20 34 0d 09 a3 1d 20 20 51 | I%=1 . 4.... Q| 000117d0 25 3d a7 24 63 68 6f 69 63 65 73 25 2c 22 2e 22 |%=.$choices%,"."| 000117e0 2c 50 25 2b 31 29 0d 09 a4 26 20 20 63 68 6f 69 |,P%+1)...& choi| 000117f0 63 65 24 28 49 25 29 3d c1 24 63 68 6f 69 63 65 |ce$(I%)=.$choice| 00011800 73 25 2c 50 25 2c 51 25 2d 50 25 29 0d 09 a5 0d |s%,P%,Q%-P%)....| 00011810 20 20 50 25 3d 51 25 2b 31 0d 09 a6 08 ed 20 49 | P%=Q%+1..... I| 00011820 25 0d 09 a7 24 c8 99 20 22 57 69 6d 70 5f 47 65 |%...$.. "Wimp_Ge| 00011830 74 50 6f 69 6e 74 65 72 49 6e 66 6f 22 2c 2c 62 |tPointerInfo",,b| 00011840 6c 6f 63 6b 25 0d 09 a8 14 72 65 64 6f 25 3d 62 |lock%....redo%=b| 00011850 6c 6f 63 6b 25 21 38 3d 31 0d 09 a9 14 c8 8e 20 |lock%!8=1...... | 00011860 6d 65 6e 75 68 61 6e 64 6c 65 25 20 ca 0d 09 aa |menuhandle% ....| 00011870 11 20 20 c9 20 6d 65 6e 75 25 28 30 29 3a 0d 09 |. . menu%(0):..| 00011880 ab 15 20 20 c8 8e 20 63 68 6f 69 63 65 24 28 31 |.. .. choice$(1| 00011890 29 20 ca 0d 09 ac 38 20 20 20 20 c9 20 22 48 65 |) ....8 . "He| 000118a0 6c 70 22 3a c8 99 20 22 57 69 6d 70 5f 53 74 61 |lp":.. "Wimp_Sta| 000118b0 72 74 54 61 73 6b 22 2c 22 3c 50 62 61 73 65 24 |rtTask","<Pbase$| 000118c0 44 69 72 3e 2e 21 48 65 6c 70 22 0d 09 ad 47 20 |Dir>.!Help"...G | 000118d0 20 20 20 c9 20 22 53 61 76 65 20 63 68 6f 69 63 | . "Save choic| 000118e0 65 73 22 3a f2 73 61 76 65 5f 63 68 6f 69 63 65 |es":.save_choice| 000118f0 73 28 22 3c 50 62 61 73 65 24 44 69 72 3e 2e 52 |s("<Pbase$Dir>.R| 00011900 65 73 6f 75 72 63 65 73 2e 43 68 6f 69 63 65 73 |esources.Choices| 00011910 22 29 0d 09 ae 4a 20 20 20 20 c9 20 22 44 65 66 |")...J . "Def| 00011920 61 75 6c 74 20 63 68 6f 69 63 65 73 22 3a f2 67 |ault choices":.g| 00011930 65 74 5f 63 68 6f 69 63 65 73 28 22 3c 50 62 61 |et_choices("<Pba| 00011940 73 65 24 44 69 72 3e 2e 52 65 73 6f 75 72 63 65 |se$Dir>.Resource| 00011950 73 2e 44 65 66 61 75 6c 74 73 22 29 0d 09 af 16 |s.Defaults")....| 00011960 20 20 20 20 c9 20 22 55 74 69 6c 69 74 69 65 73 | . "Utilities| 00011970 22 3a 0d 09 b0 17 20 20 20 20 c8 8e 20 63 68 6f |":.... .. cho| 00011980 69 63 65 24 28 32 29 20 ca 0d 09 b1 1e 20 20 20 |ice$(2) ..... | 00011990 20 20 20 c9 20 22 4e 65 77 20 70 72 69 6d 61 72 | . "New primar| 000119a0 79 20 6b 65 79 22 3a 0d 09 b2 1f 20 20 20 20 20 |y key":.... | 000119b0 20 24 4b 65 79 54 69 74 6c 65 25 3d 63 68 6f 69 | $KeyTitle%=choi| 000119c0 63 65 24 28 32 29 0d 09 b3 2d 20 20 20 20 20 20 |ce$(2)...- | 000119d0 6b 65 79 66 75 6e 63 24 3d 63 68 6f 69 63 65 24 |keyfunc$=choice$| 000119e0 28 32 29 3a f2 73 65 74 5f 6b 65 79 64 61 74 61 |(2):.set_keydata| 000119f0 28 30 29 0d 09 b4 1d 20 20 20 20 20 20 f2 73 68 |(0).... .sh| 00011a00 61 64 65 5f 6b 65 79 5f 69 63 6f 6e 73 28 b9 29 |ade_key_icons(.)| 00011a10 0d 09 b5 1e 20 20 20 20 20 20 e7 20 28 70 72 65 |.... . (pre| 00011a20 73 65 6e 74 25 20 80 20 32 29 3d 32 20 8c 0d 09 |sent% . 2)=2 ...| 00011a30 b6 2f 20 20 20 20 20 20 20 20 f2 73 65 6c 65 63 |./ .selec| 00011a40 74 28 6b 65 79 57 25 2c 38 29 3a f2 64 65 73 65 |t(keyW%,8):.dese| 00011a50 6c 65 63 74 28 6b 65 79 57 25 2c 39 29 0d 09 b7 |lect(keyW%,9)...| 00011a60 3b 20 20 20 20 20 20 20 20 f2 69 63 6f 6e 5f 62 |; .icon_b| 00011a70 69 74 28 32 32 2c 6b 65 79 57 25 2c 38 2c b9 29 |it(22,keyW%,8,.)| 00011a80 3a f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 6b 65 |:.icon_bit(22,ke| 00011a90 79 57 25 2c 39 2c b9 29 0d 09 b8 0d 20 20 20 20 |yW%,9,.).... | 00011aa0 20 20 20 20 cc 0d 09 b9 2f 20 20 20 20 20 20 20 | ..../ | 00011ab0 20 f2 73 65 6c 65 63 74 28 6b 65 79 57 25 2c 39 | .select(keyW%,9| 00011ac0 29 3a f2 64 65 73 65 6c 65 63 74 28 6b 65 79 57 |):.deselect(keyW| 00011ad0 25 2c 38 29 0d 09 ba 3b 20 20 20 20 20 20 20 20 |%,8)...; | 00011ae0 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 6b 65 79 |.icon_bit(22,key| 00011af0 57 25 2c 38 2c a3 29 3a f2 69 63 6f 6e 5f 62 69 |W%,8,.):.icon_bi| 00011b00 74 28 32 32 2c 6b 65 79 57 25 2c 39 2c a3 29 0d |t(22,keyW%,9,.).| 00011b10 09 bb 0b 20 20 20 20 20 20 cd 0d 09 bc 34 20 20 |... ....4 | 00011b20 20 20 20 20 f2 73 65 74 5f 68 65 69 67 68 74 28 | .set_height(| 00011b30 6b 65 79 57 25 2c 37 30 30 29 3a f2 73 65 74 5f |keyW%,700):.set_| 00011b40 63 61 72 65 74 28 6b 65 79 57 25 2c 32 29 0d 09 |caret(keyW%,2)..| 00011b50 bd 20 20 20 20 20 20 20 c9 20 22 4e 65 77 20 72 |. . "New r| 00011b60 65 63 6f 72 64 20 66 6f 72 6d 61 74 22 3a 0d 09 |ecord format":..| 00011b70 be 21 20 20 20 20 20 20 f2 63 6c 6f 73 65 5f 77 |.! .close_w| 00011b80 69 6e 64 6f 77 28 72 65 66 6f 72 6d 57 25 29 0d |indow(reformW%).| 00011b90 09 bf 20 20 20 20 20 20 20 e7 20 a4 63 6f 6e 66 |.. . .conf| 00011ba0 69 72 6d 28 a4 6d 73 67 28 32 38 29 29 20 8c 0d |irm(.msg(28)) ..| 00011bb0 09 c0 1e 20 20 20 20 20 20 20 20 72 65 66 6f 72 |... refor| 00011bc0 6d 24 3d 22 52 65 66 6f 72 6d 61 74 22 0d 09 c1 |m$="Reformat"...| 00011bd0 2e 20 20 20 20 20 20 20 20 24 52 65 66 6d 54 69 |. $RefmTi| 00011be0 74 6c 65 25 3d 22 43 68 61 6e 67 65 20 72 65 63 |tle%="Change rec| 00011bf0 6f 72 64 20 66 6f 72 6d 61 74 22 0d 09 c2 25 20 |ord format"...% | 00011c00 20 20 20 20 20 20 20 f2 73 65 74 5f 68 65 69 67 | .set_heig| 00011c10 68 74 28 72 65 66 6f 72 6d 57 25 2c 32 32 30 29 |ht(reformW%,220)| 00011c20 0d 09 c3 0b 20 20 20 20 20 20 cd 0d 09 c4 1c 20 |.... ..... | 00011c30 20 20 20 20 20 c9 20 22 41 64 6a 75 73 74 20 66 | . "Adjust f| 00011c40 6f 72 6d 61 74 22 3a 0d 09 c5 17 20 20 20 20 20 |ormat":.... | 00011c50 20 f2 61 64 6a 75 73 74 5f 6f 6e 28 b9 29 0d 09 | .adjust_on(.)..| 00011c60 c6 1b 20 20 20 20 20 20 f2 64 69 73 70 6c 61 79 |.. .display| 00011c70 28 6b 65 79 25 2c 2d 31 29 0d 09 c7 35 20 20 20 |(key%,-1)...5 | 00011c80 20 20 20 f2 61 6c 74 65 72 5f 66 6c 61 67 73 28 | .alter_flags(| 00011c90 26 31 37 30 31 36 37 33 31 2c 26 30 37 30 30 36 |&17016731,&07006| 00011ca0 35 33 35 2c 26 31 37 30 30 36 35 33 42 29 0d 09 |535,&1700653B)..| 00011cb0 c8 1d 20 20 20 20 20 20 c9 20 22 4d 65 72 67 65 |.. . "Merge| 00011cc0 20 64 61 74 61 62 61 73 65 22 3a 0d 09 c9 21 20 | database":...! | 00011cd0 20 20 20 20 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 | .close_wind| 00011ce0 6f 77 28 72 65 66 6f 72 6d 57 25 29 0d 09 ca 19 |ow(reformW%)....| 00011cf0 20 20 20 20 20 20 72 65 66 6f 72 6d 24 3d 22 4d | reform$="M| 00011d00 65 72 67 65 22 0d 09 cb 26 20 20 20 20 20 20 24 |erge"...& $| 00011d10 52 65 66 6d 54 69 74 6c 65 25 3d 22 4d 65 72 67 |RefmTitle%="Merg| 00011d20 65 20 64 61 74 61 62 61 73 65 22 0d 09 cc 23 20 |e database"...# | 00011d30 20 20 20 20 20 f2 73 65 74 5f 68 65 69 67 68 74 | .set_height| 00011d40 28 72 65 66 6f 72 6d 57 25 2c 33 36 30 29 0d 09 |(reformW%,360)..| 00011d50 cd 1c 20 20 20 20 20 20 c9 20 22 42 61 6c 61 6e |.. . "Balan| 00011d60 63 65 20 69 6e 64 65 78 22 3a 0d 09 ce 19 20 20 |ce index":.... | 00011d70 20 20 20 20 c8 8e 20 63 68 6f 69 63 65 24 28 33 | .. choice$(3| 00011d80 29 20 ca 0d 09 cf 1a 20 20 20 20 20 20 20 20 c9 |) ..... .| 00011d90 20 22 41 75 74 6f 6d 61 74 69 63 22 3a 0d 09 d0 | "Automatic":...| 00011da0 1a 20 20 20 20 20 20 20 20 e7 20 63 68 6f 69 63 |. . choic| 00011db0 65 34 25 3d 30 20 8c 0d 09 d1 21 20 20 20 20 20 |e4%=0 ....! | 00011dc0 20 20 20 20 20 f2 73 65 74 5f 61 75 74 6f 62 61 | .set_autoba| 00011dd0 6c 61 6e 63 65 28 b9 29 0d 09 d2 38 20 20 20 20 |lance(.)...8 | 00011de0 20 20 20 20 20 20 cc 20 f2 73 65 74 5f 61 75 74 | . .set_aut| 00011df0 6f 62 61 6c 61 6e 63 65 28 ac 20 a4 74 69 63 6b |obalance(. .tick| 00011e00 65 64 28 6d 65 6e 75 25 28 32 31 29 2c 30 29 29 |ed(menu%(21),0))| 00011e10 0d 09 d3 0d 20 20 20 20 20 20 20 20 cd 0d 09 d4 |.... ....| 00011e20 28 20 20 20 20 20 20 20 20 c9 20 22 52 69 67 68 |( . "Righ| 00011e30 74 20 6e 6f 77 22 3a f2 62 61 6c 61 6e 63 65 28 |t now":.balance(| 00011e40 6b 65 79 25 29 0d 09 d5 0b 20 20 20 20 20 20 cb |key%).... .| 00011e50 0d 09 d6 1a 20 20 20 20 20 20 c9 20 22 50 72 69 |.... . "Pri| 00011e60 6e 74 20 69 6e 64 65 78 22 3a 0d 09 d7 19 20 20 |nt index":.... | 00011e70 20 20 20 20 c8 8e 20 63 68 6f 69 63 65 24 28 33 | .. choice$(3| 00011e80 29 20 ca 0d 09 d8 19 20 20 20 20 20 20 20 20 c9 |) ..... .| 00011e90 20 22 43 6f 6d 70 6c 65 74 65 22 3a 0d 09 d9 29 | "Complete":...)| 00011ea0 20 20 20 20 20 20 20 20 f2 70 72 69 6e 74 5f 74 | .print_t| 00011eb0 72 65 65 28 6b 65 79 25 2c 66 69 6c 65 25 2c 22 |ree(key%,file%,"| 00011ec0 41 4c 4c 22 29 0d 09 da 1c 20 20 20 20 20 20 20 |ALL").... | 00011ed0 20 c9 20 22 54 6f 74 61 6c 73 20 6f 6e 6c 79 22 | . "Totals only"| 00011ee0 3a 0d 09 db 2c 20 20 20 20 20 20 20 20 f2 70 72 |:..., .pr| 00011ef0 69 6e 74 5f 74 72 65 65 28 6b 65 79 25 2c 66 69 |int_tree(key%,fi| 00011f00 6c 65 25 2c 22 54 4f 54 41 4c 53 22 29 0d 09 dc |le%,"TOTALS")...| 00011f10 0b 20 20 20 20 20 20 cb 0d 09 dd 35 20 20 20 20 |. ....5 | 00011f20 20 20 c9 20 22 46 69 6e 64 20 64 75 70 6c 69 63 | . "Find duplic| 00011f30 61 74 65 73 22 3a f2 64 75 70 6c 69 63 61 74 65 |ates":.duplicate| 00011f40 73 28 6b 65 79 25 2c 66 69 6c 65 25 29 0d 09 de |s(key%,file%)...| 00011f50 43 20 20 20 20 20 20 c9 20 22 57 61 72 6e 20 6f |C . "Warn o| 00011f60 66 20 64 75 70 6c 69 63 61 74 65 73 22 3a 64 75 |f duplicates":du| 00011f70 70 25 3d ac 20 64 75 70 25 3a f2 74 69 63 6b 28 |p%=. dup%:.tick(| 00011f80 6d 65 6e 75 25 28 33 29 2c 38 2c 64 75 70 25 29 |menu%(3),8,dup%)| 00011f90 0d 09 df 09 20 20 20 20 cb 0d 09 e0 23 20 20 20 |.... ....# | 00011fa0 20 c9 20 22 43 6c 6f 73 65 20 64 61 74 61 62 61 | . "Close databa| 00011fb0 73 65 22 3a f2 65 78 69 74 28 30 29 0d 09 e1 25 |se":.exit(0)...%| 00011fc0 20 20 20 20 c9 20 22 41 62 61 6e 64 6f 6e 20 64 | . "Abandon d| 00011fd0 61 74 61 62 61 73 65 22 3a f2 65 78 69 74 28 31 |atabase":.exit(1| 00011fe0 29 0d 09 e2 18 20 20 20 20 c9 20 22 51 75 69 74 |).... . "Quit| 00011ff0 22 3a 71 75 69 74 25 3d b9 0d 09 e3 07 20 20 cb |":quit%=..... .| 00012000 0d 09 e4 11 20 20 c9 20 6d 65 6e 75 25 28 31 29 |.... . menu%(1)| 00012010 3a 0d 09 e5 15 20 20 c8 8e 20 63 68 6f 69 63 65 |:.... .. choice| 00012020 24 28 31 29 20 ca 0d 09 e6 17 20 20 20 20 c9 20 |$(1) ..... . | 00012030 22 43 53 56 20 6f 70 74 69 6f 6e 73 22 0d 09 e7 |"CSV options"...| 00012040 1d 20 20 20 20 24 43 53 56 54 69 74 6c 65 25 3d |. $CSVTitle%=| 00012050 63 68 6f 69 63 65 24 28 31 29 0d 09 e8 1f 20 20 |choice$(1).... | 00012060 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 | .icon_bit(22,c| 00012070 73 76 57 25 2c 30 2c b9 29 0d 09 e9 36 20 20 20 |svW%,0,.)...6 | 00012080 20 21 62 6c 6f 63 6b 25 3d 63 73 76 57 25 3a c8 | !block%=csvW%:.| 00012090 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f |. "Wimp_GetWindo| 000120a0 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d |wState",,block%.| 000120b0 09 ea 2d 20 20 20 20 62 6c 6f 63 6b 25 21 34 3d |..- block%!4=| 000120c0 6f 6c 64 78 25 3a 62 6c 6f 63 6b 25 21 31 32 3d |oldx%:block%!12=| 000120d0 62 6c 6f 63 6b 25 21 34 2b 33 39 30 0d 09 eb 38 |block%!4+390...8| 000120e0 20 20 20 20 62 6c 6f 63 6b 25 21 38 3d 32 30 30 | block%!8=200| 000120f0 3a 62 6c 6f 63 6b 25 21 31 36 3d 62 6c 6f 63 6b |:block%!16=block| 00012100 25 21 38 2b 34 32 30 3a 62 6c 6f 63 6b 25 21 32 |%!8+420:block%!2| 00012110 38 3d 2d 31 0d 09 ec 24 20 20 20 20 c8 99 20 22 |8=-1...$ .. "| 00012120 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 |Wimp_OpenWindow"| 00012130 2c 2c 62 6c 6f 63 6b 25 0d 09 ed 1a 20 20 20 20 |,,block%.... | 00012140 c9 20 22 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 |. "Miscellaneous| 00012150 22 3a 0d 09 ee 17 20 20 20 20 c8 8e 20 63 68 6f |":.... .. cho| 00012160 69 63 65 24 28 32 29 20 ca 0d 09 ef 30 20 20 20 |ice$(2) ....0 | 00012170 20 20 20 c9 20 22 53 65 74 20 70 61 73 73 77 6f | . "Set passwo| 00012180 72 64 73 22 3a f2 6f 70 65 6e 5f 77 69 6e 64 6f |rds":.open_windo| 00012190 77 28 70 61 73 73 57 25 29 0d 09 f0 39 20 20 20 |w(passW%)...9 | 000121a0 20 20 20 c9 20 22 45 64 69 74 20 74 65 6d 70 6c | . "Edit templ| 000121b0 61 74 65 22 3a 74 65 6d 70 6c 61 74 65 25 3d 31 |ate":template%=1| 000121c0 3a f2 64 69 73 70 6c 61 79 28 6b 65 79 25 2c 2d |:.display(key%,-| 000121d0 31 29 0d 09 f1 30 20 20 20 20 20 20 c9 20 22 53 |1)...0 . "S| 000121e0 61 76 65 20 69 6e 64 69 63 65 73 22 3a f2 73 65 |ave indices":.se| 000121f0 74 5f 61 75 74 6f 28 32 2d 63 68 6f 69 63 65 33 |t_auto(2-choice3| 00012200 25 29 0d 09 f2 09 20 20 20 20 cb 0d 09 f3 18 20 |%).... ..... | 00012210 20 20 20 c9 20 22 43 75 72 72 65 6e 74 20 6b 65 | . "Current ke| 00012220 79 22 3a 0d 09 f4 31 20 20 20 20 24 4b 65 79 54 |y":...1 $KeyT| 00012230 69 74 6c 65 25 3d 63 68 6f 69 63 65 24 28 31 29 |itle%=choice$(1)| 00012240 3a 6b 65 79 66 75 6e 63 24 3d 63 68 6f 69 63 65 |:keyfunc$=choice| 00012250 24 28 31 29 0d 09 f5 1a 20 20 20 20 f2 73 65 74 |$(1).... .set| 00012260 5f 6b 65 79 64 61 74 61 28 6b 65 79 25 29 0d 09 |_keydata(key%)..| 00012270 f6 32 20 20 20 20 f2 73 68 61 64 65 5f 6b 65 79 |.2 .shade_key| 00012280 5f 69 63 6f 6e 73 28 a3 29 3a f2 73 65 74 5f 68 |_icons(.):.set_h| 00012290 65 69 67 68 74 28 6b 65 79 57 25 2c 35 39 30 29 |eight(keyW%,590)| 000122a0 0d 09 f7 12 20 20 20 20 c9 20 22 50 72 69 6e 74 |.... . "Print| 000122b0 22 3a 0d 09 f8 17 20 20 20 20 c8 8e 20 63 68 6f |":.... .. cho| 000122c0 69 63 65 24 28 32 29 20 ca 0d 09 f9 1a 20 20 20 |ice$(2) ..... | 000122d0 20 20 20 c9 20 22 4d 61 74 63 68 22 3a f2 6d 61 | . "Match":.ma| 000122e0 74 63 68 0d 09 fa 27 20 20 20 20 20 20 c9 20 22 |tch...' . "| 000122f0 53 68 6f 77 20 72 65 73 6f 75 72 63 65 73 22 3a |Show resources":| 00012300 2a 52 65 73 6f 75 72 63 65 73 0d 09 fb 42 20 20 |*Resources...B | 00012310 20 20 20 20 c9 20 22 4f 70 74 69 6f 6e 73 22 3a | . "Options":| 00012320 f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 70 72 69 |.open_window(pri| 00012330 6e 74 57 25 29 3a f2 73 65 74 5f 63 61 72 65 74 |ntW%):.set_caret| 00012340 28 70 72 69 6e 74 57 25 2c 31 36 29 0d 09 fc 1b |(printW%,16)....| 00012350 20 20 20 20 20 20 c9 20 22 53 61 76 65 20 6f 70 | . "Save op| 00012360 74 69 6f 6e 73 22 3a 0d 09 fd 35 20 20 20 20 20 |tions":...5 | 00012370 20 24 53 61 76 65 4e 61 6d 65 25 3d 24 64 61 74 | $SaveName%=$dat| 00012380 61 62 61 73 65 25 2b 22 2e 50 72 69 6e 74 52 65 |abase%+".PrintRe| 00012390 73 2e 50 72 69 6e 74 4f 70 74 73 22 0d 09 fe 36 |s.PrintOpts"...6| 000123a0 20 20 20 20 20 20 73 61 76 65 66 75 6e 63 24 3d | savefunc$=| 000123b0 63 68 6f 69 63 65 24 28 32 29 3a f2 73 61 76 65 |choice$(2):.save| 000123c0 5f 63 6c 69 63 6b 28 73 61 76 65 57 25 2c 32 2c |_click(saveW%,2,| 000123d0 34 29 0d 09 ff 19 20 20 20 20 20 20 c9 20 22 53 |4).... . "S| 000123e0 61 76 65 20 71 75 65 72 79 22 3a 0d 0a 00 31 20 |ave query":...1 | 000123f0 20 20 20 20 20 24 53 61 76 65 4e 61 6d 65 25 3d | $SaveName%=| 00012400 24 64 61 74 61 62 61 73 65 25 2b 22 2e 50 72 69 |$database%+".Pri| 00012410 6e 74 52 65 73 2e 51 75 65 72 79 22 0d 0a 01 36 |ntRes.Query"...6| 00012420 20 20 20 20 20 20 73 61 76 65 66 75 6e 63 24 3d | savefunc$=| 00012430 63 68 6f 69 63 65 24 28 32 29 3a f2 73 61 76 65 |choice$(2):.save| 00012440 5f 63 6c 69 63 6b 28 73 61 76 65 57 25 2c 32 2c |_click(saveW%,2,| 00012450 34 29 0d 0a 02 1d 20 20 20 20 20 20 c9 20 22 53 |4).... . "S| 00012460 61 76 65 20 73 65 6c 65 63 74 69 6f 6e 22 3a 0d |ave selection":.| 00012470 0a 03 35 20 20 20 20 20 20 24 53 61 76 65 4e 61 |..5 $SaveNa| 00012480 6d 65 25 3d 24 64 61 74 61 62 61 73 65 25 2b 22 |me%=$database%+"| 00012490 2e 50 72 69 6e 74 52 65 73 2e 53 65 6c 65 63 74 |.PrintRes.Select| 000124a0 69 6f 6e 22 0d 0a 04 36 20 20 20 20 20 20 73 61 |ion"...6 sa| 000124b0 76 65 66 75 6e 63 24 3d 63 68 6f 69 63 65 24 28 |vefunc$=choice$(| 000124c0 32 29 3a f2 73 61 76 65 5f 63 6c 69 63 6b 28 73 |2):.save_click(s| 000124d0 61 76 65 57 25 2c 32 2c 34 29 0d 0a 05 26 20 20 |aveW%,2,4)...& | 000124e0 20 20 20 20 c9 20 22 53 68 6f 77 20 6a 6f 62 73 | . "Show jobs| 000124f0 20 64 6f 6e 65 22 3a 2a 4a 6f 62 73 44 6f 6e 65 | done":*JobsDone| 00012500 0d 0a 06 2e 20 20 20 20 20 20 c9 20 22 43 6c 65 |.... . "Cle| 00012510 61 72 20 73 65 6c 65 63 74 69 6f 6e 22 3a f2 63 |ar selection":.c| 00012520 6c 65 61 72 5f 73 65 6c 65 63 74 69 6f 6e 0d 0a |lear_selection..| 00012530 07 24 20 20 20 20 20 20 c9 20 22 53 65 6c 65 63 |.$ . "Selec| 00012540 74 20 61 6c 6c 22 3a f2 73 65 6c 65 63 74 5f 61 |t all":.select_a| 00012550 6c 6c 0d 0a 08 12 20 20 20 20 20 20 7f 3a f2 6d |ll.... .:.m| 00012560 61 74 63 68 0d 0a 09 09 20 20 20 20 cb 0d 0a 0a |atch.... ....| 00012570 17 20 20 20 20 c9 20 22 56 61 6c 69 64 61 74 69 |. . "Validati| 00012580 6f 6e 22 3a 0d 0a 0b 17 20 20 20 20 c8 8e 20 63 |on":.... .. c| 00012590 68 6f 69 63 65 24 28 32 29 20 ca 0d 0a 0c 46 20 |hoice$(2) ....F | 000125a0 20 20 20 20 20 c9 20 22 43 72 65 61 74 65 20 74 | . "Create t| 000125b0 61 62 6c 65 22 3a f2 6f 70 65 6e 5f 77 69 6e 64 |able":.open_wind| 000125c0 6f 77 28 74 61 62 6c 65 57 25 29 3a f2 73 65 74 |ow(tableW%):.set| 000125d0 5f 63 61 72 65 74 28 74 61 62 6c 65 57 25 2c 30 |_caret(tableW%,0| 000125e0 29 0d 0a 0d 1c 20 20 20 20 20 20 c9 20 22 44 69 |).... . "Di| 000125f0 73 70 6c 61 79 20 74 61 62 6c 65 22 3a 0d 0a 0e |splay table":...| 00012600 19 20 20 20 20 20 20 e7 20 63 68 6f 69 63 65 33 |. . choice3| 00012610 25 3e 3d 30 20 8c 0d 0a 0f 21 20 20 20 20 20 20 |%>=0 ....! | 00012620 20 20 54 61 62 6c 65 6e 75 6d 62 65 72 25 3d 63 | Tablenumber%=c| 00012630 68 6f 69 63 65 33 25 0d 0a 10 25 20 20 20 20 20 |hoice3%...% | 00012640 20 20 20 f2 73 68 6f 77 5f 74 61 62 6c 65 28 54 | .show_table(T| 00012650 61 62 6c 65 6e 75 6d 62 65 72 25 29 0d 0a 11 0b |ablenumber%)....| 00012660 20 20 20 20 20 20 cd 0d 0a 12 26 20 20 20 20 20 | ....& | 00012670 20 c9 20 22 53 68 6f 77 20 74 61 62 6c 65 20 66 | . "Show table f| 00012680 69 6c 65 73 22 3a 2a 54 61 62 6c 65 73 0d 0a 13 |iles":*Tables...| 00012690 28 20 20 20 20 20 20 c9 20 22 56 61 6c 69 64 61 |( . "Valida| 000126a0 74 65 20 69 6e 70 75 74 22 3a f2 76 61 6c 5f 6f |te input":.val_o| 000126b0 6e 5f 6f 66 66 0d 0a 14 51 20 20 20 20 20 20 c9 |n_off...Q .| 000126c0 20 22 53 68 6f 77 20 72 65 6c 61 74 69 6f 6e 73 | "Show relations| 000126d0 22 3a 72 65 6c 61 74 69 6f 6e 73 25 3d ac 20 72 |":relations%=. r| 000126e0 65 6c 61 74 69 6f 6e 73 25 3a f2 74 69 63 6b 28 |elations%:.tick(| 000126f0 6d 65 6e 75 25 28 32 29 2c 34 2c 72 65 6c 61 74 |menu%(2),4,relat| 00012700 69 6f 6e 73 25 29 0d 0a 15 09 20 20 20 20 cb 0d |ions%).... ..| 00012710 0a 16 46 20 20 20 20 c9 20 22 53 68 6f 77 20 6b |..F . "Show k| 00012720 65 79 70 61 64 22 3a e7 20 a4 73 65 6c 65 63 74 |eypad":. .select| 00012730 65 64 28 70 61 73 73 57 25 2c 39 29 20 8c 20 f2 |ed(passW%,9) . .| 00012740 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 6b 65 79 70 |open_window(keyp| 00012750 61 64 57 25 29 0d 0a 17 3d 20 20 20 20 c9 20 22 |adW%)...= . "| 00012760 53 61 76 65 20 63 68 6f 69 63 65 73 22 3a f2 73 |Save choices":.s| 00012770 61 76 65 5f 63 68 6f 69 63 65 73 28 24 64 61 74 |ave_choices($dat| 00012780 61 62 61 73 65 25 2b 22 2e 43 68 6f 69 63 65 73 |abase%+".Choices| 00012790 22 29 0d 0a 18 25 20 20 20 20 c9 20 22 55 6e 64 |")...% . "Und| 000127a0 6f 20 63 68 61 6e 67 65 73 22 3a f2 72 65 73 74 |o changes":.rest| 000127b0 6f 72 65 5f 72 65 63 0d 0a 19 38 20 20 20 20 c9 |ore_rec...8 .| 000127c0 20 22 48 65 6c 70 22 3a c8 99 20 22 57 69 6d 70 | "Help":.. "Wimp| 000127d0 5f 53 74 61 72 74 54 61 73 6b 22 2c 22 3c 50 62 |_StartTask","<Pb| 000127e0 61 73 65 24 44 69 72 3e 2e 21 48 65 6c 70 22 0d |ase$Dir>.!Help".| 000127f0 0a 1a 0a 20 20 20 20 7f 3a 0d 0a 1b 17 20 20 20 |... .:.... | 00012800 20 c8 8e 20 63 68 6f 69 63 65 24 28 32 29 20 ca | .. choice$(2) .| 00012810 0d 0a 1c 1a 20 20 20 20 20 20 c9 20 22 49 6e 64 |.... . "Ind| 00012820 65 78 20 66 69 65 6c 64 22 3a 0d 0a 1d 33 20 20 |ex field":...3 | 00012830 20 20 20 20 24 4b 65 79 54 69 74 6c 65 25 3d 63 | $KeyTitle%=c| 00012840 68 6f 69 63 65 24 28 32 29 3a 6b 65 79 66 75 6e |hoice$(2):keyfun| 00012850 63 24 3d 63 68 6f 69 63 65 24 28 32 29 0d 0a 1e |c$=choice$(2)...| 00012860 31 20 20 20 20 20 20 f2 64 65 73 65 6c 65 63 74 |1 .deselect| 00012870 28 6b 65 79 57 25 2c 32 30 29 3a f2 73 68 61 64 |(keyW%,20):.shad| 00012880 65 5f 6b 65 79 5f 69 63 6f 6e 73 28 b9 29 0d 0a |e_key_icons(.)..| 00012890 1f 34 20 20 20 20 20 20 f2 73 65 74 5f 68 65 69 |.4 .set_hei| 000128a0 67 68 74 28 6b 65 79 57 25 2c 35 39 30 29 3a f2 |ght(keyW%,590):.| 000128b0 73 65 74 5f 63 61 72 65 74 28 6b 65 79 57 25 2c |set_caret(keyW%,| 000128c0 32 29 0d 0a 20 3d 20 20 20 20 20 20 c9 20 22 41 |2).. = . "A| 000128d0 6e 61 6c 79 73 65 20 69 6e 64 65 78 22 3a f2 61 |nalyse index":.a| 000128e0 6e 61 6c 79 73 65 28 a4 69 73 5f 61 5f 6b 65 79 |nalyse(.is_a_key| 000128f0 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 29 0d |(Fieldnumber%)).| 00012900 0a 21 29 20 20 20 20 20 20 c9 20 22 41 6e 61 6c |.!) . "Anal| 00012910 79 73 65 20 6d 6f 6e 74 68 73 22 3a f2 61 6e 61 |yse months":.ana| 00012920 6c 79 73 65 28 2d 31 29 0d 0a 22 30 20 20 20 20 |lyse(-1).."0 | 00012930 20 20 c9 20 22 4c 69 6e 6b 20 74 6f 20 74 61 62 | . "Link to tab| 00012940 6c 65 22 3a f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 |le":.open_window| 00012950 28 6c 69 6e 6b 57 25 29 0d 0a 23 1c 20 20 20 20 |(linkW%)..#. | 00012960 20 20 c9 20 22 53 74 61 72 74 20 65 64 69 74 69 | . "Start editi| 00012970 6e 67 22 3a 0d 0a 24 29 20 20 20 20 20 20 73 74 |ng":..$) st| 00012980 61 72 74 68 65 72 65 25 3d 66 69 65 6c 64 25 28 |arthere%=field%(| 00012990 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 0d 0a 25 |Fieldnumber%)..%| 000129a0 33 20 20 20 20 20 20 e7 20 41 63 63 65 73 73 25 |3 . Access%| 000129b0 20 8c 20 f2 73 65 74 5f 63 61 72 65 74 28 6d 61 | . .set_caret(ma| 000129c0 69 6e 57 25 2c 73 74 61 72 74 68 65 72 65 25 29 |inW%,starthere%)| 000129d0 0d 0a 26 5b 20 20 20 20 20 20 c9 20 22 43 6c 65 |..&[ . "Cle| 000129e0 61 72 20 63 6f 6e 74 65 6e 74 73 22 3a f2 64 65 |ar contents":.de| 000129f0 6c 65 74 65 5f 62 6c 6f 62 28 46 69 65 6c 64 6e |lete_blob(Fieldn| 00012a00 75 6d 62 65 72 25 2c 6f 62 6a 65 63 74 24 2c 6d |umber%,object$,m| 00012a10 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 69 65 |ainW%,field%(Fie| 00012a20 6c 64 6e 75 6d 62 65 72 25 29 29 0d 0a 27 28 20 |ldnumber%))..'( | 00012a30 20 20 20 20 20 e7 20 63 68 61 72 74 79 70 65 25 | . chartype%| 00012a40 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 3d 34 |(Fieldnumber%)=4| 00012a50 30 20 8c 0d 0a 28 51 20 20 20 20 20 20 20 20 f2 |0 ...(Q .| 00012a60 73 68 6f 77 5f 70 69 63 74 75 72 65 28 46 69 65 |show_picture(Fie| 00012a70 6c 64 6e 75 6d 62 65 72 25 29 3a f2 72 65 64 72 |ldnumber%):.redr| 00012a80 61 77 5f 69 63 6f 6e 28 6d 61 69 6e 57 25 2c 66 |aw_icon(mainW%,f| 00012a90 69 65 6c 64 25 28 46 69 65 6c 64 6e 75 6d 62 65 |ield%(Fieldnumbe| 00012aa0 72 25 29 29 0d 0a 29 0b 20 20 20 20 20 20 cd 0d |r%))..). ..| 00012ab0 0a 2a 30 20 20 20 20 20 20 c9 20 22 57 61 72 6e |.*0 . "Warn| 00012ac0 20 6f 66 20 64 65 6c 65 74 65 22 3a 64 65 6c 77 | of delete":delw| 00012ad0 61 72 6e 25 3d ac 20 64 65 6c 77 61 72 6e 25 0d |arn%=. delwarn%.| 00012ae0 0a 2b 25 20 20 20 20 20 20 f2 74 69 63 6b 28 6d |.+% .tick(m| 00012af0 65 6e 75 25 28 31 30 29 2c 37 2c 64 65 6c 77 61 |enu%(10),7,delwa| 00012b00 72 6e 25 29 0d 0a 2c 37 20 20 20 20 20 20 c9 20 |rn%)..,7 . | 00012b10 22 55 6e 64 6f 20 63 68 61 6e 67 65 73 22 3a f2 |"Undo changes":.| 00012b20 72 65 73 74 6f 72 65 28 46 69 65 6c 64 6e 75 6d |restore(Fieldnum| 00012b30 62 65 72 25 2c 22 22 2c 2d 31 29 0d 0a 2d 09 20 |ber%,"",-1)..-. | 00012b40 20 20 20 cb 0d 0a 2e 07 20 20 cb 0d 0a 2f 11 20 | ..... .../. | 00012b50 20 c9 20 6d 65 6e 75 25 28 39 29 3a 0d 0a 30 15 | . menu%(9):..0.| 00012b60 20 20 c8 8e 20 63 68 6f 69 63 65 24 28 31 29 20 | .. choice$(1) | 00012b70 ca 0d 0a 31 46 20 20 20 20 c9 20 22 44 65 73 69 |...1F . "Desi| 00012b80 67 6e 20 66 69 65 6c 64 22 3a f2 6f 70 65 6e 5f |gn field":.open_| 00012b90 77 69 6e 64 6f 77 28 63 72 65 61 74 65 57 25 29 |window(createW%)| 00012ba0 3a f2 73 65 74 5f 63 61 72 65 74 28 63 72 65 61 |:.set_caret(crea| 00012bb0 74 65 57 25 2c 34 29 0d 0a 32 1b 20 20 20 20 c9 |teW%,4)..2. .| 00012bc0 20 22 53 61 76 65 20 66 6f 72 6d 20 66 69 6c 65 | "Save form file| 00012bd0 22 3a 0d 0a 33 25 20 20 20 20 24 53 61 76 65 4e |":..3% $SaveN| 00012be0 61 6d 65 25 3d 24 64 61 74 61 62 61 73 65 25 2b |ame%=$database%+| 00012bf0 22 2e 46 6f 72 6d 22 0d 0a 34 34 20 20 20 20 73 |".Form"..44 s| 00012c00 61 76 65 66 75 6e 63 24 3d 63 68 6f 69 63 65 24 |avefunc$=choice$| 00012c10 28 31 29 3a f2 73 61 76 65 5f 63 6c 69 63 6b 28 |(1):.save_click(| 00012c20 73 61 76 65 57 25 2c 32 2c 34 29 0d 0a 35 1d 20 |saveW%,2,4)..5. | 00012c30 20 20 20 c9 20 22 44 65 66 61 75 6c 74 20 64 61 | . "Default da| 00012c40 74 61 62 61 73 65 22 3a 0d 0a 36 26 20 20 20 20 |tabase":..6& | 00012c50 f2 73 61 76 65 5f 66 6f 72 6d 28 24 64 61 74 61 |.save_form($data| 00012c60 62 61 73 65 25 2b 22 2e 46 6f 72 6d 22 29 0d 0a |base%+".Form")..| 00012c70 37 1e 20 20 20 20 f2 67 65 74 5f 69 74 5f 69 6e |7. .get_it_in| 00012c80 28 24 64 61 74 61 62 61 73 65 25 29 0d 0a 38 1a |($database%)..8.| 00012c90 20 20 20 20 e7 20 a4 66 69 72 73 74 5f 66 69 65 | . .first_fie| 00012ca0 6c 64 3e 30 20 8c 0d 0a 39 16 20 20 20 20 20 20 |ld>0 ...9. | 00012cb0 f2 64 65 66 61 75 6c 74 5f 6b 65 79 0d 0a 3a 25 |.default_key..:%| 00012cc0 20 20 20 20 20 20 f2 64 65 66 61 75 6c 74 73 28 | .defaults(| 00012cd0 24 64 61 74 61 62 61 73 65 25 2c 31 30 30 2c 30 |$database%,100,0| 00012ce0 29 0d 0a 3b 1d 20 20 20 20 20 20 cc 20 f2 73 6f |)..;. . .so| 00012cf0 66 74 65 72 72 6f 72 28 22 22 2c 33 35 29 0d 0a |fterror("",35)..| 00012d00 3c 09 20 20 20 20 cd 0d 0a 3d 18 20 20 20 20 c9 |<. ...=. .| 00012d10 20 22 50 72 69 6d 61 72 79 20 6b 65 79 22 3a 0d | "Primary key":.| 00012d20 0a 3e 1d 20 20 20 20 24 4b 65 79 54 69 74 6c 65 |.>. $KeyTitle| 00012d30 25 3d 63 68 6f 69 63 65 24 28 31 29 0d 0a 3f 1b |%=choice$(1)..?.| 00012d40 20 20 20 20 6b 65 79 66 75 6e 63 24 3d 63 68 6f | keyfunc$=cho| 00012d50 69 63 65 24 28 31 29 0d 0a 40 22 20 20 20 20 63 |ice$(1)..@" c| 00012d60 61 73 65 25 28 30 29 3d a3 3a f2 73 65 74 5f 6b |ase%(0)=.:.set_k| 00012d70 65 79 64 61 74 61 28 30 29 0d 0a 41 30 20 20 20 |eydata(0)..A0 | 00012d80 20 f2 64 65 73 65 6c 65 63 74 28 6b 65 79 57 25 | .deselect(keyW%| 00012d90 2c 32 30 29 3a f2 73 68 61 64 65 5f 6b 65 79 5f |,20):.shade_key_| 00012da0 69 63 6f 6e 73 28 b9 29 3a 0d 0a 42 32 20 20 20 |icons(.):..B2 | 00012db0 20 f2 73 65 74 5f 68 65 69 67 68 74 28 6b 65 79 | .set_height(key| 00012dc0 57 25 2c 35 39 30 29 3a f2 73 65 74 5f 63 61 72 |W%,590):.set_car| 00012dd0 65 74 28 6b 65 79 57 25 2c 32 29 0d 0a 43 18 20 |et(keyW%,2)..C. | 00012de0 20 20 20 c9 20 22 51 75 69 74 20 64 65 73 69 67 | . "Quit desig| 00012df0 6e 22 3a 0d 0a 44 15 20 20 20 20 f2 61 64 6a 75 |n":..D. .adju| 00012e00 73 74 5f 6f 6e 28 a3 29 0d 0a 45 26 20 20 20 20 |st_on(.)..E& | 00012e10 f2 73 61 76 65 5f 66 6f 72 6d 28 24 64 61 74 61 |.save_form($data| 00012e20 62 61 73 65 25 2b 22 2e 46 6f 72 6d 22 29 0d 0a |base%+".Form")..| 00012e30 46 1e 20 20 20 20 f2 67 65 74 5f 69 74 5f 69 6e |F. .get_it_in| 00012e40 28 24 64 61 74 61 62 61 73 65 25 29 0d 0a 47 07 |($database%)..G.| 00012e50 20 20 cb 0d 0a 48 12 20 20 c9 20 6d 65 6e 75 25 | ...H. . menu%| 00012e60 28 31 37 29 3a 0d 0a 49 22 20 20 54 25 3d a4 74 |(17):..I" T%=.t| 00012e70 61 62 6c 65 5f 6e 75 6d 62 65 72 28 24 6d 65 6e |able_number($men| 00012e80 75 25 28 31 37 29 29 0d 0a 4a 15 20 20 c8 8e 20 |u%(17))..J. .. | 00012e90 63 68 6f 69 63 65 24 28 31 29 20 ca 0d 0a 4b 11 |choice$(1) ...K.| 00012ea0 20 20 20 20 c9 20 22 53 61 76 65 22 3a 0d 0a 4c | . "Save":..L| 00012eb0 36 20 20 20 20 24 53 61 76 65 4e 61 6d 65 25 3d |6 $SaveName%=| 00012ec0 24 64 61 74 61 62 61 73 65 25 2b 22 2e 56 61 6c |$database%+".Val| 00012ed0 54 61 62 6c 65 73 2e 22 2b 74 61 62 6c 65 24 28 |Tables."+table$(| 00012ee0 54 25 29 0d 0a 4d 36 20 20 20 20 73 61 76 65 66 |T%)..M6 savef| 00012ef0 75 6e 63 24 3d 22 53 61 76 65 20 74 61 62 6c 65 |unc$="Save table| 00012f00 22 3a f2 73 61 76 65 5f 63 6c 69 63 6b 28 73 61 |":.save_click(sa| 00012f10 76 65 57 25 2c 32 2c 34 29 0d 0a 4e 22 20 20 20 |veW%,2,4)..N" | 00012f20 20 c9 20 22 43 6c 65 61 72 22 3a f2 63 6c 65 61 | . "Clear":.clea| 00012f30 72 5f 74 61 62 6c 65 28 54 25 29 0d 0a 4f 22 20 |r_table(T%)..O" | 00012f40 20 20 20 c9 20 22 50 72 69 6e 74 22 3a f2 70 72 | . "Print":.pr| 00012f50 69 6e 74 5f 74 61 62 6c 65 28 54 25 29 0d 0a 50 |int_table(T%)..P| 00012f60 20 20 20 20 20 c9 20 22 53 6f 72 74 22 3a f2 73 | . "Sort":.s| 00012f70 6f 72 74 5f 74 61 62 6c 65 28 54 25 29 0d 0a 51 |ort_table(T%)..Q| 00012f80 2f 20 20 20 20 c9 20 22 55 6e 64 6f 20 61 6c 6c |/ . "Undo all| 00012f90 22 3a f2 72 65 73 74 6f 72 65 5f 74 61 62 6c 65 |":.restore_table| 00012fa0 28 54 25 2c 74 61 62 6c 65 6e 25 29 0d 0a 52 29 |(T%,tablen%)..R)| 00012fb0 20 20 20 20 c9 20 22 55 6e 64 6f 20 63 68 61 6e | . "Undo chan| 00012fc0 67 65 22 3a f2 72 65 73 74 6f 72 65 5f 74 61 62 |ge":.restore_tab| 00012fd0 66 69 65 6c 64 0d 0a 53 07 20 20 cb 0d 0a 54 12 |field..S. ...T.| 00012fe0 20 20 c9 20 6d 65 6e 75 25 28 31 38 29 3a 0d 0a | . menu%(18):..| 00012ff0 55 15 20 20 c8 8e 20 63 68 6f 69 63 65 24 28 31 |U. .. choice$(1| 00013000 29 20 ca 0d 0a 56 19 20 20 20 20 c9 20 22 53 61 |) ...V. . "Sa| 00013010 76 65 20 61 73 20 74 65 78 74 22 3a 0d 0a 57 2f |ve as text":..W/| 00013020 20 20 20 20 24 53 61 76 65 4e 61 6d 65 25 3d 24 | $SaveName%=$| 00013030 64 61 74 61 62 61 73 65 25 2b 22 2e 50 72 69 6e |database%+".Prin| 00013040 74 4a 6f 62 73 2e 4c 69 73 74 22 0d 0a 58 34 20 |tJobs.List"..X4 | 00013050 20 20 20 73 61 76 65 66 75 6e 63 24 3d 63 68 6f | savefunc$=cho| 00013060 69 63 65 24 28 31 29 3a f2 73 61 76 65 5f 63 6c |ice$(1):.save_cl| 00013070 69 63 6b 28 73 61 76 65 57 25 2c 32 2c 34 29 0d |ick(saveW%,2,4).| 00013080 0a 59 1b 20 20 20 20 c9 20 22 53 6f 72 74 22 3a |.Y. . "Sort":| 00013090 f2 73 6f 72 74 5f 6c 69 73 74 0d 0a 5a 1c 20 20 |.sort_list..Z. | 000130a0 20 20 c9 20 22 53 63 72 61 70 22 3a f2 6c 6f 73 | . "Scrap":.los| 000130b0 65 5f 6c 69 73 74 0d 0a 5b 07 20 20 cb 0d 0a 5c |e_list..[. ...\| 000130c0 12 20 20 c9 20 6d 65 6e 75 25 28 31 35 29 3a 0d |. . menu%(15):.| 000130d0 0a 5d 15 20 20 c8 8e 20 63 68 6f 69 63 65 24 28 |.]. .. choice$(| 000130e0 31 29 20 ca 0d 0a 5e 1a 20 20 20 20 c9 20 22 43 |1) ...^. . "C| 000130f0 6f 6d 6d 61 22 3a 73 65 70 24 3d 22 2c 22 0d 0a |omma":sep$=","..| 00013100 5f 19 20 20 20 20 c9 20 22 54 41 42 22 3a 73 65 |_. . "TAB":se| 00013110 70 24 3d bd 28 39 29 0d 0a 60 19 20 20 20 20 c9 |p$=.(9)..`. .| 00013120 20 22 43 52 22 3a 73 65 70 24 3d bd 28 31 33 29 | "CR":sep$=.(13)| 00013130 0d 0a 61 19 20 20 20 20 c9 20 22 4c 46 22 3a 73 |..a. . "LF":s| 00013140 65 70 24 3d bd 28 31 30 29 0d 0a 62 16 20 20 20 |ep$=.(10)..b. | 00013150 20 7f 20 73 65 70 24 3d 24 44 65 6c 69 6d 25 0d | . sep$=$Delim%.| 00013160 0a 63 07 20 20 cb 0d 0a 64 29 20 20 f2 74 69 63 |.c. ...d) .tic| 00013170 6b 5f 6f 6e 65 28 6d 65 6e 75 68 61 6e 64 6c 65 |k_one(menuhandle| 00013180 25 2c 30 2c 33 2c 63 68 6f 69 63 65 31 25 29 0d |%,0,3,choice1%).| 00013190 0a 65 21 20 20 24 a4 74 65 78 74 28 63 73 76 57 |.e! $.text(csvW| 000131a0 25 2c 31 34 29 3d 63 68 6f 69 63 65 24 28 31 29 |%,14)=choice$(1)| 000131b0 0d 0a 66 1c 20 20 f2 72 65 64 72 61 77 5f 69 63 |..f. .redraw_ic| 000131c0 6f 6e 28 63 73 76 57 25 2c 31 34 29 0d 0a 67 12 |on(csvW%,14)..g.| 000131d0 20 20 c9 20 6d 65 6e 75 25 28 32 30 29 3a 0d 0a | . menu%(20):..| 000131e0 68 15 20 20 c8 8e 20 63 68 6f 69 63 65 24 28 31 |h. .. choice$(1| 000131f0 29 20 ca 0d 0a 69 1a 20 20 20 20 c9 20 22 43 52 |) ...i. . "CR| 00013200 22 3a 74 65 72 6d 24 3d bd 28 31 33 29 0d 0a 6a |":term$=.(13)..j| 00013210 1a 20 20 20 20 c9 20 22 4c 46 22 3a 74 65 72 6d |. . "LF":term| 00013220 24 3d bd 28 31 30 29 0d 0a 6b 23 20 20 20 20 c9 |$=.(10)..k# .| 00013230 20 22 43 52 20 4c 46 22 3a 74 65 72 6d 24 3d bd | "CR LF":term$=.| 00013240 28 31 33 29 2b bd 28 31 30 29 0d 0a 6c 23 20 20 |(13)+.(10)..l# | 00013250 20 20 c9 20 22 4c 46 20 43 52 22 3a 74 65 72 6d | . "LF CR":term| 00013260 24 3d bd 28 31 30 29 2b bd 28 31 33 29 0d 0a 6d |$=.(10)+.(13)..m| 00013270 23 20 20 20 20 c9 20 22 43 52 20 43 52 22 3a 74 |# . "CR CR":t| 00013280 65 72 6d 24 3d bd 28 31 33 29 2b bd 28 31 33 29 |erm$=.(13)+.(13)| 00013290 0d 0a 6e 23 20 20 20 20 c9 20 22 4c 46 20 4c 46 |..n# . "LF LF| 000132a0 22 3a 74 65 72 6d 24 3d bd 28 31 30 29 2b bd 28 |":term$=.(10)+.(| 000132b0 31 30 29 0d 0a 6f 18 20 20 20 20 7f 3a 74 65 72 |10)..o. .:ter| 000132c0 6d 24 3d 24 54 65 72 6d 69 6e 25 0d 0a 70 07 20 |m$=$Termin%..p. | 000132d0 20 cb 0d 0a 71 29 20 20 f2 74 69 63 6b 5f 6f 6e | ...q) .tick_on| 000132e0 65 28 6d 65 6e 75 68 61 6e 64 6c 65 25 2c 30 2c |e(menuhandle%,0,| 000132f0 35 2c 63 68 6f 69 63 65 31 25 29 0d 0a 72 21 20 |5,choice1%)..r! | 00013300 20 24 a4 74 65 78 74 28 63 73 76 57 25 2c 31 35 | $.text(csvW%,15| 00013310 29 3d 63 68 6f 69 63 65 24 28 31 29 0d 0a 73 1c |)=choice$(1)..s.| 00013320 20 20 f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 63 | .redraw_icon(c| 00013330 73 76 57 25 2c 31 35 29 0d 0a 74 39 20 20 c9 20 |svW%,15)..t9 . | 00013340 6d 65 6e 75 25 28 38 29 2c 6d 65 6e 75 25 28 31 |menu%(8),menu%(1| 00013350 31 29 2c 6d 65 6e 75 25 28 31 34 29 2c 6d 65 6e |1),menu%(14),men| 00013360 75 25 28 31 36 29 2c 6d 65 6e 75 25 28 31 39 29 |u%(16),menu%(19)| 00013370 3a 0d 0a 75 24 20 20 66 69 65 6c 64 74 79 70 65 |:..u$ fieldtype| 00013380 25 3d 66 69 72 73 74 74 79 70 65 25 2b 63 68 6f |%=firsttype%+cho| 00013390 69 63 65 31 25 0d 0a 76 3c 20 20 f2 74 69 63 6b |ice1%..v< .tick| 000133a0 5f 6f 6e 65 28 6d 65 6e 75 68 61 6e 64 6c 65 25 |_one(menuhandle%| 000133b0 2c 30 2c 6c 61 73 74 74 79 70 65 25 2d 66 69 72 |,0,lasttype%-fir| 000133c0 73 74 74 79 70 65 25 2c 63 68 6f 69 63 65 31 25 |sttype%,choice1%| 000133d0 29 0d 0a 77 11 20 20 f2 75 70 64 61 74 65 5f 62 |)..w. .update_b| 000133e0 6f 78 0d 0a 78 11 20 20 c9 20 6d 65 6e 75 25 28 |ox..x. . menu%(| 000133f0 35 29 3a 0d 0a 79 1b 20 20 54 61 62 6c 65 6e 75 |5):..y. Tablenu| 00013400 6d 62 65 72 25 3d 63 68 6f 69 63 65 31 25 0d 0a |mber%=choice1%..| 00013410 7a 26 20 20 24 54 61 62 6c 65 6e 61 6d 65 25 3d |z& $Tablename%=| 00013420 74 61 62 6c 65 24 28 54 61 62 6c 65 6e 75 6d 62 |table$(Tablenumb| 00013430 65 72 25 29 0d 0a 7b 32 20 20 f2 74 69 63 6b 5f |er%)..{2 .tick_| 00013440 6f 6e 65 28 6d 65 6e 75 68 61 6e 64 6c 65 25 2c |one(menuhandle%,| 00013450 30 2c 4c 61 73 74 54 61 62 6c 65 25 2c 63 68 6f |0,LastTable%,cho| 00013460 69 63 65 31 25 29 0d 0a 7c 1c 20 20 f2 72 65 64 |ice1%)..|. .red| 00013470 72 61 77 5f 69 63 6f 6e 28 6c 69 6e 6b 57 25 2c |raw_icon(linkW%,| 00013480 30 29 0d 0a 7d 13 20 20 c9 20 66 69 65 6c 64 6d |0)..}. . fieldm| 00013490 65 6e 75 25 3a 0d 0a 7e 15 20 20 c8 8e 20 66 69 |enu%:..~. .. fi| 000134a0 65 6c 64 66 75 6e 63 24 20 ca 0d 0a 7f 12 20 20 |eldfunc$ ..... | 000134b0 20 20 c9 20 22 6d 61 74 63 68 22 3a 0d 0a 80 1d | . "match":....| 000134c0 20 20 20 20 4d 61 74 63 68 5f 74 61 67 25 3d 63 | Match_tag%=c| 000134d0 68 6f 69 63 65 31 25 2b 31 0d 0a 81 42 20 20 20 |hoice1%+1...B | 000134e0 20 24 a4 74 65 78 74 28 6d 61 74 63 68 57 25 2c | $.text(matchW%,| 000134f0 33 29 3d 54 61 67 24 28 4d 61 74 63 68 5f 74 61 |3)=Tag$(Match_ta| 00013500 67 25 29 3a f2 72 65 64 72 61 77 5f 69 63 6f 6e |g%):.redraw_icon| 00013510 28 6d 61 74 63 68 57 25 2c 33 29 0d 0a 82 32 20 |(matchW%,3)...2 | 00013520 20 20 20 f2 74 69 63 6b 5f 6f 6e 65 28 66 69 65 | .tick_one(fie| 00013530 6c 64 6d 65 6e 75 25 2c 30 2c 66 69 65 6c 64 73 |ldmenu%,0,fields| 00013540 25 2d 31 2c 63 68 6f 69 63 65 31 25 29 0d 0a 83 |%-1,choice1%)...| 00013550 12 20 20 20 20 c9 20 22 66 69 72 73 74 22 3a 0d |. . "first":.| 00013560 0a 84 23 20 20 20 20 e7 20 6b 65 79 66 75 6e 63 |..# . keyfunc| 00013570 24 3c 3e 22 43 75 72 72 65 6e 74 20 6b 65 79 22 |$<>"Current key"| 00013580 20 8c 0d 0a 85 2a 20 20 20 20 20 20 e7 20 a4 74 | ....* . .t| 00013590 69 63 6b 65 64 28 66 69 65 6c 64 6d 65 6e 75 25 |icked(fieldmenu%| 000135a0 2c 63 68 6f 69 63 65 31 25 29 20 8c 0d 0a 86 38 |,choice1%) ....8| 000135b0 20 20 20 20 20 20 20 20 4b 65 79 66 6c 64 30 25 | Keyfld0%| 000135c0 3d 30 3a 24 46 31 64 6b 65 79 25 3d 22 22 3a f2 |=0:$F1dkey%="":.| 000135d0 72 65 64 72 61 77 5f 69 63 6f 6e 28 6b 65 79 57 |redraw_icon(keyW| 000135e0 25 2c 30 29 0d 0a 87 28 20 20 20 20 20 20 20 20 |%,0)...( | 000135f0 f2 74 69 63 6b 28 66 69 65 6c 64 6d 65 6e 75 25 |.tick(fieldmenu%| 00013600 2c 63 68 6f 69 63 65 31 25 2c a3 29 0d 0a 88 0d |,choice1%,.)....| 00013610 20 20 20 20 20 20 20 20 cc 0d 0a 89 1f 20 20 20 | ..... | 00013620 20 20 20 20 20 4b 65 79 66 6c 64 30 25 3d 63 68 | Keyfld0%=ch| 00013630 6f 69 63 65 31 25 2b 31 0d 0a 8a 39 20 20 20 20 |oice1%+1...9 | 00013640 20 20 20 20 24 46 31 64 6b 65 79 25 3d 54 61 67 | $F1dkey%=Tag| 00013650 24 28 4b 65 79 66 6c 64 30 25 29 3a f2 72 65 64 |$(Keyfld0%):.red| 00013660 72 61 77 5f 69 63 6f 6e 28 6b 65 79 57 25 2c 30 |raw_icon(keyW%,0| 00013670 29 0d 0a 8b 36 20 20 20 20 20 20 20 20 f2 74 69 |)...6 .ti| 00013680 63 6b 5f 6f 6e 65 28 66 69 65 6c 64 6d 65 6e 75 |ck_one(fieldmenu| 00013690 25 2c 30 2c 66 69 65 6c 64 73 25 2d 31 2c 63 68 |%,0,fields%-1,ch| 000136a0 6f 69 63 65 31 25 29 0d 0a 8c 0b 20 20 20 20 20 |oice1%).... | 000136b0 20 cd 0d 0a 8d 09 20 20 20 20 cd 0d 0a 8e 13 20 | ..... ..... | 000136c0 20 20 20 c9 20 22 73 65 63 6f 6e 64 22 3a 0d 0a | . "second":..| 000136d0 8f 23 20 20 20 20 e7 20 6b 65 79 66 75 6e 63 24 |.# . keyfunc$| 000136e0 3c 3e 22 43 75 72 72 65 6e 74 20 6b 65 79 22 20 |<>"Current key" | 000136f0 8c 0d 0a 90 2a 20 20 20 20 20 20 e7 20 a4 74 69 |....* . .ti| 00013700 63 6b 65 64 28 66 69 65 6c 64 6d 65 6e 75 25 2c |cked(fieldmenu%,| 00013710 63 68 6f 69 63 65 31 25 29 20 8c 0d 0a 91 38 20 |choice1%) ....8 | 00013720 20 20 20 20 20 20 20 4b 65 79 66 6c 64 31 25 3d | Keyfld1%=| 00013730 30 3a 24 46 32 64 6b 65 79 25 3d 22 22 3a f2 72 |0:$F2dkey%="":.r| 00013740 65 64 72 61 77 5f 69 63 6f 6e 28 6b 65 79 57 25 |edraw_icon(keyW%| 00013750 2c 31 29 0d 0a 92 28 20 20 20 20 20 20 20 20 f2 |,1)...( .| 00013760 74 69 63 6b 28 66 69 65 6c 64 6d 65 6e 75 25 2c |tick(fieldmenu%,| 00013770 63 68 6f 69 63 65 31 25 2c a3 29 0d 0a 93 0d 20 |choice1%,.).... | 00013780 20 20 20 20 20 20 20 cc 0d 0a 94 1f 20 20 20 20 | ..... | 00013790 20 20 20 20 4b 65 79 66 6c 64 31 25 3d 63 68 6f | Keyfld1%=cho| 000137a0 69 63 65 31 25 2b 31 0d 0a 95 39 20 20 20 20 20 |ice1%+1...9 | 000137b0 20 20 20 24 46 32 64 6b 65 79 25 3d 54 61 67 24 | $F2dkey%=Tag$| 000137c0 28 4b 65 79 66 6c 64 31 25 29 3a f2 72 65 64 72 |(Keyfld1%):.redr| 000137d0 61 77 5f 69 63 6f 6e 28 6b 65 79 57 25 2c 31 29 |aw_icon(keyW%,1)| 000137e0 0d 0a 96 36 20 20 20 20 20 20 20 20 f2 74 69 63 |...6 .tic| 000137f0 6b 5f 6f 6e 65 28 66 69 65 6c 64 6d 65 6e 75 25 |k_one(fieldmenu%| 00013800 2c 30 2c 66 69 65 6c 64 73 25 2d 31 2c 63 68 6f |,0,fields%-1,cho| 00013810 69 63 65 31 25 29 0d 0a 97 0b 20 20 20 20 20 20 |ice1%).... | 00013820 cd 0d 0a 98 09 20 20 20 20 cd 0d 0a 99 07 20 20 |..... ..... | 00013830 cb 0d 0a 9a 17 20 20 7f 3a f2 73 70 65 63 69 61 |..... .:.specia| 00013840 6c 5f 73 65 6c 65 63 74 0d 0a 9b 05 cb 0d 0a 9c |l_select........| 00013850 0f e7 20 ac 20 71 75 69 74 25 20 8c 0d 0a 9d 35 |.. . quit% ....5| 00013860 20 20 e7 20 72 65 64 6f 25 20 8c 20 f2 73 68 6f | . redo% . .sho| 00013870 77 5f 6d 65 6e 75 28 6d 65 6e 75 68 61 6e 64 6c |w_menu(menuhandl| 00013880 65 25 2c 6d 65 6e 75 78 25 2c 6d 65 6e 75 79 25 |e%,menux%,menuy%| 00013890 29 0d 0a 9e 05 cd 0d 0a 9f 05 e1 0d 0a a0 05 3a |)..............:| 000138a0 0d 0a a1 23 dd 20 f2 69 6e 69 74 5f 64 72 61 67 |...#. .init_drag| 000138b0 28 77 69 25 2c 69 63 25 2c 64 72 61 67 74 79 70 |(wi%,ic%,dragtyp| 000138c0 65 25 29 0d 0a a2 19 f2 67 65 74 73 63 72 65 65 |e%).....getscree| 000138d0 6e 73 69 7a 65 28 57 25 2c 48 25 29 0d 0a a3 0f |nsize(W%,H%)....| 000138e0 21 62 6c 6f 63 6b 25 3d 77 69 25 0d 0a a4 24 c8 |!block%=wi%...$.| 000138f0 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f |. "Wimp_GetWindo| 00013900 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d |wState",,block%.| 00013910 0a a5 1d 79 73 69 7a 65 25 3d 62 6c 6f 63 6b 25 |...ysize%=block%| 00013920 21 31 36 2d 62 6c 6f 63 6b 25 21 38 0d 0a a6 19 |!16-block%!8....| 00013930 78 25 3d 62 6c 6f 63 6b 25 21 34 2d 62 6c 6f 63 |x%=block%!4-bloc| 00013940 6b 25 21 32 30 0d 0a a7 1a 79 25 3d 62 6c 6f 63 |k%!20....y%=bloc| 00013950 6b 25 21 31 36 2d 62 6c 6f 63 6b 25 21 32 34 0d |k%!16-block%!24.| 00013960 0a a8 10 62 6c 6f 63 6b 25 21 34 3d 69 63 25 0d |...block%!4=ic%.| 00013970 0a a9 22 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 |..".. "Wimp_GetI| 00013980 63 6f 6e 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b |conState",,block| 00013990 25 0d 0a aa 1f 62 6c 6f 63 6b 25 21 38 2b 3d 78 |%....block%!8+=x| 000139a0 25 3a 6d 69 6e 78 25 3d 62 6c 6f 63 6b 25 21 38 |%:minx%=block%!8| 000139b0 0d 0a ab 21 62 6c 6f 63 6b 25 21 31 32 2b 3d 79 |...!block%!12+=y| 000139c0 25 3a 6d 69 6e 79 25 3d 62 6c 6f 63 6b 25 21 31 |%:miny%=block%!1| 000139d0 32 0d 0a ac 21 62 6c 6f 63 6b 25 21 31 36 2b 3d |2...!block%!16+=| 000139e0 78 25 3a 6d 61 78 78 25 3d 62 6c 6f 63 6b 25 21 |x%:maxx%=block%!| 000139f0 31 36 0d 0a ad 21 62 6c 6f 63 6b 25 21 32 30 2b |16...!block%!20+| 00013a00 3d 79 25 3a 6d 61 78 79 25 3d 62 6c 6f 63 6b 25 |=y%:maxy%=block%| 00013a10 21 32 30 0d 0a ae 13 e7 20 64 72 61 67 74 79 70 |!20..... dragtyp| 00013a20 65 25 3d 36 20 8c 0d 0a af 35 20 20 62 6c 6f 63 |e%=6 ....5 bloc| 00013a30 6b 25 21 32 34 3d 32 2a 6d 69 6e 78 25 2d 6d 61 |k%!24=2*minx%-ma| 00013a40 78 78 25 3a 62 6c 6f 63 6b 25 21 33 36 3d 32 2a |xx%:block%!36=2*| 00013a50 6d 61 78 79 25 2d 6d 69 6e 79 25 0d 0a b0 20 20 |maxy%-miny%... | 00013a60 20 cc 20 62 6c 6f 63 6b 25 21 32 34 3d 30 3a 62 | . block%!24=0:b| 00013a70 6c 6f 63 6b 25 21 33 36 3d 48 25 0d 0a b1 05 cd |lock%!36=H%.....| 00013a80 0d 0a b2 0f 62 6c 6f 63 6b 25 21 32 38 3d 30 0d |....block%!28=0.| 00013a90 0a b3 10 62 6c 6f 63 6b 25 21 33 32 3d 57 25 0d |...block%!32=W%.| 00013aa0 0a b4 0d 21 62 6c 6f 63 6b 25 3d 30 0d 0a b5 16 |...!block%=0....| 00013ab0 62 6c 6f 63 6b 25 21 34 3d 64 72 61 67 74 79 70 |block%!4=dragtyp| 00013ac0 65 25 0d 0a b6 0f 64 72 61 67 67 69 6e 67 25 3d |e%....dragging%=| 00013ad0 b9 0d 0a b7 0c c8 8e 20 77 69 25 20 ca 0d 0a b8 |....... wi% ....| 00013ae0 19 20 20 c9 20 73 61 76 65 57 25 2c 73 61 76 65 |. . saveW%,save| 00013af0 73 75 62 57 25 3a 0d 0a b9 11 20 20 e7 20 52 49 |subW%:.... . RI| 00013b00 53 43 4f 53 33 20 8c 0d 0a ba 4d 20 20 20 20 e7 |SCOS3 ....M .| 00013b10 20 77 69 25 3d 73 61 76 65 57 25 20 8c 20 73 70 | wi%=saveW% . sp| 00013b20 72 69 74 65 24 3d c1 24 53 61 76 65 53 70 72 69 |rite$=.$SaveSpri| 00013b30 74 65 25 2c 32 2c 38 29 20 8b 20 73 70 72 69 74 |te%,2,8) . sprit| 00013b40 65 24 3d c1 24 53 75 62 53 70 72 69 74 65 25 2c |e$=.$SubSprite%,| 00013b50 32 2c 38 29 0d 0a bb 35 20 20 20 20 c8 99 20 22 |2,8)...5 .. "| 00013b60 44 72 61 67 41 53 70 72 69 74 65 5f 53 74 61 72 |DragASprite_Star| 00013b70 74 22 2c 26 43 35 2c 31 2c 73 70 72 69 74 65 24 |t",&C5,1,sprite$| 00013b80 2c 62 6c 6f 63 6b 25 2b 38 0d 0a bc 23 20 20 20 |,block%+8...# | 00013b90 20 cc 20 c8 99 20 22 57 69 6d 70 5f 44 72 61 67 | . .. "Wimp_Drag| 00013ba0 42 6f 78 22 2c 2c 62 6c 6f 63 6b 25 0d 0a bd 07 |Box",,block%....| 00013bb0 20 20 cd 0d 0a be 08 20 20 7f 3a 0d 0a bf 1f 20 | ..... .:.... | 00013bc0 20 c8 99 20 22 57 69 6d 70 5f 44 72 61 67 42 6f | .. "Wimp_DragBo| 00013bd0 78 22 2c 2c 62 6c 6f 63 6b 25 0d 0a c0 05 cb 0d |x",,block%......| 00013be0 0a c1 1d e7 20 77 69 25 3d 6d 61 69 6e 57 25 20 |.... wi%=mainW% | 00013bf0 8c 20 66 69 63 6f 6e 25 3d 69 63 25 0d 0a c2 05 |. ficon%=ic%....| 00013c00 e1 0d 0a c3 05 3a 0d 0a c4 1c dd 20 f2 65 6e 64 |.....:..... .end| 00013c10 5f 64 72 61 67 28 73 74 61 72 74 25 2c 65 6e 64 |_drag(start%,end| 00013c20 25 29 0d 0a c5 0d ea 20 77 69 25 2c 69 63 25 0d |%)..... wi%,ic%.| 00013c30 0a c6 0f 64 72 61 67 67 69 6e 67 25 3d a3 0d 0a |...dragging%=...| 00013c40 c7 19 64 61 74 61 73 69 7a 65 25 3d 65 6e 64 25 |..datasize%=end%| 00013c50 2d 73 74 61 72 74 25 0d 0a c8 24 c8 99 20 22 57 |-start%...$.. "W| 00013c60 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e |imp_GetPointerIn| 00013c70 66 6f 22 2c 2c 62 6c 6f 63 6b 25 0d 0a c9 1f 77 |fo",,block%....w| 00013c80 69 25 3d 62 6c 6f 63 6b 25 21 31 32 3a 69 63 25 |i%=block%!12:ic%| 00013c90 3d 62 6c 6f 63 6b 25 21 31 36 0d 0a ca 37 62 6c |=block%!16...7bl| 00013ca0 6f 63 6b 25 21 33 32 3d 62 6c 6f 63 6b 25 21 34 |ock%!32=block%!4| 00013cb0 3a 62 6c 6f 63 6b 25 21 32 38 3d 62 6c 6f 63 6b |:block%!28=block| 00013cc0 25 21 30 3a 62 6c 6f 63 6b 25 21 32 34 3d 69 63 |%!0:block%!24=ic| 00013cd0 25 0d 0a cb 1d 62 6c 6f 63 6b 25 21 32 30 3d 77 |%....block%!20=w| 00013ce0 69 25 3a 62 6c 6f 63 6b 25 21 31 36 3d 31 0d 0a |i%:block%!16=1..| 00013cf0 cc 33 62 6c 6f 63 6b 25 21 31 32 3d 30 3a 62 6c |.3block%!12=0:bl| 00013d00 6f 63 6b 25 21 33 36 3d 64 61 74 61 73 69 7a 65 |ock%!36=datasize| 00013d10 25 3a 62 6c 6f 63 6b 25 21 34 30 3d 54 79 70 65 |%:block%!40=Type| 00013d20 25 0d 0a cd 0f e7 20 64 65 73 69 67 6e 25 20 8c |%..... design% .| 00013d30 0d 0a ce 1e 20 20 f2 61 64 6a 75 73 74 5f 66 69 |.... .adjust_fi| 00013d40 65 6c 64 28 64 72 61 67 62 75 74 74 25 29 0d 0a |eld(dragbutt%)..| 00013d50 cf 07 20 20 cc 0d 0a d0 25 20 20 e7 20 46 69 6c |.. ....% . Fil| 00013d60 65 6e 61 6d 65 24 3c 3e 22 22 20 80 20 77 69 25 |ename$<>"" . wi%| 00013d70 3c 3e 6d 61 69 6e 57 25 20 8c 0d 0a d1 25 20 20 |<>mainW% ....% | 00013d80 20 20 24 28 62 6c 6f 63 6b 25 2b 34 34 29 3d a4 | $(block%+44)=.| 00013d90 6c 65 61 66 28 46 69 6c 65 6e 61 6d 65 24 29 0d |leaf(Filename$).| 00013da0 0a d2 12 20 20 20 20 21 62 6c 6f 63 6b 25 3d 36 |... !block%=6| 00013db0 30 0d 0a d3 2f 20 20 20 20 c8 99 20 22 57 69 6d |0.../ .. "Wim| 00013dc0 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 |p_SendMessage",1| 00013dd0 37 2c 62 6c 6f 63 6b 25 2c 77 69 25 2c 69 63 25 |7,block%,wi%,ic%| 00013de0 0d 0a d4 16 20 20 20 20 72 61 6d 70 74 72 25 3d |.... ramptr%=| 00013df0 73 74 61 72 74 25 0d 0a d5 20 20 20 20 20 c8 99 |start%... ..| 00013e00 20 22 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e | "Wimp_CreateMen| 00013e10 75 22 2c 2c 2d 31 0d 0a d6 07 20 20 cd 0d 0a d7 |u",,-1.... ....| 00013e20 05 cd 0d 0a d8 05 e1 0d 0a d9 05 3a 0d 0a da 15 |...........:....| 00013e30 dd 20 a4 65 6e 63 72 79 70 74 28 53 24 2c 5a 25 |. .encrypt(S$,Z%| 00013e40 29 0d 0a db 0b ea 20 49 25 2c 52 25 0d 0a dc 10 |)..... I%,R%....| 00013e50 52 25 3d b3 28 2d 31 32 38 31 37 29 0d 0a dd 12 |R%=.(-12817)....| 00013e60 e3 20 49 25 3d 31 20 b8 20 a9 28 53 24 29 0d 0a |. I%=1 . .(S$)..| 00013e70 de 10 20 20 52 25 3d b3 28 35 38 29 2d 31 0d 0a |.. R%=.(58)-1..| 00013e80 df 17 20 20 e7 20 ac 20 5a 25 20 8c 20 52 25 3d |.. . . Z% . R%=| 00013e90 35 38 2d 52 25 0d 0a e0 2f 20 20 c1 53 24 2c 49 |58-R%.../ .S$,I| 00013ea0 25 2c 31 29 3d bd 28 28 97 28 c1 53 24 2c 49 25 |%,1)=.((.(.S$,I%| 00013eb0 2c 31 29 29 2d 36 35 2b 52 25 29 20 83 20 35 38 |,1))-65+R%) . 58| 00013ec0 2b 36 35 29 0d 0a e1 08 ed 20 49 25 0d 0a e2 07 |+65)..... I%....| 00013ed0 3d 53 24 0d 0a e3 05 3a 0d 0a e4 0f dd 20 a4 6c |=S$....:..... .l| 00013ee0 65 61 66 28 73 24 29 0d 0a e5 0a 73 32 24 3d 22 |eaf(s$)....s2$="| 00013ef0 22 0d 0a e6 19 c8 95 20 c2 73 24 29 3c 3e 22 2e |"...... .s$)<>".| 00013f00 22 20 80 20 73 24 3c 3e 22 22 0d 0a e7 12 20 20 |" . s$<>"".... | 00013f10 73 32 24 3d c2 73 24 29 2b 73 32 24 0d 0a e8 0d |s2$=.s$)+s2$....| 00013f20 20 20 73 24 3d c0 73 24 29 0d 0a e9 05 ce 0d 0a | s$=.s$).......| 00013f30 ea 13 64 62 61 73 65 70 61 74 68 24 3d c0 73 24 |..dbasepath$=.s$| 00013f40 29 0d 0a eb 08 3d 73 32 24 0d 0a ec 05 3a 0d 0a |)....=s2$....:..| 00013f50 ed 4b f4 20 4d 65 73 73 61 67 65 20 68 61 6e 64 |.K. Message hand| 00013f60 6c 69 6e 67 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |ling -----------| 00013f70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00013f90 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a ee 05 3a 0d 0a |---------....:..| 00013fa0 ef 17 dd 20 f2 6e 6f 74 5f 61 63 6b 6e 6f 77 6c |... .not_acknowl| 00013fb0 65 64 67 65 64 0d 0a f0 12 c8 8e 20 62 6c 6f 63 |edged...... bloc| 00013fc0 6b 25 21 31 36 20 ca 0d 0a f1 0a 20 20 c9 20 35 |k%!16 ..... . 5| 00013fd0 3a 0d 0a f2 24 20 20 f4 20 44 61 74 61 4f 70 65 |:...$ . DataOpe| 00013fe0 6e 20 66 61 69 6c 65 64 2c 20 73 6f 20 72 75 6e |n failed, so run| 00013ff0 20 66 69 6c 65 0d 0a f3 26 20 20 e7 20 62 6c 6f | file...& . blo| 00014000 63 6b 25 21 38 3d 49 6d 70 72 65 66 25 20 8c 20 |ck%!8=Impref% . | 00014010 49 6d 70 5f 77 61 69 74 25 3d b9 0d 0a f4 26 20 |Imp_wait%=....& | 00014020 20 c8 99 20 22 57 69 6d 70 5f 53 74 61 72 74 54 | .. "Wimp_StartT| 00014030 61 73 6b 22 2c 24 28 62 6c 6f 63 6b 25 2b 34 34 |ask",$(block%+44| 00014040 29 0d 0a f5 0a 20 20 c9 20 37 3a 0d 0a f6 1a 20 |).... . 7:.... | 00014050 20 f4 20 52 41 4d 54 72 61 6e 73 6d 69 74 20 66 | . RAMTransmit f| 00014060 61 69 6c 65 64 0d 0a f7 29 20 20 e7 20 ac 20 6d |ailed...) . . m| 00014070 65 72 67 69 6e 67 25 20 8c 20 85 20 6d 6f 61 6e |erging% . . moan| 00014080 5f 65 72 72 25 2c a4 6d 73 67 28 33 39 29 0d 0a |_err%,.msg(39)..| 00014090 f8 0a 20 20 c9 20 33 3a 0d 0a f9 36 20 20 f4 20 |.. . 3:...6 . | 000140a0 44 61 74 61 4c 6f 61 64 20 66 61 69 6c 65 64 2c |DataLoad failed,| 000140b0 20 73 6f 20 64 65 6c 65 74 65 20 73 63 72 61 70 | so delete scrap| 000140c0 66 69 6c 65 20 28 69 66 20 6f 75 72 73 29 0d 0a |file (if ours)..| 000140d0 fa 31 20 20 e7 20 62 6c 6f 63 6b 25 21 38 3d 6d |.1 . block%!8=m| 000140e0 79 72 65 66 25 20 8c 20 c8 99 20 22 4f 53 5f 46 |yref% . .. "OS_F| 000140f0 69 6c 65 22 2c 36 2c 62 6c 6f 63 6b 2b 34 34 0d |ile",6,block+44.| 00014100 0a fb 1a 20 20 85 20 6d 6f 61 6e 5f 65 72 72 25 |... . moan_err%| 00014110 2c a4 6d 73 67 28 33 39 29 0d 0a fc 23 20 20 c9 |,.msg(39)...# .| 00014120 20 26 38 30 31 34 32 3a 85 20 6d 6f 61 6e 5f 65 | &80142:. moan_e| 00014130 72 72 25 2c a4 6d 73 67 28 39 30 29 0d 0a fd 05 |rr%,.msg(90)....| 00014140 cb 0d 0a fe 05 e1 0d 0a ff 05 3a 0d 0b 00 0e dd |..........:.....| 00014150 20 f2 6d 65 73 73 61 67 65 0d 0b 01 17 ea 20 74 | .message..... t| 00014160 61 73 6b 25 2c 72 65 66 25 2c 6d 79 72 65 66 25 |ask%,ref%,myref%| 00014170 0d 0b 02 20 74 61 73 6b 25 3d 62 6c 6f 63 6b 25 |... task%=block%| 00014180 21 34 3a 72 65 66 25 3d 62 6c 6f 63 6b 25 21 38 |!4:ref%=block%!8| 00014190 0d 0b 03 12 c8 8e 20 62 6c 6f 63 6b 25 21 31 36 |...... block%!16| 000141a0 20 ca 0d 0b 04 11 20 20 c9 20 30 3a 71 75 69 74 | ..... . 0:quit| 000141b0 25 3d b9 0d 0b 05 1c 20 20 c9 20 31 3a f4 20 23 |%=..... . 1:. #| 000141c0 23 23 20 44 61 74 61 53 61 76 65 20 23 23 23 0d |## DataSave ###.| 000141d0 0b 06 25 20 20 e7 20 74 61 73 6b 25 3c 3e 6d 79 |..% . task%<>my| 000141e0 74 61 73 6b 25 20 80 20 70 72 65 73 65 6e 74 25 |task% . present%| 000141f0 3d 37 20 8c 0d 0b 07 1b 20 20 20 20 64 61 74 61 |=7 ..... data| 00014200 73 69 7a 65 25 3d 62 6c 6f 63 6b 25 21 33 36 0d |size%=block%!36.| 00014210 0b 08 16 20 20 20 20 c8 8e 20 62 6c 6f 63 6b 25 |... .. block%| 00014220 21 34 30 20 ca 0d 0b 09 20 20 20 20 20 20 20 c9 |!40 .... .| 00014230 20 26 66 66 66 2c 26 66 66 39 2c 26 61 66 66 2c | &fff,&ff9,&aff,| 00014240 26 64 66 65 3a 0d 0b 0a 15 20 20 20 20 20 20 6d |&dfe:.... m| 00014250 79 72 65 66 25 3d 72 65 66 25 0d 0b 0b 3e 20 20 |yref%=ref%...> | 00014260 20 20 20 20 62 6c 6f 63 6b 25 21 30 3d 32 35 36 | block%!0=256| 00014270 3a 62 6c 6f 63 6b 25 21 31 32 3d 72 65 66 25 3a |:block%!12=ref%:| 00014280 62 6c 6f 63 6b 25 21 31 36 3d 32 3a 62 6c 6f 63 |block%!16=2:bloc| 00014290 6b 25 21 33 36 3d 2d 31 0d 0b 0c 2a 20 20 20 20 |k%!36=-1...* | 000142a0 20 20 24 28 62 6c 6f 63 6b 25 2b 34 34 29 3d 22 | $(block%+44)="| 000142b0 3c 57 69 6d 70 24 53 63 72 61 70 3e 22 2b bd 28 |<Wimp$Scrap>"+.(| 000142c0 30 29 0d 0b 0d 2f 20 20 20 20 20 20 c8 99 20 22 |0).../ .. "| 000142d0 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 |Wimp_SendMessage| 000142e0 22 2c 31 37 2c 62 6c 6f 63 6b 25 2c 74 61 73 6b |",17,block%,task| 000142f0 25 0d 0b 0e 09 20 20 20 20 cb 0d 0b 0f 07 20 20 |%.... ..... | 00014300 cd 0d 0b 10 1f 20 20 c9 20 32 3a f4 20 23 23 23 |..... . 2:. ###| 00014310 20 44 61 74 61 53 61 76 65 41 63 6b 20 23 23 23 | DataSaveAck ###| 00014320 0d 0b 11 31 20 20 f2 73 61 76 65 28 a4 67 65 74 |...1 .save(.get| 00014330 73 74 72 28 62 6c 6f 63 6b 25 2b 34 34 29 2c 54 |str(block%+44),T| 00014340 79 70 65 25 2c 53 74 61 72 74 25 2c 45 6e 64 25 |ype%,Start%,End%| 00014350 29 0d 0b 12 38 20 20 6d 79 72 65 66 25 3d 72 65 |)...8 myref%=re| 00014360 66 25 3a 62 6c 6f 63 6b 25 21 31 32 3d 72 65 66 |f%:block%!12=ref| 00014370 25 3a 62 6c 6f 63 6b 25 21 31 36 3d 33 3a 21 62 |%:block%!16=3:!b| 00014380 6c 6f 63 6b 25 3d 32 35 36 0d 0b 13 2b 20 20 c8 |lock%=256...+ .| 00014390 99 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 |. "Wimp_SendMess| 000143a0 61 67 65 22 2c 31 38 2c 62 6c 6f 63 6b 25 2c 74 |age",18,block%,t| 000143b0 61 73 6b 25 0d 0b 14 1e 20 20 c8 99 20 22 57 69 |ask%.... .. "Wi| 000143c0 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c |mp_CreateMenu",,| 000143d0 2d 31 0d 0b 15 1c 20 20 c9 20 33 3a f4 20 23 23 |-1.... . 3:. ##| 000143e0 23 20 44 61 74 61 4c 6f 61 64 20 23 23 23 0d 0b |# DataLoad ###..| 000143f0 16 2c 20 20 6d 79 72 65 66 25 3d 62 6c 6f 63 6b |., myref%=block| 00014400 25 21 31 32 3a 66 24 3d a4 67 65 74 73 74 72 28 |%!12:f$=.getstr(| 00014410 62 6c 6f 63 6b 25 2b 34 34 29 0d 0b 17 14 20 20 |block%+44).... | 00014420 f2 67 65 74 5f 69 74 5f 69 6e 28 66 24 29 0d 0b |.get_it_in(f$)..| 00014430 18 35 20 20 e7 20 6d 79 72 65 66 25 3c 3e 30 20 |.5 . myref%<>0 | 00014440 8c 20 c8 99 20 22 4f 53 5f 43 4c 49 22 2c 22 52 |. .. "OS_CLI","R| 00014450 65 6d 6f 76 65 20 3c 57 69 6d 70 24 53 63 72 61 |emove <Wimp$Scra| 00014460 70 3e 22 0d 0b 19 1f 20 20 c9 20 34 3a f4 20 23 |p>".... . 4:. #| 00014470 23 23 20 44 61 74 61 4c 6f 61 64 41 63 6b 20 23 |## DataLoadAck #| 00014480 23 23 0d 0b 1a 38 20 20 e7 20 62 6c 6f 63 6b 25 |##...8 . block%| 00014490 21 31 32 3d 49 6d 70 72 65 66 25 20 80 20 ac 20 |!12=Impref% . . | 000144a0 6d 65 72 67 69 6e 67 25 20 8c 20 f2 72 65 61 64 |merging% . .read| 000144b0 79 5f 74 6f 5f 6d 65 72 67 65 0d 0b 1b 3c 20 20 |y_to_merge...< | 000144c0 c9 20 35 3a f4 20 23 23 23 20 44 61 74 61 4f 70 |. 5:. ### DataOp| 000144d0 65 6e 20 2d 20 72 65 73 70 6f 6e 73 65 20 74 6f |en - response to| 000144e0 20 66 69 6c 65 20 64 6f 75 62 6c 65 20 63 6c 69 | file double cli| 000144f0 63 6b 20 23 23 23 0d 0b 1c 14 20 20 c8 8e 20 62 |ck ###.... .. b| 00014500 6c 6f 63 6b 25 21 34 30 20 ca 0d 0b 1d 1e 20 20 |lock%!40 ..... | 00014510 20 20 c9 20 26 37 66 31 2c 26 37 66 33 2c 26 37 | . &7f1,&7f3,&7| 00014520 66 34 2c 26 37 66 35 3a 0d 0b 1e 16 20 20 20 20 |f4,&7f5:.... | 00014530 e7 20 70 72 65 73 65 6e 74 25 3d 37 20 8c 0d 0b |. present%=7 ...| 00014540 1f 30 20 20 20 20 20 20 62 6c 6f 63 6b 25 21 30 |.0 block%!0| 00014550 3d 32 30 3a 62 6c 6f 63 6b 25 21 31 32 3d 72 65 |=20:block%!12=re| 00014560 66 25 3a 62 6c 6f 63 6b 25 21 31 36 3d 34 0d 0b |f%:block%!16=4..| 00014570 20 29 20 20 20 20 20 20 c8 99 20 22 57 69 6d 70 | ) .. "Wimp| 00014580 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 |_SendMessage",17| 00014590 2c 62 6c 6f 63 6b 25 0d 0b 21 28 20 20 20 20 20 |,block%..!( | 000145a0 20 f2 67 65 74 5f 69 74 5f 69 6e 28 a4 67 65 74 | .get_it_in(.get| 000145b0 73 74 72 28 62 6c 6f 63 6b 25 2b 34 34 29 29 0d |str(block%+44)).| 000145c0 0b 22 09 20 20 20 20 cd 0d 0b 23 10 20 20 20 20 |.". ...#. | 000145d0 c9 20 26 32 30 30 30 3a 0d 0b 24 1e 20 20 20 20 |. &2000:..$. | 000145e0 e7 20 6b 69 6c 6c 25 20 84 20 70 72 65 73 65 6e |. kill% . presen| 000145f0 74 25 3d 30 20 8c 0d 0b 25 2a 20 20 20 20 20 20 |t%=0 ...%* | 00014600 66 24 3d a4 67 65 74 73 74 72 28 62 6c 6f 63 6b |f$=.getstr(block| 00014610 25 2b 34 34 29 2b 22 2e 49 6e 64 69 63 65 73 22 |%+44)+".Indices"| 00014620 0d 0b 26 20 20 20 20 20 20 20 c8 99 20 22 4f 53 |..& .. "OS| 00014630 5f 46 69 6c 65 22 2c 35 2c 66 24 20 b8 20 64 25 |_File",5,f$ . d%| 00014640 0d 0b 27 12 20 20 20 20 20 20 e7 20 64 25 3d 32 |..'. . d%=2| 00014650 20 8c 0d 0b 28 32 20 20 20 20 20 20 20 20 62 6c | ...(2 bl| 00014660 6f 63 6b 25 21 30 3d 32 30 3a 62 6c 6f 63 6b 25 |ock%!0=20:block%| 00014670 21 31 32 3d 72 65 66 25 3a 62 6c 6f 63 6b 25 21 |!12=ref%:block%!| 00014680 31 36 3d 34 0d 0b 29 2b 20 20 20 20 20 20 20 20 |16=4..)+ | 00014690 c8 99 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 |.. "Wimp_SendMes| 000146a0 73 61 67 65 22 2c 31 37 2c 62 6c 6f 63 6b 25 0d |sage",17,block%.| 000146b0 0b 2a 2a 20 20 20 20 20 20 20 20 f2 67 65 74 5f |.** .get_| 000146c0 69 74 5f 69 6e 28 a4 67 65 74 73 74 72 28 62 6c |it_in(.getstr(bl| 000146d0 6f 63 6b 25 2b 34 34 29 29 0d 0b 2b 0b 20 20 20 |ock%+44))..+. | 000146e0 20 20 20 cd 0d 0b 2c 09 20 20 20 20 cd 0d 0b 2d | ...,. ...-| 000146f0 07 20 20 cb 0d 0b 2e 4c 20 20 c9 20 36 3a e7 20 |. ....L . 6:. | 00014700 73 61 76 65 66 75 6e 63 24 3c 3e 22 53 61 76 65 |savefunc$<>"Save| 00014710 20 6c 69 73 74 22 20 80 20 73 61 76 65 66 75 6e | list" . savefun| 00014720 63 24 3c 3e 22 45 78 70 6f 72 74 20 43 53 56 22 |c$<>"Export CSV"| 00014730 20 8c 20 f2 72 61 6d 5f 74 72 61 6e 73 6d 69 74 | . .ram_transmit| 00014740 0d 0b 2f 2f 20 20 c9 20 26 35 30 32 3a f2 68 65 |..// . &502:.he| 00014750 6c 70 5f 6d 65 73 73 61 67 65 28 62 6c 6f 63 6b |lp_message(block| 00014760 25 21 33 32 2c 62 6c 6f 63 6b 25 21 33 36 29 0d |%!32,block%!36).| 00014770 0b 30 39 20 20 c9 20 26 34 30 30 43 32 3a f2 67 |.09 . &400C2:.g| 00014780 65 74 73 63 72 65 65 6e 73 69 7a 65 28 53 63 72 |etscreensize(Scr| 00014790 65 65 6e 57 69 64 74 68 25 2c 53 63 72 65 65 6e |eenWidth%,Screen| 000147a0 48 65 69 67 68 74 25 29 0d 0b 31 23 20 20 c9 20 |Height%)..1# . | 000147b0 26 34 30 30 43 30 3a f2 6d 65 73 73 61 67 65 5f |&400C0:.message_| 000147c0 6d 65 6e 75 5f 73 65 6c 65 63 74 0d 0b 32 2b 20 |menu_select..2+ | 000147d0 20 c9 20 26 38 30 31 34 30 3a f4 20 23 23 23 20 | . &80140:. ### | 000147e0 50 72 69 6e 74 46 69 6c 65 20 2d 20 69 67 6e 6f |PrintFile - igno| 000147f0 72 65 20 23 23 23 0d 0b 33 05 cb 0d 0b 34 05 e1 |re ###..3....4..| 00014800 0d 0b 35 05 3a 0d 0b 36 13 dd 20 f2 72 61 6d 5f |..5.:..6.. .ram_| 00014810 74 72 61 6e 73 6d 69 74 0d 0b 37 41 e7 20 64 61 |transmit..7A. da| 00014820 74 61 73 69 7a 65 25 3e 62 6c 6f 63 6b 25 21 32 |tasize%>block%!2| 00014830 34 20 8c 20 74 6f 73 65 6e 64 25 3d 62 6c 6f 63 |4 . tosend%=bloc| 00014840 6b 25 21 32 34 20 8b 20 74 6f 73 65 6e 64 25 3d |k%!24 . tosend%=| 00014850 64 61 74 61 73 69 7a 65 25 0d 0b 38 46 c8 99 20 |datasize%..8F.. | 00014860 22 57 69 6d 70 5f 54 72 61 6e 73 66 65 72 42 6c |"Wimp_TransferBl| 00014870 6f 63 6b 22 2c 6d 79 74 61 73 6b 25 2c 72 61 6d |ock",mytask%,ram| 00014880 70 74 72 25 2c 62 6c 6f 63 6b 25 21 34 2c 62 6c |ptr%,block%!4,bl| 00014890 6f 63 6b 25 21 32 30 2c 74 6f 73 65 6e 64 25 0d |ock%!20,tosend%.| 000148a0 0b 39 15 62 6c 6f 63 6b 25 21 32 34 3d 74 6f 73 |.9.block%!24=tos| 000148b0 65 6e 64 25 0d 0b 3a 16 64 61 74 61 73 69 7a 65 |end%..:.datasize| 000148c0 25 2d 3d 74 6f 73 65 6e 64 25 0d 0b 3b 14 72 61 |%-=tosend%..;.ra| 000148d0 6d 70 74 72 25 2b 3d 74 6f 73 65 6e 64 25 0d 0b |mptr%+=tosend%..| 000148e0 3c 16 62 6c 6f 63 6b 25 21 31 32 3d 62 6c 6f 63 |<.block%!12=bloc| 000148f0 6b 25 21 38 0d 0b 3d 0f 62 6c 6f 63 6b 25 21 31 |k%!8..=.block%!1| 00014900 36 3d 37 0d 0b 3e 3a c8 99 20 22 57 69 6d 70 5f |6=7..>:.. "Wimp_| 00014910 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 38 2b |SendMessage",18+| 00014920 28 64 61 74 61 73 69 7a 65 25 3d 30 29 2c 62 6c |(datasize%=0),bl| 00014930 6f 63 6b 25 2c 62 6c 6f 63 6b 25 21 34 0d 0b 3f |ock%,block%!4..?| 00014940 05 e1 0d 0b 40 05 3a 0d 0b 41 1a dd 20 f2 6d 65 |....@.:..A.. .me| 00014950 73 73 61 67 65 5f 6d 65 6e 75 5f 73 65 6c 65 63 |ssage_menu_selec| 00014960 74 0d 0b 42 0e ea 20 50 25 2c 51 25 2c 49 25 0d |t..B.. P%,Q%,I%.| 00014970 0b 43 1c 6b 65 79 66 75 6e 63 24 3d 22 22 3a 73 |.C.keyfunc$="":s| 00014980 61 76 65 66 75 6e 63 24 3d 22 22 0d 0b 44 35 68 |avefunc$=""..D5h| 00014990 61 6e 64 6c 65 25 3d 62 6c 6f 63 6b 25 21 32 30 |andle%=block%!20| 000149a0 3a 78 6d 69 6e 25 3d 62 6c 6f 63 6b 25 21 32 34 |:xmin%=block%!24| 000149b0 3a 79 6d 61 78 25 3d 62 6c 6f 63 6b 25 21 32 38 |:ymax%=block%!28| 000149c0 0d 0b 45 08 50 25 3d 31 0d 0b 46 38 c8 99 20 22 |..E.P%=1..F8.. "| 000149d0 57 69 6d 70 5f 44 65 63 6f 64 65 4d 65 6e 75 22 |Wimp_DecodeMenu"| 000149e0 2c 2c 6d 65 6e 75 68 61 6e 64 6c 65 25 2c 62 6c |,,menuhandle%,bl| 000149f0 6f 63 6b 25 2b 33 32 2c 63 68 6f 69 63 65 73 25 |ock%+32,choices%| 00014a00 0d 0b 47 0e e3 20 49 25 3d 31 20 b8 20 34 0d 0b |..G.. I%=1 . 4..| 00014a10 48 1d 20 20 51 25 3d a7 24 63 68 6f 69 63 65 73 |H. Q%=.$choices| 00014a20 25 2c 22 2e 22 2c 50 25 2b 31 29 0d 0b 49 26 20 |%,".",P%+1)..I& | 00014a30 20 63 68 6f 69 63 65 24 28 49 25 29 3d c1 24 63 | choice$(I%)=.$c| 00014a40 68 6f 69 63 65 73 25 2c 50 25 2c 51 25 2d 50 25 |hoices%,P%,Q%-P%| 00014a50 29 0d 0b 4a 0d 20 20 50 25 3d 51 25 2b 31 0d 0b |)..J. P%=Q%+1..| 00014a60 4b 08 ed 20 49 25 0d 0b 4c 14 c8 8e 20 6d 65 6e |K.. I%..L... men| 00014a70 75 68 61 6e 64 6c 65 25 20 ca 0d 0b 4d 11 20 20 |uhandle% ...M. | 00014a80 c9 20 6d 65 6e 75 25 28 30 29 3a 0d 0b 4e 15 20 |. menu%(0):..N. | 00014a90 20 c8 8e 20 63 68 6f 69 63 65 24 28 31 29 20 ca | .. choice$(1) .| 00014aa0 0d 0b 4f 19 20 20 20 20 c9 20 22 4e 65 77 20 64 |..O. . "New d| 00014ab0 61 74 61 62 61 73 65 22 3a 0d 0b 50 1e 20 20 20 |atabase":..P. | 00014ac0 20 24 53 61 76 65 4e 61 6d 65 25 3d 22 21 44 61 | $SaveName%="!Da| 00014ad0 74 61 42 61 73 65 22 0d 0b 51 32 20 20 20 20 24 |taBase"..Q2 $| 00014ae0 53 61 76 65 53 70 72 69 74 65 25 3d 22 73 6e 65 |SaveSprite%="sne| 00014af0 77 5f 61 70 70 6c 3b 50 70 74 72 5f 68 61 6e 64 |w_appl;Pptr_hand| 00014b00 2c 31 32 2c 38 3b 42 33 22 0d 0b 52 1c 20 20 20 |,12,8;B3"..R. | 00014b10 20 73 61 76 65 66 75 6e 63 24 3d 63 68 6f 69 63 | savefunc$=choic| 00014b20 65 24 28 31 29 0d 0b 53 07 20 20 cb 0d 0b 54 11 |e$(1)..S. ...T.| 00014b30 20 20 c9 20 6d 65 6e 75 25 28 31 29 3a 0d 0b 55 | . menu%(1):..U| 00014b40 15 20 20 c8 8e 20 63 68 6f 69 63 65 24 28 31 29 |. .. choice$(1)| 00014b50 20 ca 0d 0b 56 36 20 20 20 20 c9 20 22 49 6e 66 | ...V6 . "Inf| 00014b60 6f 72 6d 61 74 69 6f 6e 22 3a f2 63 6f 75 6e 74 |ormation":.count| 00014b70 28 6b 65 79 25 2c 52 55 25 29 3a f2 75 70 64 61 |(key%,RU%):.upda| 00014b80 74 65 5f 73 74 61 74 73 0d 0b 57 12 20 20 20 20 |te_stats..W. | 00014b90 c9 20 22 50 72 69 6e 74 22 3a 0d 0b 58 17 20 20 |. "Print":..X. | 00014ba0 20 20 c8 8e 20 63 68 6f 69 63 65 24 28 32 29 20 | .. choice$(2) | 00014bb0 ca 0d 0b 59 1b 20 20 20 20 20 20 c9 20 22 53 61 |...Y. . "Sa| 00014bc0 76 65 20 6f 70 74 69 6f 6e 73 22 3a 0d 0b 5a 35 |ve options":..Z5| 00014bd0 20 20 20 20 20 20 24 53 61 76 65 4e 61 6d 65 25 | $SaveName%| 00014be0 3d 24 64 61 74 61 62 61 73 65 25 2b 22 2e 50 72 |=$database%+".Pr| 00014bf0 69 6e 74 52 65 73 2e 50 72 69 6e 74 4f 70 74 73 |intRes.PrintOpts| 00014c00 22 0d 0b 5b 34 20 20 20 20 20 20 24 53 61 76 65 |"..[4 $Save| 00014c10 53 70 72 69 74 65 25 3d 22 73 66 69 6c 65 5f 37 |Sprite%="sfile_7| 00014c20 66 35 3b 50 70 74 72 5f 68 61 6e 64 2c 31 32 2c |f5;Pptr_hand,12,| 00014c30 38 3b 42 33 22 0d 0b 5c 19 20 20 20 20 20 20 c9 |8;B3"..\. .| 00014c40 20 22 53 61 76 65 20 71 75 65 72 79 22 3a 0d 0b | "Save query":..| 00014c50 5d 31 20 20 20 20 20 20 24 53 61 76 65 4e 61 6d |]1 $SaveNam| 00014c60 65 25 3d 24 64 61 74 61 62 61 73 65 25 2b 22 2e |e%=$database%+".| 00014c70 50 72 69 6e 74 52 65 73 2e 51 75 65 72 79 22 0d |PrintRes.Query".| 00014c80 0b 5e 34 20 20 20 20 20 20 24 53 61 76 65 53 70 |.^4 $SaveSp| 00014c90 72 69 74 65 25 3d 22 73 66 69 6c 65 5f 37 66 34 |rite%="sfile_7f4| 00014ca0 3b 50 70 74 72 5f 68 61 6e 64 2c 31 32 2c 38 3b |;Pptr_hand,12,8;| 00014cb0 42 33 22 0d 0b 5f 1d 20 20 20 20 20 20 c9 20 22 |B3".._. . "| 00014cc0 53 61 76 65 20 73 65 6c 65 63 74 69 6f 6e 22 3a |Save selection":| 00014cd0 0d 0b 60 35 20 20 20 20 20 20 24 53 61 76 65 4e |..`5 $SaveN| 00014ce0 61 6d 65 25 3d 24 64 61 74 61 62 61 73 65 25 2b |ame%=$database%+| 00014cf0 22 2e 50 72 69 6e 74 52 65 73 2e 53 65 6c 65 63 |".PrintRes.Selec| 00014d00 74 69 6f 6e 22 0d 0b 61 34 20 20 20 20 20 20 24 |tion"..a4 $| 00014d10 53 61 76 65 53 70 72 69 74 65 25 3d 22 73 66 69 |SaveSprite%="sfi| 00014d20 6c 65 5f 37 66 33 3b 50 70 74 72 5f 68 61 6e 64 |le_7f3;Pptr_hand| 00014d30 2c 31 32 2c 38 3b 42 33 22 0d 0b 62 09 20 20 20 |,12,8;B3"..b. | 00014d40 20 cb 0d 0b 63 1c 20 20 20 20 73 61 76 65 66 75 | ...c. savefu| 00014d50 6e 63 24 3d 63 68 6f 69 63 65 24 28 32 29 0d 0b |nc$=choice$(2)..| 00014d60 64 1a 20 20 20 20 c9 20 22 4d 69 73 63 65 6c 6c |d. . "Miscell| 00014d70 61 6e 65 6f 75 73 22 3a 0d 0b 65 17 20 20 20 20 |aneous":..e. | 00014d80 c8 8e 20 63 68 6f 69 63 65 24 28 32 29 20 ca 0d |.. choice$(2) ..| 00014d90 0b 66 1b 20 20 20 20 20 20 c9 20 22 42 61 74 63 |.f. . "Batc| 00014da0 68 20 64 65 6c 65 74 65 22 3a 0d 0b 67 43 20 20 |h delete":..gC | 00014db0 20 20 20 20 f2 73 65 6c 65 63 74 28 6d 6f 76 65 | .select(move| 00014dc0 57 25 2c 32 29 3a f2 64 65 73 65 6c 65 63 74 28 |W%,2):.deselect(| 00014dd0 6d 6f 76 65 57 25 2c 31 29 3a f2 64 65 73 65 6c |moveW%,1):.desel| 00014de0 65 63 74 28 6d 6f 76 65 57 25 2c 30 29 0d 0b 68 |ect(moveW%,0)..h| 00014df0 2b 20 20 20 20 20 20 e7 20 ac 20 63 6f 6d 6d 6f |+ . . commo| 00014e00 6e 25 20 8c 20 24 a4 74 65 78 74 28 6d 6f 76 65 |n% . $.text(move| 00014e10 57 25 2c 37 29 3d 22 22 0d 0b 69 16 20 20 20 20 |W%,7)=""..i. | 00014e20 20 20 c9 20 22 43 6f 6c 6f 75 72 73 22 3a 0d 0b | . "Colours":..| 00014e30 6a 19 20 20 20 20 20 20 6e 63 6f 6c 25 28 29 3d |j. ncol%()=| 00014e40 66 63 6f 6c 25 28 29 0d 0b 6b 14 20 20 20 20 20 |fcol%()..k. | 00014e50 20 e3 20 49 25 3d 30 20 b8 20 36 0d 0b 6c 2e 20 | . I%=0 . 6..l. | 00014e60 20 20 20 20 20 20 20 f2 73 65 74 5f 69 63 6f 6e | .set_icon| 00014e70 5f 63 6f 6c 73 28 63 6f 6c 57 25 2c 49 25 2c 6e |_cols(colW%,I%,n| 00014e80 63 6f 6c 25 28 49 25 29 29 0d 0b 6d 0e 20 20 20 |col%(I%))..m. | 00014e90 20 20 20 ed 20 49 25 0d 0b 6e 38 20 20 20 20 20 | . I%..n8 | 00014ea0 20 21 62 6c 6f 63 6b 25 3d 63 6f 6c 57 25 3a c8 | !block%=colW%:.| 00014eb0 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f |. "Wimp_GetWindo| 00014ec0 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d |wState",,block%.| 00014ed0 0b 6f 23 20 20 20 20 20 20 77 69 64 74 68 25 3d |.o# width%=| 00014ee0 62 6c 6f 63 6b 25 21 31 32 2d 62 6c 6f 63 6b 25 |block%!12-block%| 00014ef0 21 34 0d 0b 70 2f 20 20 20 20 20 20 62 6c 6f 63 |!4..p/ bloc| 00014f00 6b 25 21 34 3d 78 6d 69 6e 25 3a 62 6c 6f 63 6b |k%!4=xmin%:block| 00014f10 25 21 31 32 3d 78 6d 69 6e 25 2b 77 69 64 74 68 |%!12=xmin%+width| 00014f20 25 0d 0b 71 30 20 20 20 20 20 20 62 6c 6f 63 6b |%..q0 block| 00014f30 25 21 38 3d 79 6d 61 78 25 2d 68 65 69 67 68 74 |%!8=ymax%-height| 00014f40 25 3a 62 6c 6f 63 6b 25 21 31 36 3d 79 6d 61 78 |%:block%!16=ymax| 00014f50 25 0d 0b 72 09 20 20 20 20 cb 0d 0b 73 1a 20 20 |%..r. ...s. | 00014f60 20 20 c9 20 22 45 78 70 6f 72 74 20 73 75 62 73 | . "Export subs| 00014f70 65 74 22 3a 0d 0b 74 41 20 20 20 20 65 78 70 6f |et":..tA expo| 00014f80 72 74 25 3d b9 3a 24 53 75 62 54 69 74 6c 65 25 |rt%=.:$SubTitle%| 00014f90 3d 22 45 78 70 6f 72 74 20 73 75 62 73 65 74 22 |="Export subset"| 00014fa0 3a 73 61 76 65 66 75 6e 63 24 3d 63 68 6f 69 63 |:savefunc$=choic| 00014fb0 65 24 28 31 29 0d 0b 75 56 20 20 20 20 24 53 75 |e$(1)..uV $Su| 00014fc0 62 4e 61 6d 65 25 3d 24 64 61 74 61 62 61 73 65 |bName%=$database| 00014fd0 25 2b 22 2e 50 72 69 6e 74 4a 6f 62 73 2e 21 53 |%+".PrintJobs.!S| 00014fe0 75 62 73 65 74 22 3a e7 20 ac 20 63 6f 6d 6d 6f |ubset":. . commo| 00014ff0 6e 25 20 8c 20 24 a4 74 65 78 74 28 73 61 76 65 |n% . $.text(save| 00015000 73 75 62 57 25 2c 30 29 3d 22 22 0d 0b 76 31 20 |subW%,0)=""..v1 | 00015010 20 20 20 24 53 75 62 53 70 72 69 74 65 25 3d 22 | $SubSprite%="| 00015020 73 6e 65 77 5f 61 70 70 6c 3b 50 70 74 72 5f 68 |snew_appl;Pptr_h| 00015030 61 6e 64 2c 31 32 2c 38 3b 42 33 22 0d 0b 77 17 |and,12,8;B3"..w.| 00015040 20 20 20 20 c9 20 22 45 78 70 6f 72 74 20 43 53 | . "Export CS| 00015050 56 22 3a 0d 0b 78 39 20 20 20 20 24 53 75 62 54 |V":..x9 $SubT| 00015060 69 74 6c 65 25 3d 22 45 78 70 6f 72 74 20 43 53 |itle%="Export CS| 00015070 56 20 66 69 6c 65 22 3a 73 61 76 65 66 75 6e 63 |V file":savefunc| 00015080 24 3d 63 68 6f 69 63 65 24 28 31 29 0d 0b 79 3a |$=choice$(1)..y:| 00015090 20 20 20 20 e7 20 73 65 70 24 3d 22 2c 22 20 8c | . sep$="," .| 000150a0 20 74 24 3d 22 64 66 65 22 3a 66 24 3d 22 43 53 | t$="dfe":f$="CS| 000150b0 56 22 20 8b 20 74 24 3d 22 66 66 66 22 3a 66 24 |V" . t$="fff":f$| 000150c0 3d 22 53 65 70 22 0d 0b 7a 59 20 20 20 20 24 53 |="Sep"..zY $S| 000150d0 75 62 4e 61 6d 65 25 3d 24 64 61 74 61 62 61 73 |ubName%=$databas| 000150e0 65 25 2b 22 2e 50 72 69 6e 74 4a 6f 62 73 2e 22 |e%+".PrintJobs."| 000150f0 2b 66 24 2b 22 66 69 6c 65 22 3a e7 20 ac 20 63 |+f$+"file":. . c| 00015100 6f 6d 6d 6f 6e 25 20 8c 20 24 a4 74 65 78 74 28 |ommon% . $.text(| 00015110 73 61 76 65 73 75 62 57 25 2c 30 29 3d 22 22 0d |savesubW%,0)="".| 00015120 0b 7b 34 20 20 20 20 24 53 75 62 53 70 72 69 74 |.{4 $SubSprit| 00015130 65 25 3d 22 73 66 69 6c 65 5f 22 2b 74 24 2b 22 |e%="sfile_"+t$+"| 00015140 3b 50 70 74 72 5f 68 61 6e 64 2c 31 32 2c 38 3b |;Pptr_hand,12,8;| 00015150 42 33 22 0d 0b 7c 07 20 20 cb 0d 0b 7d 11 20 20 |B3"..|. ...}. | 00015160 c9 20 6d 65 6e 75 25 28 39 29 3a 0d 0b 7e 15 20 |. menu%(9):..~. | 00015170 20 c8 8e 20 63 68 6f 69 63 65 24 28 31 29 20 ca | .. choice$(1) .| 00015180 0d 0b 7f 1b 20 20 20 20 c9 20 22 53 61 76 65 20 |.... . "Save | 00015190 66 6f 72 6d 20 66 69 6c 65 22 3a 0d 0b 80 25 20 |form file":...% | 000151a0 20 20 20 24 53 61 76 65 4e 61 6d 65 25 3d 24 64 | $SaveName%=$d| 000151b0 61 74 61 62 61 73 65 25 2b 22 2e 46 6f 72 6d 22 |atabase%+".Form"| 000151c0 0d 0b 81 32 20 20 20 20 24 53 61 76 65 53 70 72 |...2 $SaveSpr| 000151d0 69 74 65 25 3d 22 73 66 69 6c 65 5f 37 66 32 3b |ite%="sfile_7f2;| 000151e0 50 70 74 72 5f 68 61 6e 64 2c 31 32 2c 38 3b 42 |Pptr_hand,12,8;B| 000151f0 33 22 0d 0b 82 1c 20 20 20 20 73 61 76 65 66 75 |3".... savefu| 00015200 6e 63 24 3d 63 68 6f 69 63 65 24 28 31 29 0d 0b |nc$=choice$(1)..| 00015210 83 07 20 20 cb 0d 0b 84 12 20 20 c9 20 6d 65 6e |.. ..... . men| 00015220 75 25 28 31 37 29 3a 0d 0b 85 15 20 20 c8 8e 20 |u%(17):.... .. | 00015230 63 68 6f 69 63 65 24 28 31 29 20 ca 0d 0b 86 11 |choice$(1) .....| 00015240 20 20 20 20 c9 20 22 53 61 76 65 22 3a 0d 0b 87 | . "Save":...| 00015250 26 20 20 20 20 54 25 3d a4 74 61 62 6c 65 5f 6e |& T%=.table_n| 00015260 75 6d 62 65 72 28 24 6d 65 6e 75 68 61 6e 64 6c |umber($menuhandl| 00015270 65 25 29 0d 0b 88 36 20 20 20 20 24 53 61 76 65 |e%)...6 $Save| 00015280 4e 61 6d 65 25 3d 24 64 61 74 61 62 61 73 65 25 |Name%=$database%| 00015290 2b 22 2e 56 61 6c 54 61 62 6c 65 73 2e 22 2b 74 |+".ValTables."+t| 000152a0 61 62 6c 65 24 28 54 25 29 0d 0b 89 32 20 20 20 |able$(T%)...2 | 000152b0 20 24 53 61 76 65 53 70 72 69 74 65 25 3d 22 73 | $SaveSprite%="s| 000152c0 66 69 6c 65 5f 37 66 31 3b 50 70 74 72 5f 68 61 |file_7f1;Pptr_ha| 000152d0 6e 64 2c 31 32 2c 38 3b 42 33 22 0d 0b 8a 1e 20 |nd,12,8;B3".... | 000152e0 20 20 20 73 61 76 65 66 75 6e 63 24 3d 22 53 61 | savefunc$="Sa| 000152f0 76 65 20 74 61 62 6c 65 22 0d 0b 8b 07 20 20 cb |ve table".... .| 00015300 0d 0b 8c 12 20 20 c9 20 6d 65 6e 75 25 28 31 38 |.... . menu%(18| 00015310 29 3a 0d 0b 8d 15 20 20 c8 8e 20 63 68 6f 69 63 |):.... .. choic| 00015320 65 24 28 31 29 20 ca 0d 0b 8e 19 20 20 20 20 c9 |e$(1) ..... .| 00015330 20 22 53 61 76 65 20 61 73 20 74 65 78 74 22 3a | "Save as text":| 00015340 0d 0b 8f 2f 20 20 20 20 24 53 61 76 65 4e 61 6d |.../ $SaveNam| 00015350 65 25 3d 24 64 61 74 61 62 61 73 65 25 2b 22 2e |e%=$database%+".| 00015360 50 72 69 6e 74 4a 6f 62 73 2e 4c 69 73 74 22 0d |PrintJobs.List".| 00015370 0b 90 32 20 20 20 20 24 53 61 76 65 53 70 72 69 |..2 $SaveSpri| 00015380 74 65 25 3d 22 73 66 69 6c 65 5f 66 66 66 3b 50 |te%="sfile_fff;P| 00015390 70 74 72 5f 68 61 6e 64 2c 31 32 2c 38 3b 42 33 |ptr_hand,12,8;B3| 000153a0 22 0d 0b 91 07 20 20 cb 0d 0b 92 1a 20 20 73 61 |".... ..... sa| 000153b0 76 65 66 75 6e 63 24 3d 63 68 6f 69 63 65 24 28 |vefunc$=choice$(| 000153c0 31 29 0d 0b 93 05 cb 0d 0b 94 30 c8 99 20 22 57 |1)........0.. "W| 000153d0 69 6d 70 5f 43 72 65 61 74 65 53 75 62 4d 65 6e |imp_CreateSubMen| 000153e0 75 22 2c 2c 68 61 6e 64 6c 65 25 2c 78 6d 69 6e |u",,handle%,xmin| 000153f0 25 2c 79 6d 61 78 25 0d 0b 95 05 e1 0d 0b 96 05 |%,ymax%.........| 00015400 3a 0d 0b 97 1c dd 20 f2 68 65 6c 70 5f 6d 65 73 |:..... .help_mes| 00015410 73 61 67 65 28 77 69 25 2c 69 63 25 29 0d 0b 98 |sage(wi%,ic%)...| 00015420 0c c8 8e 20 77 69 25 20 ca 0d 0b 99 19 20 20 c9 |... wi% ..... .| 00015430 20 2d 32 3a f2 73 65 6e 64 5f 68 65 6c 70 28 37 | -2:.send_help(7| 00015440 35 29 0d 0b 9a 1d 20 20 c9 20 69 6e 66 6f 57 25 |5).... . infoW%| 00015450 3a f2 73 65 6e 64 5f 68 65 6c 70 28 37 36 29 0d |:.send_help(76).| 00015460 0b 9b 1d 20 20 c9 20 6d 69 73 63 57 25 3a f2 73 |... . miscW%:.s| 00015470 65 6e 64 5f 68 65 6c 70 28 37 37 29 0d 0b 9c 0f |end_help(77)....| 00015480 20 20 c9 20 6d 61 69 6e 57 25 3a 0d 0b 9d 1c 20 | . mainW%:.... | 00015490 20 e7 20 ac 20 64 65 73 69 67 6e 25 20 80 20 69 | . . design% . i| 000154a0 63 25 3e 3d 30 20 8c 0d 0b 9e 16 20 20 20 20 46 |c%>=0 ..... F| 000154b0 25 3d 28 69 63 25 2b 31 29 20 81 20 32 0d 0b 9f |%=(ic%+1) . 2...| 000154c0 1a 20 20 20 20 c8 8e 20 63 68 61 72 74 79 70 65 |. .. chartype| 000154d0 25 28 46 25 29 20 ca 0d 0b a0 41 20 20 20 20 20 |%(F%) ....A | 000154e0 20 c9 20 30 2c 31 2c 32 2c 33 2c 34 2c 35 2c 36 | . 0,1,2,3,4,5,6| 000154f0 2c 37 2c 38 2c 33 36 2c 33 39 2c 34 31 2c 34 32 |,7,8,36,39,41,42| 00015500 2c 34 33 2c 34 34 2c 34 35 3a f2 73 65 6e 64 5f |,43,44,45:.send_| 00015510 68 65 6c 70 28 37 38 29 0d 0b a1 2b 20 20 20 20 |help(78)...+ | 00015520 20 20 7f 3a c8 99 20 22 49 6e 74 65 72 66 61 63 | .:.. "Interfac| 00015530 65 5f 53 65 6e 64 48 65 6c 70 22 2c 2c 62 6c 6f |e_SendHelp",,blo| 00015540 63 6b 25 0d 0b a2 09 20 20 20 20 cb 0d 0b a3 07 |ck%.... .....| 00015550 20 20 cd 0d 0b a4 20 20 20 c9 20 70 73 65 6c 65 | .... . psele| 00015560 63 74 57 25 3a f2 73 65 6e 64 5f 68 65 6c 70 28 |ctW%:.send_help(| 00015570 37 39 29 0d 0b a5 1f 20 20 c9 20 72 65 6c 61 74 |79).... . relat| 00015580 65 57 25 3a f2 73 65 6e 64 5f 68 65 6c 70 28 38 |eW%:.send_help(8| 00015590 30 29 0d 0b a6 1d 20 20 c9 20 6c 69 73 74 57 25 |0).... . listW%| 000155a0 3a f2 73 65 6e 64 5f 68 65 6c 70 28 38 31 29 0d |:.send_help(81).| 000155b0 0b a7 20 20 20 c9 20 64 61 74 61 64 69 63 57 25 |.. . datadicW%| 000155c0 3a f2 73 65 6e 64 5f 68 65 6c 70 28 38 32 29 0d |:.send_help(82).| 000155d0 0b a8 1d 20 20 c9 20 73 61 76 65 57 25 3a f2 73 |... . saveW%:.s| 000155e0 65 6e 64 5f 68 65 6c 70 28 38 33 29 0d 0b a9 20 |end_help(83)... | 000155f0 20 20 c9 20 73 61 76 65 73 75 62 57 25 3a f2 73 | . savesubW%:.s| 00015600 65 6e 64 5f 68 65 6c 70 28 38 34 29 0d 0b aa 1f |end_help(84)....| 00015610 20 20 c9 20 61 63 63 65 73 73 57 25 3a f2 73 65 | . accessW%:.se| 00015620 6e 64 5f 68 65 6c 70 28 38 35 29 0d 0b ab 1e 20 |nd_help(85).... | 00015630 20 c9 20 6d 65 72 67 65 57 25 3a f2 73 65 6e 64 | . mergeW%:.send| 00015640 5f 68 65 6c 70 28 38 36 29 0d 0b ac 27 20 20 7f |_help(86)...' .| 00015650 3a c8 99 20 22 49 6e 74 65 72 66 61 63 65 5f 53 |:.. "Interface_S| 00015660 65 6e 64 48 65 6c 70 22 2c 2c 62 6c 6f 63 6b 25 |endHelp",,block%| 00015670 0d 0b ad 05 cb 0d 0b ae 05 e1 0d 0b af 05 3a 0d |..............:.| 00015680 0b b0 14 dd 20 f2 73 65 6e 64 5f 68 65 6c 70 28 |.... .send_help(| 00015690 4d 25 29 0d 0b b1 0f 21 62 6c 6f 63 6b 25 3d 32 |M%)....!block%=2| 000156a0 35 36 0d 0b b2 12 62 6c 6f 63 6b 25 21 31 32 3d |56....block%!12=| 000156b0 72 65 66 25 0d 0b b3 12 62 6c 6f 63 6b 25 21 31 |ref%....block%!1| 000156c0 36 3d 26 35 30 33 0d 0b b4 19 24 28 62 6c 6f 63 |6=&503....$(bloc| 000156d0 6b 25 2b 32 30 29 3d a4 6d 73 67 28 4d 25 29 0d |k%+20)=.msg(M%).| 000156e0 0b b5 2c c8 99 20 22 57 69 6d 70 5f 53 65 6e 64 |..,.. "Wimp_Send| 000156f0 4d 65 73 73 61 67 65 22 2c 31 37 2c 62 6c 6f 63 |Message",17,bloc| 00015700 6b 25 2c 62 6c 6f 63 6b 25 21 34 0d 0b b6 05 e1 |k%,block%!4.....| 00015710 0d 0b b7 05 3a 0d 0b b8 05 3a 0d 0b b9 4a f4 20 |....:....:...J. | 00015720 46 69 6c 65 20 73 61 76 69 6e 67 20 2d 2d 2d 2d |File saving ----| 00015730 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00015760 2d 2d 2d 2d 0d 0b ba 05 3a 0d 0b bb 16 dd 20 f2 |----....:..... .| 00015770 73 61 76 65 5f 61 6c 6c 5f 74 61 62 6c 65 73 0d |save_all_tables.| 00015780 0b bc 08 ea 20 54 25 0d 0b bd 15 c8 99 20 22 48 |.... T%...... "H| 00015790 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 0b be 15 |ourglass_On"....| 000157a0 c8 95 20 54 25 3c 3d 4c 61 73 74 54 61 62 6c 65 |.. T%<=LastTable| 000157b0 25 0d 0b bf 2c 20 20 66 24 3d 24 64 61 74 61 62 |%..., f$=$datab| 000157c0 61 73 65 25 2b 22 2e 56 61 6c 54 61 62 6c 65 73 |ase%+".ValTables| 000157d0 2e 22 2b 74 61 62 6c 65 24 28 54 25 29 0d 0b c0 |."+table$(T%)...| 000157e0 45 20 20 24 54 61 62 54 69 74 6c 65 25 3d a4 74 |E $TabTitle%=.t| 000157f0 61 62 6c 65 5f 69 6e 66 6f 28 54 25 2c 52 6f 77 |able_info(T%,Row| 00015800 73 25 2c 54 61 62 46 69 65 6c 64 73 25 2c 52 65 |s%,TabFields%,Re| 00015810 63 25 2c 74 61 62 66 69 65 6c 64 6c 65 6e 25 28 |c%,tabfieldlen%(| 00015820 29 29 0d 0b c1 37 20 20 53 74 61 72 74 25 3d 21 |))...7 Start%=!| 00015830 74 61 62 61 6e 63 68 6f 72 25 28 54 25 29 3a 45 |tabanchor%(T%):E| 00015840 6e 64 25 3d 53 74 61 72 74 25 2b 31 36 30 2b 52 |nd%=Start%+160+R| 00015850 6f 77 73 25 2a 52 65 63 25 0d 0b c2 20 20 20 f2 |ows%*Rec%... .| 00015860 73 61 76 65 28 66 24 2c 26 37 66 31 2c 53 74 61 |save(f$,&7f1,Sta| 00015870 72 74 25 2c 45 6e 64 25 29 0d 0b c3 0b 20 20 54 |rt%,End%).... T| 00015880 25 2b 3d 31 0d 0b c4 37 20 20 c8 99 20 22 48 6f |%+=1...7 .. "Ho| 00015890 75 72 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 |urglass_Percenta| 000158a0 67 65 22 2c 54 25 2a 31 30 30 20 81 20 28 4c 61 |ge",T%*100 . (La| 000158b0 73 74 54 61 62 6c 65 25 2b 31 29 0d 0b c5 05 ce |stTable%+1).....| 000158c0 0d 0b c6 16 c8 99 20 22 48 6f 75 72 67 6c 61 73 |...... "Hourglas| 000158d0 73 5f 4f 66 66 22 0d 0b c7 05 e1 0d 0b c8 05 3a |s_Off".........:| 000158e0 0d 0b c9 13 dd 20 f2 73 61 76 65 5f 6f 70 74 69 |..... .save_opti| 000158f0 6f 6e 73 0d 0b ca 0e ea 20 46 2c 49 25 2c 69 63 |ons..... F,I%,ic| 00015900 25 0d 0b cb 0b 46 3d ae 28 66 24 29 0d 0b cc 08 |%....F=.(f$)....| 00015910 f7 20 2b 30 0d 0b cd 0f e3 20 49 25 3d 31 20 b8 |. +0..... I%=1 .| 00015920 20 31 33 0d 0b ce 0b 20 20 f3 20 69 63 25 0d 0b | 13.... . ic%..| 00015930 cf 20 20 20 f1 23 46 2c a4 73 65 6c 65 63 74 65 |. .#F,.selecte| 00015940 64 28 70 72 69 6e 74 57 25 2c 69 63 25 29 0d 0b |d(printW%,ic%)..| 00015950 d0 08 ed 20 49 25 0d 0b d1 0e e3 20 49 25 3d 31 |... I%..... I%=1| 00015960 20 b8 20 39 0d 0b d2 0b 20 20 f3 20 69 63 25 0d | . 9.... . ic%.| 00015970 0b d3 1d 20 20 f1 23 46 2c 24 a4 74 65 78 74 28 |... .#F,$.text(| 00015980 70 72 69 6e 74 57 25 2c 69 63 25 29 0d 0b d4 08 |printW%,ic%)....| 00015990 ed 20 49 25 0d 0b d5 0e e3 20 49 25 3d 31 20 b8 |. I%..... I%=1 .| 000159a0 20 37 0d 0b d6 0b 20 20 f3 20 69 63 25 0d 0b d7 | 7.... . ic%...| 000159b0 20 20 20 f1 23 46 2c a4 73 65 6c 65 63 74 65 64 | .#F,.selected| 000159c0 28 70 72 69 6e 74 57 25 2c 69 63 25 29 0d 0b d8 |(printW%,ic%)...| 000159d0 08 ed 20 49 25 0d 0b d9 0e e3 20 49 25 3d 31 20 |.. I%..... I%=1 | 000159e0 b8 20 33 0d 0b da 0b 20 20 f3 20 69 63 25 0d 0b |. 3.... . ic%..| 000159f0 db 20 20 20 f1 23 46 2c a4 73 65 6c 65 63 74 65 |. .#F,.selecte| 00015a00 64 28 6c 61 62 65 6c 57 25 2c 69 63 25 29 0d 0b |d(labelW%,ic%)..| 00015a10 dc 08 ed 20 49 25 0d 0b dd 0e e3 20 49 25 3d 31 |... I%..... I%=1| 00015a20 20 b8 20 34 0d 0b de 0b 20 20 f3 20 69 63 25 0d | . 4.... . ic%.| 00015a30 0b df 1d 20 20 f1 23 46 2c 24 a4 74 65 78 74 28 |... .#F,$.text(| 00015a40 6c 61 62 65 6c 57 25 2c 69 63 25 29 0d 0b e0 08 |labelW%,ic%)....| 00015a50 ed 20 49 25 0d 0b e1 0e e3 20 49 25 3d 31 20 b8 |. I%..... I%=1 .| 00015a60 20 33 0d 0b e2 0b 20 20 f3 20 69 63 25 0d 0b e3 | 3.... . ic%...| 00015a70 20 20 20 f1 23 46 2c a4 73 65 6c 65 63 74 65 64 | .#F,.selected| 00015a80 28 6c 61 62 65 6c 57 25 2c 69 63 25 29 0d 0b e4 |(labelW%,ic%)...| 00015a90 08 ed 20 49 25 0d 0b e5 12 f2 63 6c 6f 73 65 5f |.. I%.....close_| 00015aa0 66 69 6c 65 28 46 29 0d 0b e6 1b c8 99 20 22 4f |file(F)...... "O| 00015ab0 53 5f 46 69 6c 65 22 2c 31 38 2c 66 24 2c 26 37 |S_File",18,f$,&7| 00015ac0 66 35 0d 0b e7 05 3a 0d 0b e8 38 dc 20 31 2c 32 |f5....:...8. 1,2| 00015ad0 2c 34 2c 36 2c 37 2c 38 2c 32 33 2c 32 34 2c 32 |,4,6,7,8,23,24,2| 00015ae0 35 2c 32 36 2c 33 38 2c 33 39 2c 34 31 3a 52 45 |5,26,38,39,41:RE| 00015af0 4d 20 52 61 64 69 6f 20 62 75 74 74 6f 6e 73 0d |M Radio buttons.| 00015b00 0b e9 34 dc 20 31 35 2c 31 36 2c 31 37 2c 31 38 |..4. 15,16,17,18| 00015b10 2c 33 30 2c 33 32 2c 33 34 2c 34 33 2c 34 35 3a |,30,32,34,43,45:| 00015b20 52 45 4d 20 57 72 69 74 61 62 6c 65 20 66 69 65 |REM Writable fie| 00015b30 6c 64 73 0d 0b ea 2e dc 20 31 30 2c 31 31 2c 31 |lds..... 10,11,1| 00015b40 32 2c 31 39 2c 32 39 2c 34 30 2c 34 32 3a 52 45 |2,19,29,40,42:RE| 00015b50 4d 20 4f 70 74 69 6f 6e 20 73 77 69 74 63 68 65 |M Option switche| 00015b60 73 0d 0b eb 20 f4 20 49 6e 20 4c 61 62 65 6c 20 |s... . In Label | 00015b70 44 65 66 69 6e 69 74 69 6f 6e 20 77 69 6e 64 6f |Definition windo| 00015b80 77 0d 0b ec 1d dc 20 30 2c 31 2c 32 3a 52 45 4d |w..... 0,1,2:REM| 00015b90 20 52 61 64 69 6f 20 62 75 74 74 6f 6e 73 0d 0b | Radio buttons..| 00015ba0 ed 24 dc 20 34 2c 36 2c 31 30 2c 31 32 3a 52 45 |.$. 4,6,10,12:RE| 00015bb0 4d 20 57 72 69 74 65 61 62 6c 65 20 66 69 65 6c |M Writeable fiel| 00015bc0 64 73 0d 0b ee 22 dc 20 31 31 2c 31 33 2c 31 36 |ds...". 11,13,16| 00015bd0 3a 52 45 4d 20 4f 70 74 69 6f 6e 20 73 77 69 74 |:REM Option swit| 00015be0 63 68 65 73 0d 0b ef 05 3a 0d 0b f0 05 e1 0d 0b |ches....:.......| 00015bf0 f1 05 3a 0d 0b f2 1f dd 20 f2 73 61 76 65 28 66 |..:..... .save(f| 00015c00 24 2c 66 74 25 2c 73 74 61 72 74 25 2c 65 6e 64 |$,ft%,start%,end| 00015c10 25 29 0d 0b f3 0c c8 8e 20 66 74 25 20 ca 0d 0b |%)...... ft% ...| 00015c20 f4 0a 20 20 c9 20 30 3a 0d 0b f5 15 20 20 6c 65 |.. . 0:.... le| 00015c30 61 66 24 3d a4 6c 65 61 66 28 66 24 29 0d 0b f6 |af$=.leaf(f$)...| 00015c40 44 20 20 e7 20 c0 6c 65 61 66 24 2c 31 29 3c 3e |D . .leaf$,1)<>| 00015c50 22 21 22 20 8c 20 6c 65 61 66 24 3d 22 21 22 2b |"!" . leaf$="!"+| 00015c60 c0 6c 65 61 66 24 2c 39 29 3a 66 24 3d 64 62 61 |.leaf$,9):f$=dba| 00015c70 73 65 70 61 74 68 24 2b 22 2e 22 2b 6c 65 61 66 |sepath$+"."+leaf| 00015c80 24 0d 0b f7 17 20 20 c8 99 20 22 4f 53 5f 46 69 |$.... .. "OS_Fi| 00015c90 6c 65 22 2c 38 2c 66 24 0d 0b f8 22 20 20 c8 99 |le",8,f$..." ..| 00015ca0 20 22 4f 53 5f 46 69 6c 65 22 2c 38 2c 66 24 2b | "OS_File",8,f$+| 00015cb0 22 2e 49 6e 64 69 63 65 73 22 0d 0b f9 24 20 20 |".Indices"...$ | 00015cc0 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 38 2c 66 |.. "OS_File",8,f| 00015cd0 24 2b 22 2e 56 61 6c 54 61 62 6c 65 73 22 0d 0b |$+".ValTables"..| 00015ce0 fa 23 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 |.# .. "OS_File"| 00015cf0 2c 38 2c 66 24 2b 22 2e 50 72 69 6e 74 52 65 73 |,8,f$+".PrintRes| 00015d00 22 0d 0b fb 24 20 20 c8 99 20 22 4f 53 5f 46 69 |"...$ .. "OS_Fi| 00015d10 6c 65 22 2c 38 2c 66 24 2b 22 2e 50 72 69 6e 74 |le",8,f$+".Print| 00015d20 4a 6f 62 73 22 0d 0b fc 49 20 20 c8 99 20 22 4f |Jobs"...I .. "O| 00015d30 53 5f 43 4c 49 22 2c 22 43 6f 70 79 20 3c 50 42 |S_CLI","Copy <PB| 00015d40 61 73 65 24 44 69 72 3e 2e 52 65 73 6f 75 72 63 |ase$Dir>.Resourc| 00015d50 65 73 2e 54 65 6d 70 2e 21 52 75 6e 20 22 2b 66 |es.Temp.!Run "+f| 00015d60 24 2b 22 2e 21 52 75 6e 20 7e 43 7e 56 22 0d 0b |$+".!Run ~C~V"..| 00015d70 fd 4b 20 20 c8 99 20 22 4f 53 5f 43 4c 49 22 2c |.K .. "OS_CLI",| 00015d80 22 43 6f 70 79 20 3c 50 42 61 73 65 24 44 69 72 |"Copy <PBase$Dir| 00015d90 3e 2e 52 65 73 6f 75 72 63 65 73 2e 54 65 6d 70 |>.Resources.Temp| 00015da0 2e 21 42 6f 6f 74 20 22 2b 66 24 2b 22 2e 21 42 |.!Boot "+f$+".!B| 00015db0 6f 6f 74 20 7e 43 7e 56 22 0d 0b fe 48 20 20 c8 |oot ~C~V"...H .| 00015dc0 99 20 22 4f 53 5f 43 4c 49 22 2c 22 43 6f 70 79 |. "OS_CLI","Copy| 00015dd0 20 3c 50 42 61 73 65 24 44 69 72 3e 2e 52 65 73 | <PBase$Dir>.Res| 00015de0 6f 75 72 63 65 73 2e 63 68 6b 73 70 72 20 22 2b |ources.chkspr "+| 00015df0 66 24 2b 22 2e 63 68 6b 73 70 72 20 7e 43 7e 56 |f$+".chkspr ~C~V| 00015e00 22 0d 0b ff 4a 20 20 c8 99 20 22 4f 53 5f 43 4c |"...J .. "OS_CL| 00015e10 49 22 2c 22 43 6f 70 79 20 3c 50 42 61 73 65 24 |I","Copy <PBase$| 00015e20 44 69 72 3e 2e 52 65 73 6f 75 72 63 65 73 2e 43 |Dir>.Resources.C| 00015e30 6f 6c 6f 75 72 73 20 22 2b 66 24 2b 22 2e 43 6f |olours "+f$+".Co| 00015e40 6c 6f 75 72 73 20 7e 43 7e 56 22 0d 0c 00 2d 20 |lours ~C~V"...- | 00015e50 20 f2 63 6f 70 79 5f 64 61 74 61 62 61 73 65 5f | .copy_database_| 00015e60 73 70 72 69 74 65 66 69 6c 65 28 66 24 2c a4 6c |spritefile(f$,.l| 00015e70 65 61 66 28 66 24 29 29 0d 0c 01 0c 20 20 c8 8e |eaf(f$)).... ..| 00015e80 20 b9 20 ca 0d 0c 02 24 20 20 20 20 c9 20 65 78 | . ....$ . ex| 00015e90 70 6f 72 74 25 3a f2 65 78 70 6f 72 74 5f 73 75 |port%:.export_su| 00015ea0 62 73 65 74 28 66 24 29 0d 0c 03 13 20 20 20 20 |bset(f$).... | 00015eb0 c9 20 63 73 76 63 6f 6e 76 25 3a 0d 0c 04 1a 20 |. csvconv%:.... | 00015ec0 20 20 20 e7 20 21 66 6f 72 6d 61 6e 63 68 6f 72 | . !formanchor| 00015ed0 25 3d 30 20 8c 0d 0c 05 34 20 20 20 20 20 20 f2 |%=0 ....4 .| 00015ee0 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 |extend_named_sli| 00015ef0 64 69 6e 67 5f 62 6c 6f 63 6b 28 66 6f 72 6d 61 |ding_block(forma| 00015f00 6e 63 68 6f 72 25 2c 30 29 0d 0c 06 1c 20 20 20 |nchor%,0).... | 00015f10 20 20 20 46 70 74 72 25 3d 21 66 6f 72 6d 61 6e | Fptr%=!forman| 00015f20 63 68 6f 72 25 0d 0c 07 22 20 20 20 20 20 20 66 |chor%..." f| 00015f30 69 65 6c 64 73 25 3d 30 3a 46 69 65 6c 64 6e 75 |ields%=0:Fieldnu| 00015f40 6d 62 65 72 25 3d 30 0d 0c 08 22 20 20 20 20 20 |mber%=0..." | 00015f50 20 66 69 65 6c 64 73 25 3d a4 67 65 74 5f 66 6f | fields%=.get_fo| 00015f60 72 6d 28 46 70 74 72 25 29 0d 0c 09 09 20 20 20 |rm(Fptr%).... | 00015f70 20 cd 0d 0c 0a 0a 20 20 20 20 7f 3a 0d 0c 0b 1a | ..... .:....| 00015f80 20 20 20 20 f2 6c 69 74 28 6d 65 6e 75 25 28 30 | .lit(menu%(0| 00015f90 29 2c 31 2c a3 29 0d 0c 0c 16 20 20 20 20 f2 67 |),1,.).... .g| 00015fa0 65 74 5f 69 74 5f 69 6e 28 66 24 29 0d 0c 0d 1c |et_it_in(f$)....| 00015fb0 20 20 20 20 f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 | .open_window| 00015fc0 28 6d 61 69 6e 57 25 29 0d 0c 0e 1a 20 20 20 20 |(mainW%).... | 00015fd0 e7 20 21 66 6f 72 6d 61 6e 63 68 6f 72 25 3d 30 |. !formanchor%=0| 00015fe0 20 8c 0d 0c 0f 34 20 20 20 20 20 20 f2 65 78 74 | ....4 .ext| 00015ff0 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e |end_named_slidin| 00016000 67 5f 62 6c 6f 63 6b 28 66 6f 72 6d 61 6e 63 68 |g_block(formanch| 00016010 6f 72 25 2c 30 29 0d 0c 10 1c 20 20 20 20 20 20 |or%,0).... | 00016020 46 70 74 72 25 3d 21 66 6f 72 6d 61 6e 63 68 6f |Fptr%=!formancho| 00016030 72 25 0d 0c 11 22 20 20 20 20 20 20 66 69 65 6c |r%..." fiel| 00016040 64 73 25 3d 30 3a 46 69 65 6c 64 6e 75 6d 62 65 |ds%=0:Fieldnumbe| 00016050 72 25 3d 30 0d 0c 12 09 20 20 20 20 cd 0d 0c 13 |r%=0.... ....| 00016060 07 20 20 cb 0d 0c 14 0a 20 20 c9 20 31 3a 0d 0c |. ..... . 1:..| 00016070 15 1d 20 20 c8 99 20 22 4f 53 5f 43 4c 49 22 2c |.. .. "OS_CLI",| 00016080 22 43 44 69 72 20 22 2b 66 24 3a 0d 0c 16 11 20 |"CDir "+f$:.... | 00016090 20 6c 6f 67 70 61 74 68 24 3d 66 24 0d 0c 17 1b | logpath$=f$....| 000160a0 20 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 | .close_window(| 000160b0 73 61 76 65 57 25 29 0d 0c 18 32 20 20 c9 20 26 |saveW%)...2 . &| 000160c0 37 66 32 3a f2 73 61 76 65 5f 66 6f 72 6d 28 66 |7f2:.save_form(f| 000160d0 24 29 3a f2 67 65 74 5f 69 74 5f 69 6e 28 24 64 |$):.get_it_in($d| 000160e0 61 74 61 62 61 73 65 25 29 0d 0c 19 1a 20 20 c9 |atabase%).... .| 000160f0 20 26 37 66 35 3a f2 73 61 76 65 5f 6f 70 74 69 | &7f5:.save_opti| 00016100 6f 6e 73 0d 0c 1a 1b 20 20 c9 20 26 64 66 65 3a |ons.... . &dfe:| 00016110 f2 77 72 69 74 65 5f 63 73 76 28 66 24 29 0d 0c |.write_csv(f$)..| 00016120 1b 08 20 20 7f 3a 0d 0c 1c 0c 20 20 c8 8e 20 b9 |.. .:.... .. .| 00016130 20 ca 0d 0c 1d 14 20 20 20 20 c9 20 73 74 61 72 | ..... . star| 00016140 74 6c 6f 67 25 3a 0d 0c 1e 12 20 20 20 20 f2 63 |tlog%:.... .c| 00016150 6c 6f 73 65 5f 6c 6f 67 0d 0c 1f 13 20 20 20 20 |lose_log.... | 00016160 6c 6f 67 70 61 74 68 24 3d 66 24 0d 0c 20 1e 20 |logpath$=f$.. . | 00016170 20 20 20 6c 6f 67 68 61 6e 64 6c 65 25 3d ae 28 | loghandle%=.(| 00016180 6c 6f 67 70 61 74 68 24 29 0d 0c 21 1f 20 20 20 |logpath$)..!. | 00016190 20 d5 23 6c 6f 67 68 61 6e 64 6c 65 25 2c 24 64 | .#loghandle%,$d| 000161a0 61 74 61 62 61 73 65 25 0d 0c 22 33 20 20 20 20 |atabase%.."3 | 000161b0 d5 23 6c 6f 67 68 61 6e 64 6c 65 25 2c 22 50 61 |.#loghandle%,"Pa| 000161c0 73 73 77 6f 72 64 20 6c 65 76 65 6c 20 75 73 65 |ssword level use| 000161d0 64 3a 20 22 2b c3 28 70 77 25 29 0d 0c 23 26 20 |d: "+.(pw%)..#& | 000161e0 20 20 20 d5 23 6c 6f 67 68 61 6e 64 6c 65 25 2c | .#loghandle%,| 000161f0 22 4c 6f 67 20 73 74 61 72 74 65 64 20 22 2b 91 |"Log started "+.| 00016200 24 0d 0c 24 1d 20 20 20 20 d5 23 6c 6f 67 68 61 |$..$. .#logha| 00016210 6e 64 6c 65 25 2c c4 33 36 2c 22 3d 22 29 0d 0c |ndle%,.36,"=")..| 00016220 25 13 20 20 20 20 73 74 61 72 74 6c 6f 67 25 3d |%. startlog%=| 00016230 a3 0d 0c 26 16 20 20 20 20 c9 20 73 61 76 65 74 |...&. . savet| 00016240 6f 66 69 6c 65 25 3a 0d 0c 27 19 20 20 20 20 74 |ofile%:..'. t| 00016250 65 78 74 68 61 6e 64 6c 65 25 3d ae 28 66 24 29 |exthandle%=.(f$)| 00016260 0d 0c 28 22 20 20 20 20 f2 64 6f 5f 69 74 28 53 |..(" .do_it(S| 00016270 65 61 72 63 68 24 2c 64 69 73 70 6c 61 79 65 64 |earch$,displayed| 00016280 25 29 0d 0c 29 0a 20 20 20 20 7f 3a 0d 0c 2a 2b |%)..). .:..*+| 00016290 20 20 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 | .. "OS_File"| 000162a0 2c 31 30 2c 66 24 2c 66 74 25 2c 2c 73 74 61 72 |,10,f$,ft%,,star| 000162b0 74 25 2c 65 6e 64 25 0d 0c 2b 29 20 20 20 20 f2 |t%,end%..+) .| 000162c0 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c |scrap_sliding_bl| 000162d0 6f 63 6b 28 73 61 76 65 61 6e 63 68 6f 72 25 29 |ock(saveanchor%)| 000162e0 0d 0c 2c 07 20 20 cb 0d 0c 2d 05 cb 0d 0c 2e 0b |..,. ...-......| 000162f0 77 61 72 6e 25 3d b9 0d 0c 2f 05 e1 0d 0c 30 05 |warn%=.../....0.| 00016300 3a 0d 0c 31 11 dd 20 a4 67 65 74 73 74 72 28 70 |:..1.. .getstr(p| 00016310 25 29 0d 0c 32 08 ea 20 70 24 0d 0c 33 0d c8 95 |%)..2.. p$..3...| 00016320 20 3f 70 25 3e 33 31 0d 0c 34 10 20 20 70 24 2b | ?p%>31..4. p$+| 00016330 3d bd 28 3f 70 25 29 0d 0c 35 0b 20 20 70 25 2b |=.(?p%)..5. p%+| 00016340 3d 31 0d 0c 36 05 ce 0d 0c 37 07 3d 70 24 0d 0c |=1..6....7.=p$..| 00016350 38 05 3a 0d 0c 39 4c f4 20 56 61 6c 69 64 61 74 |8.:..9L. Validat| 00016360 69 6f 6e 20 74 61 62 6c 65 73 20 2d 2d 2d 2d 2d |ion tables -----| 00016370 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00016390 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |---------------.| 000163a0 0c 3a 05 3a 0d 0c 3b 13 dd 20 f2 63 72 65 61 74 |.:.:..;.. .creat| 000163b0 65 5f 74 61 62 6c 65 0d 0c 3c 14 ea 20 49 25 2c |e_table..<.. I%,| 000163c0 74 69 74 6c 65 24 2c 52 65 63 25 0d 0c 3d 12 c8 |title$,Rec%..=..| 000163d0 8e 20 62 25 20 80 20 25 31 31 31 20 ca 0d 0c 3e |. b% . %111 ...>| 000163e0 0a 20 20 c9 20 34 3a 0d 0c 3f 0e 20 20 c8 8e 20 |. . 4:..?. .. | 000163f0 69 63 25 20 ca 0d 0c 40 0d 20 20 20 20 c9 20 32 |ic% ...@. . 2| 00016400 36 3a 0d 0c 41 1f 20 20 20 20 e7 20 4c 61 73 74 |6:..A. . Last| 00016410 54 61 62 6c 65 25 3d 4d 61 78 54 61 62 73 25 20 |Table%=MaxTabs% | 00016420 8c 0d 0c 42 26 20 20 20 20 20 20 f2 73 6f 66 74 |...B& .soft| 00016430 65 72 72 6f 72 28 c3 28 4d 61 78 54 61 62 73 25 |error(.(MaxTabs%| 00016440 2b 31 29 2c 33 32 29 0d 0c 43 0b 20 20 20 20 20 |+1),32)..C. | 00016450 20 cc 0d 0c 44 17 20 20 20 20 20 20 4c 61 73 74 | ...D. Last| 00016460 54 61 62 6c 65 25 2b 3d 31 0d 0c 45 21 20 20 20 |Table%+=1..E! | 00016470 20 20 20 54 61 62 6c 65 6e 75 6d 62 65 72 25 3d | Tablenumber%=| 00016480 4c 61 73 74 54 61 62 6c 65 25 0d 0c 46 21 20 20 |LastTable%..F! | 00016490 20 20 20 20 6e 61 6d 65 24 3d 24 a4 74 65 78 74 | name$=$.text| 000164a0 28 74 61 62 6c 65 57 25 2c 30 29 0d 0c 47 22 20 |(tableW%,0)..G" | 000164b0 20 20 20 20 20 74 61 62 6c 65 24 28 4c 61 73 74 | table$(Last| 000164c0 54 61 62 6c 65 25 29 3d 6e 61 6d 65 24 0d 0c 48 |Table%)=name$..H| 000164d0 24 20 20 20 20 20 20 52 6f 77 73 25 3d bb 28 24 |$ Rows%=.($| 000164e0 a4 74 65 78 74 28 74 61 62 6c 65 57 25 2c 31 29 |.text(tableW%,1)| 000164f0 29 0d 0c 49 29 20 20 20 20 20 20 54 61 62 46 69 |)..I) TabFi| 00016500 65 6c 64 73 25 3d bb 28 24 a4 74 65 78 74 28 74 |elds%=.($.text(t| 00016510 61 62 6c 65 57 25 2c 32 29 29 0d 0c 4a 1d 20 20 |ableW%,2))..J. | 00016520 20 20 20 20 e3 20 49 25 3d 30 20 b8 20 54 61 62 | . I%=0 . Tab| 00016530 46 69 65 6c 64 73 25 0d 0c 4b 36 20 20 20 20 20 |Fields%..K6 | 00016540 20 20 20 74 61 62 66 69 65 6c 64 6c 65 6e 25 28 | tabfieldlen%(| 00016550 49 25 29 3d bb 28 24 a4 74 65 78 74 28 74 61 62 |I%)=.($.text(tab| 00016560 6c 65 57 25 2c 49 25 2a 32 2b 34 29 29 0d 0c 4c |leW%,I%*2+4))..L| 00016570 24 20 20 20 20 20 20 20 20 52 65 63 25 2b 3d 74 |$ Rec%+=t| 00016580 61 62 66 69 65 6c 64 6c 65 6e 25 28 49 25 29 2b |abfieldlen%(I%)+| 00016590 31 0d 0c 4d 0e 20 20 20 20 20 20 ed 20 49 25 0d |1..M. . I%.| 000165a0 0c 4e 20 20 20 20 20 20 20 74 61 62 6c 65 6e 25 |.N tablen%| 000165b0 3d 31 36 30 2b 52 6f 77 73 25 2a 52 65 63 25 0d |=160+Rows%*Rec%.| 000165c0 0c 4f 4f 20 20 20 20 20 20 f2 63 72 65 61 74 65 |.OO .create| 000165d0 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 |_named_sliding_b| 000165e0 6c 6f 63 6b 28 74 61 62 61 6e 63 68 6f 72 25 28 |lock(tabanchor%(| 000165f0 4c 61 73 74 54 61 62 6c 65 25 29 2c 28 74 61 62 |LastTable%),(tab| 00016600 6c 65 6e 25 2b 33 29 20 80 20 ac 20 33 29 0d 0c |len%+3) . . 3)..| 00016610 50 29 20 20 20 20 20 20 74 61 62 70 74 72 25 3d |P) tabptr%=| 00016620 21 74 61 62 61 6e 63 68 6f 72 25 28 4c 61 73 74 |!tabanchor%(Last| 00016630 54 61 62 6c 65 25 29 0d 0c 51 32 20 20 20 20 20 |Table%)..Q2 | 00016640 20 24 74 61 62 70 74 72 25 3d c3 28 52 6f 77 73 | $tabptr%=.(Rows| 00016650 25 29 3a 74 61 62 70 74 72 25 2b 3d a9 28 24 74 |%):tabptr%+=.($t| 00016660 61 62 70 74 72 25 29 2b 31 0d 0c 52 37 20 20 20 |abptr%)+1..R7 | 00016670 20 20 20 24 74 61 62 70 74 72 25 3d c3 28 54 61 | $tabptr%=.(Ta| 00016680 62 46 69 65 6c 64 73 25 29 3a 74 61 62 70 74 72 |bFields%):tabptr| 00016690 25 2b 3d a9 28 24 74 61 62 70 74 72 25 29 2b 31 |%+=.($tabptr%)+1| 000166a0 0d 0c 53 1d 20 20 20 20 20 20 e3 20 49 25 3d 30 |..S. . I%=0| 000166b0 20 b8 20 54 61 62 46 69 65 6c 64 73 25 0d 0c 54 | . TabFields%..T| 000166c0 3f 20 20 20 20 20 20 20 20 24 74 61 62 70 74 72 |? $tabptr| 000166d0 25 3d c3 28 74 61 62 66 69 65 6c 64 6c 65 6e 25 |%=.(tabfieldlen%| 000166e0 28 49 25 29 29 3a 74 61 62 70 74 72 25 2b 3d a9 |(I%)):tabptr%+=.| 000166f0 28 24 74 61 62 70 74 72 25 29 2b 31 0d 0c 55 28 |($tabptr%)+1..U(| 00016700 20 20 20 20 20 20 20 20 68 65 61 64 24 3d 24 a4 | head$=$.| 00016710 74 65 78 74 28 74 61 62 6c 65 57 25 2c 49 25 2a |text(tableW%,I%*| 00016720 32 2b 33 29 0d 0c 56 3b 20 20 20 20 20 20 20 20 |2+3)..V; | 00016730 74 69 74 6c 65 24 2b 3d 68 65 61 64 24 2b c4 74 |title$+=head$+.t| 00016740 61 62 66 69 65 6c 64 6c 65 6e 25 28 49 25 29 2d |abfieldlen%(I%)-| 00016750 a9 28 68 65 61 64 24 29 2b 32 2c 22 20 22 29 0d |.(head$)+2," ").| 00016760 0c 57 0e 20 20 20 20 20 20 ed 20 49 25 0d 0c 58 |.W. . I%..X| 00016770 3d 20 20 20 20 20 20 24 74 61 62 70 74 72 25 3d |= $tabptr%=| 00016780 74 69 74 6c 65 24 3a 74 61 62 70 74 72 25 3d 21 |title$:tabptr%=!| 00016790 74 61 62 61 6e 63 68 6f 72 25 28 4c 61 73 74 54 |tabanchor%(LastT| 000167a0 61 62 6c 65 25 29 2b 31 36 30 0d 0c 59 1a 20 20 |able%)+160..Y. | 000167b0 20 20 20 20 e3 20 72 6f 77 25 3d 31 20 b8 20 52 | . row%=1 . R| 000167c0 6f 77 73 25 0d 0c 5a 1f 20 20 20 20 20 20 20 20 |ows%..Z. | 000167d0 e3 20 49 25 3d 30 20 b8 20 54 61 62 46 69 65 6c |. I%=0 . TabFiel| 000167e0 64 73 25 0d 0c 5b 35 20 20 20 20 20 20 20 20 20 |ds%..[5 | 000167f0 20 24 74 61 62 70 74 72 25 3d 22 22 3a 74 61 62 | $tabptr%="":tab| 00016800 70 74 72 25 2b 3d 74 61 62 66 69 65 6c 64 6c 65 |ptr%+=tabfieldle| 00016810 6e 25 28 49 25 29 2b 31 0d 0c 5c 10 20 20 20 20 |n%(I%)+1..\. | 00016820 20 20 20 20 ed 20 49 25 0d 0c 5d 10 20 20 20 20 | . I%..]. | 00016830 20 20 ed 20 72 6f 77 25 0d 0c 5e 21 20 20 20 20 | . row%..^! | 00016840 20 20 f2 73 68 6f 77 5f 74 61 62 6c 65 28 4c 61 | .show_table(La| 00016850 73 74 54 61 62 6c 65 25 29 0d 0c 5f 21 20 20 20 |stTable%).._! | 00016860 20 20 20 54 61 62 6c 65 6e 75 6d 62 65 72 25 3d | Tablenumber%=| 00016870 4c 61 73 74 54 61 62 6c 65 25 0d 0c 60 20 20 20 |LastTable%..` | 00016880 20 20 20 20 54 61 62 73 4c 6f 61 64 65 64 24 2b | TabsLoaded$+| 00016890 3d 22 2c 22 2b 6e 61 6d 65 24 0d 0c 61 2b 20 20 |=","+name$..a+ | 000168a0 20 20 20 20 e7 20 6d 65 6e 75 25 28 35 29 3e 30 | . menu%(5)>0| 000168b0 20 8c 20 6d 65 6e 75 5f 70 74 72 25 3d 6d 65 6e | . menu_ptr%=men| 000168c0 75 25 28 35 29 0d 0c 62 3a 20 20 20 20 20 20 6d |u%(5)..b: m| 000168d0 65 6e 75 25 28 35 29 3d a4 63 72 65 61 74 65 5f |enu%(5)=.create_| 000168e0 6d 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 2c 31 |menu(menu_ptr%,1| 000168f0 34 30 2c 54 61 62 73 4c 6f 61 64 65 64 24 29 0d |40,TabsLoaded$).| 00016900 0c 63 3d 20 20 20 20 20 20 70 74 72 25 3d 6d 65 |.c= ptr%=me| 00016910 6e 75 25 28 32 29 2b 35 32 3a 70 74 72 25 21 34 |nu%(2)+52:ptr%!4| 00016920 3d 6d 65 6e 75 25 28 35 29 3a f2 6c 69 74 28 6d |=menu%(5):.lit(m| 00016930 65 6e 75 25 28 32 29 2c 31 2c b9 29 0d 0c 64 09 |enu%(2),1,.)..d.| 00016940 20 20 20 20 cd 0d 0c 65 1e 20 20 20 20 f2 63 6c | ...e. .cl| 00016950 6f 73 65 5f 77 69 6e 64 6f 77 28 74 61 62 6c 65 |ose_window(table| 00016960 57 25 29 0d 0c 66 07 20 20 cb 0d 0c 67 05 cb 0d |W%)..f. ...g...| 00016970 0c 68 05 e1 0d 0c 69 05 3a 0d 0c 6a 16 dd 20 f2 |.h....i.:..j.. .| 00016980 63 6c 65 61 72 5f 74 61 62 6c 65 28 54 25 29 0d |clear_table(T%).| 00016990 0c 6b 1e e7 20 a4 63 6f 6e 66 69 72 6d 28 a4 6d |.k.. .confirm(.m| 000169a0 73 67 28 34 37 29 29 3d a3 20 8c 20 e1 0d 0c 6c |sg(47))=. . ...l| 000169b0 2d ea 20 52 25 2c 46 25 2c 69 6e 64 25 2c 52 6f |-. R%,F%,ind%,Ro| 000169c0 77 73 25 2c 54 61 62 46 69 65 6c 64 73 25 2c 73 |ws%,TabFields%,s| 000169d0 74 61 72 74 25 2c 52 65 63 25 0d 0c 6d 3b 54 24 |tart%,Rec%..m;T$| 000169e0 3d a4 74 61 62 6c 65 5f 69 6e 66 6f 28 54 25 2c |=.table_info(T%,| 000169f0 52 6f 77 73 25 2c 54 61 62 46 69 65 6c 64 73 25 |Rows%,TabFields%| 00016a00 2c 52 65 63 25 2c 74 61 62 66 69 65 6c 64 6c 65 |,Rec%,tabfieldle| 00016a10 6e 25 28 29 29 0d 0c 6e 23 73 74 61 72 74 25 3d |n%())..n#start%=| 00016a20 21 74 61 62 61 6e 63 68 6f 72 25 28 54 25 29 2b |!tabanchor%(T%)+| 00016a30 31 36 30 2d 52 65 63 25 0d 0c 6f 12 e3 20 52 25 |160-Rec%..o.. R%| 00016a40 3d 31 20 b8 20 52 6f 77 73 25 0d 0c 70 19 20 20 |=1 . Rows%..p. | 00016a50 69 6e 64 25 3d 73 74 61 72 74 25 2b 52 25 2a 52 |ind%=start%+R%*R| 00016a60 65 63 25 0d 0c 71 19 20 20 e3 20 46 25 3d 30 20 |ec%..q. . F%=0 | 00016a70 b8 20 54 61 62 46 69 65 6c 64 73 25 0d 0c 72 29 |. TabFields%..r)| 00016a80 20 20 20 20 24 69 6e 64 25 3d 22 22 3a 69 6e 64 | $ind%="":ind| 00016a90 25 2b 3d 74 61 62 66 69 65 6c 64 6c 65 6e 25 28 |%+=tabfieldlen%(| 00016aa0 46 25 29 2b 31 0d 0c 73 0a 20 20 ed 20 46 25 0d |F%)+1..s. . F%.| 00016ab0 0c 74 08 ed 20 52 25 0d 0c 75 13 f2 73 68 6f 77 |.t.. R%..u..show| 00016ac0 5f 74 61 62 6c 65 28 54 25 29 0d 0c 76 05 e1 0d |_table(T%)..v...| 00016ad0 0c 77 05 3a 0d 0c 78 15 dd 20 f2 73 68 6f 77 5f |.w.:..x.. .show_| 00016ae0 74 61 62 6c 65 28 54 25 29 0d 0c 79 24 ea 20 69 |table(T%)..y$. i| 00016af0 6e 64 25 2c 73 74 61 72 74 25 2c 69 66 6c 61 67 |nd%,start%,iflag| 00016b00 73 25 2c 49 25 2c 70 6f 73 25 2c 70 24 0d 0c 7a |s%,I%,pos%,p$..z| 00016b10 0e e7 20 54 25 3c 30 20 8c 20 e1 0d 0c 7b 1e f2 |.. T%<0 . ...{..| 00016b20 64 65 6c 65 74 65 5f 69 63 6f 6e 73 28 64 61 74 |delete_icons(dat| 00016b30 61 64 69 63 57 25 2c 30 29 0d 0c 7c 14 6e 61 6d |adicW%,0)..|.nam| 00016b40 65 24 3d 74 61 62 6c 65 24 28 54 25 29 0d 0c 7d |e$=table$(T%)..}| 00016b50 15 24 54 61 62 6c 65 6e 61 6d 65 25 3d 6e 61 6d |.$Tablename%=nam| 00016b60 65 24 0d 0c 7e 14 24 6d 65 6e 75 25 28 31 37 29 |e$..~.$menu%(17)| 00016b70 3d 6e 61 6d 65 24 0d 0c 7f 41 c8 99 20 22 4f 53 |=name$...A.. "OS| 00016b80 5f 46 69 6c 65 22 2c 35 2c 24 64 61 74 61 62 61 |_File",5,$databa| 00016b90 73 65 25 2b 22 2e 56 61 6c 54 61 62 6c 65 73 2e |se%+".ValTables.| 00016ba0 22 2b 6e 61 6d 65 24 20 b8 20 64 25 2c 2c 2c 2c |"+name$ . d%,,,,| 00016bb0 74 61 62 6c 65 6e 25 0d 0c 80 36 f2 65 78 74 65 |tablen%...6.exte| 00016bc0 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 |nd_named_sliding| 00016bd0 5f 62 6c 6f 63 6b 28 75 6e 64 6f 61 6e 63 68 6f |_block(undoancho| 00016be0 72 25 2c 74 61 62 6c 65 6e 25 2b 31 29 0d 0c 81 |r%,tablen%+1)...| 00016bf0 52 c8 99 20 22 57 69 6d 70 5f 54 72 61 6e 73 66 |R.. "Wimp_Transf| 00016c00 65 72 42 6c 6f 63 6b 22 2c 6d 79 74 61 73 6b 25 |erBlock",mytask%| 00016c10 2c 21 74 61 62 61 6e 63 68 6f 72 25 28 54 25 29 |,!tabanchor%(T%)| 00016c20 2c 6d 79 74 61 73 6b 25 2c 21 75 6e 64 6f 61 6e |,mytask%,!undoan| 00016c30 63 68 6f 72 25 2c 74 61 62 6c 65 6e 25 2b 31 0d |chor%,tablen%+1.| 00016c40 0c 82 43 24 54 61 62 54 69 74 6c 65 25 3d a4 74 |..C$TabTitle%=.t| 00016c50 61 62 6c 65 5f 69 6e 66 6f 28 54 25 2c 52 6f 77 |able_info(T%,Row| 00016c60 73 25 2c 54 61 62 46 69 65 6c 64 73 25 2c 52 65 |s%,TabFields%,Re| 00016c70 63 25 2c 74 61 62 66 69 65 6c 64 6c 65 6e 25 28 |c%,tabfieldlen%(| 00016c80 29 29 0d 0c 83 1c 69 6e 64 25 3d 21 74 61 62 61 |))....ind%=!taba| 00016c90 6e 63 68 6f 72 25 28 54 25 29 2b 31 36 30 0d 0c |nchor%(T%)+160..| 00016ca0 84 15 69 66 6c 61 67 73 25 3d 26 30 37 30 30 33 |..iflags%=&07003| 00016cb0 35 33 31 0d 0c 85 15 c8 99 20 22 48 6f 75 72 67 |531...... "Hourg| 00016cc0 6c 61 73 73 5f 4f 6e 22 0d 0c 86 14 e3 20 72 6f |lass_On"..... ro| 00016cd0 77 25 3d 31 20 b8 20 52 6f 77 73 25 0d 0c 87 0d |w%=1 . Rows%....| 00016ce0 20 20 70 6f 73 25 3d 38 30 0d 0c 88 19 20 20 e3 | pos%=80.... .| 00016cf0 20 49 25 3d 30 20 b8 20 54 61 62 46 69 65 6c 64 | I%=0 . TabField| 00016d00 73 25 0d 0c 89 76 20 20 20 20 52 25 3d a4 63 72 |s%...v R%=.cr| 00016d10 65 61 74 65 5f 69 63 6f 6e 28 64 61 74 61 64 69 |eate_icon(datadi| 00016d20 63 57 25 2c 70 6f 73 25 2c 2d 72 6f 77 25 2a 33 |cW%,pos%,-row%*3| 00016d30 36 2c 28 74 61 62 66 69 65 6c 64 6c 65 6e 25 28 |6,(tabfieldlen%(| 00016d40 49 25 29 2b 31 29 2a 31 36 2c 33 32 2c 69 66 6c |I%)+1)*16,32,ifl| 00016d50 61 67 73 25 2c 22 22 2c 69 6e 64 25 2c 77 72 69 |ags%,"",ind%,wri| 00016d60 74 65 70 25 2c 74 61 62 66 69 65 6c 64 6c 65 6e |tep%,tabfieldlen| 00016d70 25 28 49 25 29 2b 31 29 0d 0c 8a 25 20 20 20 20 |%(I%)+1)...% | 00016d80 70 6f 73 25 2b 3d 28 74 61 62 66 69 65 6c 64 6c |pos%+=(tabfieldl| 00016d90 65 6e 25 28 49 25 29 2b 32 29 2a 31 36 0d 0c 8b |en%(I%)+2)*16...| 00016da0 20 20 20 20 20 69 6e 64 25 2b 3d 74 61 62 66 69 | ind%+=tabfi| 00016db0 65 6c 64 6c 65 6e 25 28 49 25 29 2b 31 0d 0c 8c |eldlen%(I%)+1...| 00016dc0 0a 20 20 ed 20 49 25 0d 0c 8d 30 20 20 c8 99 20 |. . I%...0 .. | 00016dd0 22 48 6f 75 72 67 6c 61 73 73 5f 50 65 72 63 65 |"Hourglass_Perce| 00016de0 6e 74 61 67 65 22 2c 72 6f 77 25 2a 31 30 30 20 |ntage",row%*100 | 00016df0 81 20 52 6f 77 73 25 0d 0c 8e 0a ed 20 72 6f 77 |. Rows%..... row| 00016e00 25 0d 0c 8f 16 c8 99 20 22 48 6f 75 72 67 6c 61 |%...... "Hourgla| 00016e10 73 73 5f 4f 66 66 22 0d 0c 90 14 70 24 3d 70 72 |ss_Off"....p$=pr| 00016e20 69 6e 74 72 65 6c 24 28 54 25 29 0d 0c 91 0e e7 |intrel$(T%).....| 00016e30 20 70 24 3c 3e 22 22 20 8c 0d 0c 92 14 20 20 e3 | p$<>"" ..... .| 00016e40 20 49 25 3d 31 20 b8 20 a9 28 70 24 29 0d 0c 93 | I%=1 . .(p$)...| 00016e50 27 20 20 20 20 f2 73 65 6c 65 63 74 28 64 61 74 |' .select(dat| 00016e60 61 64 69 63 57 25 2c bb 28 c1 70 24 2c 49 25 2c |adicW%,.(.p$,I%,| 00016e70 31 29 29 29 0d 0c 94 0a 20 20 ed 20 49 25 0d 0c |1))).... . I%..| 00016e80 95 05 cd 0d 0c 96 22 21 62 6c 6f 63 6b 25 3d 30 |......"!block%=0| 00016e90 3a 62 6c 6f 63 6b 25 21 34 3d 2d 52 6f 77 73 25 |:block%!4=-Rows%| 00016ea0 2a 33 36 2d 34 0d 0c 97 25 62 6c 6f 63 6b 25 21 |*36-4...%block%!| 00016eb0 38 3d 28 52 65 63 25 2b 31 30 29 2a 31 36 3a 62 |8=(Rec%+10)*16:b| 00016ec0 6c 6f 63 6b 25 21 31 32 3d 30 0d 0c 98 28 c8 99 |lock%!12=0...(..| 00016ed0 20 22 57 69 6d 70 5f 53 65 74 45 78 74 65 6e 74 | "Wimp_SetExtent| 00016ee0 22 2c 64 61 74 61 64 69 63 57 25 2c 62 6c 6f 63 |",datadicW%,bloc| 00016ef0 6b 25 0d 0c 99 15 21 62 6c 6f 63 6b 25 3d 64 61 |k%....!block%=da| 00016f00 74 61 64 69 63 57 25 0d 0c 9a 24 c8 99 20 22 57 |tadicW%...$.. "W| 00016f10 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 |imp_GetWindowSta| 00016f20 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 0c 9b 23 62 |te",,block%...#b| 00016f30 6c 6f 63 6b 25 21 31 32 3d 62 6c 6f 63 6b 25 21 |lock%!12=block%!| 00016f40 34 2b 28 52 65 63 25 2b 31 30 29 2a 31 36 0d 0c |4+(Rec%+10)*16..| 00016f50 9c 10 e7 20 52 6f 77 73 25 3c 32 30 20 8c 0d 0c |... Rows%<20 ...| 00016f60 9d 23 20 20 62 6c 6f 63 6b 25 21 31 36 3d 62 6c |.# block%!16=bl| 00016f70 6f 63 6b 25 21 38 2b 52 6f 77 73 25 2a 33 36 2b |ock%!8+Rows%*36+| 00016f80 34 0d 0c 9e 07 20 20 cc 0d 0c 9f 20 20 20 62 6c |4.... .... bl| 00016f90 6f 63 6b 25 21 31 36 3d 62 6c 6f 63 6b 25 21 38 |ock%!16=block%!8| 00016fa0 2b 33 36 2a 32 30 2b 34 0d 0c a0 05 cd 0d 0c a1 |+36*20+4........| 00016fb0 20 c8 99 20 22 57 69 6d 70 5f 4f 70 65 6e 57 69 | .. "Wimp_OpenWi| 00016fc0 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d 0c a2 |ndow",,block%...| 00016fd0 16 f2 72 65 64 72 61 77 28 64 61 74 61 64 69 63 |..redraw(datadic| 00016fe0 57 25 29 0d 0c a3 27 e7 20 41 63 63 65 73 73 25 |W%)...'. Access%| 00016ff0 20 8c 20 f2 73 65 74 5f 63 61 72 65 74 28 64 61 | . .set_caret(da| 00017000 74 61 64 69 63 57 25 2c 30 29 0d 0c a4 05 e1 0d |tadicW%,0)......| 00017010 0c a5 05 3a 0d 0c a6 1b dd 20 f2 72 65 73 74 6f |...:..... .resto| 00017020 72 65 5f 74 61 62 6c 65 28 54 25 2c 4c 25 29 0d |re_table(T%,L%).| 00017030 0c a7 4d c8 99 20 22 57 69 6d 70 5f 54 72 61 6e |..M.. "Wimp_Tran| 00017040 73 66 65 72 42 6c 6f 63 6b 22 2c 6d 79 74 61 73 |sferBlock",mytas| 00017050 6b 25 2c 21 75 6e 64 6f 61 6e 63 68 6f 72 25 2c |k%,!undoanchor%,| 00017060 6d 79 74 61 73 6b 25 2c 21 74 61 62 61 6e 63 68 |mytask%,!tabanch| 00017070 6f 72 25 28 54 25 29 2c 4c 25 2b 31 0d 0c a8 16 |or%(T%),L%+1....| 00017080 f2 72 65 64 72 61 77 28 64 61 74 61 64 69 63 57 |.redraw(datadicW| 00017090 25 29 0d 0c a9 05 e1 0d 0c aa 05 3a 0d 0c ab 17 |%).........:....| 000170a0 dd 20 f2 72 65 73 74 6f 72 65 5f 74 61 62 66 69 |. .restore_tabfi| 000170b0 65 6c 64 0d 0c ac 13 ea 20 73 6f 75 72 63 65 25 |eld..... source%| 000170c0 2c 64 65 73 74 25 0d 0c ad 3f c8 99 20 22 57 69 |,dest%...?.. "Wi| 000170d0 6d 70 5f 47 65 74 43 61 72 65 74 50 6f 73 69 74 |mp_GetCaretPosit| 000170e0 69 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 3a 77 69 25 |ion",,block%:wi%| 000170f0 3d 21 62 6c 6f 63 6b 25 3a 69 63 25 3d 62 6c 6f |=!block%:ic%=blo| 00017100 63 6b 25 21 34 0d 0c ae 15 e7 20 77 69 25 3d 64 |ck%!4..... wi%=d| 00017110 61 74 61 64 69 63 57 25 20 8c 0d 0c af 20 20 20 |atadicW% .... | 00017120 64 65 73 74 25 3d a4 74 65 78 74 28 64 61 74 61 |dest%=.text(data| 00017130 64 69 63 57 25 2c 69 63 25 29 0d 0c b0 3a 20 20 |dicW%,ic%)...: | 00017140 73 6f 75 72 63 65 25 3d 21 75 6e 64 6f 61 6e 63 |source%=!undoanc| 00017150 68 6f 72 25 2b 64 65 73 74 25 2d 21 74 61 62 61 |hor%+dest%-!taba| 00017160 6e 63 68 6f 72 25 28 54 61 62 6c 65 6e 75 6d 62 |nchor%(Tablenumb| 00017170 65 72 25 29 0d 0c b1 15 20 20 24 64 65 73 74 25 |er%).... $dest%| 00017180 3d 24 73 6f 75 72 63 65 25 0d 0c b2 21 20 20 f2 |=$source%...! .| 00017190 72 65 64 72 61 77 5f 69 63 6f 6e 28 64 61 74 61 |redraw_icon(data| 000171a0 64 69 63 57 25 2c 69 63 25 29 0d 0c b3 05 cd 0d |dicW%,ic%)......| 000171b0 0c b4 05 e1 0d 0c b5 05 3a 0d 0c b6 15 dd 20 f2 |........:..... .| 000171c0 73 6f 72 74 5f 74 61 62 6c 65 28 54 25 29 0d 0c |sort_table(T%)..| 000171d0 b7 3f 74 69 74 6c 65 24 3d a4 74 61 62 6c 65 5f |.?title$=.table_| 000171e0 69 6e 66 6f 28 54 25 2c 52 6f 77 73 25 2c 54 61 |info(T%,Rows%,Ta| 000171f0 62 46 69 65 6c 64 73 25 2c 52 65 63 25 2c 74 61 |bFields%,Rec%,ta| 00017200 62 66 69 65 6c 64 6c 65 6e 25 28 29 29 0d 0c b8 |bfieldlen%())...| 00017210 21 69 6e 64 25 3d 21 74 61 62 61 6e 63 68 6f 72 |!ind%=!tabanchor| 00017220 25 28 54 25 29 2b 31 36 30 2d 52 65 63 25 0d 0c |%(T%)+160-Rec%..| 00017230 b9 16 e3 20 72 6f 77 25 3d 30 20 b8 20 52 6f 77 |... row%=0 . Row| 00017240 73 25 2d 31 0d 0c ba 10 20 20 69 6e 64 25 2b 3d |s%-1.... ind%+=| 00017250 52 65 63 25 0d 0c bb 1a 20 20 62 6c 6f 63 6b 25 |Rec%.... block%| 00017260 21 28 72 6f 77 25 2a 34 29 3d 69 6e 64 25 0d 0c |!(row%*4)=ind%..| 00017270 bc 1c 20 20 e7 20 24 69 6e 64 25 3d 22 22 20 8c |.. . $ind%="" .| 00017280 20 24 69 6e 64 25 3d 22 7e 22 0d 0c bd 0a ed 20 | $ind%="~"..... | 00017290 72 6f 77 25 0d 0c be 53 c8 99 20 22 4f 53 5f 48 |row%...S.. "OS_H| 000172a0 65 61 70 53 6f 72 74 22 2c 52 6f 77 73 25 2c 28 |eapSort",Rows%,(| 000172b0 62 6c 6f 63 6b 25 20 84 20 28 31 3c 3c 33 30 29 |block% . (1<<30)| 000172c0 20 84 20 28 31 3c 3c 33 31 29 29 2c 34 2c 2c 21 | . (1<<31)),4,,!| 000172d0 74 61 62 61 6e 63 68 6f 72 25 28 54 25 29 2b 31 |tabanchor%(T%)+1| 000172e0 36 30 2c 52 65 63 25 0d 0c bf 21 69 6e 64 25 3d |60,Rec%...!ind%=| 000172f0 21 74 61 62 61 6e 63 68 6f 72 25 28 54 25 29 2b |!tabanchor%(T%)+| 00017300 31 36 30 2d 52 65 63 25 0d 0c c0 16 e3 20 72 6f |160-Rec%..... ro| 00017310 77 25 3d 30 20 b8 20 52 6f 77 73 25 2d 31 0d 0c |w%=0 . Rows%-1..| 00017320 c1 10 20 20 69 6e 64 25 2b 3d 52 65 63 25 0d 0c |.. ind%+=Rec%..| 00017330 c2 1c 20 20 e7 20 24 69 6e 64 25 3d 22 7e 22 20 |.. . $ind%="~" | 00017340 8c 20 24 69 6e 64 25 3d 22 22 0d 0c c3 0a ed 20 |. $ind%=""..... | 00017350 72 6f 77 25 0d 0c c4 16 f2 72 65 64 72 61 77 28 |row%.....redraw(| 00017360 64 61 74 61 64 69 63 57 25 29 0d 0c c5 05 e1 0d |datadicW%)......| 00017370 0c c6 05 3a 0d 0c c7 16 dd 20 f2 70 72 69 6e 74 |...:..... .print| 00017380 5f 74 61 62 6c 65 28 54 25 29 0d 0c c8 1f e7 20 |_table(T%)..... | 00017390 70 72 69 6e 74 69 6e 67 25 20 84 20 69 6e 64 65 |printing% . inde| 000173a0 78 69 6e 67 25 20 8c 20 e1 0d 0c c9 28 ea 20 73 |xing% . ....(. s| 000173b0 74 61 72 74 25 2c 70 74 72 25 2c 4c 69 6e 65 24 |tart%,ptr%,Line$| 000173c0 2c 74 69 74 6c 65 24 2c 72 6f 77 73 75 73 65 64 |,title$,rowsused| 000173d0 25 0d 0c ca 17 f2 72 65 61 64 5f 70 72 69 6e 74 |%.....read_print| 000173e0 5f 6f 70 74 69 6f 6e 73 0d 0c cb 13 66 6f 72 6d |_options....form| 000173f0 61 74 24 3d 22 68 6f 72 69 7a 22 0d 0c cc 3f 74 |at$="horiz"...?t| 00017400 69 74 6c 65 24 3d a4 74 61 62 6c 65 5f 69 6e 66 |itle$=.table_inf| 00017410 6f 28 54 25 2c 52 6f 77 73 25 2c 54 61 62 46 69 |o(T%,Rows%,TabFi| 00017420 65 6c 64 73 25 2c 52 65 63 25 2c 74 61 62 66 69 |elds%,Rec%,tabfi| 00017430 65 6c 64 6c 65 6e 25 28 29 29 0d 0c cd 21 4c 65 |eldlen%())...!Le| 00017440 6e 4c 69 6e 65 25 3d 4c 6d 61 72 67 69 6e 25 2b |nLine%=Lmargin%+| 00017450 a9 28 74 69 74 6c 65 24 29 2b 32 0d 0c ce 30 48 |.(title$)+2...0H| 00017460 65 61 64 69 6e 67 24 3d 6d 61 72 67 69 6e 24 2b |eading$=margin$+| 00017470 74 69 74 6c 65 24 2b c4 52 65 63 25 2d a9 28 74 |title$+.Rec%-.(t| 00017480 69 74 6c 65 24 29 2c 22 20 22 29 0d 0c cf 37 f2 |itle$)," ")...7.| 00017490 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 |extend_named_sli| 000174a0 64 69 6e 67 5f 62 6c 6f 63 6b 28 6c 69 6e 65 61 |ding_block(linea| 000174b0 6e 63 68 6f 72 25 2c 4c 65 6e 4c 69 6e 65 25 2b |nchor%,LenLine%+| 000174c0 34 29 0d 0c d0 49 f2 65 78 74 65 6e 64 5f 6e 61 |4)...I.extend_na| 000174d0 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |med_sliding_bloc| 000174e0 6b 28 68 65 61 64 61 6e 63 68 6f 72 25 2c 4c 65 |k(headanchor%,Le| 000174f0 6e 4c 69 6e 65 25 2b 34 29 3a 70 6f 73 25 3d 21 |nLine%+4):pos%=!| 00017500 68 65 61 64 61 6e 63 68 6f 72 25 0d 0c d1 37 f2 |headanchor%...7.| 00017510 68 65 61 70 5f 73 74 6f 72 65 28 68 65 61 64 61 |heap_store(heada| 00017520 6e 63 68 6f 72 25 2c 4c 65 6e 4c 69 6e 65 25 2c |nchor%,LenLine%,| 00017530 30 2c 70 6f 73 25 2c 30 2c 48 65 61 64 69 6e 67 |0,pos%,0,Heading| 00017540 24 29 0d 0c d2 1d 54 69 74 6c 65 24 3d 22 56 61 |$)....Title$="Va| 00017550 6c 69 64 61 74 69 6f 6e 20 74 61 62 6c 65 22 0d |lidation table".| 00017560 0c d3 16 54 69 74 6c 65 31 24 3d 74 61 62 6c 65 |...Title1$=table| 00017570 24 28 54 25 29 0d 0c d4 0e 54 69 74 6c 65 32 24 |$(T%)....Title2$| 00017580 3d 22 22 0d 0c d5 18 72 65 70 6f 72 74 64 65 73 |=""....reportdes| 00017590 74 24 3d 22 57 69 6e 64 6f 77 22 0d 0c d6 1c f2 |t$="Window".....| 000175a0 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 64 61 74 |close_window(dat| 000175b0 61 64 69 63 57 25 29 0d 0c d7 0c 43 6f 75 6e 74 |adicW%)....Count| 000175c0 25 3d 30 0d 0c d8 11 f2 6c 69 73 74 5f 68 65 61 |%=0.....list_hea| 000175d0 64 28 30 29 0d 0c d9 15 c8 99 20 22 48 6f 75 72 |d(0)...... "Hour| 000175e0 67 6c 61 73 73 5f 4f 6e 22 0d 0c da 12 e3 20 49 |glass_On"..... I| 000175f0 25 3d 31 20 b8 20 52 6f 77 73 25 0d 0c db 25 20 |%=1 . Rows%...% | 00017600 20 73 74 61 72 74 25 3d 21 74 61 62 61 6e 63 68 | start%=!tabanch| 00017610 6f 72 25 28 54 25 29 2b 31 36 30 2d 52 65 63 25 |or%(T%)+160-Rec%| 00017620 0d 0c dc 13 20 20 4c 69 6e 65 24 3d 6d 61 72 67 |.... Line$=marg| 00017630 69 6e 24 0d 0c dd 19 20 20 70 74 72 25 3d 73 74 |in$.... ptr%=st| 00017640 61 72 74 25 2b 49 25 2a 52 65 63 25 0d 0c de 19 |art%+I%*Rec%....| 00017650 20 20 e3 20 4a 25 3d 30 20 b8 20 54 61 62 46 69 | . J%=0 . TabFi| 00017660 65 6c 64 73 25 0d 0c df 44 20 20 20 20 e7 20 24 |elds%...D . $| 00017670 70 74 72 25 3c 3e 22 22 20 8c 20 4c 69 6e 65 24 |ptr%<>"" . Line$| 00017680 2b 3d 24 70 74 72 25 2b c4 74 61 62 66 69 65 6c |+=$ptr%+.tabfiel| 00017690 64 6c 65 6e 25 28 4a 25 29 2d a9 28 24 70 74 72 |dlen%(J%)-.($ptr| 000176a0 25 29 2b 32 2c 22 20 22 29 0d 0c e0 20 20 20 20 |%)+2," ")... | 000176b0 20 70 74 72 25 2b 3d 74 61 62 66 69 65 6c 64 6c | ptr%+=tabfieldl| 000176c0 65 6e 25 28 4a 25 29 2b 31 0d 0c e1 0a 20 20 ed |en%(J%)+1.... .| 000176d0 20 4a 25 0d 0c e2 18 20 20 e7 20 4c 69 6e 65 24 | J%.... . Line$| 000176e0 3c 3e 6d 61 72 67 69 6e 24 20 8c 0d 0c e3 14 20 |<>margin$ ..... | 000176f0 20 20 20 72 6f 77 73 75 73 65 64 25 2b 3d 31 0d | rowsused%+=1.| 00017700 0c e4 44 20 20 20 20 24 28 21 6c 69 6e 65 61 6e |..D $(!linean| 00017710 63 68 6f 72 25 29 3d 4c 69 6e 65 24 3a f2 6c 69 |chor%)=Line$:.li| 00017720 73 74 5f 6c 69 6e 65 28 2d 31 2c 6c 69 6e 65 61 |st_line(-1,linea| 00017730 6e 63 68 6f 72 25 2c a9 28 4c 69 6e 65 24 29 2c |nchor%,.(Line$),| 00017740 33 32 29 0d 0c e5 07 20 20 cd 0d 0c e6 2e 20 20 |32).... ..... | 00017750 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 50 65 |.. "Hourglass_Pe| 00017760 72 63 65 6e 74 61 67 65 22 2c 49 25 2a 31 30 30 |rcentage",I%*100| 00017770 20 81 20 52 6f 77 73 25 0d 0c e7 08 ed 20 49 25 | . Rows%..... I%| 00017780 0d 0c e8 16 c8 99 20 22 48 6f 75 72 67 6c 61 73 |...... "Hourglas| 00017790 73 5f 4f 66 66 22 0d 0c e9 11 f2 72 75 6c 65 5f |s_Off".....rule_| 000177a0 6f 66 66 28 34 35 29 0d 0c ea 1f 53 24 3d 6d 61 |off(45)....S$=ma| 000177b0 72 67 69 6e 24 2b c3 28 52 6f 77 73 25 29 2b 22 |rgin$+.(Rows%)+"| 000177c0 20 72 6f 77 73 22 0d 0c eb 3a 24 28 21 6c 69 6e | rows"...:$(!lin| 000177d0 65 61 6e 63 68 6f 72 25 29 3d 53 24 3a f2 6c 69 |eanchor%)=S$:.li| 000177e0 73 74 5f 6c 69 6e 65 28 2d 31 2c 6c 69 6e 65 61 |st_line(-1,linea| 000177f0 6e 63 68 6f 72 25 2c a9 28 53 24 29 2c 33 32 29 |nchor%,.(S$),32)| 00017800 0d 0c ec 23 53 24 3d 6d 61 72 67 69 6e 24 2b c3 |...#S$=margin$+.| 00017810 28 72 6f 77 73 75 73 65 64 25 29 2b 22 20 75 73 |(rowsused%)+" us| 00017820 65 64 22 0d 0c ed 3a 24 28 21 6c 69 6e 65 61 6e |ed"...:$(!linean| 00017830 63 68 6f 72 25 29 3d 53 24 3a f2 6c 69 73 74 5f |chor%)=S$:.list_| 00017840 6c 69 6e 65 28 2d 31 2c 6c 69 6e 65 61 6e 63 68 |line(-1,lineanch| 00017850 6f 72 25 2c a9 28 53 24 29 2c 33 32 29 0d 0c ee |or%,.(S$),32)...| 00017860 11 f2 72 75 6c 65 5f 6f 66 66 28 34 35 29 0d 0c |..rule_off(45)..| 00017870 ef 10 f2 73 63 72 65 65 6e 5f 6c 69 73 74 0d 0c |...screen_list..| 00017880 f0 16 70 69 74 63 68 24 3d a4 70 69 74 63 68 28 |..pitch$=.pitch(| 00017890 22 30 22 29 0d 0c f1 17 f2 6c 69 74 28 6d 65 6e |"0").....lit(men| 000178a0 75 25 28 31 38 29 2c 31 2c a3 29 0d 0c f2 05 e1 |u%(18),1,.).....| 000178b0 0d 0c f3 05 3a 0d 0c f4 17 dd 20 a4 74 61 62 6c |....:..... .tabl| 000178c0 65 5f 6e 75 6d 62 65 72 28 4e 24 29 0d 0c f5 0b |e_number(N$)....| 000178d0 ea 20 54 25 2c 50 25 0d 0c f6 10 e7 20 4e 24 3d |. T%,P%..... N$=| 000178e0 22 22 20 8c 3d 2d 31 0d 0c f7 09 54 25 3d 2d 31 |"" .=-1....T%=-1| 000178f0 0d 0c f8 05 f5 0d 0c f9 0b 20 20 54 25 2b 3d 31 |......... T%+=1| 00017900 0d 0c fa 23 fd 20 74 61 62 6c 65 24 28 54 25 29 |...#. table$(T%)| 00017910 3d 4e 24 20 84 20 54 25 3e 4c 61 73 74 54 61 62 |=N$ . T%>LastTab| 00017920 6c 65 25 0d 0c fb 1d e7 20 54 25 3e 4c 61 73 74 |le%..... T%>Last| 00017930 54 61 62 6c 65 25 20 8c 3d 2d 31 20 8b 3d 54 25 |Table% .=-1 .=T%| 00017940 0d 0c fc 05 3a 0d 0c fd 2a dd 20 a4 74 61 62 6c |....:...*. .tabl| 00017950 65 5f 69 6e 66 6f 28 54 25 2c f8 20 52 25 2c f8 |e_info(T%,. R%,.| 00017960 20 46 25 2c f8 20 52 4c 25 2c 4c 25 28 29 29 0d | F%,. RL%,L%()).| 00017970 0c fe 0b ea 20 50 25 2c 49 25 0d 0c ff 16 50 25 |.... P%,I%....P%| 00017980 3d 21 74 61 62 61 6e 63 68 6f 72 25 28 54 25 29 |=!tabanchor%(T%)| 00017990 0d 0d 00 1a 52 25 3d bb 28 24 50 25 29 3a 50 25 |....R%=.($P%):P%| 000179a0 2b 3d a9 28 24 50 25 29 2b 31 0d 0d 01 1a 46 25 |+=.($P%)+1....F%| 000179b0 3d bb 28 24 50 25 29 3a 50 25 2b 3d a9 28 24 50 |=.($P%):P%+=.($P| 000179c0 25 29 2b 31 0d 0d 02 09 52 4c 25 3d 30 0d 0d 03 |%)+1....RL%=0...| 000179d0 0f e3 20 49 25 3d 30 20 b8 20 46 25 0d 0d 04 20 |.. I%=0 . F%... | 000179e0 20 20 4c 25 28 49 25 29 3d bb 28 24 50 25 29 3a | L%(I%)=.($P%):| 000179f0 50 25 2b 3d a9 28 24 50 25 29 2b 31 0d 0d 05 13 |P%+=.($P%)+1....| 00017a00 20 20 52 4c 25 2b 3d 4c 25 28 49 25 29 2b 31 0d | RL%+=L%(I%)+1.| 00017a10 0d 06 08 ed 20 49 25 0d 0d 07 08 3d 24 50 25 0d |.... I%....=$P%.| 00017a20 0d 08 05 3a 0d 0d 09 1b dd 20 a4 74 61 62 6c 65 |...:..... .table| 00017a30 5f 66 69 65 6c 64 28 46 25 2c 4c 25 28 29 29 0d |_field(F%,L%()).| 00017a40 0d 0a 0b ea 20 49 25 2c 50 25 0d 0d 0b 0c c8 95 |.... I%,P%......| 00017a50 20 49 25 3c 46 25 0d 0d 0c 12 20 20 50 25 2b 3d | I%<F%.... P%+=| 00017a60 4c 25 28 49 25 29 2b 31 0d 0d 0d 0b 20 20 49 25 |L%(I%)+1.... I%| 00017a70 2b 3d 31 0d 0d 0e 05 ce 0d 0d 0f 07 3d 50 25 0d |+=1.........=P%.| 00017a80 0d 10 05 3a 0d 0d 11 15 dd 20 f2 64 72 61 67 5f |...:..... .drag_| 00017a90 74 61 62 6c 65 28 66 24 29 0d 0d 12 13 ea 20 70 |table(f$)..... p| 00017aa0 6f 73 25 2c 6e 61 6d 65 24 2c 64 25 0d 0d 13 13 |os%,name$,d%....| 00017ab0 54 61 62 6c 65 6e 75 6d 62 65 72 25 3d 2d 31 0d |Tablenumber%=-1.| 00017ac0 0d 14 13 6e 61 6d 65 24 3d a4 6c 65 61 66 28 66 |...name$=.leaf(f| 00017ad0 24 29 0d 0d 15 1f e7 20 a7 54 61 62 73 4c 6f 61 |$)..... .TabsLoa| 00017ae0 64 65 64 24 2c 6e 61 6d 65 24 29 3e 30 20 8c 20 |ded$,name$)>0 . | 00017af0 e1 0d 0d 16 25 c8 99 20 22 4f 53 5f 46 69 6c 65 |....%.. "OS_File| 00017b00 22 2c 35 2c 66 24 20 b8 20 64 25 2c 2c 2c 2c 74 |",5,f$ . d%,,,,t| 00017b10 61 62 6c 65 6e 25 0d 0d 17 1b e7 20 4c 61 73 74 |ablen%..... Last| 00017b20 54 61 62 6c 65 25 3d 4d 61 78 54 61 62 73 25 20 |Table%=MaxTabs% | 00017b30 8c 0d 0d 18 34 20 20 e7 20 a7 65 78 74 72 61 74 |....4 . .extrat| 00017b40 61 62 73 24 2c 6e 61 6d 65 24 29 3d 30 20 8c 20 |abs$,name$)=0 . | 00017b50 65 78 74 72 61 74 61 62 73 24 2b 3d 6e 61 6d 65 |extratabs$+=name| 00017b60 24 2b 22 2c 22 0d 0d 19 07 20 20 cc 0d 0d 1a 13 |$+",".... .....| 00017b70 20 20 4c 61 73 74 54 61 62 6c 65 25 2b 3d 31 0d | LastTable%+=1.| 00017b80 0d 1b 4b 20 20 f2 63 72 65 61 74 65 5f 6e 61 6d |..K .create_nam| 00017b90 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b |ed_sliding_block| 00017ba0 28 74 61 62 61 6e 63 68 6f 72 25 28 4c 61 73 74 |(tabanchor%(Last| 00017bb0 54 61 62 6c 65 25 29 2c 28 74 61 62 6c 65 6e 25 |Table%),(tablen%| 00017bc0 2b 33 29 20 80 20 ac 20 33 29 0d 0d 1c 31 20 20 |+3) . . 3)...1 | 00017bd0 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 32 35 35 |.. "OS_File",255| 00017be0 2c 66 24 2c 21 74 61 62 61 6e 63 68 6f 72 25 28 |,f$,!tabanchor%(| 00017bf0 4c 61 73 74 54 61 62 6c 65 25 29 0d 0d 1d 1e 20 |LastTable%).... | 00017c00 20 74 61 62 6c 65 24 28 4c 61 73 74 54 61 62 6c | table$(LastTabl| 00017c10 65 25 29 3d 6e 61 6d 65 24 0d 0d 1e 1d 20 20 54 |e%)=name$.... T| 00017c20 61 62 6c 65 6e 75 6d 62 65 72 25 3d 4c 61 73 74 |ablenumber%=Last| 00017c30 54 61 62 6c 65 25 0d 0d 1f 1c 20 20 54 61 62 73 |Table%.... Tabs| 00017c40 4c 6f 61 64 65 64 24 2b 3d 22 2c 22 2b 6e 61 6d |Loaded$+=","+nam| 00017c50 65 24 0d 0d 20 27 20 20 e7 20 6d 65 6e 75 25 28 |e$.. ' . menu%(| 00017c60 35 29 3e 30 20 8c 20 6d 65 6e 75 5f 70 74 72 25 |5)>0 . menu_ptr%| 00017c70 3d 6d 65 6e 75 25 28 35 29 0d 0d 21 36 20 20 6d |=menu%(5)..!6 m| 00017c80 65 6e 75 25 28 35 29 3d a4 63 72 65 61 74 65 5f |enu%(5)=.create_| 00017c90 6d 65 6e 75 28 6d 65 6e 75 5f 70 74 72 25 2c 31 |menu(menu_ptr%,1| 00017ca0 34 30 2c 54 61 62 73 4c 6f 61 64 65 64 24 29 0d |40,TabsLoaded$).| 00017cb0 0d 22 39 20 20 70 74 72 25 3d 6d 65 6e 75 25 28 |."9 ptr%=menu%(| 00017cc0 32 29 2b 35 32 3a 70 74 72 25 21 34 3d 6d 65 6e |2)+52:ptr%!4=men| 00017cd0 75 25 28 35 29 3a f2 6c 69 74 28 6d 65 6e 75 25 |u%(5):.lit(menu%| 00017ce0 28 32 29 2c 31 2c b9 29 0d 0d 23 07 20 20 cd 0d |(2),1,.)..#. ..| 00017cf0 0d 24 05 cd 0d 0d 25 05 e1 0d 0d 26 05 3a 0d 0d |.$....%....&.:..| 00017d00 27 14 dd 20 f2 6c 69 6e 6b 5f 74 6f 5f 74 61 62 |'.. .link_to_tab| 00017d10 6c 65 0d 0d 28 0b ea 20 69 63 6f 6e 25 0d 0d 29 |le..(.. icon%..)| 00017d20 12 c8 8e 20 62 25 20 80 20 25 31 31 31 20 ca 0d |... b% . %111 ..| 00017d30 0d 2a 0c 20 20 c9 20 32 2c 34 3a 0d 0d 2b 10 20 |.*. . 2,4:..+. | 00017d40 20 e7 20 69 63 25 3d 31 33 20 8c 0d 0d 2c 35 20 | . ic%=13 ...,5 | 00017d50 20 20 20 f2 74 69 63 6b 5f 6f 6e 65 28 6d 65 6e | .tick_one(men| 00017d60 75 25 28 35 29 2c 30 2c 4c 61 73 74 54 61 62 6c |u%(5),0,LastTabl| 00017d70 65 25 2c 54 61 62 6c 65 6e 75 6d 62 65 72 25 29 |e%,Tablenumber%)| 00017d80 0d 0d 2d 2b 20 20 20 20 f2 73 68 6f 77 5f 6d 65 |..-+ .show_me| 00017d90 6e 75 28 6d 65 6e 75 25 28 35 29 2c 6f 6c 64 78 |nu(menu%(5),oldx| 00017da0 25 2b 33 32 2c 6f 6c 64 79 25 29 0d 0d 2e 07 20 |%+32,oldy%).... | 00017db0 20 cd 0d 0d 2f 05 cb 0d 0d 30 12 c8 8e 20 62 25 | .../....0... b%| 00017dc0 20 80 20 25 31 31 31 20 ca 0d 0d 31 0c 20 20 c9 | . %111 ...1. .| 00017dd0 20 31 2c 34 3a 0d 0d 32 24 20 20 e7 20 28 62 25 | 1,4:..2$ . (b%| 00017de0 20 80 20 25 31 31 31 29 3d 34 20 8c 20 7a 25 3d | . %111)=4 . z%=| 00017df0 31 20 8b 20 7a 25 3d 2d 31 0d 0d 33 0e 20 20 c8 |1 . z%=-1..3. .| 00017e00 8e 20 69 63 25 20 ca 0d 0d 34 17 20 20 20 20 c9 |. ic% ...4. .| 00017e10 20 35 3a f2 74 63 79 63 6c 65 28 7a 25 29 0d 0d | 5:.tcycle(z%)..| 00017e20 35 18 20 20 20 20 c9 20 36 3a f2 74 63 79 63 6c |5. . 6:.tcycl| 00017e30 65 28 2d 7a 25 29 0d 0d 36 21 20 20 20 20 c9 20 |e(-z%)..6! . | 00017e40 37 3a f2 66 63 79 63 6c 65 28 7a 25 2c 66 69 65 |7:.fcycle(z%,fie| 00017e50 6c 64 6e 75 6d 25 29 0d 0d 37 22 20 20 20 20 c9 |ldnum%)..7" .| 00017e60 20 38 3a f2 66 63 79 63 6c 65 28 2d 7a 25 2c 66 | 8:.fcycle(-z%,f| 00017e70 69 65 6c 64 6e 75 6d 25 29 0d 0d 38 20 20 20 20 |ieldnum%)..8 | 00017e80 20 c9 20 31 31 3a f2 66 63 79 63 6c 65 28 7a 25 | . 11:.fcycle(z%| 00017e90 2c 65 78 70 61 6e 64 25 29 0d 0d 39 21 20 20 20 |,expand%)..9! | 00017ea0 20 c9 20 31 32 3a f2 66 63 79 63 6c 65 28 2d 7a | . 12:.fcycle(-z| 00017eb0 25 2c 65 78 70 61 6e 64 25 29 0d 0d 3a 0c 20 20 |%,expand%)..:. | 00017ec0 20 20 c9 20 39 3a 0d 0d 3b 17 20 20 20 20 e3 20 | . 9:..;. . | 00017ed0 69 63 6f 6e 25 3d 31 30 20 b8 20 31 32 0d 0d 3c |icon%=10 . 12..<| 00017ee0 38 20 20 20 20 20 20 f2 69 63 6f 6e 5f 62 69 74 |8 .icon_bit| 00017ef0 28 32 32 2c 6c 69 6e 6b 57 25 2c 69 63 6f 6e 25 |(22,linkW%,icon%| 00017f00 2c a4 73 65 6c 65 63 74 65 64 28 6c 69 6e 6b 57 |,.selected(linkW| 00017f10 25 2c 39 29 29 0d 0d 3d 0f 20 20 20 20 ed 20 69 |%,9))..=. . i| 00017f20 63 6f 6e 25 0d 0d 3e 0c 20 20 20 20 c9 20 33 3a |con%..>. . 3:| 00017f30 0d 0d 3f 22 20 20 20 20 69 63 6f 6e 25 3d 66 69 |..?" icon%=fi| 00017f40 65 6c 64 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 |eld%(Fieldnumber| 00017f50 25 29 0d 0d 40 31 20 20 20 20 e7 20 a4 73 65 6c |%)..@1 . .sel| 00017f60 65 63 74 65 64 28 6c 69 6e 6b 57 25 2c 34 29 20 |ected(linkW%,4) | 00017f70 80 20 24 54 61 62 6c 65 6e 61 6d 65 25 3c 3e 22 |. $Tablename%<>"| 00017f80 22 20 8c 0d 0d 41 34 20 20 20 20 20 20 6c 69 6e |" ...A4 lin| 00017f90 6b 24 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 |k$(Fieldnumber%)| 00017fa0 3d 24 54 61 62 6c 65 6e 61 6d 65 25 2b 24 66 69 |=$Tablename%+$fi| 00017fb0 65 6c 64 6e 75 6d 25 0d 0d 42 2f 20 20 20 20 20 |eldnum%..B/ | 00017fc0 20 f2 73 65 74 5f 69 63 6f 6e 5f 63 6f 6c 73 28 | .set_icon_cols(| 00017fd0 6d 61 69 6e 57 25 2c 69 63 6f 6e 25 2c 66 63 6f |mainW%,icon%,fco| 00017fe0 6c 25 28 36 29 29 0d 0d 43 52 20 20 20 20 20 20 |l%(6))..CR | 00017ff0 e7 20 a4 73 65 6c 65 63 74 65 64 28 6c 69 6e 6b |. .selected(link| 00018000 57 25 2c 39 29 20 8c 20 6c 69 6e 6b 24 28 46 69 |W%,9) . link$(Fi| 00018010 65 6c 64 6e 75 6d 62 65 72 25 29 3d 24 65 78 70 |eldnumber%)=$exp| 00018020 61 6e 64 25 2b 6c 69 6e 6b 24 28 46 69 65 6c 64 |and%+link$(Field| 00018030 6e 75 6d 62 65 72 25 29 0d 0d 44 0b 20 20 20 20 |number%)..D. | 00018040 20 20 cc 0d 0d 45 20 20 20 20 20 20 20 6c 69 6e | ...E lin| 00018050 6b 24 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 |k$(Fieldnumber%)| 00018060 3d 22 22 0d 0d 46 28 20 20 20 20 20 20 f2 73 65 |=""..F( .se| 00018070 74 5f 69 63 6f 6e 5f 63 6f 6c 73 28 6d 61 69 6e |t_icon_cols(main| 00018080 57 25 2c 69 63 6f 6e 25 2c 37 29 0d 0d 47 09 20 |W%,icon%,7)..G. | 00018090 20 20 20 cd 0d 0d 48 19 20 20 20 20 6c 69 6e 6b | ...H. link| 000180a0 24 28 30 29 3d 22 4c 4f 41 44 45 44 22 0d 0d 49 |$(0)="LOADED"..I| 000180b0 2f 20 20 20 20 e7 20 28 62 25 20 80 20 25 31 31 |/ . (b% . %11| 000180c0 31 29 3d 34 20 8c 20 f2 63 6c 6f 73 65 5f 77 69 |1)=4 . .close_wi| 000180d0 6e 64 6f 77 28 6c 69 6e 6b 57 25 29 0d 0d 4a 07 |ndow(linkW%)..J.| 000180e0 20 20 cb 0d 0d 4b 05 cb 0d 0d 4c 05 e1 0d 0d 4d | ...K....L....M| 000180f0 05 3a 0d 0d 4e 11 dd 20 f2 74 63 79 63 6c 65 28 |.:..N.. .tcycle(| 00018100 7a 25 29 0d 0d 4f 17 e7 20 4c 61 73 74 54 61 62 |z%)..O.. LastTab| 00018110 6c 65 25 3d 2d 31 20 8c 20 e1 0d 0d 50 14 54 61 |le%=-1 . ...P.Ta| 00018120 62 6c 65 6e 75 6d 62 65 72 25 2b 3d 7a 25 0d 0d |blenumber%+=z%..| 00018130 51 2e e7 20 54 61 62 6c 65 6e 75 6d 62 65 72 25 |Q.. Tablenumber%| 00018140 3e 4c 61 73 74 54 61 62 6c 65 25 20 8c 20 54 61 |>LastTable% . Ta| 00018150 62 6c 65 6e 75 6d 62 65 72 25 3d 30 0d 0d 52 2e |blenumber%=0..R.| 00018160 e7 20 54 61 62 6c 65 6e 75 6d 62 65 72 25 3c 30 |. Tablenumber%<0| 00018170 20 8c 20 54 61 62 6c 65 6e 75 6d 62 65 72 25 3d | . Tablenumber%=| 00018180 4c 61 73 74 54 61 62 6c 65 25 0d 0d 53 24 24 54 |LastTable%..S$$T| 00018190 61 62 6c 65 6e 61 6d 65 25 3d 74 61 62 6c 65 24 |ablename%=table$| 000181a0 28 54 61 62 6c 65 6e 75 6d 62 65 72 25 29 0d 0d |(Tablenumber%)..| 000181b0 54 1a f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 6c |T..redraw_icon(l| 000181c0 69 6e 6b 57 25 2c 30 29 0d 0d 55 05 e1 0d 0d 56 |inkW%,0)..U....V| 000181d0 05 3a 0d 0d 57 19 dd 20 f2 66 63 79 63 6c 65 28 |.:..W.. .fcycle(| 000181e0 7a 25 2c 63 6f 6c 75 6d 6e 25 29 0d 0d 58 45 54 |z%,column%)..XET| 000181f0 24 3d a4 74 61 62 6c 65 5f 69 6e 66 6f 28 54 61 |$=.table_info(Ta| 00018200 62 6c 65 6e 75 6d 62 65 72 25 2c 52 6f 77 73 25 |blenumber%,Rows%| 00018210 2c 54 61 62 46 69 65 6c 64 73 25 2c 52 65 63 25 |,TabFields%,Rec%| 00018220 2c 74 61 62 66 69 65 6c 64 6c 65 6e 25 28 29 29 |,tabfieldlen%())| 00018230 0d 0d 59 16 66 69 65 6c 64 25 3d bb 28 24 63 6f |..Y.field%=.($co| 00018240 6c 75 6d 6e 25 29 0d 0d 5a 0e 66 69 65 6c 64 25 |lumn%)..Z.field%| 00018250 2b 3d 7a 25 0d 0d 5b 22 e7 20 66 69 65 6c 64 25 |+=z%..[". field%| 00018260 3e 54 61 62 46 69 65 6c 64 73 25 20 8c 20 66 69 |>TabFields% . fi| 00018270 65 6c 64 25 3d 30 0d 0d 5c 22 e7 20 66 69 65 6c |eld%=0..\". fiel| 00018280 64 25 3c 30 20 8c 20 66 69 65 6c 64 25 3d 54 61 |d%<0 . field%=Ta| 00018290 62 46 69 65 6c 64 73 25 0d 0d 5d 16 24 63 6f 6c |bFields%..].$col| 000182a0 75 6d 6e 25 3d c3 28 66 69 65 6c 64 25 29 0d 0d |umn%=.(field%)..| 000182b0 5e 1a f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 6c |^..redraw_icon(l| 000182c0 69 6e 6b 57 25 2c 32 29 0d 0d 5f 1b f2 72 65 64 |inkW%,2).._..red| 000182d0 72 61 77 5f 69 63 6f 6e 28 6c 69 6e 6b 57 25 2c |raw_icon(linkW%,| 000182e0 31 30 29 0d 0d 60 05 e1 0d 0d 61 05 3a 0d 0d 62 |10)..`....a.:..b| 000182f0 12 dd 20 f2 6c 69 6e 6b 5f 73 74 61 74 75 73 0d |.. .link_status.| 00018300 0d 63 25 ea 20 6e 61 6d 65 24 2c 6e 61 6d 65 31 |.c%. name$,name1| 00018310 24 2c 66 69 65 6c 64 24 2c 65 78 70 61 6e 64 24 |$,field$,expand$| 00018320 2c 69 63 25 0d 0d 64 1d 6e 61 6d 65 24 3d 6c 69 |,ic%..d.name$=li| 00018330 6e 6b 24 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 |nk$(Fieldnumber%| 00018340 29 0d 0d 65 44 e7 20 97 28 6e 61 6d 65 24 29 3c |)..eD. .(name$)<| 00018350 35 38 20 80 20 97 28 6e 61 6d 65 24 29 3c 3e 2d |58 . .(name$)<>-| 00018360 31 20 8c 20 65 78 70 61 6e 64 24 3d c0 6e 61 6d |1 . expand$=.nam| 00018370 65 24 2c 31 29 3a 6e 61 6d 65 24 3d c1 6e 61 6d |e$,1):name$=.nam| 00018380 65 24 2c 32 29 0d 0d 66 21 66 69 65 6c 64 24 3d |e$,2)..f!field$=| 00018390 c2 6e 61 6d 65 24 29 3a 6e 61 6d 65 31 24 3d c0 |.name$):name1$=.| 000183a0 6e 61 6d 65 24 29 0d 0d 67 2d e7 20 28 6e 61 6d |name$)..g-. (nam| 000183b0 65 31 24 3c 3e 22 22 20 80 20 a7 54 61 62 73 4c |e1$<>"" . .TabsL| 000183c0 6f 61 64 65 64 24 2c 6e 61 6d 65 31 24 29 3e 30 |oaded$,name1$)>0| 000183d0 29 20 8c 0d 0d 68 3b 20 20 24 54 61 62 6c 65 6e |) ...h; $Tablen| 000183e0 61 6d 65 25 3d 6e 61 6d 65 31 24 3a 24 66 69 65 |ame%=name1$:$fie| 000183f0 6c 64 6e 75 6d 25 3d 66 69 65 6c 64 24 3a 24 65 |ldnum%=field$:$e| 00018400 78 70 61 6e 64 25 3d 65 78 70 61 6e 64 24 0d 0d |xpand%=expand$..| 00018410 69 28 20 20 54 61 62 6c 65 6e 75 6d 62 65 72 25 |i( Tablenumber%| 00018420 3d a4 74 61 62 6c 65 5f 6e 75 6d 62 65 72 28 6e |=.table_number(n| 00018430 61 6d 65 31 24 29 0d 0d 6a 17 20 20 f2 73 65 6c |ame1$)..j. .sel| 00018440 65 63 74 28 6c 69 6e 6b 57 25 2c 34 29 0d 0d 6b |ect(linkW%,4)..k| 00018450 07 20 20 cc 0d 0d 6c 14 20 20 54 61 62 6c 65 6e |. ...l. Tablen| 00018460 75 6d 62 65 72 25 3d 30 0d 0d 6d 26 20 20 24 54 |umber%=0..m& $T| 00018470 61 62 6c 65 6e 61 6d 65 25 3d 74 61 62 6c 65 24 |ablename%=table$| 00018480 28 54 61 62 6c 65 6e 75 6d 62 65 72 25 29 0d 0d |(Tablenumber%)..| 00018490 6e 28 20 20 f2 64 65 73 65 6c 65 63 74 28 6c 69 |n( .deselect(li| 000184a0 6e 6b 57 25 2c 34 29 3a 24 66 69 65 6c 64 6e 75 |nkW%,4):$fieldnu| 000184b0 6d 25 3d 22 30 22 0d 0d 6f 05 cd 0d 0d 70 13 e7 |m%="0"..o....p..| 000184c0 20 65 78 70 61 6e 64 24 3c 3e 22 22 20 8c 0d 0d | expand$<>"" ...| 000184d0 71 28 20 20 f2 73 65 6c 65 63 74 28 6c 69 6e 6b |q( .select(link| 000184e0 57 25 2c 39 29 3a 24 65 78 70 61 6e 64 25 3d 65 |W%,9):$expand%=e| 000184f0 78 70 61 6e 64 24 0d 0d 72 28 20 20 cc 20 f2 64 |xpand$..r( . .d| 00018500 65 73 65 6c 65 63 74 28 6c 69 6e 6b 57 25 2c 39 |eselect(linkW%,9| 00018510 29 3a 24 65 78 70 61 6e 64 25 3d 22 30 22 0d 0d |):$expand%="0"..| 00018520 73 05 cd 0d 0d 74 11 e3 20 69 63 25 3d 31 30 20 |s....t.. ic%=10 | 00018530 b8 20 31 32 0d 0d 75 32 20 20 f2 69 63 6f 6e 5f |. 12..u2 .icon_| 00018540 62 69 74 28 32 32 2c 6c 69 6e 6b 57 25 2c 69 63 |bit(22,linkW%,ic| 00018550 25 2c a4 73 65 6c 65 63 74 65 64 28 6c 69 6e 6b |%,.selected(link| 00018560 57 25 2c 39 29 29 0d 0d 76 09 ed 20 69 63 25 0d |W%,9))..v.. ic%.| 00018570 0d 77 49 f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 |.wI.redraw_icon(| 00018580 6c 69 6e 6b 57 25 2c 30 29 3a f2 72 65 64 72 61 |linkW%,0):.redra| 00018590 77 5f 69 63 6f 6e 28 6c 69 6e 6b 57 25 2c 32 29 |w_icon(linkW%,2)| 000185a0 3a f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 6c 69 |:.redraw_icon(li| 000185b0 6e 6b 57 25 2c 31 30 29 0d 0d 78 05 e1 0d 0d 79 |nkW%,10)..x....y| 000185c0 05 3a 0d 0d 7a 4b f4 20 45 6e 64 20 6f 66 20 56 |.:..zK. End of V| 000185d0 61 6c 69 64 61 74 69 6f 6e 20 74 61 62 6c 65 20 |alidation table | 000185e0 72 6f 75 74 69 6e 65 73 20 2d 2d 2d 2d 2d 2d 2d |routines -------| 000185f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00018600 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0d 7b |-------------..{| 00018610 05 3a 0d 0d 7c 14 dd 20 f2 63 68 61 6e 67 65 73 |.:..|.. .changes| 00018620 28 6b 65 79 25 29 0d 0d 7d 12 ea 20 4d 24 2c 4b |(key%)..}.. M$,K| 00018630 25 2c 69 6e 64 65 78 25 0d 0d 7e 3c 53 65 61 72 |%,index%..~<Sear| 00018640 63 68 24 3d a4 70 61 72 73 65 28 24 a4 74 65 78 |ch$=.parse($.tex| 00018650 74 28 63 68 61 6e 67 65 57 25 2c 33 29 2c a4 73 |t(changeW%,3),.s| 00018660 65 6c 65 63 74 65 64 28 63 68 61 6e 67 65 57 25 |elected(changeW%| 00018670 2c 35 29 29 0d 0d 7f 1b 4e 65 77 24 3d 24 a4 74 |,5))....New$=$.t| 00018680 65 78 74 28 63 68 61 6e 67 65 57 25 2c 31 29 0d |ext(changeW%,1).| 00018690 0d 80 25 e7 20 4e 65 77 24 3d 22 22 20 8c 20 6e |..%. New$="" . n| 000186a0 24 3d 22 3c 6e 75 6c 6c 3e 22 20 8b 20 6e 24 3d |$="<null>" . n$=| 000186b0 4e 65 77 24 0d 0d 81 26 e7 20 4e 65 77 24 3c 3e |New$...&. New$<>| 000186c0 22 22 20 80 20 a7 22 2b 2d 2a 2f 22 2c c0 4e 65 |"" . ."+-*/",.Ne| 000186d0 77 24 2c 31 29 29 3e 30 20 8c 0d 0d 82 10 20 20 |w$,1))>0 ..... | 000186e0 6e 75 6d 65 72 69 63 25 3d b9 0d 0d 83 12 20 20 |numeric%=..... | 000186f0 cc 20 6e 75 6d 65 72 69 63 25 3d a3 0d 0d 84 05 |. numeric%=.....| 00018700 cd 0d 0d 85 1e 4b 25 3d a4 69 73 5f 61 5f 6b 65 |.....K%=.is_a_ke| 00018710 79 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 0d |y(Fieldnumber%).| 00018720 0d 86 3c e7 20 4b 25 3d 6b 65 79 25 20 8c 20 f2 |..<. K%=key% . .| 00018730 73 6f 66 74 65 72 72 6f 72 28 22 22 2c 31 32 29 |softerror("",12)| 00018740 3a c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 |:.. "Wimp_Create| 00018750 4d 65 6e 75 22 2c 2c 2d 31 3a e1 0d 0d 87 62 e7 |Menu",,-1:....b.| 00018760 20 4b 25 3e 3d 30 20 8c 20 4d 24 3d 22 20 4e 4f | K%>=0 . M$=" NO| 00018770 54 45 21 20 49 6e 64 65 78 20 6f 6e 20 74 68 69 |TE! Index on thi| 00018780 73 20 66 69 65 6c 64 20 77 69 6c 6c 20 4e 4f 20 |s field will NO | 00018790 4c 4f 4e 47 45 52 20 42 45 20 56 41 4c 49 44 20 |LONGER BE VALID | 000187a0 61 6e 64 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 |and will be dele| 000187b0 74 65 64 2e 22 20 8b 20 4d 24 3d 22 22 0d 0d 88 |ted." . M$=""...| 000187c0 29 50 25 3d a7 54 69 74 6c 65 24 2c 22 2e 20 22 |)P%=.Title$,". "| 000187d0 29 3a 54 69 74 6c 65 24 3d c1 54 69 74 6c 65 24 |):Title$=.Title$| 000187e0 2c 50 25 2b 32 29 0d 0d 89 4c e7 20 54 69 74 6c |,P%+2)...L. Titl| 000187f0 65 24 3c 3e 22 41 6c 6c 20 72 65 63 6f 72 64 73 |e$<>"All records| 00018800 22 20 8c 20 54 69 74 6c 65 24 3d 22 20 77 68 65 |" . Title$=" whe| 00018810 6e 20 22 2b 54 69 74 6c 65 24 20 8b 20 54 69 74 |n "+Title$ . Tit| 00018820 6c 65 24 3d 22 20 66 6f 72 20 22 2b 54 69 74 6c |le$=" for "+Titl| 00018830 65 24 0d 0d 8a 38 54 69 74 6c 65 24 3d 22 43 68 |e$...8Title$="Ch| 00018840 61 6e 67 65 20 22 2b 46 69 65 6c 64 6e 61 6d 65 |ange "+Fieldname| 00018850 24 2b 22 20 74 6f 20 22 2b 6e 24 2b 54 69 74 6c |$+" to "+n$+Titl| 00018860 65 24 2b 22 2e 20 22 2b 4d 24 0d 0d 8b 1a e7 20 |e$+". "+M$..... | 00018870 a4 63 6f 6e 66 69 72 6d 28 54 69 74 6c 65 24 29 |.confirm(Title$)| 00018880 3d b9 20 8c 0d 0d 8c 27 20 20 73 75 62 74 6f 74 |=. ....' subtot| 00018890 61 6c 25 3d a4 63 6f 75 6e 74 5f 72 65 63 73 28 |al%=.count_recs(| 000188a0 6b 65 79 25 2c 7a 65 72 6f 25 29 0d 0d 8d 17 20 |key%,zero%).... | 000188b0 20 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f | .. "Hourglass_O| 000188c0 6e 22 0d 0d 8e 2c 20 20 64 62 61 73 65 68 61 6e |n"..., dbasehan| 000188d0 64 6c 65 25 3d ad 28 24 64 61 74 61 62 61 73 65 |dle%=.($database| 000188e0 25 2b 22 2e 44 61 74 61 62 61 73 65 22 29 0d 0d |%+".Database")..| 000188f0 8f 1f 20 20 50 25 3d a4 6e 65 69 67 68 62 6f 75 |.. P%=.neighbou| 00018900 72 28 6b 65 79 25 2c 74 6f 70 2c 31 29 0d 0d 90 |r(key%,top,1)...| 00018910 22 20 20 f2 73 63 61 6e 5f 66 69 6c 65 28 22 50 |" .scan_file("P| 00018920 25 3c 3e 74 6f 70 22 2c 6b 65 79 25 2c 35 29 0d |%<>top",key%,5).| 00018930 0d 91 1f 20 20 f2 63 6c 6f 73 65 5f 66 69 6c 65 |... .close_file| 00018940 28 64 62 61 73 65 68 61 6e 64 6c 65 25 29 0d 0d |(dbasehandle%)..| 00018950 92 19 20 20 24 44 61 74 65 25 28 66 69 6c 65 25 |.. $Date%(file%| 00018960 29 3d a4 64 61 74 65 0d 0d 93 13 20 20 64 61 74 |)=.date.... dat| 00018970 65 25 3f 66 69 6c 65 25 3d 31 0d 0d 94 19 20 20 |e%?file%=1.... | 00018980 f2 64 69 73 70 6c 61 79 28 6b 65 79 25 2c 61 64 |.display(key%,ad| 00018990 64 72 29 0d 0d 95 18 20 20 c8 99 20 22 48 6f 75 |dr).... .. "Hou| 000189a0 72 67 6c 61 73 73 5f 4f 66 66 22 0d 0d 96 0f 20 |rglass_Off".... | 000189b0 20 e7 20 4b 25 3e 3d 30 20 8c 0d 0d 97 1b 20 20 | . K%>=0 ..... | 000189c0 20 20 e3 20 69 6e 64 65 78 25 3d 4b 25 20 b8 20 | . index%=K% . | 000189d0 4b 65 79 73 25 0d 0d 98 21 20 20 20 20 20 20 49 |Keys%...! I| 000189e0 6e 64 65 78 24 28 4b 25 29 3d 49 6e 64 65 78 24 |ndex$(K%)=Index$| 000189f0 28 4b 25 2b 31 29 0d 0d 99 10 20 20 20 20 ed 20 |(K%+1).... . | 00018a00 69 6e 64 65 78 25 0d 0d 9a 2c 20 20 20 20 f2 73 |index%..., .s| 00018a10 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f |crap_sliding_blo| 00018a20 63 6b 28 6b 65 79 61 6e 63 68 6f 72 25 28 4b 25 |ck(keyanchor%(K%| 00018a30 29 29 0d 0d 9b 10 20 20 20 20 4b 65 79 73 25 2d |)).... Keys%-| 00018a40 3d 31 0d 0d 9c 07 20 20 cd 0d 0d 9d 32 20 20 e7 |=1.... ....2 .| 00018a50 20 a4 73 65 6c 65 63 74 65 64 28 70 61 73 73 57 | .selected(passW| 00018a60 25 2c 31 36 29 20 8c 20 d5 23 6c 6f 67 68 61 6e |%,16) . .#loghan| 00018a70 64 6c 65 25 2c 54 69 74 6c 65 24 0d 0d 9e 05 cd |dle%,Title$.....| 00018a80 0d 0d 9f 1c c8 99 20 22 57 69 6d 70 5f 43 72 65 |...... "Wimp_Cre| 00018a90 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 0d a0 05 |ateMenu",,-1....| 00018aa0 e1 0d 0d a1 05 3a 0d 0d a2 13 dd 20 a4 69 73 5f |.....:..... .is_| 00018ab0 61 5f 6b 65 79 28 46 25 29 0d 0d a3 10 ea 20 6b |a_key(F%)..... k| 00018ac0 65 79 25 2c 66 6c 61 67 25 0d 0d a4 0c 66 6c 61 |ey%,flag%....fla| 00018ad0 67 25 3d 2d 31 0d 0d a5 14 e3 20 6b 65 79 25 3d |g%=-1..... key%=| 00018ae0 30 20 b8 20 4b 65 79 73 25 0d 0d a6 34 20 20 e7 |0 . Keys%...4 .| 00018af0 20 4b 46 25 28 6b 65 79 25 2c 30 29 3d 46 25 20 | KF%(key%,0)=F% | 00018b00 84 20 4b 46 25 28 6b 65 79 25 2c 31 29 3d 46 25 |. KF%(key%,1)=F%| 00018b10 20 8c 20 66 6c 61 67 25 3d 6b 65 79 25 0d 0d a7 | . flag%=key%...| 00018b20 0a ed 20 6b 65 79 25 0d 0d a8 0a 3d 66 6c 61 67 |.. key%....=flag| 00018b30 25 0d 0d a9 05 3a 0d 0d aa 18 dd 20 f2 72 65 61 |%....:..... .rea| 00018b40 64 28 4e 25 2c 4b 25 2c 52 25 2c 66 24 29 0d 0d |d(N%,K%,R%,f$)..| 00018b50 ab 1a ea 20 49 25 2c 6b 65 79 25 2c 64 62 61 73 |... I%,key%,dbas| 00018b60 65 68 61 6e 64 6c 65 25 0d 0d ac 22 64 62 61 73 |ehandle%..."dbas| 00018b70 65 68 61 6e 64 6c 65 25 3d 8e 28 66 24 2b 22 2e |ehandle%=.(f$+".| 00018b80 44 61 74 61 62 61 73 65 22 29 0d 0d ad 25 24 52 |Database")...%$R| 00018b90 66 25 28 30 29 3d 22 22 3a 66 69 65 6c 64 24 28 |f%(0)="":field$(| 00018ba0 30 29 3d 22 22 3a 6b 65 79 24 28 29 3d 22 22 0d |0)="":key$()="".| 00018bb0 0d ae 20 cf 23 64 62 61 73 65 68 61 6e 64 6c 65 |.. .#dbasehandle| 00018bc0 25 3d 94 28 52 25 29 2a 4c 65 6e 67 74 68 25 0d |%=.(R%)*Length%.| 00018bd0 0d af 0f e3 20 49 25 3d 31 20 b8 20 4e 25 0d 0d |.... I%=1 . N%..| 00018be0 b0 1f 20 20 66 69 65 6c 64 24 28 49 25 29 3d be |.. field$(I%)=.| 00018bf0 23 64 62 61 73 65 68 61 6e 64 6c 65 25 0d 0d b1 |#dbasehandle%...| 00018c00 43 20 20 e7 20 63 68 61 72 74 79 70 65 25 28 49 |C . chartype%(I| 00018c10 25 29 3c 3e 34 30 20 80 20 63 68 61 72 74 79 70 |%)<>40 . chartyp| 00018c20 65 25 28 49 25 29 3c 3e 35 39 20 8c 20 24 52 66 |e%(I%)<>59 . $Rf| 00018c30 25 28 49 25 29 3d 66 69 65 6c 64 24 28 49 25 29 |%(I%)=field$(I%)| 00018c40 0d 0d b2 18 20 20 c8 8e 20 63 68 61 72 74 79 70 |.... .. chartyp| 00018c50 65 25 28 49 25 29 20 ca 0d 0d b3 38 20 20 20 20 |e%(I%) ....8 | 00018c60 c9 20 33 36 2c 33 37 2c 33 38 3a f2 73 65 74 5f |. 36,37,38:.set_| 00018c70 62 6c 6f 62 5f 73 70 72 69 74 65 28 52 25 2c 49 |blob_sprite(R%,I| 00018c80 25 2c 63 68 61 72 74 79 70 65 25 28 49 25 29 29 |%,chartype%(I%))| 00018c90 0d 0d b4 21 20 20 20 20 c9 20 33 39 3a f2 73 68 |...! . 39:.sh| 00018ca0 6f 77 5f 74 65 78 74 5f 62 6c 6f 63 6b 28 49 25 |ow_text_block(I%| 00018cb0 29 0d 0d b5 1e 20 20 20 20 c9 20 34 30 3a f2 73 |).... . 40:.s| 00018cc0 68 6f 77 5f 70 69 63 74 75 72 65 28 49 25 29 0d |how_picture(I%).| 00018cd0 0d b6 19 20 20 20 20 c9 20 34 31 2c 34 32 2c 34 |... . 41,42,4| 00018ce0 33 2c 34 34 2c 34 35 3a 0d 0d b7 54 20 20 20 20 |3,44,45:...T | 00018cf0 e7 20 66 69 65 6c 64 24 28 49 25 29 3d 22 20 22 |. field$(I%)=" "| 00018d00 20 8c 20 f2 73 65 6c 65 63 74 28 6d 61 69 6e 57 | . .select(mainW| 00018d10 25 2c 66 69 65 6c 64 25 28 49 25 29 29 20 8b 20 |%,field%(I%)) . | 00018d20 f2 64 65 73 65 6c 65 63 74 28 6d 61 69 6e 57 25 |.deselect(mainW%| 00018d30 2c 66 69 65 6c 64 25 28 49 25 29 29 0d 0d b8 2c |,field%(I%))...,| 00018d40 20 20 20 20 c9 20 34 36 3a e7 20 52 25 3d 52 41 | . 46:. R%=RA| 00018d50 25 20 8c 20 24 52 66 25 28 49 25 29 3d c3 28 6e |% . $Rf%(I%)=.(n| 00018d60 65 78 74 72 65 63 25 29 0d 0d b9 39 20 20 20 20 |extrec%)...9 | 00018d70 c9 20 34 37 3a e7 20 52 25 3d 52 41 25 20 8c 20 |. 47:. R%=RA% . | 00018d80 f2 73 70 6c 69 74 5f 6c 69 6e 6b 28 49 25 2c 52 |.split_link(I%,R| 00018d90 24 2c 56 24 29 3a 24 52 66 25 28 49 25 29 3d 52 |$,V$):$Rf%(I%)=R| 00018da0 24 0d 0d ba 27 20 20 20 20 c9 20 34 38 3a e7 20 |$...' . 48:. | 00018db0 52 25 3d 52 41 25 20 8c 20 24 52 66 25 28 49 25 |R%=RA% . $Rf%(I%| 00018dc0 29 3d c2 91 24 2c 38 29 0d 0d bb 28 20 20 20 20 |)=..$,8)...( | 00018dd0 c9 20 34 39 3a e7 20 52 25 3d 52 41 25 20 8c 20 |. 49:. R%=RA% . | 00018de0 24 52 66 25 28 49 25 29 3d c0 91 24 2c 31 35 29 |$Rf%(I%)=..$,15)| 00018df0 0d 0d bc 31 20 20 20 20 c9 20 35 30 3a e7 20 52 |...1 . 50:. R| 00018e00 25 3d 52 41 25 20 8c 20 24 52 66 25 28 49 25 29 |%=RA% . $Rf%(I%)| 00018e10 3d a4 63 6f 6e 76 65 72 74 5f 64 61 74 65 28 32 |=.convert_date(2| 00018e20 29 0d 0d bd 31 20 20 20 20 c9 20 35 31 3a e7 20 |)...1 . 51:. | 00018e30 52 25 3d 52 41 25 20 8c 20 24 52 66 25 28 49 25 |R%=RA% . $Rf%(I%| 00018e40 29 3d a4 63 6f 6e 76 65 72 74 5f 64 61 74 65 28 |)=.convert_date(| 00018e50 34 29 0d 0d be 23 20 20 20 20 c9 20 35 32 3a e7 |4)...# . 52:.| 00018e60 20 52 25 3d 52 41 25 20 8c 20 24 52 66 25 28 49 | R%=RA% . $Rf%(I| 00018e70 25 29 3d 91 24 0d 0d bf 27 20 20 20 20 c9 20 35 |%)=.$...' . 5| 00018e80 33 3a e7 20 52 25 3d 52 41 25 20 8c 20 24 52 66 |3:. R%=RA% . $Rf| 00018e90 25 28 49 25 29 3d c0 91 24 2c 33 29 0d 0d c0 29 |%(I%)=..$,3)...)| 00018ea0 20 20 20 20 c9 20 35 34 3a e7 20 52 25 3d 52 41 | . 54:. R%=RA| 00018eb0 25 20 8c 20 24 52 66 25 28 49 25 29 3d c1 91 24 |% . $Rf%(I%)=..$| 00018ec0 2c 35 2c 32 29 0d 0d c1 29 20 20 20 20 c9 20 35 |,5,2)...) . 5| 00018ed0 35 3a e7 20 52 25 3d 52 41 25 20 8c 20 24 52 66 |5:. R%=RA% . $Rf| 00018ee0 25 28 49 25 29 3d c1 91 24 2c 38 2c 33 29 0d 0d |%(I%)=..$,8,3)..| 00018ef0 c2 4a 20 20 20 20 c9 20 35 36 3a e7 20 52 25 3d |.J . 56:. R%=| 00018f00 52 41 25 20 8c 20 4d 24 3d c1 91 24 2c 38 2c 33 |RA% . M$=..$,8,3| 00018f10 29 3a 50 25 3d a7 6d 6f 6e 74 68 73 24 2c 4d 24 |):P%=.months$,M$| 00018f20 29 3a 24 52 66 25 28 49 25 29 3d c3 28 28 50 25 |):$Rf%(I%)=.((P%| 00018f30 2b 32 29 20 81 20 33 29 0d 0d c3 2a 20 20 20 20 |+2) . 3)...* | 00018f40 c9 20 35 37 3a e7 20 52 25 3d 52 41 25 20 8c 20 |. 57:. R%=RA% . | 00018f50 24 52 66 25 28 49 25 29 3d c1 91 24 2c 31 32 2c |$Rf%(I%)=..$,12,| 00018f60 34 29 0d 0d c4 07 20 20 cb 0d 0d c5 08 ed 20 49 |4).... ...... I| 00018f70 25 0d 0d c6 0a e7 20 4b 25 20 8c 0d 0d c7 16 20 |%..... K% ..... | 00018f80 20 e3 20 6b 65 79 25 3d 30 20 b8 20 4b 65 79 73 | . key%=0 . Keys| 00018f90 25 0d 0d c8 1d 20 20 20 20 6b 65 79 24 28 6b 65 |%.... key$(ke| 00018fa0 79 25 29 3d a4 6b 65 79 28 6b 65 79 25 29 0d 0d |y%)=.key(key%)..| 00018fb0 c9 0c 20 20 ed 20 6b 65 79 25 0d 0d ca 05 cd 0d |.. . key%......| 00018fc0 0d cb 1d f2 63 6c 6f 73 65 5f 66 69 6c 65 28 64 |....close_file(d| 00018fd0 62 61 73 65 68 61 6e 64 6c 65 25 29 0d 0d cc 05 |basehandle%)....| 00018fe0 e1 0d 0d cd 05 3a 0d 0d ce 17 dd 20 f2 75 70 64 |.....:..... .upd| 00018ff0 61 74 65 5f 63 61 6c 63 73 28 4e 25 29 0d 0d cf |ate_calcs(N%)...| 00019000 11 e7 20 64 65 73 69 67 6e 25 20 8c 20 e1 0d 0d |.. design% . ...| 00019010 d0 20 ea 20 49 25 2c 43 25 2c 4c 25 2c 46 2c 46 |. . I%,C%,L%,F,F| 00019020 24 2c 46 6f 72 6d 24 2c 53 24 2c 53 46 24 0d 0d |$,Form$,S$,SF$..| 00019030 d1 15 46 6f 72 6d 24 3d 75 70 64 61 74 65 24 28 |..Form$=update$(| 00019040 4e 25 29 0d 0d d2 13 e7 20 a9 20 46 6f 72 6d 24 |N%)..... . Form$| 00019050 3d 30 20 8c 20 e1 0d 0d d3 1b e3 20 49 25 3d 31 |=0 . ...... I%=1| 00019060 20 b8 20 a9 28 46 6f 72 6d 24 29 2d 31 20 88 20 | . .(Form$)-1 . | 00019070 32 0d 0d d4 1c 20 20 46 25 3d a4 66 6e 75 6d 28 |2.... F%=.fnum(| 00019080 c1 46 6f 72 6d 24 2c 49 25 2c 32 29 29 0d 0d d5 |.Form$,I%,2))...| 00019090 24 20 20 f2 73 70 6c 69 74 5f 6c 69 6e 6b 28 46 |$ .split_link(F| 000190a0 25 2c 72 65 61 6c 24 2c 76 69 73 69 62 6c 65 24 |%,real$,visible$| 000190b0 29 0d 0d d6 09 20 20 ea 20 85 0d 0d d7 1d 20 20 |).... . ..... | 000190c0 ee 20 85 20 ea 3a f7 20 85 3a f2 63 61 6c 63 5f |. . .:. .:.calc_| 000190d0 65 72 72 6f 72 3a e1 0d 0d d8 18 20 20 c8 8e 20 |error:..... .. | 000190e0 63 68 61 72 74 79 70 65 25 28 46 25 29 20 ca 0d |chartype%(F%) ..| 000190f0 0d d9 0c 20 20 20 20 c9 20 36 3a 0d 0d da 3e 20 |... . 6:...> | 00019100 20 20 20 46 3d a0 28 72 65 61 6c 24 29 3a 46 24 | F=.(real$):F$| 00019110 3d c3 28 46 29 3a e7 20 66 69 78 25 28 46 25 29 |=.(F):. fix%(F%)| 00019120 3e 30 20 8c 20 46 24 3d a4 66 69 78 5f 70 6f 69 |>0 . F$=.fix_poi| 00019130 6e 74 28 46 24 2c 46 25 29 0d 0d db 0c 20 20 20 |nt(F$,F%).... | 00019140 20 c9 20 37 3a 0d 0d dc 13 20 20 20 20 46 24 3d | . 7:.... F$=| 00019150 a0 28 72 65 61 6c 24 29 0d 0d dd 37 20 20 20 20 |.(real$)...7 | 00019160 e7 20 4e 25 3d 30 20 8c 20 53 24 3d a4 65 78 70 |. N%=0 . S$=.exp| 00019170 61 6e 64 28 46 24 2c 6c 69 6e 6b 24 28 46 25 29 |and(F$,link$(F%)| 00019180 2c 4c 25 2c 53 46 24 29 3a 46 24 3d 53 46 24 0d |,L%,SF$):F$=SF$.| 00019190 0d de 07 20 20 cb 0d 0d df 09 20 20 f7 20 85 0d |... ..... . ..| 000191a0 0d e0 45 20 20 e7 20 a9 28 46 24 29 3c 3d 6c 65 |..E . .(F$)<=le| 000191b0 6e 25 28 46 25 29 20 8c 20 24 52 66 25 28 46 25 |n%(F%) . $Rf%(F%| 000191c0 29 3d 46 24 3a f2 72 65 64 72 61 77 5f 69 63 6f |)=F$:.redraw_ico| 000191d0 6e 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 |n(mainW%,field%(| 000191e0 46 25 29 29 0d 0d e1 17 20 20 f2 75 70 64 61 74 |F%)).... .updat| 000191f0 65 5f 63 61 6c 63 73 28 46 25 29 0d 0d e2 08 ed |e_calcs(F%).....| 00019200 20 49 25 0d 0d e3 05 e1 0d 0d e4 05 3a 0d 0d e5 | I%.........:...| 00019210 11 dd 20 f2 63 61 6c 63 5f 65 72 72 6f 72 0d 0d |.. .calc_error..| 00019220 e6 14 e7 20 63 61 6c 63 65 72 72 6f 72 25 3d a3 |... calcerror%=.| 00019230 20 8c 0d 0d e7 1b 20 20 f2 77 69 6d 70 5f 65 72 | ..... .wimp_er| 00019240 72 6f 72 28 b9 2c 9f 2c 9e 2c f6 24 29 0d 0d e8 |ror(.,.,.,.$)...| 00019250 23 20 20 f4 20 50 52 4f 43 73 6f 66 74 65 72 72 |# . PROCsofterr| 00019260 6f 72 28 63 61 6c 63 24 28 49 25 29 2c 37 33 29 |or(calc$(I%),73)| 00019270 0d 0d e9 12 20 20 63 61 6c 63 65 72 72 6f 72 25 |.... calcerror%| 00019280 3d b9 0d 0d ea 13 20 20 cc 20 63 61 6c 63 65 72 |=..... . calcer| 00019290 72 6f 72 3d a3 0d 0d eb 05 cd 0d 0d ec 05 e1 0d |ror=............| 000192a0 0d ed 05 3b 0d 0d ee 13 dd 20 f2 63 68 65 63 6b |...;..... .check| 000192b0 5f 63 68 61 6e 67 65 0d 0d ef 0e ea 20 46 25 2c |_change..... F%,| 000192c0 66 6c 61 67 25 0d 0d f0 1b c8 95 20 46 25 3c 66 |flag%...... F%<f| 000192d0 69 65 6c 64 73 25 20 80 20 66 6c 61 67 25 3d a3 |ields% . flag%=.| 000192e0 0d 0d f1 0b 20 20 46 25 2b 3d 31 0d 0d f2 18 20 |.... F%+=1.... | 000192f0 20 c8 8e 20 63 68 61 72 74 79 70 65 25 28 46 25 | .. chartype%(F%| 00019300 29 20 ca 0d 0d f3 2b 20 20 20 20 c9 20 30 2c 31 |) ....+ . 0,1| 00019310 2c 32 2c 33 2c 34 2c 35 2c 36 2c 37 2c 38 2c 34 |,2,3,4,5,6,7,8,4| 00019320 31 2c 34 32 2c 34 33 2c 34 34 2c 34 35 3a 0d 0d |1,42,43,44,45:..| 00019330 f4 28 20 20 20 20 e7 20 24 52 66 25 28 46 25 29 |.( . $Rf%(F%)| 00019340 3c 3e 66 69 65 6c 64 24 28 46 25 29 20 8c 20 66 |<>field$(F%) . f| 00019350 6c 61 67 25 3d b9 0d 0d f5 07 20 20 cb 0d 0d f6 |lag%=..... ....| 00019360 05 ce 0d 0d f7 2a e7 20 66 6c 61 67 25 20 8c 20 |.....*. flag% . | 00019370 f2 77 72 69 74 65 28 66 69 65 6c 64 73 25 2c 6b |.write(fields%,k| 00019380 65 79 25 29 3a 77 61 72 6e 25 3d b9 0d 0d f8 05 |ey%):warn%=.....| 00019390 e1 0d 0d f9 05 3a 0d 0d fa 13 dd 20 f2 77 72 69 |.....:..... .wri| 000193a0 74 65 28 4e 25 2c 6b 25 29 0d 0d fb 19 ea 20 6b |te(N%,k%)..... k| 000193b0 65 79 25 2c 6e 65 77 72 65 63 25 2c 61 6c 74 65 |ey%,newrec%,alte| 000193c0 72 25 0d 0d fc 25 e7 20 ac 20 41 63 63 65 73 73 |r%...%. . Access| 000193d0 25 20 8c 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 |% . .softerror("| 000193e0 22 2c 31 34 29 3a e1 0d 0d fd 1d f2 63 6c 6f 73 |",14):......clos| 000193f0 65 5f 66 69 6c 65 28 64 62 61 73 65 68 61 6e 64 |e_file(dbasehand| 00019400 6c 65 25 29 0d 0d fe 36 e7 20 74 65 6d 70 6c 61 |le%)...6. templa| 00019410 74 65 25 3d 32 20 8c 20 f2 77 72 69 74 65 5f 64 |te%=2 . .write_d| 00019420 62 61 73 65 28 52 41 25 2c 4e 25 29 3a 74 65 6d |base(RA%,N%):tem| 00019430 70 6c 61 74 65 25 3d 30 3a e1 0d 0d ff 10 50 52 |plate%=0:.....PR| 00019440 49 24 3d a4 6b 65 79 28 30 29 0d 0e 00 10 e7 20 |I$=.key(0)..... | 00019450 50 52 49 24 3c 3e 22 22 20 8c 0d 0e 01 1e 20 20 |PRI$<>"" ..... | 00019460 6b 6c 25 3d 4b 4c 25 28 30 29 3a 76 61 6c 24 3d |kl%=KL%(0):val$=| 00019470 a4 74 79 70 65 28 30 29 0d 0e 02 14 20 20 e7 20 |.type(0).... . | 00019480 6b 65 79 24 28 30 29 3d 22 22 20 8c 0d 0e 03 19 |key$(0)="" .....| 00019490 20 20 20 20 f2 69 6e 73 65 72 74 28 b9 2c 50 52 | .insert(.,PR| 000194a0 49 24 2c 30 29 0d 0e 04 1c 20 20 20 20 e7 20 50 |I$,0).... . P| 000194b0 52 49 24 3c 3e 22 2a 46 61 69 6c 65 64 2a 22 20 |RI$<>"*Failed*" | 000194c0 8c 0d 0e 05 13 20 20 20 20 20 20 6e 65 77 72 65 |..... newre| 000194d0 63 25 3d b9 0d 0e 06 1a 20 20 20 20 20 20 e7 20 |c%=..... . | 000194e0 6b 25 3d 30 20 8c 20 61 64 64 72 3d 46 25 0d 0e |k%=0 . addr=F%..| 000194f0 07 09 20 20 20 20 cd 0d 0e 08 09 20 20 20 20 cc |.. ..... .| 00019500 0d 0e 09 18 20 20 20 20 e7 20 50 52 49 24 3d 6b |.... . PRI$=k| 00019510 65 79 24 28 30 29 20 8c 0d 0e 0a 12 20 20 20 20 |ey$(0) ..... | 00019520 20 20 61 6c 74 65 72 25 3d b9 0d 0e 0b 0b 20 20 | alter%=..... | 00019530 20 20 20 20 cc 0d 0e 0c 22 20 20 20 20 20 20 e7 | ...." .| 00019540 20 a4 63 6f 6e 66 69 72 6d 28 a4 6d 73 67 28 34 | .confirm(.msg(4| 00019550 38 29 29 3d b9 20 8c 0d 0e 0d 14 20 20 20 20 20 |8))=. ..... | 00019560 20 20 20 61 6c 74 65 72 25 3d b9 0d 0e 0e 1e 20 | alter%=..... | 00019570 20 20 20 20 20 20 20 f2 64 65 6c 65 74 65 28 6b | .delete(k| 00019580 65 79 24 28 30 29 2c 30 29 0d 0e 0f 1d 20 20 20 |ey$(0),0).... | 00019590 20 20 20 20 20 f2 69 6e 73 65 72 74 28 b9 2c 50 | .insert(.,P| 000195a0 52 49 24 2c 30 29 0d 0e 10 1c 20 20 20 20 20 20 |RI$,0).... | 000195b0 20 20 e7 20 6b 25 3d 30 20 8c 20 61 64 64 72 3d | . k%=0 . addr=| 000195c0 46 25 0d 0e 11 0b 20 20 20 20 20 20 cd 0d 0e 12 |F%.... ....| 000195d0 09 20 20 20 20 cd 0d 0e 13 07 20 20 cd 0d 0e 14 |. ..... ....| 000195e0 05 cd 0d 0e 15 1e e7 20 ac 20 6e 65 77 72 65 63 |....... . newrec| 000195f0 25 20 80 20 ac 20 61 6c 74 65 72 25 20 8c 20 e1 |% . . alter% . .| 00019600 0d 0e 16 11 c8 95 20 6b 65 79 25 3c 4b 65 79 73 |...... key%<Keys| 00019610 25 0d 0e 17 0d 20 20 6b 65 79 25 2b 3d 31 0d 0e |%.... key%+=1..| 00019620 18 15 20 20 4b 45 59 24 3d a4 6b 65 79 28 6b 65 |.. KEY$=.key(ke| 00019630 79 25 29 0d 0e 19 2a 20 20 e7 20 4b 45 59 24 3c |y%)...* . KEY$<| 00019640 3e 6b 65 79 24 28 6b 65 79 25 29 20 84 20 6b 65 |>key$(key%) . ke| 00019650 79 24 28 6b 65 79 25 29 3d 22 22 20 8c 0d 0e 1a |y$(key%)="" ....| 00019660 26 20 20 20 20 6b 6c 25 3d 4b 4c 25 28 6b 65 79 |& kl%=KL%(key| 00019670 25 29 3a 76 61 6c 24 3d a4 74 79 70 65 28 6b 65 |%):val$=.type(ke| 00019680 79 25 29 0d 0e 1b 2e 20 20 20 20 e7 20 ac 20 6e |y%).... . . n| 00019690 65 77 72 65 63 25 20 8c 20 f2 64 65 6c 65 74 65 |ewrec% . .delete| 000196a0 28 6b 65 79 24 28 6b 65 79 25 29 2c 6b 65 79 25 |(key$(key%),key%| 000196b0 29 0d 0e 1c 1c 20 20 20 20 f2 69 6e 73 65 72 74 |).... .insert| 000196c0 28 a3 2c 4b 45 59 24 2c 6b 65 79 25 29 0d 0e 1d |(.,KEY$,key%)...| 000196d0 1b 20 20 20 20 e7 20 6b 65 79 25 3d 6b 25 20 8c |. . key%=k% .| 000196e0 20 61 64 64 72 3d 46 25 0d 0e 1e 07 20 20 cd 0d | addr=F%.... ..| 000196f0 0e 1f 05 ce 0d 0e 20 17 24 44 61 74 65 25 28 66 |...... .$Date%(f| 00019700 69 6c 65 25 29 3d a4 64 61 74 65 0d 0e 21 11 64 |ile%)=.date..!.d| 00019710 61 74 65 25 3f 66 69 6c 65 25 3d 31 0d 0e 22 28 |ate%?file%=1.."(| 00019720 e7 20 ac 20 6e 65 77 74 72 65 65 25 20 8c 20 f2 |. . newtree% . .| 00019730 77 72 69 74 65 5f 64 62 61 73 65 28 52 45 43 25 |write_dbase(REC%| 00019740 2c 4e 25 29 0d 0e 23 1e e7 20 6e 65 77 72 65 63 |,N%)..#.. newrec| 00019750 25 20 80 20 61 75 74 6f 62 61 6c 61 6e 63 65 25 |% . autobalance%| 00019760 20 8c 0d 0e 24 0f 20 20 61 64 64 65 64 25 2b 3d | ...$. added%+=| 00019770 31 0d 0e 25 18 20 20 e7 20 61 64 64 65 64 25 3d |1..%. . added%=| 00019780 62 61 6c 69 6e 74 25 20 8c 0d 0e 26 18 20 20 20 |balint% ...&. | 00019790 20 e3 20 6b 65 79 25 3d 30 20 b8 20 4b 65 79 73 | . key%=0 . Keys| 000197a0 25 0d 0e 27 18 20 20 20 20 20 20 f2 62 61 6c 61 |%..'. .bala| 000197b0 6e 63 65 28 6b 65 79 25 29 0d 0e 28 0e 20 20 20 |nce(key%)..(. | 000197c0 20 ed 20 6b 65 79 25 0d 0e 29 10 20 20 20 20 61 | . key%..). a| 000197d0 64 64 65 64 25 3d 30 0d 0e 2a 07 20 20 cd 0d 0e |dded%=0..*. ...| 000197e0 2b 05 cd 0d 0e 2c 05 e1 0d 0e 2d 05 3a 0d 0e 2e |+....,....-.:...| 000197f0 19 dd 20 f2 77 72 69 74 65 5f 64 62 61 73 65 28 |.. .write_dbase(| 00019800 52 25 2c 4e 25 29 0d 0e 2f 1e ea 20 49 25 2c 46 |R%,N%)../.. I%,F| 00019810 24 2c 64 62 61 73 65 68 61 6e 64 6c 65 25 2c 66 |$,dbasehandle%,f| 00019820 6c 61 67 25 0d 0e 30 2a 64 62 61 73 65 68 61 6e |lag%..0*dbasehan| 00019830 64 6c 65 25 3d ad 28 24 64 61 74 61 62 61 73 65 |dle%=.($database| 00019840 25 2b 22 2e 44 61 74 61 62 61 73 65 22 29 0d 0e |%+".Database")..| 00019850 31 1d cf 23 64 62 61 73 65 68 61 6e 64 6c 65 25 |1..#dbasehandle%| 00019860 3d 52 25 2a 4c 65 6e 67 74 68 25 0d 0e 32 1c e7 |=R%*Length%..2..| 00019870 20 a4 73 65 6c 65 63 74 65 64 28 70 61 73 73 57 | .selected(passW| 00019880 25 2c 31 36 29 20 8c 0d 0e 33 11 20 20 e7 20 6e |%,16) ...3. . n| 00019890 65 77 72 65 63 25 20 8c 0d 0e 34 5b 20 20 20 20 |ewrec% ...4[ | 000198a0 d5 23 6c 6f 67 68 61 6e 64 6c 65 25 2c 22 4e 65 |.#loghandle%,"Ne| 000198b0 77 20 72 65 63 6f 72 64 3a 20 53 75 62 66 69 6c |w record: Subfil| 000198c0 65 20 22 2b c3 28 66 69 6c 65 25 29 2b 22 20 20 |e "+.(file%)+" | 000198d0 22 2b 24 52 66 25 28 4b 46 25 28 30 2c 30 29 29 |"+$Rf%(KF%(0,0))| 000198e0 2b 22 20 22 2b 24 52 66 25 28 4b 46 25 28 30 2c |+" "+$Rf%(KF%(0,| 000198f0 31 29 29 0d 0e 35 28 20 20 20 20 cc 20 d5 23 6c |1))..5( . .#l| 00019900 6f 67 68 61 6e 64 6c 65 25 2c 6c 6f 67 65 6e 74 |oghandle%,logent| 00019910 72 79 24 3a 66 6c 61 67 25 3d b9 0d 0e 36 07 20 |ry$:flag%=...6. | 00019920 20 cd 0d 0e 37 05 cd 0d 0e 38 0f e3 20 49 25 3d | ...7....8.. I%=| 00019930 31 20 b8 20 4e 25 0d 0e 39 18 20 20 c8 8e 20 63 |1 . N%..9. .. c| 00019940 68 61 72 74 79 70 65 25 28 49 25 29 20 ca 0d 0e |hartype%(I%) ...| 00019950 3a 15 20 20 20 20 c9 20 33 39 2c 34 30 3a 46 24 |:. . 39,40:F$| 00019960 3d 22 22 0d 0e 3b 54 20 20 20 20 c9 20 34 37 3a |=""..;T . 47:| 00019970 46 24 3d 24 52 66 25 28 49 25 29 3a f2 73 70 6c |F$=$Rf%(I%):.spl| 00019980 69 74 5f 6c 69 6e 6b 28 49 25 2c 52 24 2c 56 24 |it_link(I%,R$,V$| 00019990 29 3a 53 25 3d bb 28 52 24 29 3a 53 25 2b 3d 31 |):S%=.(R$):S%+=1| 000199a0 3a 63 61 6c 63 24 28 49 25 29 3d 56 24 2b 22 7c |:calc$(I%)=V$+"|| 000199b0 22 2b c3 28 53 25 29 0d 0e 3c 12 20 20 20 20 c9 |"+.(S%)..<. .| 000199c0 20 35 38 3a 46 24 3d 91 24 0d 0e 3d 15 20 20 20 | 58:F$=.$..=. | 000199d0 20 7f 3a 46 24 3d 24 52 66 25 28 49 25 29 0d 0e | .:F$=$Rf%(I%)..| 000199e0 3e 07 20 20 cb 0d 0e 3f 17 20 20 d5 23 64 62 61 |>. ...?. .#dba| 000199f0 73 65 68 61 6e 64 6c 65 25 2c 46 24 0d 0e 40 21 |sehandle%,F$..@!| 00019a00 20 20 e7 20 66 6c 61 67 25 20 80 20 46 24 3c 3e | . flag% . F$<>| 00019a10 20 66 69 65 6c 64 24 28 49 25 29 20 8c 0d 0e 41 | field$(I%) ...A| 00019a20 25 20 20 20 20 e7 20 46 24 3d 22 22 20 8c 20 44 |% . F$="" . D| 00019a30 24 3d 22 3c 6e 75 6c 6c 3e 22 20 8b 20 44 24 3d |$="<null>" . D$=| 00019a40 46 24 0d 0e 42 35 20 20 20 20 e7 20 66 69 65 6c |F$..B5 . fiel| 00019a50 64 24 28 49 25 29 3d 22 22 20 8c 20 53 24 3d 22 |d$(I%)="" . S$="| 00019a60 3c 6e 75 6c 6c 3e 22 20 8b 20 53 24 3d 66 69 65 |<null>" . S$=fie| 00019a70 6c 64 24 28 49 25 29 0d 0e 43 31 20 20 20 20 d5 |ld$(I%)..C1 .| 00019a80 23 6c 6f 67 68 61 6e 64 6c 65 25 2c 54 61 67 24 |#loghandle%,Tag$| 00019a90 28 49 25 29 2b 22 3a 20 22 2b 53 24 2b 22 20 2d |(I%)+": "+S$+" -| 00019aa0 2d 2d 3e 20 22 2b 44 24 0d 0e 44 07 20 20 cd 0d |--> "+D$..D. ..| 00019ab0 0e 45 13 20 20 66 69 65 6c 64 24 28 49 25 29 3d |.E. field$(I%)=| 00019ac0 46 24 0d 0e 46 08 ed 20 49 25 0d 0e 47 1d f2 63 |F$..F.. I%..G..c| 00019ad0 6c 6f 73 65 5f 66 69 6c 65 28 64 62 61 73 65 68 |lose_file(dbaseh| 00019ae0 61 6e 64 6c 65 25 29 0d 0e 48 05 e1 0d 0e 49 05 |andle%)..H....I.| 00019af0 3a 0d 0e 4a 1f dd 20 f2 73 70 6c 69 74 5f 6c 69 |:..J.. .split_li| 00019b00 6e 6b 28 46 25 2c f8 20 52 24 2c f8 20 56 24 29 |nk(F%,. R$,. V$)| 00019b10 0d 0e 4b 0d ea 20 4c 24 2c 50 25 2c 46 0d 0e 4c |..K.. L$,P%,F..L| 00019b20 10 4c 24 3d 63 61 6c 63 24 28 46 25 29 0d 0e 4d |.L$=calc$(F%)..M| 00019b30 0a c8 8e 20 b9 20 ca 0d 0e 4e 13 20 20 c9 20 c0 |... . ...N. . .| 00019b40 4c 24 2c 31 29 3d 22 23 22 3a 0d 0e 4f 2f 20 20 |L$,1)="#":..O/ | 00019b50 50 25 3d a7 4c 24 2c 22 23 22 2c 32 29 3a 56 24 |P%=.L$,"#",2):V$| 00019b60 3d c1 4c 24 2c 50 25 2b 31 29 3a 52 24 3d c1 4c |=.L$,P%+1):R$=.L| 00019b70 24 2c 32 2c 50 25 2d 32 29 0d 0e 50 13 20 20 c9 |$,2,P%-2)..P. .| 00019b80 20 a7 4c 24 2c 22 7c 22 29 3e 30 3a 0d 0e 51 2b | .L$,"|")>0:..Q+| 00019b90 20 20 50 25 3d a7 4c 24 2c 22 7c 22 29 3a 56 24 | P%=.L$,"|"):V$| 00019ba0 3d c0 4c 24 2c 50 25 2d 31 29 3a 52 24 3d c1 4c |=.L$,P%-1):R$=.L| 00019bb0 24 2c 50 25 2b 31 29 0d 0e 52 13 20 20 7f 3a 52 |$,P%+1)..R. .:R| 00019bc0 24 3d 22 22 3a 56 24 3d 22 22 0d 0e 53 05 cb 0d |$="":V$=""..S...| 00019bd0 0e 54 05 e1 0d 0e 55 05 3a 0d 0e 56 10 dd 20 a4 |.T....U.:..V.. .| 00019be0 6b 65 79 28 6b 65 79 25 29 0d 0e 57 12 3d a4 6b |key(key%)..W.=.k| 00019bf0 65 79 32 28 6b 65 79 25 2c 30 29 0d 0e 58 05 3a |ey2(key%,0)..X.:| 00019c00 0d 0e 59 16 dd 20 a4 6b 65 79 32 28 6b 65 79 25 |..Y.. .key2(key%| 00019c10 2c 6c 6f 63 25 29 0d 0e 5a 1f ea 20 49 25 2c 4e |,loc%)..Z.. I%,N| 00019c20 25 2c 50 25 2c 53 25 2c 53 24 2c 54 24 2c 66 30 |%,P%,S%,S$,T$,f0| 00019c30 25 2c 66 31 25 0d 0e 5b 28 50 25 3d 31 3a 66 30 |%,f1%..[(P%=1:f0| 00019c40 25 3d 4b 46 25 28 6b 65 79 25 2c 30 29 3a 66 31 |%=KF%(key%,0):f1| 00019c50 25 3d 4b 46 25 28 6b 65 79 25 2c 31 29 0d 0e 5c |%=KF%(key%,1)..\| 00019c60 0d c8 8e 20 6c 6f 63 25 20 ca 0d 0e 5d 0a 20 20 |... loc% ...]. | 00019c70 c9 20 30 3a 0d 0e 5e 20 20 20 53 24 3d 24 52 66 |. 0:..^ S$=$Rf| 00019c80 25 28 66 30 25 29 2b 22 20 22 2b 24 52 66 25 28 |%(f0%)+" "+$Rf%(| 00019c90 66 31 25 29 0d 0e 5f 07 20 20 7f 0d 0e 60 1c 20 |f1%).._. ...`. | 00019ca0 20 53 24 3d 46 24 28 66 30 25 29 2b 22 20 22 2b | S$=F$(f0%)+" "+| 00019cb0 46 24 28 66 31 25 29 0d 0e 61 05 cb 0d 0e 62 11 |F$(f1%)..a....b.| 00019cc0 e7 20 53 24 3d 22 20 22 20 8c 3d 22 22 0d 0e 63 |. S$=" " .=""..c| 00019cd0 19 e7 20 c2 53 24 29 3c 3e 22 20 22 20 8c 20 53 |.. .S$)<>" " . S| 00019ce0 24 2b 3d 22 20 22 0d 0e 64 0e e3 20 49 25 3d 30 |$+=" "..d.. I%=0| 00019cf0 20 b8 20 33 0d 0e 65 15 20 20 4e 25 3d 4b 57 25 | . 3..e. N%=KW%| 00019d00 28 6b 65 79 25 2c 49 25 29 0d 0e 66 1b 20 20 e7 |(key%,I%)..f. .| 00019d10 20 4e 25 3c 3e 30 20 80 20 50 25 3c 3e a9 28 53 | N%<>0 . P%<>.(S| 00019d20 24 29 20 8c 0d 0e 67 18 20 20 20 20 53 25 3d a7 |$) ...g. S%=.| 00019d30 53 24 2c 22 20 22 2c 50 25 2b 31 29 0d 0e 68 1d |S$," ",P%+1)..h.| 00019d40 20 20 20 20 e7 20 53 25 2d 50 25 3c 4e 25 20 8c | . S%-P%<N% .| 00019d50 20 4e 25 3d 53 25 2d 50 25 0d 0e 69 16 20 20 20 | N%=S%-P%..i. | 00019d60 20 54 24 2b 3d c1 53 24 2c 50 25 2c 4e 25 29 0d | T$+=.S$,P%,N%).| 00019d70 0e 6a 0f 20 20 20 20 50 25 3d 53 25 2b 31 0d 0e |.j. P%=S%+1..| 00019d80 6b 07 20 20 cd 0d 0e 6c 08 ed 20 49 25 0d 0e 6d |k. ...l.. I%..m| 00019d90 1d 54 24 2b 3d c4 4b 4c 25 28 6b 65 79 25 29 2d |.T$+=.KL%(key%)-| 00019da0 a9 28 54 24 29 2c 22 23 22 29 0d 0e 6e 17 c8 8e |.(T$),"#")..n...| 00019db0 20 63 68 61 72 74 79 70 65 25 28 66 30 25 29 20 | chartype%(f0%) | 00019dc0 ca 0d 0e 6f 24 20 20 c9 20 35 2c 35 31 2c 35 32 |...o$ . 5,51,52| 00019dd0 3a 54 24 3d a4 72 65 76 65 72 73 65 5f 64 61 74 |:T$=.reverse_dat| 00019de0 65 28 54 24 29 0d 0e 70 05 cb 0d 0e 71 1f e7 20 |e(T$)..p....q.. | 00019df0 63 61 73 65 25 28 6b 65 79 25 29 20 8c 3d 54 24 |case%(key%) .=T$| 00019e00 20 8b 3d a4 75 28 54 24 29 0d 0e 72 05 3a 0d 0e | .=.u(T$)..r.:..| 00019e10 73 0c dd 20 a4 75 28 4e 24 29 0d 0e 74 0b ea 20 |s.. .u(N$)..t.. | 00019e20 49 25 2c 42 25 0d 0e 75 0b 24 6b 65 79 3d 4e 24 |I%,B%..u.$key=N$| 00019e30 0d 0e 76 14 e3 20 49 25 3d 30 20 b8 20 a9 28 4e |..v.. I%=0 . .(N| 00019e40 24 29 2d 31 0d 0e 77 0f 20 20 42 25 3d 6b 65 79 |$)-1..w. B%=key| 00019e50 3f 49 25 0d 0e 78 28 20 20 e7 20 42 25 3e 39 36 |?I%..x( . B%>96| 00019e60 20 80 20 42 25 3c 31 32 33 20 8c 20 6b 65 79 3f | . B%<123 . key?| 00019e70 49 25 3d 42 25 20 80 20 32 32 33 0d 0e 79 08 ed |I%=B% . 223..y..| 00019e80 20 49 25 0d 0e 7a 09 3d 24 6b 65 79 0d 0e 7b 05 | I%..z.=$key..{.| 00019e90 3a 0d 0e 7c 0b dd 20 a4 64 61 74 65 0d 0e 7d 17 |:..|.. .date..}.| 00019ea0 ea 20 59 24 2c 4d 24 2c 44 24 2c 4d 25 2c 64 61 |. Y$,M$,D$,M%,da| 00019eb0 74 65 24 0d 0e 7e 10 59 24 3d c1 91 24 2c 31 34 |te$..~.Y$=..$,14| 00019ec0 2c 32 29 0d 0e 7f 0f 44 24 3d c1 91 24 2c 35 2c |,2)....D$=..$,5,| 00019ed0 32 29 0d 0e 80 0f 4d 24 3d c1 91 24 2c 38 2c 33 |2)....M$=..$,8,3| 00019ee0 29 0d 0e 81 3a 4d 25 3d 28 a7 22 4a 61 6e 46 65 |)...:M%=(."JanFe| 00019ef0 62 4d 61 72 41 70 72 4d 61 79 4a 75 6e 4a 75 6c |bMarAprMayJunJul| 00019f00 41 75 67 53 65 70 4f 63 74 4e 6f 76 44 65 63 22 |AugSepOctNovDec"| 00019f10 2c 4d 24 29 2b 32 29 20 81 20 33 0d 0e 82 25 e7 |,M$)+2) . 3...%.| 00019f20 20 4d 25 3c 31 30 20 8c 20 4d 24 3d 22 30 22 2b | M%<10 . M$="0"+| 00019f30 c3 28 4d 25 29 20 8b 20 4d 24 3d c3 28 4d 25 29 |.(M%) . M$=.(M%)| 00019f40 0d 0e 83 1a 64 61 74 65 24 3d 44 24 2b 22 2d 22 |....date$=D$+"-"| 00019f50 2b 4d 24 2b 22 2d 22 2b 59 24 0d 0e 84 0a 3d 64 |+M$+"-"+Y$....=d| 00019f60 61 74 65 24 0d 0e 85 05 3a 0d 0e 86 11 dd 20 f2 |ate$....:..... .| 00019f70 64 61 74 65 28 6b 65 79 25 29 0d 0e 87 1d e7 20 |date(key%)..... | 00019f80 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 79 25 |!keyanchor%(key%| 00019f90 29 3d 30 20 8c 20 e1 0d 0e 88 08 ea 20 49 25 0d |)=0 . ...... I%.| 00019fa0 0e 89 0e e3 20 49 25 3d 30 20 b8 20 35 0d 0e 8a |.... I%=0 . 5...| 00019fb0 14 20 20 e7 20 64 61 74 65 25 3f 49 25 3d 31 20 |. . date%?I%=1 | 00019fc0 8c 0d 0e 8b 29 20 20 20 20 24 28 21 6b 65 79 61 |....) $(!keya| 00019fd0 6e 63 68 6f 72 25 28 6b 65 79 25 29 2b 38 2b 39 |nchor%(key%)+8+9| 00019fe0 2a 49 25 29 3d a4 64 61 74 65 0d 0e 8c 18 20 20 |*I%)=.date.... | 00019ff0 20 20 24 44 61 74 65 25 28 49 25 29 3d a4 64 61 | $Date%(I%)=.da| 0001a000 74 65 0d 0e 8d 07 20 20 cd 0d 0e 8e 08 ed 20 49 |te.... ...... I| 0001a010 25 0d 0e 8f 05 e1 0d 0e 90 05 3a 0d 0e 91 24 dd |%.........:...$.| 0001a020 20 a4 63 68 65 63 6b 5f 64 61 74 65 28 44 24 2c | .check_date(D$,| 0001a030 70 6c 61 63 65 25 2c f8 20 64 61 74 65 24 29 0d |place%,. date$).| 0001a040 0e 92 26 ea 20 49 25 2c 44 25 2c 4d 25 2c 59 25 |..&. I%,D%,M%,Y%| 0001a050 2c 4c 25 2c 50 25 2c 51 25 2c 55 24 2c 64 24 2c |,L%,P%,Q%,U$,d$,| 0001a060 6d 24 2c 79 24 0d 0e 93 0c 4c 25 3d a9 28 44 24 |m$,y$....L%=.(D$| 0001a070 29 0d 0e 94 0e e7 20 4c 25 3d 30 20 8c 3d b9 0d |)..... L%=0 .=..| 0001a080 0e 95 0f e3 20 49 25 3d 31 20 b8 20 4c 25 0d 0e |.... I%=1 . L%..| 0001a090 96 12 20 20 43 24 3d c1 44 24 2c 49 25 2c 31 29 |.. C$=.D$,I%,1)| 0001a0a0 0d 0e 97 19 20 20 e7 20 43 24 3c 22 30 22 20 84 |.... . C$<"0" .| 0001a0b0 20 43 24 3e 22 39 22 20 8c 0d 0e 98 1e 20 20 20 | C$>"9" ..... | 0001a0c0 20 e7 20 50 25 3d 30 20 8c 20 50 25 3d 49 25 20 | . P%=0 . P%=I% | 0001a0d0 8b 20 51 25 3d 49 25 0d 0e 99 07 20 20 cd 0d 0e |. Q%=I%.... ...| 0001a0e0 9a 08 ed 20 49 25 0d 0e 9b 67 e7 20 50 25 3d 30 |... I%...g. P%=0| 0001a0f0 20 84 20 51 25 3d 30 20 8c 20 f2 72 65 73 74 6f | . Q%=0 . .resto| 0001a100 72 65 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c |re(Fieldnumber%,| 0001a110 22 20 28 64 61 79 2c 20 6d 6f 6e 74 68 20 26 20 |" (day, month & | 0001a120 79 65 61 72 20 6d 75 73 74 20 62 65 20 73 65 70 |year must be sep| 0001a130 61 72 61 74 65 64 20 62 79 20 6e 6f 6e 2d 6e 75 |arated by non-nu| 0001a140 6d 65 72 61 6c 29 22 2c 34 29 3a 3d a3 0d 0e 9c |meral)",4):=....| 0001a150 13 44 25 3d bb 28 c0 44 24 2c 50 25 2d 31 29 29 |.D%=.(.D$,P%-1))| 0001a160 0d 0e 9d 1b 4d 25 3d bb 28 c1 44 24 2c 50 25 2b |....M%=.(.D$,P%+| 0001a170 31 2c 51 25 2d 50 25 2d 31 29 29 0d 0e 9e 13 59 |1,Q%-P%-1))....Y| 0001a180 25 3d bb 28 c1 44 24 2c 51 25 2b 31 29 29 0d 0e |%=.(.D$,Q%+1))..| 0001a190 9f 32 e7 20 59 25 3c 30 20 84 20 44 25 3c 31 20 |.2. Y%<0 . D%<1 | 0001a1a0 8c 20 f2 72 65 73 74 6f 72 65 28 46 69 65 6c 64 |. .restore(Field| 0001a1b0 6e 75 6d 62 65 72 25 2c 22 22 2c 34 29 3a 3d a3 |number%,"",4):=.| 0001a1c0 0d 0e a0 48 e7 20 4d 25 3c 31 20 84 20 4d 25 3e |...H. M%<1 . M%>| 0001a1d0 31 32 20 8c 20 f2 72 65 73 74 6f 72 65 28 46 69 |12 . .restore(Fi| 0001a1e0 65 6c 64 6e 75 6d 62 65 72 25 2c 22 20 28 6d 6f |eldnumber%," (mo| 0001a1f0 6e 74 68 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 |nth out of range| 0001a200 29 22 2c 34 29 3a 3d a3 0d 0e a1 0a c8 8e 20 b9 |)",4):=....... .| 0001a210 20 ca 0d 0e a2 30 20 20 c9 20 59 25 20 83 20 34 | ....0 . Y% . 4| 0001a220 30 30 3d 30 3a 55 24 3d 22 33 31 32 39 33 31 33 |00=0:U$="3129313| 0001a230 30 33 31 33 30 33 31 33 31 33 30 33 31 33 30 33 |0313031313031303| 0001a240 31 22 0d 0e a3 3c 20 20 c9 20 59 25 20 83 20 31 |1"...< . Y% . 1| 0001a250 30 30 3c 3e 30 20 80 20 59 25 20 83 20 34 3d 30 |00<>0 . Y% . 4=0| 0001a260 3a 55 24 3d 22 33 31 32 39 33 31 33 30 33 31 33 |:U$="31293130313| 0001a270 30 33 31 33 31 33 30 33 31 33 30 33 31 22 0d 0e |0313130313031"..| 0001a280 a4 25 20 20 7f 3a 55 24 3d 22 33 31 32 38 33 31 |.% .:U$="312831| 0001a290 33 30 33 31 33 30 33 31 33 31 33 30 33 31 33 30 |3031303131303130| 0001a2a0 33 31 22 0d 0e a5 05 cb 0d 0e a6 15 44 4d 24 3d |31".........DM$=| 0001a2b0 c1 55 24 2c 32 2a 4d 25 2d 31 2c 32 29 0d 0e a7 |.U$,2*M%-1,2)...| 0001a2c0 51 e7 20 44 25 3e bb 28 44 4d 24 29 20 8c 20 f2 |Q. D%>.(DM$) . .| 0001a2d0 72 65 73 74 6f 72 65 28 46 69 65 6c 64 6e 75 6d |restore(Fieldnum| 0001a2e0 62 65 72 25 2c 22 20 28 64 61 79 20 6f 75 74 20 |ber%," (day out | 0001a2f0 6f 66 20 72 61 6e 67 65 20 2d 20 6d 61 78 3d 22 |of range - max="| 0001a300 2b 44 4d 24 2b 22 29 22 2c 34 29 3a 3d a3 0d 0e |+DM$+")",4):=...| 0001a310 a8 22 64 24 3d c3 28 44 25 29 3a e7 20 a9 28 64 |."d$=.(D%):. .(d| 0001a320 24 29 3d 31 20 8c 20 64 24 3d 22 30 22 2b 64 24 |$)=1 . d$="0"+d$| 0001a330 0d 0e a9 22 6d 24 3d c3 28 4d 25 29 3a e7 20 a9 |..."m$=.(M%):. .| 0001a340 28 6d 24 29 3d 31 20 8c 20 6d 24 3d 22 30 22 2b |(m$)=1 . m$="0"+| 0001a350 6d 24 0d 0e aa 22 79 24 3d c3 28 59 25 29 3a e7 |m$..."y$=.(Y%):.| 0001a360 20 a9 28 79 24 29 3d 31 20 8c 20 79 24 3d 22 30 | .(y$)=1 . y$="0| 0001a370 22 2b 79 24 0d 0e ab 53 e7 20 a9 28 79 24 29 3c |"+y$...S. .(y$)<| 0001a380 3e 32 20 80 20 a9 28 79 24 29 3c 3e 34 20 8c 20 |>2 . .(y$)<>4 . | 0001a390 f2 72 65 73 74 6f 72 65 28 46 69 65 6c 64 6e 75 |.restore(Fieldnu| 0001a3a0 6d 62 65 72 25 2c 22 20 28 79 65 61 72 20 6e 6f |mber%," (year no| 0001a3b0 74 20 32 20 6f 72 20 34 20 64 69 67 69 74 73 29 |t 2 or 4 digits)| 0001a3c0 22 2c 34 29 3a 3d a3 0d 0e ac 31 e7 20 a9 28 79 |",4):=....1. .(y| 0001a3d0 24 29 3d 34 20 80 20 6c 65 6e 25 28 46 69 65 6c |$)=4 . len%(Fiel| 0001a3e0 64 6e 75 6d 62 65 72 25 29 3c 31 30 20 8c 20 79 |dnumber%)<10 . y| 0001a3f0 24 3d c2 79 24 2c 32 29 0d 0e ad 24 64 61 74 65 |$=.y$,2)...$date| 0001a400 24 3d 64 24 2b 64 61 74 65 73 65 70 24 2b 6d 24 |$=d$+datesep$+m$| 0001a410 2b 64 61 74 65 73 65 70 24 2b 79 24 0d 0e ae 62 |+datesep$+y$...b| 0001a420 e7 20 70 6c 61 63 65 25 3d 30 20 80 20 a9 28 64 |. place%=0 . .(d| 0001a430 61 74 65 24 29 3e 6c 65 6e 25 28 46 69 65 6c 64 |ate$)>len%(Field| 0001a440 6e 75 6d 62 65 72 25 29 20 8c 20 f2 72 65 73 74 |number%) . .rest| 0001a450 6f 72 65 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 |ore(Fieldnumber%| 0001a460 2c 22 20 28 74 6f 6f 20 6c 6f 6e 67 20 66 6f 72 |," (too long for| 0001a470 20 66 69 65 6c 64 29 22 2c 34 29 3a 3d a3 0d 0e | field)",4):=...| 0001a480 af 0f c8 8e 20 70 6c 61 63 65 25 20 ca 0d 0e b0 |.... place% ....| 0001a490 0a 20 20 c9 20 30 3a 0d 0e b1 48 20 20 24 52 66 |. . 0:...H $Rf| 0001a4a0 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 3d |%(Fieldnumber%)=| 0001a4b0 64 61 74 65 24 3a f2 72 65 64 72 61 77 5f 69 63 |date$:.redraw_ic| 0001a4c0 6f 6e 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 |on(mainW%,field%| 0001a4d0 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 29 0d |(Fieldnumber%)).| 0001a4e0 0e b2 0a 20 20 c9 20 31 3a 0d 0e b3 39 20 20 24 |... . 1:...9 $| 0001a4f0 a4 74 65 78 74 28 6b 65 79 70 61 64 57 25 2c 32 |.text(keypadW%,2| 0001a500 37 29 3d 64 61 74 65 24 3a f2 72 65 64 72 61 77 |7)=date$:.redraw| 0001a510 5f 69 63 6f 6e 28 6b 65 79 70 61 64 57 25 2c 32 |_icon(keypadW%,2| 0001a520 37 29 0d 0e b4 05 cb 0d 0e b5 06 3d b9 0d 0e b6 |7).........=....| 0001a530 05 3a 0d 0e b7 17 dd 20 a4 63 6f 6e 76 65 72 74 |.:..... .convert| 0001a540 5f 64 61 74 65 28 4c 25 29 0d 0e b8 14 ea 20 64 |_date(L%)..... d| 0001a550 24 2c 6d 24 2c 79 24 2c 4d 24 2c 4d 25 0d 0e b9 |$,m$,y$,M$,M%...| 0001a560 0f 64 24 3d c1 91 24 2c 35 2c 32 29 0d 0e ba 0f |.d$=..$,5,2)....| 0001a570 4d 24 3d c1 91 24 2c 38 2c 33 29 0d 0e bb 13 50 |M$=..$,8,3)....P| 0001a580 25 3d a7 6d 6f 6e 74 68 73 24 2c 4d 24 29 0d 0e |%=.months$,M$)..| 0001a590 bc 11 4d 25 3d 28 50 25 2b 32 29 20 81 20 33 0d |..M%=(P%+2) . 3.| 0001a5a0 0e bd 20 6d 24 3d c3 28 4d 25 29 3a e7 20 4d 25 |.. m$=.(M%):. M%| 0001a5b0 3c 31 30 20 8c 20 6d 24 3d 22 30 22 2b 6d 24 0d |<10 . m$="0"+m$.| 0001a5c0 0e be 14 79 24 3d c1 91 24 2c 31 36 2d 4c 25 2c |...y$=..$,16-L%,| 0001a5d0 4c 25 29 0d 0e bf 1f 3d 64 24 2b 64 61 74 65 73 |L%)....=d$+dates| 0001a5e0 65 70 24 2b 6d 24 2b 64 61 74 65 73 65 70 24 2b |ep$+m$+datesep$+| 0001a5f0 79 24 0d 0e c0 05 3a 0d 0e c1 17 dd 20 a4 72 65 |y$....:..... .re| 0001a600 76 65 72 73 65 5f 64 61 74 65 28 4b 24 29 0d 0e |verse_date(K$)..| 0001a610 c2 0a ea 20 73 65 70 24 0d 0e c3 0e c8 8e 20 a9 |... sep$...... .| 0001a620 28 4b 24 29 20 ca 0d 0e c4 0a 20 20 c9 20 38 3a |(K$) ..... . 8:| 0001a630 0d 0e c5 13 20 20 73 65 70 24 3d c1 4b 24 2c 33 |.... sep$=.K$,3| 0001a640 2c 31 29 0d 0e c6 2e 20 20 4b 24 3d c2 4b 24 2c |,1).... K$=.K$,| 0001a650 32 29 2b 73 65 70 24 2b c1 4b 24 2c 34 2c 32 29 |2)+sep$+.K$,4,2)| 0001a660 2b 73 65 70 24 2b c0 4b 24 2c 32 29 20 8b 3d 4b |+sep$+.K$,2) .=K| 0001a670 24 0d 0e c7 0b 20 20 c9 20 31 30 3a 0d 0e c8 13 |$.... . 10:....| 0001a680 20 20 e7 20 bb 28 4b 24 29 3c 31 30 30 20 8c 0d | . .(K$)<100 ..| 0001a690 0e c9 15 20 20 20 20 73 65 70 24 3d c1 4b 24 2c |... sep$=.K$,| 0001a6a0 33 2c 31 29 0d 0e ca 2b 20 20 20 20 4b 24 3d c2 |3,1)...+ K$=.| 0001a6b0 4b 24 2c 34 29 2b 73 65 70 24 2b c1 4b 24 2c 34 |K$,4)+sep$+.K$,4| 0001a6c0 2c 32 29 2b 73 65 70 24 2b c0 4b 24 2c 32 29 0d |,2)+sep$+.K$,2).| 0001a6d0 0e cb 09 20 20 20 20 cc 0d 0e cc 15 20 20 20 20 |... ..... | 0001a6e0 73 65 70 24 3d c1 4b 24 2c 35 2c 31 29 0d 0e cd |sep$=.K$,5,1)...| 0001a6f0 2b 20 20 20 20 4b 24 3d c2 4b 24 2c 32 29 2b 73 |+ K$=.K$,2)+s| 0001a700 65 70 24 2b c1 4b 24 2c 36 2c 32 29 2b 73 65 70 |ep$+.K$,6,2)+sep| 0001a710 24 2b c0 4b 24 2c 34 29 0d 0e ce 07 20 20 cd 0d |$+.K$,4).... ..| 0001a720 0e cf 05 cb 0d 0e d0 07 3d 4b 24 0d 0e d1 05 3a |........=K$....:| 0001a730 0d 0e d2 1c dd 20 a4 73 65 63 6f 6e 64 73 28 74 |..... .seconds(t| 0001a740 69 6d 65 24 2c 70 6c 61 63 65 25 29 0d 0e d3 2c |ime$,place%)...,| 0001a750 ea 20 49 25 2c 4c 25 2c 50 25 2c 51 25 2c 48 25 |. I%,L%,P%,Q%,H%| 0001a760 2c 4d 25 2c 53 25 2c 73 65 63 73 25 2c 68 24 2c |,M%,S%,secs%,h$,| 0001a770 6d 24 2c 73 24 2c 43 24 0d 0e d4 0f 4c 25 3d a9 |m$,s$,C$....L%=.| 0001a780 28 74 69 6d 65 24 29 0d 0e d5 0e e7 20 4c 25 3d |(time$)..... L%=| 0001a790 30 20 8c 3d 30 0d 0e d6 0f e3 20 49 25 3d 31 20 |0 .=0..... I%=1 | 0001a7a0 b8 20 4c 25 0d 0e d7 15 20 20 43 24 3d c1 74 69 |. L%.... C$=.ti| 0001a7b0 6d 65 24 2c 49 25 2c 31 29 0d 0e d8 19 20 20 e7 |me$,I%,1).... .| 0001a7c0 20 43 24 3c 22 30 22 20 84 20 43 24 3e 22 39 22 | C$<"0" . C$>"9"| 0001a7d0 20 8c 0d 0e d9 1e 20 20 20 20 e7 20 50 25 3d 30 | ..... . P%=0| 0001a7e0 20 8c 20 50 25 3d 49 25 20 8b 20 51 25 3d 49 25 | . P%=I% . Q%=I%| 0001a7f0 0d 0e da 07 20 20 cd 0d 0e db 08 ed 20 49 25 0d |.... ...... I%.| 0001a800 0e dc 75 e7 20 50 25 3d 30 20 84 20 51 25 3d 30 |..u. P%=0 . Q%=0| 0001a810 20 8c 20 f2 72 65 73 74 6f 72 65 28 46 69 65 6c | . .restore(Fiel| 0001a820 64 6e 75 6d 62 65 72 25 2c 22 20 28 68 6f 75 72 |dnumber%," (hour| 0001a830 73 2c 20 6d 69 6e 75 74 65 73 20 61 6e 64 20 73 |s, minutes and s| 0001a840 65 63 6f 6e 64 73 20 6d 75 73 74 20 62 65 20 73 |econds must be s| 0001a850 65 70 61 72 61 74 65 64 20 62 79 20 61 20 6e 6f |eparated by a no| 0001a860 6e 2d 6e 75 6d 65 72 61 6c 29 2e 22 2c 39 34 29 |n-numeral).",94)| 0001a870 3a 3d 2d 31 0d 0e dd 5e 48 25 3d bb 28 c0 74 69 |:=-1...^H%=.(.ti| 0001a880 6d 65 24 2c 50 25 2d 31 29 29 3a e7 20 48 25 3c |me$,P%-1)):. H%<| 0001a890 30 20 84 20 48 25 3e 32 33 20 8c 20 f2 72 65 73 |0 . H%>23 . .res| 0001a8a0 74 6f 72 65 28 46 69 65 6c 64 6e 75 6d 62 65 72 |tore(Fieldnumber| 0001a8b0 25 2c 22 20 28 68 6f 75 72 73 20 6f 75 74 20 6f |%," (hours out o| 0001a8c0 66 20 72 61 6e 67 65 29 2e 22 2c 39 34 29 3a 3d |f range).",94):=| 0001a8d0 2d 31 0d 0e de 68 4d 25 3d bb 28 c1 74 69 6d 65 |-1...hM%=.(.time| 0001a8e0 24 2c 50 25 2b 31 2c 51 25 2d 50 25 2d 31 29 29 |$,P%+1,Q%-P%-1))| 0001a8f0 3a e7 20 4d 25 3c 30 20 84 20 4d 25 3e 35 39 20 |:. M%<0 . M%>59 | 0001a900 8c 20 f2 72 65 73 74 6f 72 65 28 46 69 65 6c 64 |. .restore(Field| 0001a910 6e 75 6d 62 65 72 25 2c 22 20 28 6d 69 6e 75 74 |number%," (minut| 0001a920 65 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 29 |es out of range)| 0001a930 2e 22 2c 39 34 29 3a 3d 2d 31 0d 0e df 60 53 25 |.",94):=-1...`S%| 0001a940 3d bb 28 c1 74 69 6d 65 24 2c 51 25 2b 31 29 29 |=.(.time$,Q%+1))| 0001a950 3a e7 20 53 25 3c 30 20 84 20 53 25 3e 35 39 20 |:. S%<0 . S%>59 | 0001a960 8c 20 f2 72 65 73 74 6f 72 65 28 46 69 65 6c 64 |. .restore(Field| 0001a970 6e 75 6d 62 65 72 25 2c 22 20 28 73 65 63 6f 6e |number%," (secon| 0001a980 64 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 29 |ds out of range)| 0001a990 2e 22 2c 39 34 29 3a 3d 2d 31 0d 0e e0 22 68 24 |.",94):=-1..."h$| 0001a9a0 3d c3 28 48 25 29 3a e7 20 a9 28 68 24 29 3d 31 |=.(H%):. .(h$)=1| 0001a9b0 20 8c 20 68 24 3d 22 30 22 2b 68 24 0d 0e e1 22 | . h$="0"+h$..."| 0001a9c0 6d 24 3d c3 28 4d 25 29 3a e7 20 a9 28 6d 24 29 |m$=.(M%):. .(m$)| 0001a9d0 3d 31 20 8c 20 6d 24 3d 22 30 22 2b 6d 24 0d 0e |=1 . m$="0"+m$..| 0001a9e0 e2 22 73 24 3d c3 28 53 25 29 3a e7 20 a9 28 73 |."s$=.(S%):. .(s| 0001a9f0 24 29 3d 31 20 8c 20 73 24 3d 22 30 22 2b 73 24 |$)=1 . s$="0"+s$| 0001aa00 0d 0e e3 24 74 69 6d 65 24 3d 68 24 2b 74 69 6d |...$time$=h$+tim| 0001aa10 65 73 65 70 24 2b 6d 24 2b 74 69 6d 65 73 65 70 |esep$+m$+timesep| 0001aa20 24 2b 73 24 0d 0e e4 1a 73 65 63 73 25 3d 48 25 |$+s$....secs%=H%| 0001aa30 2a 33 36 30 30 2b 4d 25 2a 36 30 2b 53 25 0d 0e |*3600+M%*60+S%..| 0001aa40 e5 53 e7 20 70 6c 61 63 65 25 3d 30 20 8c 20 24 |.S. place%=0 . $| 0001aa50 52 66 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 |Rf%(Fieldnumber%| 0001aa60 29 3d 74 69 6d 65 24 3a f2 72 65 64 72 61 77 5f |)=time$:.redraw_| 0001aa70 69 63 6f 6e 28 6d 61 69 6e 57 25 2c 66 69 65 6c |icon(mainW%,fiel| 0001aa80 64 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 |d%(Fieldnumber%)| 0001aa90 29 0d 0e e6 0a 3d 73 65 63 73 25 0d 0e e7 05 3a |)....=secs%....:| 0001aaa0 0d 0e e8 12 dd 20 a4 74 69 6d 65 28 73 65 63 73 |..... .time(secs| 0001aab0 25 29 0d 0e e9 17 ea 20 48 25 2c 4d 25 2c 53 25 |%)..... H%,M%,S%| 0001aac0 2c 68 24 2c 6d 24 2c 73 24 0d 0e ea 26 48 25 3d |,h$,m$,s$...&H%=| 0001aad0 73 65 63 73 25 20 81 20 33 36 30 30 3a 73 65 63 |secs% . 3600:sec| 0001aae0 73 25 3d 73 65 63 73 25 20 83 20 33 36 30 30 0d |s%=secs% . 3600.| 0001aaf0 0e eb 11 4d 25 3d 73 65 63 73 25 20 81 20 36 30 |...M%=secs% . 60| 0001ab00 0d 0e ec 11 53 25 3d 73 65 63 73 25 20 83 20 36 |....S%=secs% . 6| 0001ab10 30 0d 0e ed 22 68 24 3d c3 28 48 25 29 3a e7 20 |0..."h$=.(H%):. | 0001ab20 a9 28 68 24 29 3d 31 20 8c 20 68 24 3d 22 30 22 |.(h$)=1 . h$="0"| 0001ab30 2b 68 24 0d 0e ee 22 6d 24 3d c3 28 4d 25 29 3a |+h$..."m$=.(M%):| 0001ab40 e7 20 a9 28 6d 24 29 3d 31 20 8c 20 6d 24 3d 22 |. .(m$)=1 . m$="| 0001ab50 30 22 2b 6d 24 0d 0e ef 22 73 24 3d c3 28 53 25 |0"+m$..."s$=.(S%| 0001ab60 29 3a e7 20 a9 28 73 24 29 3d 31 20 8c 20 73 24 |):. .(s$)=1 . s$| 0001ab70 3d 22 30 22 2b 73 24 0d 0e f0 1f 3d 68 24 2b 74 |="0"+s$....=h$+t| 0001ab80 69 6d 65 73 65 70 24 2b 6d 24 2b 74 69 6d 65 73 |imesep$+m$+times| 0001ab90 65 70 24 2b 73 24 0d 0e f1 05 3a 0d 0e f2 28 dd |ep$+s$....:...(.| 0001aba0 20 a4 76 61 6c 69 64 61 74 65 28 46 25 2c f8 20 | .validate(F%,. | 0001abb0 54 61 62 46 69 65 6c 64 73 25 2c f8 20 6e 61 6d |TabFields%,. nam| 0001abc0 65 24 29 0d 0e f3 15 e7 20 ac 20 76 61 6c 69 64 |e$)..... . valid| 0001abd0 61 74 65 25 20 8c 3d b9 0d 0e f4 49 ea 20 72 6f |ate% .=....I. ro| 0001abe0 77 25 2c 66 69 65 6c 64 25 2c 52 6f 77 73 25 2c |w%,field%,Rows%,| 0001abf0 52 65 63 25 2c 69 6e 64 25 2c 65 69 6e 64 25 2c |Rec%,ind%,eind%,| 0001ac00 70 6f 73 25 2c 73 74 61 72 74 25 2c 72 65 6c 25 |pos%,start%,rel%| 0001ac10 2c 65 78 70 25 2c 65 70 6f 73 25 2c 64 61 74 65 |,exp%,epos%,date| 0001ac20 24 0d 0e f5 53 e7 20 66 69 78 25 28 46 25 29 3e |$...S. fix%(F%)>| 0001ac30 30 20 8c 20 24 52 66 25 28 46 25 29 3d a4 66 69 |0 . $Rf%(F%)=.fi| 0001ac40 78 5f 70 6f 69 6e 74 28 24 52 66 25 28 46 25 29 |x_point($Rf%(F%)| 0001ac50 2c 46 25 29 3a f2 72 65 64 72 61 77 5f 69 63 6f |,F%):.redraw_ico| 0001ac60 6e 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 |n(mainW%,field%(| 0001ac70 46 25 29 29 0d 0e f6 36 e7 20 63 68 61 72 74 79 |F%))...6. charty| 0001ac80 70 65 25 28 46 25 29 3d 33 20 8c 3d a4 63 68 65 |pe%(F%)=3 .=.che| 0001ac90 63 6b 5f 76 61 6c 28 63 61 6c 63 24 28 46 25 29 |ck_val(calc$(F%)| 0001aca0 2c 24 52 66 25 28 46 25 29 29 0d 0e f7 35 e7 20 |,$Rf%(F%))...5. | 0001acb0 63 68 61 72 74 79 70 65 25 28 46 25 29 3d 35 20 |chartype%(F%)=5 | 0001acc0 8c 3d a4 63 68 65 63 6b 5f 64 61 74 65 28 24 52 |.=.check_date($R| 0001acd0 66 25 28 46 25 29 2c 30 2c 64 61 74 65 24 29 0d |f%(F%),0,date$).| 0001ace0 0e f8 31 e7 20 63 68 61 72 74 79 70 65 25 28 46 |..1. chartype%(F| 0001acf0 25 29 3d 38 20 8c 3d 28 a4 73 65 63 6f 6e 64 73 |%)=8 .=(.seconds| 0001ad00 28 24 52 66 25 28 46 25 29 2c 30 29 3e 3d 30 29 |($Rf%(F%),0)>=0)| 0001ad10 0d 0e f9 2c e7 20 24 52 66 25 28 46 25 29 3d 66 |...,. $Rf%(F%)=f| 0001ad20 69 65 6c 64 24 28 46 25 29 20 80 20 54 61 62 46 |ield$(F%) . TabF| 0001ad30 69 65 6c 64 73 25 3d 30 20 8c 3d b9 0d 0e fa 33 |ields%=0 .=....3| 0001ad40 6e 61 6d 65 24 3d 6c 69 6e 6b 24 28 46 25 29 3a |name$=link$(F%):| 0001ad50 54 61 62 6c 65 6e 75 6d 62 65 72 25 3d 2d 31 3a |Tablenumber%=-1:| 0001ad60 72 65 6c 25 3d 54 61 62 46 69 65 6c 64 73 25 0d |rel%=TabFields%.| 0001ad70 0e fb 22 e7 20 6e 61 6d 65 24 3d 22 22 20 84 20 |..". name$="" . | 0001ad80 c0 6e 61 6d 65 24 2c 31 29 3d 22 23 22 20 8c 3d |.name$,1)="#" .=| 0001ad90 b9 0d 0e fc 23 66 69 65 6c 64 25 3d bb 28 c2 6e |....#field%=.(.n| 0001ada0 61 6d 65 24 29 29 3a 6e 61 6d 65 24 3d c0 6e 61 |ame$)):name$=.na| 0001adb0 6d 65 24 29 0d 0e fd 48 65 78 70 25 3d 2d 31 3a |me$)...Hexp%=-1:| 0001adc0 e7 20 97 28 6e 61 6d 65 24 29 3c 35 38 20 80 20 |. .(name$)<58 . | 0001add0 97 28 6e 61 6d 65 24 29 3c 3e 2d 31 20 8c 20 65 |.(name$)<>-1 . e| 0001ade0 78 70 25 3d bb 28 6e 61 6d 65 24 29 3a 6e 61 6d |xp%=.(name$):nam| 0001adf0 65 24 3d c1 6e 61 6d 65 24 2c 32 29 0d 0e fe 26 |e$=.name$,2)...&| 0001ae00 54 25 3d a4 74 61 62 6c 65 5f 6e 75 6d 62 65 72 |T%=.table_number| 0001ae10 28 6e 61 6d 65 24 29 3a e7 20 54 25 3c 30 20 8c |(name$):. T%<0 .| 0001ae20 3d b9 0d 0e ff 3b 54 24 3d a4 74 61 62 6c 65 5f |=....;T$=.table_| 0001ae30 69 6e 66 6f 28 54 25 2c 52 6f 77 73 25 2c 54 61 |info(T%,Rows%,Ta| 0001ae40 62 46 69 65 6c 64 73 25 2c 52 65 63 25 2c 74 61 |bFields%,Rec%,ta| 0001ae50 62 66 69 65 6c 64 6c 65 6e 25 28 29 29 0d 0f 00 |bfieldlen%())...| 0001ae60 2c 70 6f 73 25 3d a4 74 61 62 6c 65 5f 66 69 65 |,pos%=.table_fie| 0001ae70 6c 64 28 66 69 65 6c 64 25 2c 74 61 62 66 69 65 |ld(field%,tabfie| 0001ae80 6c 64 6c 65 6e 25 28 29 29 0d 0f 01 43 e7 20 65 |ldlen%())...C. e| 0001ae90 78 70 25 3c 30 20 8c 20 65 70 6f 73 25 3d 70 6f |xp%<0 . epos%=po| 0001aea0 73 25 20 8b 20 65 70 6f 73 25 3d a4 74 61 62 6c |s% . epos%=.tabl| 0001aeb0 65 5f 66 69 65 6c 64 28 65 78 70 25 2c 74 61 62 |e_field(exp%,tab| 0001aec0 66 69 65 6c 64 6c 65 6e 25 28 29 29 0d 0f 02 23 |fieldlen%())...#| 0001aed0 73 74 61 72 74 25 3d 21 74 61 62 61 6e 63 68 6f |start%=!tabancho| 0001aee0 72 25 28 54 25 29 2b 31 36 30 2d 52 65 63 25 0d |r%(T%)+160-Rec%.| 0001aef0 0f 03 27 69 6e 64 25 3d 73 74 61 72 74 25 2b 70 |..'ind%=start%+p| 0001af00 6f 73 25 3a 65 69 6e 64 25 3d 73 74 61 72 74 25 |os%:eind%=start%| 0001af10 2b 65 70 6f 73 25 0d 0f 04 0d f5 20 72 6f 77 25 |+epos%..... row%| 0001af20 2b 3d 31 0d 0f 05 1c 20 20 69 6e 64 25 2b 3d 52 |+=1.... ind%+=R| 0001af30 65 63 25 3a 65 69 6e 64 25 2b 3d 52 65 63 25 0d |ec%:eind%+=Rec%.| 0001af40 0f 06 33 fd 20 72 6f 77 25 3e 52 6f 77 73 25 20 |..3. row%>Rows% | 0001af50 84 20 24 69 6e 64 25 3d 24 52 66 25 28 46 25 29 |. $ind%=$Rf%(F%)| 0001af60 20 84 20 24 65 69 6e 64 25 3d 24 52 66 25 28 46 | . $eind%=$Rf%(F| 0001af70 25 29 0d 0f 07 4f e7 20 72 6f 77 25 3e 52 6f 77 |%)...O. row%>Row| 0001af80 73 25 20 80 20 72 65 6c 25 3d 30 20 8c 20 f2 72 |s% . rel%=0 . .r| 0001af90 65 73 74 6f 72 65 28 46 25 2c 22 20 28 22 2b 6e |estore(F%," ("+n| 0001afa0 61 6d 65 24 2b 22 29 22 2c 35 29 3a 3d a3 20 8b |ame$+")",5):=. .| 0001afb0 20 e7 20 72 6f 77 25 3e 52 6f 77 73 25 20 8c 3d | . row%>Rows% .=| 0001afc0 a3 0d 0f 08 19 69 6e 64 25 3d 73 74 61 72 74 25 |.....ind%=start%| 0001afd0 2b 72 6f 77 25 2a 52 65 63 25 0d 0f 09 17 e3 20 |+row%*Rec%..... | 0001afe0 49 25 3d 30 20 b8 20 54 61 62 46 69 65 6c 64 73 |I%=0 . TabFields| 0001aff0 25 0d 0f 0a 2c 20 20 72 65 6c 25 28 49 25 29 3d |%..., rel%(I%)=| 0001b000 69 6e 64 25 3a 69 6e 64 25 2b 3d 74 61 62 66 69 |ind%:ind%+=tabfi| 0001b010 65 6c 64 6c 65 6e 25 28 49 25 29 2b 31 0d 0f 0b |eldlen%(I%)+1...| 0001b020 08 ed 20 49 25 0d 0f 0c 68 e7 20 65 78 70 25 3e |.. I%...h. exp%>| 0001b030 3d 30 20 8c 20 65 78 70 61 6e 64 24 3d 24 65 69 |=0 . expand$=$ei| 0001b040 6e 64 25 3a e7 20 a9 28 65 78 70 61 6e 64 24 29 |nd%:. .(expand$)| 0001b050 3c 3d 6c 65 6e 25 28 46 25 29 20 8c 20 24 52 66 |<=len%(F%) . $Rf| 0001b060 25 28 46 25 29 3d 65 78 70 61 6e 64 24 3a f2 72 |%(F%)=expand$:.r| 0001b070 65 64 72 61 77 5f 69 63 6f 6e 28 6d 61 69 6e 57 |edraw_icon(mainW| 0001b080 25 2c 66 69 65 6c 64 25 28 46 25 29 29 0d 0f 0d |%,field%(F%))...| 0001b090 09 3d 72 6f 77 25 0d 0f 0e 05 3a 0d 0f 0f 17 dd |.=row%....:.....| 0001b0a0 20 a4 63 68 65 63 6b 5f 76 61 6c 28 43 24 2c 4e | .check_val(C$,N| 0001b0b0 24 29 0d 0f 10 18 ea 20 6d 69 6e 24 2c 6d 61 78 |$)..... min$,max| 0001b0c0 24 2c 50 25 2c 56 2c 6f 6b 25 0d 0f 11 09 6f 6b |$,P%,V,ok%....ok| 0001b0d0 25 3d b9 0d 0f 12 11 e7 20 4e 24 3d 22 22 20 8c |%=...... N$="" .| 0001b0e0 3d 6f 6b 25 0d 0f 13 0e e7 20 43 24 3c 3e 22 22 |=ok%..... C$<>""| 0001b0f0 20 8c 0d 0f 14 0d 20 20 56 3d bb 28 4e 24 29 0d | ..... V=.(N$).| 0001b100 0f 15 11 20 20 50 25 3d a7 43 24 2c 22 7c 22 29 |... P%=.C$,"|")| 0001b110 0d 0f 16 0e 20 20 e7 20 50 25 3e 30 20 8c 0d 0f |.... . P%>0 ...| 0001b120 17 16 20 20 20 20 6d 69 6e 24 3d c0 43 24 2c 50 |.. min$=.C$,P| 0001b130 25 2d 31 29 0d 0f 18 16 20 20 20 20 6d 61 78 24 |%-1).... max$| 0001b140 3d c1 43 24 2c 50 25 2b 31 29 0d 0f 19 48 20 20 |=.C$,P%+1)...H | 0001b150 20 20 e7 20 6d 69 6e 24 3c 3e 22 22 20 80 20 56 | . min$<>"" . V| 0001b160 3c bb 28 6d 69 6e 24 29 20 8c 20 6f 6b 25 3d a3 |<.(min$) . ok%=.| 0001b170 3a f2 72 65 73 74 6f 72 65 28 46 25 2c 22 20 28 |:.restore(F%," (| 0001b180 6d 69 6e 3d 22 2b 6d 69 6e 24 2b 22 29 22 2c 35 |min="+min$+")",5| 0001b190 38 29 0d 0f 1a 48 20 20 20 20 e7 20 6d 61 78 24 |8)...H . max$| 0001b1a0 3c 3e 22 22 20 80 20 56 3e bb 28 6d 61 78 24 29 |<>"" . V>.(max$)| 0001b1b0 20 8c 20 6f 6b 25 3d a3 3a f2 72 65 73 74 6f 72 | . ok%=.:.restor| 0001b1c0 65 28 46 25 2c 22 20 28 6d 61 78 3d 22 2b 6d 61 |e(F%," (max="+ma| 0001b1d0 78 24 2b 22 29 22 2c 35 39 29 0d 0f 1b 07 20 20 |x$+")",59).... | 0001b1e0 cd 0d 0f 1c 05 cd 0d 0f 1d 08 3d 6f 6b 25 0d 0f |..........=ok%..| 0001b1f0 1e 05 3a 0d 0f 1f 12 dd 20 f2 72 65 73 74 6f 72 |..:..... .restor| 0001b200 65 5f 72 65 63 0d 0f 20 08 ea 20 46 25 0d 0f 21 |e_rec.. .. F%..!| 0001b210 14 e3 20 46 25 3d 31 20 b8 20 66 69 65 6c 64 73 |.. F%=1 . fields| 0001b220 25 0d 0f 22 19 20 20 24 52 66 25 28 46 25 29 3d |%..". $Rf%(F%)=| 0001b230 66 69 65 6c 64 24 28 46 25 29 0d 0f 23 08 ed 20 |field$(F%)..#.. | 0001b240 46 25 0d 0f 24 13 f2 72 65 64 72 61 77 28 6d 61 |F%..$..redraw(ma| 0001b250 69 6e 57 25 29 0d 0f 25 05 e1 0d 0f 26 05 3a 0d |inW%)..%....&.:.| 0001b260 0f 27 18 dd 20 f2 72 65 73 74 6f 72 65 28 46 25 |.'.. .restore(F%| 0001b270 2c 45 24 2c 45 25 29 0d 0f 28 1f e7 20 45 25 3e |,E$,E%)..(.. E%>| 0001b280 3d 30 20 8c 20 f2 73 6f 66 74 65 72 72 6f 72 28 |=0 . .softerror(| 0001b290 45 24 2c 45 25 29 0d 0f 29 17 24 52 66 25 28 46 |E$,E%)..).$Rf%(F| 0001b2a0 25 29 3d 66 69 65 6c 64 24 28 46 25 29 0d 0f 2a |%)=field$(F%)..*| 0001b2b0 23 f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 6d 61 |#.redraw_icon(ma| 0001b2c0 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 25 29 29 |inW%,field%(F%))| 0001b2d0 0d 0f 2b 21 f2 73 65 74 5f 63 61 72 65 74 28 6d |..+!.set_caret(m| 0001b2e0 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 25 29 |ainW%,field%(F%)| 0001b2f0 29 0d 0f 2c 05 e1 0d 0f 2d 05 3a 0d 0f 2e 17 dd |)..,....-.:.....| 0001b300 20 f2 72 65 6c 61 74 69 6f 6e 73 28 6d 65 6e 75 | .relations(menu| 0001b310 25 29 0d 0f 2f 25 ea 20 46 25 2c 49 25 2c 57 25 |%)../%. F%,I%,W%| 0001b320 2c 4c 25 2c 4e 24 2c 72 6f 77 25 2c 63 6f 6c 25 |,L%,N$,row%,col%| 0001b330 2c 66 6c 61 67 73 25 0d 0f 30 09 46 25 3d 2d 31 |,flags%..0.F%=-1| 0001b340 0d 0f 31 26 72 6f 77 25 3d a4 76 61 6c 69 64 61 |..1&row%=.valida| 0001b350 74 65 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 2c |te(Fieldnumber%,| 0001b360 46 25 2c 4e 24 29 0d 0f 32 21 63 6f 6c 25 3d bb |F%,N$)..2!col%=.| 0001b370 28 c2 6c 69 6e 6b 24 28 46 69 65 6c 64 6e 75 6d |(.link$(Fieldnum| 0001b380 62 65 72 25 29 29 29 0d 0f 33 0e e7 20 72 6f 77 |ber%)))..3.. row| 0001b390 25 3e 30 20 8c 0d 0f 34 1f 20 20 f2 64 65 6c 65 |%>0 ...4. .dele| 0001b3a0 74 65 5f 69 63 6f 6e 73 28 72 65 6c 61 74 65 57 |te_icons(relateW| 0001b3b0 25 2c 30 29 0d 0f 35 11 20 20 e3 20 49 25 3d 30 |%,0)..5. . I%=0| 0001b3c0 20 b8 20 46 25 0d 0f 36 37 20 20 20 20 e7 20 49 | . F%..67 . I| 0001b3d0 25 3d 63 6f 6c 25 20 8c 20 66 6c 61 67 73 25 3d |%=col% . flags%=| 0001b3e0 26 30 42 30 30 30 35 33 31 20 8b 20 66 6c 61 67 |&0B000531 . flag| 0001b3f0 73 25 3d 26 30 37 30 30 30 35 33 31 0d 0f 37 17 |s%=&07000531..7.| 0001b400 20 20 20 20 4c 25 3d a9 28 24 72 65 6c 25 28 49 | L%=.($rel%(I| 0001b410 25 29 29 0d 0f 38 54 20 20 20 20 52 25 3d a4 63 |%))..8T R%=.c| 0001b420 72 65 61 74 65 5f 69 63 6f 6e 28 72 65 6c 61 74 |reate_icon(relat| 0001b430 65 57 25 2c 30 2c 2d 49 25 2a 33 36 2d 33 36 2c |eW%,0,-I%*36-36,| 0001b440 4c 25 2a 31 36 2b 31 36 2c 33 32 2c 66 6c 61 67 |L%*16+16,32,flag| 0001b450 73 25 2c 22 22 2c 72 65 6c 25 28 49 25 29 2c 2d |s%,"",rel%(I%),-| 0001b460 31 2c 4c 25 2b 31 29 0d 0f 39 17 20 20 20 20 e7 |1,L%+1)..9. .| 0001b470 20 4c 25 3e 57 25 20 8c 20 57 25 3d 4c 25 0d 0f | L%>W% . W%=L%..| 0001b480 3a 0a 20 20 ed 20 49 25 0d 0f 3b 13 20 20 24 52 |:. . I%..;. $R| 0001b490 65 6c 54 69 74 6c 65 25 3d 4e 24 0d 0f 3c 0f 20 |elTitle%=N$..<. | 0001b4a0 20 e7 20 6d 65 6e 75 25 20 8c 0d 0f 3d 1c 20 20 | . menu% ...=. | 0001b4b0 20 20 78 6d 61 78 25 3d 78 25 2d 33 32 3a 79 6d | xmax%=x%-32:ym| 0001b4c0 61 78 25 3d 79 25 0d 0f 3e 09 20 20 20 20 cc 0d |ax%=y%..>. ..| 0001b4d0 0f 3f 39 20 20 20 20 21 62 6c 6f 63 6b 25 3d 6b |.?9 !block%=k| 0001b4e0 65 79 70 61 64 57 25 3a c8 99 20 22 57 69 6d 70 |eypadW%:.. "Wimp| 0001b4f0 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 |_GetWindowState"| 0001b500 2c 2c 62 6c 6f 63 6b 25 0d 0f 40 29 20 20 20 20 |,,block%..@) | 0001b510 78 6d 61 78 25 3d 62 6c 6f 63 6b 25 21 31 32 2b |xmax%=block%!12+| 0001b520 32 3a 79 6d 61 78 25 3d 62 6c 6f 63 6b 25 21 31 |2:ymax%=block%!1| 0001b530 36 0d 0f 41 07 20 20 cd 0d 0f 42 37 20 20 21 62 |6..A. ...B7 !b| 0001b540 6c 6f 63 6b 25 3d 72 65 6c 61 74 65 57 25 3a c8 |lock%=relateW%:.| 0001b550 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f |. "Wimp_GetWindo| 0001b560 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d |wState",,block%.| 0001b570 0f 43 26 20 20 77 69 64 74 68 25 3d 57 25 2a 31 |.C& width%=W%*1| 0001b580 36 2b 31 36 3a 68 65 69 67 68 74 25 3d 46 25 2a |6+16:height%=F%*| 0001b590 33 36 2b 33 36 0d 0f 44 2b 20 20 62 6c 6f 63 6b |36+36..D+ block| 0001b5a0 25 21 34 3d 78 6d 61 78 25 3a 62 6c 6f 63 6b 25 |%!4=xmax%:block%| 0001b5b0 21 31 32 3d 78 6d 61 78 25 2b 77 69 64 74 68 25 |!12=xmax%+width%| 0001b5c0 0d 0f 45 2c 20 20 62 6c 6f 63 6b 25 21 38 3d 79 |..E, block%!8=y| 0001b5d0 6d 61 78 25 2d 68 65 69 67 68 74 25 3a 62 6c 6f |max%-height%:blo| 0001b5e0 63 6b 25 21 31 36 3d 79 6d 61 78 25 0d 0f 46 12 |ck%!16=ymax%..F.| 0001b5f0 20 20 62 6c 6f 63 6b 25 21 32 38 3d 2d 31 0d 0f | block%!28=-1..| 0001b600 47 0f 20 20 e7 20 6d 65 6e 75 25 20 8c 0d 0f 48 |G. . menu% ...H| 0001b610 24 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 4f 70 |$ .. "Wimp_Op| 0001b620 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b |enWindow",,block| 0001b630 25 0d 0f 49 2f 20 20 20 20 c8 99 20 22 57 69 6d |%..I/ .. "Wim| 0001b640 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 72 |p_CreateMenu",,r| 0001b650 65 6c 61 74 65 57 25 2c 78 25 2d 33 32 2c 79 25 |elateW%,x%-32,y%| 0001b660 0d 0f 4a 09 20 20 20 20 cc 0d 0f 4b 24 20 20 20 |..J. ...K$ | 0001b670 20 c8 99 20 22 57 69 6d 70 5f 4f 70 65 6e 57 69 | .. "Wimp_OpenWi| 0001b680 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d 0f 4c |ndow",,block%..L| 0001b690 19 20 20 20 20 f2 72 65 64 72 61 77 28 72 65 6c |. .redraw(rel| 0001b6a0 61 74 65 57 25 29 0d 0f 4d 07 20 20 cd 0d 0f 4e |ateW%)..M. ...N| 0001b6b0 1f 20 20 cc 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 |. . .close_wind| 0001b6c0 6f 77 28 72 65 6c 61 74 65 57 25 29 0d 0f 4f 05 |ow(relateW%)..O.| 0001b6d0 cd 0d 0f 50 05 e1 0d 0f 51 05 3a 0d 0f 52 17 dd |...P....Q.:..R..| 0001b6e0 20 a4 66 69 78 5f 70 6f 69 6e 74 28 46 24 2c 46 | .fix_point(F$,F| 0001b6f0 25 29 0d 0f 53 10 e7 20 46 24 3d 22 22 20 8c 3d |%)..S.. F$="" .=| 0001b700 22 22 0d 0f 54 1d 40 25 3d 26 30 31 30 32 30 30 |""..T.@%=&010200| 0001b710 30 39 2b 66 69 78 25 28 46 25 29 2a 32 35 36 0d |09+fix%(F%)*256.| 0001b720 0f 55 0f 46 24 3d c3 28 bb 28 46 24 29 29 0d 0f |.U.F$=.(.(F$))..| 0001b730 56 0b 40 25 3d 26 39 30 41 0d 0f 57 12 3d c0 46 |V.@%=&90A..W.=.F| 0001b740 24 2c 6c 65 6e 25 28 46 25 29 29 0d 0f 58 05 3a |$,len%(F%))..X.:| 0001b750 0d 0f 59 19 dd 20 a4 6d 6f 76 65 74 6f 28 6b 65 |..Y.. .moveto(ke| 0001b760 79 25 2c 50 25 2c 44 25 29 0d 0f 5a 11 44 25 3d |y%,P%,D%)..Z.D%=| 0001b770 28 44 25 2b 31 29 20 81 20 32 0d 0f 5b 0f e7 20 |(D%+1) . 2..[.. | 0001b780 66 69 6c 74 65 72 25 20 8c 0d 0f 5c 23 20 20 50 |filter% ...\# P| 0001b790 25 3d a4 6e 65 78 74 5f 6d 61 74 63 68 28 50 25 |%=.next_match(P%| 0001b7a0 2c 44 25 2c 46 69 6c 74 65 72 24 29 0d 0f 5d 07 |,D%,Filter$)..].| 0001b7b0 20 20 cc 0d 0f 5e 1f 20 20 50 25 3d a4 6e 65 69 | ...^. P%=.nei| 0001b7c0 67 68 62 6f 75 72 28 6b 65 79 25 2c 50 25 2c 44 |ghbour(key%,P%,D| 0001b7d0 25 29 0d 0f 5f 2e 20 20 e7 20 50 25 3d 74 6f 70 |%).._. . P%=top| 0001b7e0 20 8c 20 ef 20 37 3a 50 25 3d a4 6e 65 69 67 68 | . . 7:P%=.neigh| 0001b7f0 62 6f 75 72 28 6b 65 79 25 2c 50 25 2c 44 25 29 |bour(key%,P%,D%)| 0001b800 0d 0f 60 05 cd 0d 0f 61 15 f2 64 69 73 70 6c 61 |..`....a..displa| 0001b810 79 28 6b 65 79 25 2c 50 25 29 0d 0f 62 07 3d 50 |y(key%,P%)..b.=P| 0001b820 25 0d 0f 63 05 3a 0d 0f 64 1b dd 20 a4 6e 65 78 |%..c.:..d.. .nex| 0001b830 74 5f 6d 61 74 63 68 28 50 25 2c 44 25 2c 53 24 |t_match(P%,D%,S$| 0001b840 29 0d 0f 65 0a ea 20 52 45 43 25 0d 0f 66 2a 64 |)..e.. REC%..f*d| 0001b850 62 61 73 65 68 61 6e 64 6c 65 25 3d 8e 28 24 64 |basehandle%=.($d| 0001b860 61 74 61 62 61 73 65 25 2b 22 2e 44 61 74 61 62 |atabase%+".Datab| 0001b870 61 73 65 22 29 0d 0f 67 05 f5 0d 0f 68 1f 20 20 |ase")..g....h. | 0001b880 50 25 3d a4 6e 65 69 67 68 62 6f 75 72 28 6b 65 |P%=.neighbour(ke| 0001b890 79 25 2c 50 25 2c 44 25 29 0d 0f 69 11 20 20 e7 |y%,P%,D%)..i. .| 0001b8a0 20 50 25 3c 3e 74 6f 70 20 8c 0d 0f 6a 20 20 20 | P%<>top ...j | 0001b8b0 20 20 52 45 43 25 3d a4 72 65 63 5f 6e 6f 28 6b | REC%=.rec_no(k| 0001b8c0 24 2c 6b 65 79 25 2c 50 25 29 0d 0f 6b 27 20 20 |$,key%,P%)..k' | 0001b8d0 20 20 f2 72 65 61 64 73 6d 61 72 72 61 79 28 64 | .readsmarray(d| 0001b8e0 62 61 73 65 68 61 6e 64 6c 65 25 2c 52 45 43 25 |basehandle%,REC%| 0001b8f0 29 0d 0f 6c 07 20 20 cd 0d 0f 6d 16 fd 20 a0 28 |)..l. ...m.. .(| 0001b900 53 24 29 3d b9 20 84 20 50 25 3d 74 6f 70 0d 0f |S$)=. . P%=top..| 0001b910 6e 20 e7 20 50 25 3d 74 6f 70 20 8c 20 f2 73 6f |n . P%=top . .so| 0001b920 66 74 65 72 72 6f 72 28 22 22 2c 33 38 29 0d 0f |fterror("",38)..| 0001b930 6f 1d f2 63 6c 6f 73 65 5f 66 69 6c 65 28 64 62 |o..close_file(db| 0001b940 61 73 65 68 61 6e 64 6c 65 25 29 0d 0f 70 07 3d |asehandle%)..p.=| 0001b950 50 25 0d 0f 71 05 3a 0d 0f 72 17 dd 20 f2 64 69 |P%..q.:..r.. .di| 0001b960 73 70 6c 61 79 28 6b 65 79 25 2c 50 25 29 0d 0f |splay(key%,P%)..| 0001b970 73 11 f2 63 68 65 63 6b 5f 63 68 61 6e 67 65 0d |s..check_change.| 0001b980 0f 74 2d e7 20 74 65 6d 70 6c 61 74 65 25 3d 31 |.t-. template%=1| 0001b990 20 8c 20 74 65 6d 70 6c 61 74 65 25 3d 32 20 8b | . template%=2 .| 0001b9a0 20 74 65 6d 70 6c 61 74 65 25 3d 30 0d 0f 75 21 | template%=0..u!| 0001b9b0 ea 20 49 25 2c 4c 25 2c 53 25 2c 53 24 2c 6b 24 |. I%,L%,S%,S$,k$| 0001b9c0 2c 6f 6b 25 2c 6e 65 78 74 72 65 63 25 0d 0f 76 |,ok%,nextrec%..v| 0001b9d0 0b c8 8e 20 50 25 20 ca 0d 0f 77 0b 20 20 c9 20 |... P% ...w. . | 0001b9e0 2d 31 3a 0d 0f 78 50 20 20 6b 65 79 62 61 73 65 |-1:..xP keybase| 0001b9f0 25 3d 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 |%=!keyanchor%(ke| 0001ba00 79 25 29 3a 41 25 3d 21 6b 65 79 62 61 73 65 25 |y%):A%=!keybase%| 0001ba10 3a 6e 65 78 74 72 65 63 25 3d 21 28 6b 65 79 62 |:nextrec%=!(keyb| 0001ba20 61 73 65 25 2b 41 25 2b 38 2b 4b 4c 25 28 30 29 |ase%+A%+8+KL%(0)| 0001ba30 2b 31 29 0d 0f 79 0c 20 20 c8 8e 20 b9 20 ca 0d |+1)..y. .. . ..| 0001ba40 0f 7a 36 20 20 20 20 c9 20 21 28 6b 65 79 62 61 |.z6 . !(keyba| 0001ba50 73 65 25 2b 41 25 29 3e 30 2c 74 65 6d 70 6c 61 |se%+A%)>0,templa| 0001ba60 74 65 25 3d 32 2c 64 65 73 69 67 6e 25 3d b9 3a |te%=2,design%=.:| 0001ba70 6f 6b 25 3d b9 0d 0f 7b 0a 20 20 20 20 7f 3a 0d |ok%=...{. .:.| 0001ba80 0f 7c 1c 20 20 20 20 69 6e 63 72 25 3d bb 28 24 |.|. incr%=.($| 0001ba90 49 6e 63 72 65 6d 65 6e 74 25 29 0d 0f 7d 13 20 |Increment%)..}. | 0001baa0 20 20 20 e7 20 69 6e 63 72 25 3e 30 20 8c 0d 0f | . incr%>0 ...| 0001bab0 7e 2b 20 20 20 20 20 20 f2 63 68 61 6e 67 65 5f |~+ .change_| 0001bac0 6c 65 6e 67 74 68 28 52 41 25 2b 69 6e 63 72 25 |length(RA%+incr%| 0001bad0 2c a3 29 3a 6f 6b 25 3d b9 0d 0f 7f 1c 20 20 20 |,.):ok%=..... | 0001bae0 20 20 20 cc 20 f2 73 6f 66 74 65 72 72 6f 72 28 | . .softerror(| 0001baf0 22 22 2c 32 29 0d 0f 80 09 20 20 20 20 cd 0d 0f |"",2).... ...| 0001bb00 81 07 20 20 cb 0d 0f 82 0d 20 20 e7 20 6f 6b 25 |.. ..... . ok%| 0001bb10 20 8c 0d 0f 83 0e 20 20 20 20 c8 8e 20 b9 20 ca | ..... .. . .| 0001bb20 0d 0f 84 3a 20 20 20 20 20 20 c9 20 64 65 73 69 |...: . desi| 0001bb30 67 6e 25 3a 24 52 65 63 49 6e 66 6f 25 3d 22 4d |gn%:$RecInfo%="M| 0001bb40 61 6b 65 20 61 64 6a 75 73 74 6d 65 6e 74 73 20 |ake adjustments | 0001bb50 74 6f 20 66 69 65 6c 64 73 22 0d 0f 85 61 20 20 |to fields"...a | 0001bb60 20 20 20 20 c9 20 74 65 6d 70 6c 61 74 65 25 3d | . template%=| 0001bb70 32 3a 24 52 65 63 49 6e 66 6f 25 3d 22 45 6e 74 |2:$RecInfo%="Ent| 0001bb80 65 72 20 64 61 74 61 20 77 68 69 63 68 20 79 6f |er data which yo| 0001bb90 75 20 77 61 6e 74 20 74 6f 20 61 70 70 65 61 72 |u want to appear| 0001bba0 20 62 79 20 64 65 66 61 75 6c 74 20 6f 6e 20 6e | by default on n| 0001bbb0 65 77 20 72 65 63 6f 72 64 73 22 0d 0f 86 22 20 |ew records"..." | 0001bbc0 20 20 20 20 20 7f 3a 24 52 65 63 49 6e 66 6f 25 | .:$RecInfo%| 0001bbd0 3d 22 4e 65 77 20 72 65 63 6f 72 64 22 0d 0f 87 |="New record"...| 0001bbe0 09 20 20 20 20 cb 0d 0f 88 31 20 20 20 20 52 45 |. ....1 RE| 0001bbf0 43 25 3d 52 41 25 3a f2 72 65 61 64 28 66 69 65 |C%=RA%:.read(fie| 0001bc00 6c 64 73 25 2c a3 2c 52 45 43 25 2c 24 64 61 74 |lds%,.,REC%,$dat| 0001bc10 61 62 61 73 65 25 29 0d 0f 89 07 20 20 cd 0d 0f |abase%).... ...| 0001bc20 8a 0c 20 20 c9 20 74 6f 70 3a 0d 0f 8b 2f 20 20 |.. . top:.../ | 0001bc30 52 45 43 25 3d 52 41 25 3a f2 72 65 61 64 28 66 |REC%=RA%:.read(f| 0001bc40 69 65 6c 64 73 25 2c a3 2c 52 45 43 25 2c 24 64 |ields%,.,REC%,$d| 0001bc50 61 74 61 62 61 73 65 25 29 0d 0f 8c 23 20 20 24 |atabase%)...# $| 0001bc60 52 65 63 49 6e 66 6f 25 3d 22 53 75 62 66 69 6c |RecInfo%="Subfil| 0001bc70 65 3d 22 2b c3 28 66 69 6c 65 25 29 0d 0f 8d 2e |e="+.(file%)....| 0001bc80 20 20 e7 20 ac 20 66 69 6c 74 65 72 25 20 8c 20 | . . filter% . | 0001bc90 ef 20 37 3a 24 52 65 63 49 6e 66 6f 25 2b 3d 22 |. 7:$RecInfo%+="| 0001bca0 2e 20 28 45 6d 70 74 79 29 22 0d 0f 8e 08 20 20 |. (Empty)".... | 0001bcb0 7f 3a 0d 0f 8f 1e 20 20 52 45 43 25 3d a4 72 65 |.:.... REC%=.re| 0001bcc0 63 5f 6e 6f 28 6b 24 2c 6b 65 79 25 2c 50 25 29 |c_no(k$,key%,P%)| 0001bcd0 0d 0f 90 26 20 20 f2 72 65 61 64 28 66 69 65 6c |...& .read(fiel| 0001bce0 64 73 25 2c b9 2c 52 45 43 25 2c 24 64 61 74 61 |ds%,.,REC%,$data| 0001bcf0 62 61 73 65 25 29 0d 0f 91 13 20 20 6b 65 79 24 |base%).... key$| 0001bd00 28 6b 65 79 25 29 3d 6b 24 0d 0f 92 4b 20 20 24 |(key%)=k$...K $| 0001bd10 52 65 63 49 6e 66 6f 25 3d 22 53 75 62 66 69 6c |RecInfo%="Subfil| 0001bd20 65 3d 22 2b c3 28 66 69 6c 65 25 29 2b 22 2e 20 |e="+.(file%)+". | 0001bd30 52 65 63 6f 72 64 3d 22 2b c3 28 52 45 43 25 29 |Record="+.(REC%)| 0001bd40 2b 22 2e 20 4b 65 79 3d 22 2b 6b 65 79 24 28 6b |+". Key="+key$(k| 0001bd50 65 79 25 29 0d 0f 93 05 cb 0d 0f 94 26 4c 25 3d |ey%)........&L%=| 0001bd60 a4 74 65 78 74 5f 6c 65 6e 67 74 68 28 6d 61 69 |.text_length(mai| 0001bd70 6e 57 25 2c 73 74 61 72 74 68 65 72 65 25 29 0d |nW%,starthere%).| 0001bd80 0f 95 2d e7 20 41 63 63 65 73 73 25 20 8c 20 f2 |..-. Access% . .| 0001bd90 73 65 74 5f 63 61 72 65 74 28 6d 61 69 6e 57 25 |set_caret(mainW%| 0001bda0 2c 73 74 61 72 74 68 65 72 65 25 29 0d 0f 96 1f |,starthere%)....| 0001bdb0 f2 69 64 65 6e 74 69 66 79 5f 66 69 65 6c 64 28 |.identify_field(| 0001bdc0 73 74 61 72 74 68 65 72 65 25 29 0d 0f 97 14 f2 |starthere%).....| 0001bdd0 75 70 64 61 74 65 5f 63 61 6c 63 73 28 30 29 0d |update_calcs(0).| 0001bde0 0f 98 61 e7 20 a4 73 65 6c 65 63 74 65 64 28 70 |..a. .selected(p| 0001bdf0 61 73 73 57 25 2c 31 36 29 20 8c 20 6c 6f 67 65 |assW%,16) . loge| 0001be00 6e 74 72 79 24 3d 22 53 75 62 66 69 6c 65 20 22 |ntry$="Subfile "| 0001be10 2b c3 28 66 69 6c 65 25 29 2b 22 20 20 22 2b 24 |+.(file%)+" "+$| 0001be20 52 66 25 28 4b 46 25 28 30 2c 30 29 29 2b 22 20 |Rf%(KF%(0,0))+" | 0001be30 22 2b 24 52 66 25 28 4b 46 25 28 30 2c 31 29 29 |"+$Rf%(KF%(0,1))| 0001be40 0d 0f 99 13 f2 72 65 64 72 61 77 28 6d 61 69 6e |.....redraw(main| 0001be50 57 25 29 0d 0f 9a 05 e1 0d 0f 9b 05 3a 0d 0f 9c |W%).........:...| 0001be60 05 3a 0d 0f 9d 47 f4 20 2d 2d 2d 2d 2d 2d 2d 2d |.:...G. --------| 0001be70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 49 63 6f |------------ Ico| 0001be80 6e 20 63 6f 6c 6f 75 72 73 20 2d 2d 2d 2d 2d 2d |n colours ------| 0001be90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 0001bea0 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0f 9e 05 3a 0d 0f |---------....:..| 0001beb0 9f 19 dd 20 f2 63 6f 6c 6f 75 72 28 6b 65 79 25 |... .colour(key%| 0001bec0 2c 74 79 70 65 25 29 0d 0f a0 24 f2 63 68 61 6e |,type%)...$.chan| 0001bed0 67 65 5f 66 69 65 6c 64 5f 63 6f 6c 73 28 6b 65 |ge_field_cols(ke| 0001bee0 79 25 2c 74 79 70 65 25 2c 30 29 0d 0f a1 36 e7 |y%,type%,0)...6.| 0001bef0 20 4b 46 25 28 6b 65 79 25 2c 31 29 3e 30 20 8c | KF%(key%,1)>0 .| 0001bf00 20 f2 63 68 61 6e 67 65 5f 66 69 65 6c 64 5f 63 | .change_field_c| 0001bf10 6f 6c 73 28 6b 65 79 25 2c 74 79 70 65 25 2c 31 |ols(key%,type%,1| 0001bf20 29 0d 0f a2 05 e1 0d 0f a3 05 3a 0d 0f a4 29 dd |).........:...).| 0001bf30 20 f2 63 68 61 6e 67 65 5f 66 69 65 6c 64 5f 63 | .change_field_c| 0001bf40 6f 6c 73 28 6b 65 79 25 2c 74 79 70 65 25 2c 66 |ols(key%,type%,f| 0001bf50 6c 64 25 29 0d 0f a5 17 63 6f 6c 25 3d 66 63 6f |ld%)....col%=fco| 0001bf60 6c 25 28 74 79 70 65 25 2a 32 29 0d 0f a6 64 e7 |l%(type%*2)...d.| 0001bf70 20 74 79 70 65 25 3d 30 20 84 20 6b 65 79 25 3e | type%=0 . key%>| 0001bf80 30 20 84 20 28 6b 65 79 25 3d 30 20 80 20 66 63 |0 . (key%=0 . fc| 0001bf90 6f 6c 25 28 30 29 3d 26 31 37 29 20 8c 20 f2 73 |ol%(0)=&17) . .s| 0001bfa0 65 74 5f 69 63 6f 6e 5f 63 6f 6c 73 28 6d 61 69 |et_icon_cols(mai| 0001bfb0 6e 57 25 2c 64 65 73 63 25 28 4b 46 25 28 6b 65 |nW%,desc%(KF%(ke| 0001bfc0 79 25 2c 66 6c 64 25 29 29 2c 63 6f 6c 25 29 0d |y%,fld%)),col%).| 0001bfd0 0f a7 19 63 6f 6c 25 3d 66 63 6f 6c 25 28 74 79 |...col%=fcol%(ty| 0001bfe0 70 65 25 2a 32 2b 31 29 0d 0f a8 37 63 6f 6c 32 |pe%*2+1)...7col2| 0001bff0 25 3d a4 67 65 74 5f 69 63 6f 6e 5f 63 6f 6c 73 |%=.get_icon_cols| 0001c000 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 4b |(mainW%,field%(K| 0001c010 46 25 28 6b 65 79 25 2c 66 6c 64 25 29 29 29 0d |F%(key%,fld%))).| 0001c020 0f a9 21 e7 20 28 63 6f 6c 32 25 20 80 20 25 31 |..!. (col2% . %1| 0001c030 31 31 31 29 3c 3e 66 63 6f 6c 25 28 36 29 20 8c |111)<>fcol%(6) .| 0001c040 0d 0f aa 67 20 20 e7 20 74 79 70 65 25 3d 30 20 |...g . type%=0 | 0001c050 84 20 6b 65 79 25 3e 30 20 84 20 28 6b 65 79 25 |. key%>0 . (key%| 0001c060 3d 30 20 80 20 66 63 6f 6c 25 28 31 29 3d 26 30 |=0 . fcol%(1)=&0| 0001c070 37 29 20 8c 20 f2 73 65 74 5f 69 63 6f 6e 5f 63 |7) . .set_icon_c| 0001c080 6f 6c 73 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 |ols(mainW%,field| 0001c090 25 28 4b 46 25 28 6b 65 79 25 2c 66 6c 64 25 29 |%(KF%(key%,fld%)| 0001c0a0 29 2c 63 6f 6c 25 29 0d 0f ab 05 cd 0d 0f ac 05 |),col%).........| 0001c0b0 e1 0d 0f ad 05 3a 0d 0f ae 1d dd 20 a4 67 65 74 |.....:..... .get| 0001c0c0 5f 69 63 6f 6e 5f 63 6f 6c 73 28 77 69 25 2c 69 |_icon_cols(wi%,i| 0001c0d0 63 25 29 0d 0f af 3b 21 62 6c 6f 63 6b 25 3d 77 |c%)...;!block%=w| 0001c0e0 69 25 3a 62 6c 6f 63 6b 25 21 34 3d 69 63 25 3a |i%:block%!4=ic%:| 0001c0f0 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e |.. "Wimp_GetIcon| 0001c100 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 0f |State",,block%..| 0001c110 b0 0e 3d 62 6c 6f 63 6b 25 3f 32 37 0d 0f b1 05 |..=block%?27....| 0001c120 3a 0d 0f b2 22 dd 20 f2 73 65 74 5f 69 63 6f 6e |:...". .set_icon| 0001c130 5f 63 6f 6c 73 28 77 69 25 2c 69 63 25 2c 63 6f |_cols(wi%,ic%,co| 0001c140 6c 25 29 0d 0f b3 44 21 62 6c 6f 63 6b 25 3d 77 |l%)...D!block%=w| 0001c150 69 25 3a 62 6c 6f 63 6b 25 21 34 3d 69 63 25 3a |i%:block%!4=ic%:| 0001c160 62 6c 6f 63 6b 25 21 38 3d 28 63 6f 6c 25 3c 3c |block%!8=(col%<<| 0001c170 32 34 29 3a 62 6c 6f 63 6b 25 21 31 32 3d 26 46 |24):block%!12=&F| 0001c180 46 30 30 30 30 30 30 0d 0f b4 22 c8 99 20 22 57 |F000000...".. "W| 0001c190 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 |imp_SetIconState| 0001c1a0 22 2c 2c 62 6c 6f 63 6b 25 0d 0f b5 05 e1 0d 0f |",,block%.......| 0001c1b0 b6 05 3a 0d 0f b7 20 dd 20 f2 64 63 6f 6c 6f 75 |..:... . .dcolou| 0001c1c0 72 28 77 69 25 2c 69 63 25 2c 63 6f 6c 25 2c 66 |r(wi%,ic%,col%,f| 0001c1d0 62 25 29 0d 0f b8 3b 21 62 6c 6f 63 6b 25 3d 77 |b%)...;!block%=w| 0001c1e0 69 25 3a 62 6c 6f 63 6b 25 21 34 3d 69 63 25 3a |i%:block%!4=ic%:| 0001c1f0 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e |.. "Wimp_GetIcon| 0001c200 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 0f |State",,block%..| 0001c210 b9 0c c8 8e 20 66 62 25 20 ca 0d 0f ba 2f 20 20 |.... fb% ..../ | 0001c220 c9 20 30 3a 62 6c 6f 63 6b 25 21 38 3d 63 6f 6c |. 0:block%!8=col| 0001c230 25 3c 3c 32 38 3a 62 6c 6f 63 6b 25 21 31 32 3d |%<<28:block%!12=| 0001c240 26 46 30 30 30 30 30 30 30 0d 0f bb 2f 20 20 c9 |&F0000000.../ .| 0001c250 20 31 3a 62 6c 6f 63 6b 25 21 38 3d 63 6f 6c 25 | 1:block%!8=col%| 0001c260 3c 3c 32 34 3a 62 6c 6f 63 6b 25 21 31 32 3d 26 |<<24:block%!12=&| 0001c270 30 46 30 30 30 30 30 30 0d 0f bc 05 cb 0d 0f bd |0F000000........| 0001c280 22 c8 99 20 22 57 69 6d 70 5f 53 65 74 49 63 6f |".. "Wimp_SetIco| 0001c290 6e 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d |nState",,block%.| 0001c2a0 0f be 05 e1 0d 0f bf 05 3a 0d 0f c0 17 dd 20 f2 |........:..... .| 0001c2b0 72 65 61 64 5f 63 6f 6c 6f 75 72 73 28 66 24 29 |read_colours(f$)| 0001c2c0 0d 0f c1 09 ea 20 69 63 25 0d 0f c2 0b 46 3d 8e |..... ic%....F=.| 0001c2d0 28 66 24 29 0d 0f c3 0f e3 20 69 63 25 3d 30 20 |(f$)..... ic%=0 | 0001c2e0 b8 20 36 0d 0f c4 14 20 20 e8 23 46 2c 66 63 6f |. 6.... .#F,fco| 0001c2f0 6c 25 28 69 63 25 29 0d 0f c5 09 ed 20 69 63 25 |l%(ic%)..... ic%| 0001c300 0d 0f c6 13 6e 63 6f 6c 25 28 29 3d 66 63 6f 6c |....ncol%()=fcol| 0001c310 25 28 29 0d 0f c7 12 f2 63 6c 6f 73 65 5f 66 69 |%().....close_fi| 0001c320 6c 65 28 46 29 0d 0f c8 05 e1 0d 0f c9 05 3a 0d |le(F).........:.| 0001c330 0f ca 14 dd 20 f2 77 72 69 74 65 5f 63 6f 6c 6f |.... .write_colo| 0001c340 75 72 73 0d 0f cb 09 ea 20 69 63 25 0d 0f cc 1e |urs..... ic%....| 0001c350 46 3d ad 28 24 64 61 74 61 62 61 73 65 25 2b 22 |F=.($database%+"| 0001c360 2e 43 6f 6c 6f 75 72 73 22 29 0d 0f cd 0f e3 20 |.Colours")..... | 0001c370 69 63 25 3d 30 20 b8 20 36 0d 0f ce 14 20 20 f1 |ic%=0 . 6.... .| 0001c380 23 46 2c 66 63 6f 6c 25 28 69 63 25 29 0d 0f cf |#F,fcol%(ic%)...| 0001c390 09 ed 20 69 63 25 0d 0f d0 12 f2 63 6c 6f 73 65 |.. ic%.....close| 0001c3a0 5f 66 69 6c 65 28 46 29 0d 0f d1 05 e1 0d 0f d2 |_file(F)........| 0001c3b0 05 3a 0d 0f d3 1d dd 20 a4 66 69 6e 64 28 53 24 |.:..... .find(S$| 0001c3c0 2c 6b 65 79 25 2c 6d 25 2c 64 69 73 70 25 29 0d |,key%,m%,disp%).| 0001c3d0 0f d4 20 ea 20 50 25 2c 46 25 2c 48 25 2c 6e 75 |.. . P%,F%,H%,nu| 0001c3e0 6d 25 2c 61 62 6f 72 74 25 2c 63 6f 6e 64 24 0d |m%,abort%,cond$.| 0001c3f0 0f d5 1f e7 20 ac 20 63 61 73 65 25 28 6b 65 79 |.... . case%(key| 0001c400 25 29 20 8c 20 53 24 3d a4 75 28 53 24 29 0d 0f |%) . S$=.u(S$)..| 0001c410 d6 12 e7 20 c0 53 24 2c 31 29 3d 22 23 22 20 8c |... .S$,1)="#" .| 0001c420 0d 0f d7 13 20 20 f2 63 68 65 63 6b 5f 63 68 61 |.... .check_cha| 0001c430 6e 67 65 0d 0f d8 14 20 20 52 45 43 25 3d bb 28 |nge.... REC%=.(| 0001c440 c1 53 24 2c 32 29 29 0d 0f d9 1c 20 20 e7 20 52 |.S$,2)).... . R| 0001c450 45 43 25 3e 3d 30 20 80 20 52 45 43 25 3c 52 41 |EC%>=0 . REC%<RA| 0001c460 25 20 8c 0d 0f da 28 20 20 20 20 f2 72 65 61 64 |% ....( .read| 0001c470 28 66 69 65 6c 64 73 25 2c b9 2c 52 45 43 25 2c |(fields%,.,REC%,| 0001c480 24 64 61 74 61 62 61 73 65 25 29 0d 0f db 21 20 |$database%)...! | 0001c490 20 20 20 53 24 3d 6b 65 79 24 28 6b 65 79 25 29 | S$=key$(key%)| 0001c4a0 3a 48 25 3d 31 3a 6e 75 6d 25 3d b9 0d 0f dc 33 |:H%=1:num%=....3| 0001c4b0 20 20 20 20 f2 73 65 6c 65 63 74 28 6b 65 79 70 | .select(keyp| 0001c4c0 61 64 57 25 2c 32 35 29 3a f2 64 65 73 65 6c 65 |adW%,25):.desele| 0001c4d0 63 74 28 6b 65 79 70 61 64 57 25 2c 32 34 29 0d |ct(keypadW%,24).| 0001c4e0 0f dd 2d 20 20 20 20 cc 20 f2 73 6f 66 74 65 72 |..- . .softer| 0001c4f0 72 6f 72 28 22 20 28 22 2b 53 24 2b 22 29 22 2c |ror(" ("+S$+")",| 0001c500 35 36 29 3a 61 62 6f 72 74 25 3d b9 0d 0f de 07 |56):abort%=.....| 0001c510 20 20 cd 0d 0f df 05 cd 0d 0f e0 13 e7 20 61 62 | ........... ab| 0001c520 6f 72 74 25 20 8c 3d 61 64 64 72 0d 0f e1 14 76 |ort% .=addr....v| 0001c530 61 6c 24 3d a4 74 79 70 65 28 6b 65 79 25 29 0d |al$=.type(key%).| 0001c540 0f e2 12 e7 20 76 61 6c 24 3d 22 56 41 4c 22 20 |.... val$="VAL" | 0001c550 8c 0d 0f e3 13 20 20 6b 6c 25 3d 4b 4c 25 28 6b |..... kl%=KL%(k| 0001c560 65 79 25 29 0d 0f e4 07 20 20 cc 0d 0f e5 11 20 |ey%).... ..... | 0001c570 20 50 25 3d a7 53 24 2c 22 20 22 29 0d 0f e6 1b | P%=.S$," ")....| 0001c580 20 20 e7 20 50 25 3e 30 20 8c 20 53 24 3d c0 53 | . P%>0 . S$=.S| 0001c590 24 2c 50 25 2d 31 29 0d 0f e7 0f 20 20 6b 6c 25 |$,P%-1).... kl%| 0001c5a0 3d a9 28 53 24 29 0d 0f e8 05 cd 0d 0f e9 1c 50 |=.(S$).........P| 0001c5b0 25 3d a4 73 65 61 72 63 68 28 53 24 2c 6b 65 79 |%=.search(S$,key| 0001c5c0 25 2c 31 2b 48 25 29 0d 0f ea 25 e7 20 50 25 3c |%,1+H%)...%. P%<| 0001c5d0 30 20 80 20 a4 73 65 6c 65 63 74 65 64 28 6b 65 |0 . .selected(ke| 0001c5e0 79 70 61 64 57 25 2c 32 35 29 20 8c 0d 0f eb 0e |ypadW%,25) .....| 0001c5f0 20 20 46 25 3d 66 69 6c 65 25 0d 0f ec 07 20 20 | F%=file%.... | 0001c600 f5 0d 0f ed 1b 20 20 20 20 66 69 6c 65 25 3d 28 |..... file%=(| 0001c610 66 69 6c 65 25 2b 31 29 20 83 20 36 0d 0f ee 17 |file%+1) . 6....| 0001c620 20 20 20 20 74 6f 70 3d 38 2a 66 69 6c 65 25 2b | top=8*file%+| 0001c630 4c 48 25 0d 0f ef 20 20 20 20 20 50 25 3d a4 73 |LH%... P%=.s| 0001c640 65 61 72 63 68 28 53 24 2c 6b 65 79 25 2c 31 2b |earch(S$,key%,1+| 0001c650 48 25 29 0d 0f f0 17 20 20 fd 20 50 25 3e 30 20 |H%).... . P%>0 | 0001c660 84 20 66 69 6c 65 25 3d 46 25 0d 0f f1 05 cd 0d |. file%=F%......| 0001c670 0f f2 73 e7 20 76 61 6c 24 3d 22 56 41 4c 22 20 |..s. val$="VAL" | 0001c680 8c 20 63 6f 6e 64 24 3d 22 56 41 4c 28 24 28 21 |. cond$="VAL($(!| 0001c690 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 79 25 29 |keyanchor%(key%)| 0001c6a0 2b 50 25 2b 38 29 29 3d 56 41 4c 28 53 24 29 22 |+P%+8))=VAL(S$)"| 0001c6b0 20 8b 20 63 6f 6e 64 24 3d 22 4c 45 46 54 24 28 | . cond$="LEFT$(| 0001c6c0 24 28 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 |$(!keyanchor%(ke| 0001c6d0 79 25 29 2b 50 25 2b 38 29 2c 6b 6c 25 29 3d 53 |y%)+P%+8),kl%)=S| 0001c6e0 24 22 0d 0f f3 0e 6d 61 74 63 68 65 73 25 3d 30 |$"....matches%=0| 0001c6f0 0d 0f f4 0a c8 8e 20 b9 20 ca 0d 0f f5 24 20 20 |...... . ....$ | 0001c700 c9 20 50 25 3e 3d 30 20 80 20 6e 75 6d 25 3a 52 |. P%>=0 . num%:R| 0001c710 65 63 46 25 3d b9 3a 61 64 64 72 3d 50 25 0d 0f |ecF%=.:addr=P%..| 0001c720 f6 15 20 20 c9 20 50 25 3e 3d 30 3a 52 65 63 46 |.. . P%>=0:RecF| 0001c730 25 3d b9 0d 0f f7 11 20 20 c8 95 20 a0 28 63 6f |%=..... .. .(co| 0001c740 6e 64 24 29 0d 0f f8 20 20 20 20 20 50 25 3d a4 |nd$)... P%=.| 0001c750 6e 65 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 50 |neighbour(key%,P| 0001c760 25 2c 30 29 0d 0f f9 07 20 20 ce 0d 0f fa 5c 20 |%,0).... ....\ | 0001c770 20 50 25 3d a4 6e 65 69 67 68 62 6f 75 72 28 6b | P%=.neighbour(k| 0001c780 65 79 25 2c 50 25 2c 31 29 3a 61 64 64 72 3d 50 |ey%,P%,1):addr=P| 0001c790 25 3a f4 20 23 23 23 20 53 63 61 6e 20 62 61 63 |%:. ### Scan bac| 0001c7a0 6b 20 74 6f 20 46 49 52 53 54 20 6d 61 74 63 68 |k to FIRST match| 0001c7b0 20 26 20 70 6f 69 6e 74 20 61 64 64 72 20 61 74 | & point addr at| 0001c7c0 20 69 74 20 23 23 23 0d 0f fb 11 20 20 c8 95 20 | it ###.... .. | 0001c7d0 a0 28 63 6f 6e 64 24 29 0d 0f fc 13 20 20 20 20 |.(cond$).... | 0001c7e0 6d 61 74 63 68 65 73 25 2b 3d 31 0d 0f fd 20 20 |matches%+=1... | 0001c7f0 20 20 20 50 25 3d a4 6e 65 69 67 68 62 6f 75 72 | P%=.neighbour| 0001c800 28 6b 65 79 25 2c 50 25 2c 31 29 0d 0f fe 07 20 |(key%,P%,1).... | 0001c810 20 ce 0d 0f ff 2d 20 20 c9 20 6e 75 6d 25 3a f2 | ....- . num%:.| 0001c820 73 6f 66 74 65 72 72 6f 72 28 22 20 28 23 22 2b |softerror(" (#"+| 0001c830 c3 28 52 45 43 25 29 2b 22 29 22 2c 35 35 29 0d |.(REC%)+")",55).| 0001c840 10 00 29 20 20 7f 3a ef 20 37 3a 66 6c 61 73 68 |..) .:. 7:flash| 0001c850 25 3d 4b 46 25 28 6b 65 79 25 2c 30 29 3a 61 64 |%=KF%(key%,0):ad| 0001c860 64 72 3d 94 28 50 25 29 0d 10 01 05 cb 0d 10 02 |dr=.(P%)........| 0001c870 46 24 a4 74 65 78 74 28 6b 65 79 70 61 64 57 25 |F$.text(keypadW%| 0001c880 2c 33 36 29 3d c3 28 6d 61 74 63 68 65 73 25 29 |,36)=.(matches%)| 0001c890 2b 22 20 66 6f 75 6e 64 22 3a f2 72 65 64 72 61 |+" found":.redra| 0001c8a0 77 5f 69 63 6f 6e 28 6b 65 79 70 61 64 57 25 2c |w_icon(keypadW%,| 0001c8b0 33 36 29 0d 10 03 21 e7 20 64 69 73 70 25 20 8c |36)...!. disp% .| 0001c8c0 20 f2 64 69 73 70 6c 61 79 28 6b 65 79 25 2c 61 | .display(key%,a| 0001c8d0 64 64 72 29 0d 10 04 09 3d 61 64 64 72 0d 10 05 |ddr)....=addr...| 0001c8e0 05 3a 0d 10 06 1b dd 20 f2 67 65 74 5f 69 74 5f |.:..... .get_it_| 0001c8f0 69 6e 28 66 69 6c 65 6e 61 6d 65 24 29 0d 10 07 |in(filename$)...| 0001c900 29 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c |).. "OS_File",5,| 0001c910 66 69 6c 65 6e 61 6d 65 24 20 b8 20 64 25 2c 2c |filename$ . d%,,| 0001c920 66 74 79 70 65 25 0d 10 08 39 66 74 79 70 65 25 |ftype%...9ftype%| 0001c930 3d 28 66 74 79 70 65 25 3e 3e 38 29 20 80 20 26 |=(ftype%>>8) . &| 0001c940 46 46 46 3a 77 69 25 3d 62 6c 6f 63 6b 25 21 32 |FFF:wi%=block%!2| 0001c950 30 3a 69 63 25 3d 62 6c 6f 63 6b 25 21 32 34 0d |0:ic%=block%!24.| 0001c960 10 09 0f c8 8e 20 66 74 79 70 65 25 20 ca 0d 10 |..... ftype% ...| 0001c970 0a 74 20 20 c9 20 26 37 66 31 3a e7 20 4c 61 73 |.t . &7f1:. Las| 0001c980 74 54 61 62 6c 65 25 3d 4d 61 78 54 61 62 73 25 |tTable%=MaxTabs%| 0001c990 20 8c 20 f2 73 6f 66 74 65 72 72 6f 72 28 c3 28 | . .softerror(.(| 0001c9a0 4d 61 78 54 61 62 73 25 2b 31 29 2c 33 32 29 20 |MaxTabs%+1),32) | 0001c9b0 8b 20 f2 64 72 61 67 5f 74 61 62 6c 65 28 66 69 |. .drag_table(fi| 0001c9c0 6c 65 6e 61 6d 65 24 29 3a f2 73 68 6f 77 5f 74 |lename$):.show_t| 0001c9d0 61 62 6c 65 28 54 61 62 6c 65 6e 75 6d 62 65 72 |able(Tablenumber| 0001c9e0 25 29 0d 10 0b 27 20 20 c9 20 26 37 66 33 3a f2 |%)...' . &7f3:.| 0001c9f0 64 72 61 67 5f 73 65 6c 65 63 74 69 6f 6e 28 66 |drag_selection(f| 0001ca00 69 6c 65 6e 61 6d 65 24 29 0d 10 0c 23 20 20 c9 |ilename$)...# .| 0001ca10 20 26 37 66 34 3a f2 64 72 61 67 5f 71 75 65 72 | &7f4:.drag_quer| 0001ca20 79 28 66 69 6c 65 6e 61 6d 65 24 29 0d 10 0d 25 |y(filename$)...%| 0001ca30 20 20 c9 20 26 37 66 35 3a f2 64 72 61 67 5f 6f | . &7f5:.drag_o| 0001ca40 70 74 69 6f 6e 73 28 66 69 6c 65 6e 61 6d 65 24 |ptions(filename$| 0001ca50 29 0d 10 0e 2b 20 20 c9 20 26 64 66 65 3a f2 73 |)...+ . &dfe:.s| 0001ca60 74 61 72 74 5f 69 6d 70 6f 72 74 28 22 43 53 56 |tart_import("CSV| 0001ca70 22 2c 62 6c 6f 63 6b 25 21 32 30 29 0d 10 0f 4b |",block%!20)...K| 0001ca80 20 20 c9 20 26 66 66 39 2c 26 61 66 66 3a f2 74 | . &ff9,&aff:.t| 0001ca90 72 61 6e 73 66 65 72 5f 62 6c 6f 62 28 62 6c 6f |ransfer_blob(blo| 0001caa0 63 6b 25 21 32 30 2c 62 6c 6f 63 6b 25 21 32 34 |ck%!20,block%!24| 0001cab0 2c 52 45 43 25 2c 66 69 6c 65 6e 61 6d 65 24 2c |,REC%,filename$,| 0001cac0 66 74 79 70 65 25 29 0d 10 10 0d 20 20 c9 20 26 |ftype%).... . &| 0001cad0 66 66 66 3a 0d 10 11 2f 20 20 46 3d 8e 28 66 69 |fff:.../ F=.(fi| 0001cae0 6c 65 6e 61 6d 65 24 29 3a 68 65 61 64 65 72 24 |lename$):header$| 0001caf0 3d be 23 46 3a f2 63 6c 6f 73 65 5f 66 69 6c 65 |=.#F:.close_file| 0001cb00 28 46 29 0d 10 12 0e 20 20 c8 8e 20 77 69 25 20 |(F).... .. wi% | 0001cb10 ca 0d 10 13 14 20 20 20 20 c9 20 6d 61 69 6e 57 |..... . mainW| 0001cb20 25 2c 2d 31 3a 0d 10 14 0e 20 20 20 20 c8 8e 20 |%,-1:.... .. | 0001cb30 b9 20 ca 0d 10 15 28 20 20 20 20 20 20 c9 20 68 |. ....( . h| 0001cb40 65 61 64 65 72 24 3d 22 21 53 43 52 49 50 54 20 |eader$="!SCRIPT | 0001cb50 50 4f 57 45 52 42 41 53 45 22 3a 0d 10 16 2f 20 |POWERBASE":.../ | 0001cb60 20 20 20 20 20 e7 20 70 72 65 73 65 6e 74 25 3d | . present%=| 0001cb70 37 3a f2 65 78 65 63 75 74 65 5f 66 69 6c 65 28 |7:.execute_file(| 0001cb80 66 69 6c 65 6e 61 6d 65 24 29 0d 10 17 4b 20 20 |filename$)...K | 0001cb90 20 20 20 20 c9 20 69 63 25 3e 30 3a f2 74 72 61 | . ic%>0:.tra| 0001cba0 6e 73 66 65 72 5f 62 6c 6f 62 28 62 6c 6f 63 6b |nsfer_blob(block| 0001cbb0 25 21 32 30 2c 62 6c 6f 63 6b 25 21 32 34 2c 52 |%!20,block%!24,R| 0001cbc0 45 43 25 2c 66 69 6c 65 6e 61 6d 65 24 2c 66 74 |EC%,filename$,ft| 0001cbd0 79 70 65 25 29 0d 10 18 25 20 20 20 20 20 20 7f |ype%)...% .| 0001cbe0 3a f2 73 74 61 72 74 5f 69 6d 70 6f 72 74 28 22 |:.start_import("| 0001cbf0 74 65 78 74 22 2c 77 69 25 29 0d 10 19 0b 20 20 |text",wi%).... | 0001cc00 20 20 cb 20 20 0d 10 1a 26 20 20 20 20 7f 3a e7 | . ...& .:.| 0001cc10 20 63 75 73 74 6f 6d 69 73 65 25 20 8c 20 f2 73 | customise% . .s| 0001cc20 70 65 63 69 61 6c 5f 64 72 6f 70 0d 10 1b 07 20 |pecial_drop.... | 0001cc30 20 cb 0d 10 1c 08 20 20 7f 3a 0d 10 1d 0e 20 20 | ..... .:.... | 0001cc40 c8 8e 20 77 69 25 20 ca 0d 10 1e 13 20 20 20 20 |.. wi% ..... | 0001cc50 c9 20 72 65 66 6f 72 6d 57 25 3a 0d 10 1f 14 20 |. reformW%:.... | 0001cc60 20 20 20 c8 8e 20 72 65 66 6f 72 6d 24 20 ca 0d | .. reform$ ..| 0001cc70 10 20 31 20 20 20 20 20 20 c9 20 22 4d 65 72 67 |. 1 . "Merg| 0001cc80 65 22 3a f2 6d 65 72 67 65 5f 66 69 6c 65 73 28 |e":.merge_files(| 0001cc90 66 69 6c 65 6e 61 6d 65 24 2c 66 69 6c 65 25 29 |filename$,file%)| 0001cca0 0d 10 21 2b 20 20 20 20 20 20 c9 20 22 52 65 66 |..!+ . "Ref| 0001ccb0 6f 72 6d 61 74 22 3a f2 72 65 66 6f 72 6d 61 74 |ormat":.reformat| 0001ccc0 28 66 69 6c 65 6e 61 6d 65 24 29 0d 10 22 09 20 |(filename$)..". | 0001ccd0 20 20 20 cb 0d 10 23 0a 20 20 20 20 7f 3a 0d 10 | ...#. .:..| 0001cce0 24 10 20 20 20 20 e7 20 64 25 3d 32 20 8c 0d 10 |$. . d%=2 ...| 0001ccf0 25 23 20 20 20 20 20 20 c8 8e 20 c0 a4 6c 65 61 |%# .. ..lea| 0001cd00 66 28 66 69 6c 65 6e 61 6d 65 24 29 2c 31 29 20 |f(filename$),1) | 0001cd10 ca 0d 10 26 12 20 20 20 20 20 20 20 20 c9 20 22 |...&. . "| 0001cd20 21 22 3a 0d 10 27 33 20 20 20 20 20 20 20 20 f4 |!":..'3 .| 0001cd30 20 23 23 23 20 49 73 20 69 74 20 61 6e 20 49 6d | ### Is it an Im| 0001cd40 70 72 65 73 73 69 6f 6e 20 64 6f 63 75 6d 65 6e |pression documen| 0001cd50 74 3f 20 23 23 23 0d 10 28 35 20 20 20 20 20 20 |t? ###..(5 | 0001cd60 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 | .. "OS_File",5| 0001cd70 2c 66 69 6c 65 6e 61 6d 65 24 2b 22 2e 21 44 6f |,filename$+".!Do| 0001cd80 63 44 61 74 61 22 20 b8 20 64 25 0d 10 29 14 20 |cData" . d%..). | 0001cd90 20 20 20 20 20 20 20 e7 20 64 25 3d 31 20 8c 0d | . d%=1 ..| 0001cda0 10 2a 28 20 20 20 20 20 20 20 20 20 20 64 6f 63 |.*( doc| 0001cdb0 75 6d 65 6e 74 24 3d a4 6c 65 61 66 28 66 69 6c |ument$=.leaf(fil| 0001cdc0 65 6e 61 6d 65 24 29 0d 10 2b 3b 20 20 20 20 20 |ename$)..+; | 0001cdd0 20 20 20 20 20 e7 20 c0 64 6f 63 75 6d 65 6e 74 | . .document| 0001cde0 24 2c 31 29 3d 22 21 22 20 8c 20 64 6f 63 75 6d |$,1)="!" . docum| 0001cdf0 65 6e 74 24 3d c1 64 6f 63 75 6d 65 6e 74 24 2c |ent$=.document$,| 0001ce00 32 29 0d 10 2c 3e 20 20 20 20 20 20 20 20 20 20 |2)..,> | 0001ce10 62 6c 6f 63 6b 25 21 30 3d 32 35 36 3a 62 6c 6f |block%!0=256:blo| 0001ce20 63 6b 25 21 31 32 3d 30 3a 62 6c 6f 63 6b 25 21 |ck%!12=0:block%!| 0001ce30 31 36 3d 35 3a 62 6c 6f 63 6b 25 21 32 30 3d 30 |16=5:block%!20=0| 0001ce40 0d 10 2d 3d 20 20 20 20 20 20 20 20 20 20 62 6c |..-= bl| 0001ce50 6f 63 6b 25 21 32 34 3d 30 3a 62 6c 6f 63 6b 25 |ock%!24=0:block%| 0001ce60 21 32 38 3d 30 3a 62 6c 6f 63 6b 25 21 33 32 3d |!28=0:block%!32=| 0001ce70 30 3a 62 6c 6f 63 6b 25 21 33 36 3d 30 0d 10 2e |0:block%!36=0...| 0001ce80 34 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b |4 block| 0001ce90 25 21 34 30 3d 26 32 30 30 30 3a 24 28 62 6c 6f |%!40=&2000:$(blo| 0001cea0 63 6b 25 2b 34 34 29 3d 66 69 6c 65 6e 61 6d 65 |ck%+44)=filename| 0001ceb0 24 0d 10 2f 2f 20 20 20 20 20 20 20 20 20 20 c8 |$..// .| 0001cec0 99 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 |. "Wimp_SendMess| 0001ced0 61 67 65 22 2c 31 38 2c 62 6c 6f 63 6b 25 2c 30 |age",18,block%,0| 0001cee0 0d 10 30 36 20 20 20 20 20 20 20 20 20 20 6d 65 |..06 me| 0001cef0 72 67 65 77 69 74 68 24 3d 22 49 6d 70 72 65 73 |rgewith$="Impres| 0001cf00 73 69 6f 6e 22 3a 49 6d 70 72 65 66 25 3d 62 6c |sion":Impref%=bl| 0001cf10 6f 63 6b 25 21 38 0d 10 31 38 20 20 20 20 20 20 |ock%!8..18 | 0001cf20 20 20 20 20 24 4d 65 72 67 65 54 69 74 6c 65 25 | $MergeTitle%| 0001cf30 3d 22 44 61 74 61 20 6d 65 72 67 65 20 77 69 74 |="Data merge wit| 0001cf40 68 20 22 2b 6d 65 72 67 65 77 69 74 68 24 0d 10 |h "+mergewith$..| 0001cf50 32 0f 20 20 20 20 20 20 20 20 20 20 cc 0d 10 33 |2. ...3| 0001cf60 36 20 20 20 20 20 20 20 20 20 20 f4 20 23 23 23 |6 . ###| 0001cf70 20 49 73 20 69 74 20 61 20 50 6f 77 65 72 62 61 | Is it a Powerba| 0001cf80 73 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 3f 20 |se application? | 0001cf90 23 23 23 0d 10 34 36 20 20 20 20 20 20 20 20 20 |###..46 | 0001cfa0 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c | .. "OS_File",5,| 0001cfb0 66 69 6c 65 6e 61 6d 65 24 2b 22 2e 49 6e 64 69 |filename$+".Indi| 0001cfc0 63 65 73 22 20 b8 20 64 25 0d 10 35 16 20 20 20 |ces" . d%..5. | 0001cfd0 20 20 20 20 20 20 20 e7 20 64 25 3d 32 20 8c 0d | . d%=2 ..| 0001cfe0 10 36 27 20 20 20 20 20 20 20 20 20 20 20 20 e7 |.6' .| 0001cff0 20 70 72 65 73 65 6e 74 25 3e 30 20 8c 20 f2 65 | present%>0 . .e| 0001d000 78 69 74 28 30 29 0d 10 37 28 20 20 20 20 20 20 |xit(0)..7( | 0001d010 20 20 20 20 20 20 24 54 69 74 6c 65 25 3d a4 6c | $Title%=.l| 0001d020 65 61 66 28 66 69 6c 65 6e 61 6d 65 24 29 0d 10 |eaf(filename$)..| 0001d030 38 26 20 20 20 20 20 20 20 20 20 20 20 20 f2 6f |8& .o| 0001d040 70 65 6e 5f 66 69 6c 65 73 28 66 69 6c 65 6e 61 |pen_files(filena| 0001d050 6d 65 24 29 0d 10 39 0f 20 20 20 20 20 20 20 20 |me$)..9. | 0001d060 20 20 cd 0d 10 3a 0d 20 20 20 20 20 20 20 20 cd | ...:. .| 0001d070 0d 10 3b 0e 20 20 20 20 20 20 20 20 7f 3a 0d 10 |..;. .:..| 0001d080 3c 37 20 20 20 20 20 20 20 20 f4 20 23 23 23 20 |<7 . ### | 0001d090 49 74 27 73 20 61 6e 20 6f 72 64 69 6e 61 72 79 |It's an ordinary| 0001d0a0 20 64 69 72 65 63 74 6f 72 79 20 66 6f 6c 64 65 | directory folde| 0001d0b0 72 20 23 23 23 0d 10 3d 41 20 20 20 20 20 20 20 |r ###..=A | 0001d0c0 20 f2 74 72 61 6e 73 66 65 72 5f 62 6c 6f 62 28 | .transfer_blob(| 0001d0d0 62 6c 6f 63 6b 25 21 32 30 2c 62 6c 6f 63 6b 25 |block%!20,block%| 0001d0e0 21 32 34 2c 52 45 43 25 2c 66 69 6c 65 6e 61 6d |!24,REC%,filenam| 0001d0f0 65 24 2c 2d 31 29 0d 10 3e 0b 20 20 20 20 20 20 |e$,-1)..>. | 0001d100 cb 0d 10 3f 09 20 20 20 20 cd 0d 10 40 07 20 20 |...?. ...@. | 0001d110 cb 0d 10 41 05 cb 0d 10 42 05 e1 0d 10 43 05 3a |...A....B....C.:| 0001d120 0d 10 44 15 dd 20 f2 6f 70 65 6e 5f 66 69 6c 65 |..D.. .open_file| 0001d130 73 28 66 24 29 0d 10 45 11 ea 20 49 25 2c 4a 25 |s(f$)..E.. I%,J%| 0001d140 2c 46 25 2c 41 24 0d 10 46 23 c8 99 20 22 4f 53 |,F%,A$..F#.. "OS| 0001d150 5f 46 69 6c 65 22 2c 35 2c 66 24 2b 22 2e 44 62 |_File",5,f$+".Db| 0001d160 61 73 65 22 20 b8 20 64 25 0d 10 47 22 e7 20 64 |ase" . d%..G". d| 0001d170 25 3d 31 20 8c 20 85 20 66 61 74 61 6c 5f 65 72 |%=1 . . fatal_er| 0001d180 72 25 2c a4 6d 73 67 28 34 32 29 0d 10 48 26 c8 |r%,.msg(42)..H&.| 0001d190 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c 66 24 |. "OS_File",5,f$| 0001d1a0 2b 22 2e 44 61 74 61 62 61 73 65 22 20 b8 20 64 |+".Database" . d| 0001d1b0 25 0d 10 49 22 e7 20 64 25 3d 31 20 8c 20 70 72 |%..I". d%=1 . pr| 0001d1c0 65 73 65 6e 74 25 3d 70 72 65 73 65 6e 74 25 20 |esent%=present% | 0001d1d0 84 20 34 0d 10 4a 28 c8 99 20 22 4f 53 5f 46 69 |. 4..J(.. "OS_Fi| 0001d1e0 6c 65 22 2c 35 2c 66 24 2b 22 2e 50 72 69 6d 61 |le",5,f$+".Prima| 0001d1f0 72 79 4b 65 79 22 20 b8 20 64 25 0d 10 4b 22 e7 |ryKey" . d%..K".| 0001d200 20 64 25 3d 31 20 8c 20 70 72 65 73 65 6e 74 25 | d%=1 . present%| 0001d210 3d 70 72 65 73 65 6e 74 25 20 84 20 32 0d 10 4c |=present% . 2..L| 0001d220 22 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c |".. "OS_File",5,| 0001d230 66 24 2b 22 2e 46 6f 72 6d 22 20 b8 20 64 25 0d |f$+".Form" . d%.| 0001d240 10 4d 22 e7 20 64 25 3d 31 20 8c 20 70 72 65 73 |.M". d%=1 . pres| 0001d250 65 6e 74 25 3d 70 72 65 73 65 6e 74 25 20 84 20 |ent%=present% . | 0001d260 31 0d 10 4e 30 c8 99 20 22 4f 53 5f 46 69 6c 65 |1..N0.. "OS_File| 0001d270 22 2c 35 2c 66 24 2b 22 2e 55 73 72 53 70 72 69 |",5,f$+".UsrSpri| 0001d280 74 65 73 22 20 b8 20 64 25 2c 2c 2c 2c 6c 65 6e |tes" . d%,,,,len| 0001d290 25 0d 10 4f 0c e7 20 64 25 3d 31 20 8c 0d 10 50 |%..O.. d%=1 ...P| 0001d2a0 35 20 20 f2 63 72 65 61 74 65 5f 6e 61 6d 65 64 |5 .create_named| 0001d2b0 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 6c |_sliding_block(l| 0001d2c0 6f 67 6f 61 6e 63 68 6f 72 25 2c 6c 65 6e 25 2b |ogoanchor%,len%+| 0001d2d0 38 29 0d 10 51 26 20 20 62 61 73 65 25 3d 21 6c |8)..Q& base%=!l| 0001d2e0 6f 67 6f 61 6e 63 68 6f 72 25 3a 21 62 61 73 65 |ogoanchor%:!base| 0001d2f0 25 3d 6c 65 6e 25 2b 34 0d 10 52 2f 20 20 c8 99 |%=len%+4..R/ ..| 0001d300 20 22 4f 53 5f 46 69 6c 65 22 2c 32 35 35 2c 66 | "OS_File",255,f| 0001d310 24 2b 22 2e 55 73 72 53 70 72 69 74 65 73 22 2c |$+".UsrSprites",| 0001d320 62 61 73 65 25 2b 34 0d 10 53 14 20 20 6c 6f 67 |base%+4..S. log| 0001d330 6f 73 6c 6f 61 64 65 64 25 3d b9 0d 10 54 05 cd |osloaded%=...T..| 0001d340 0d 10 55 23 c8 99 20 22 4f 53 5f 43 4c 49 22 2c |..U#.. "OS_CLI",| 0001d350 22 53 65 74 20 44 42 61 73 65 24 44 69 72 20 22 |"Set DBase$Dir "| 0001d360 2b 66 24 0d 10 56 11 24 64 61 74 61 62 61 73 65 |+f$..V.$database| 0001d370 25 3d 66 24 0d 10 57 11 c8 8e 20 70 72 65 73 65 |%=f$..W... prese| 0001d380 6e 74 25 20 ca 0d 10 58 31 20 20 c9 20 30 2c 31 |nt% ...X1 . 0,1| 0001d390 2c 35 3a 41 63 63 65 73 73 25 3d b9 3a 4d 6f 64 |,5:Access%=.:Mod| 0001d3a0 69 66 79 25 3d b9 3a f2 72 65 73 75 6d 65 5f 6f |ify%=.:.resume_o| 0001d3b0 70 65 6e 69 6e 67 0d 10 59 15 20 20 c9 20 37 3a |pening..Y. . 7:| 0001d3c0 f2 61 63 63 65 73 73 28 66 24 29 0d 10 5a 25 20 |.access(f$)..Z% | 0001d3d0 20 7f 3a f2 77 69 6d 70 5f 65 72 72 6f 72 28 b9 | .:.wimp_error(.| 0001d3e0 2c 32 35 34 2c 30 2c a4 6d 73 67 28 32 34 29 29 |,254,0,.msg(24))| 0001d3f0 0d 10 5b 05 cb 0d 10 5c 05 e1 0d 10 5d 05 3a 0d |..[....\....].:.| 0001d400 10 5e 11 dd 20 f2 61 63 63 65 73 73 28 66 24 29 |.^.. .access(f$)| 0001d410 0d 10 5f 14 ea 20 4c 25 2c 50 25 2c 6b 65 79 62 |.._.. L%,P%,keyb| 0001d420 61 73 65 25 0d 10 60 16 46 3d 8e 28 66 24 2b 22 |ase%..`.F=.(f$+"| 0001d430 2e 43 6f 6c 6f 75 72 73 22 29 0d 10 61 28 e7 20 |.Colours")..a(. | 0001d440 46 3d 30 20 8c 20 85 20 66 61 74 61 6c 5f 65 72 |F=0 . . fatal_er| 0001d450 72 25 2c 66 24 2b 22 2e 22 2b a4 6d 73 67 28 31 |r%,f$+"."+.msg(1| 0001d460 38 29 0d 10 62 0a cf 23 46 3d 33 35 0d 10 63 20 |8)..b..#F=35..c | 0001d470 e8 23 46 2c 53 24 3a 24 52 65 61 64 25 3d a4 65 |.#F,S$:$Read%=.e| 0001d480 6e 63 72 79 70 74 28 53 24 2c a3 29 0d 10 64 21 |ncrypt(S$,.)..d!| 0001d490 e8 23 46 2c 53 24 3a 24 57 72 69 74 65 25 3d a4 |.#F,S$:$Write%=.| 0001d4a0 65 6e 63 72 79 70 74 28 53 24 2c a3 29 0d 10 65 |encrypt(S$,.)..e| 0001d4b0 23 e8 23 46 2c 53 24 3a 24 4d 61 6e 61 67 65 72 |#.#F,S$:$Manager| 0001d4c0 25 3d a4 65 6e 63 72 79 70 74 28 53 24 2c a3 29 |%=.encrypt(S$,.)| 0001d4d0 0d 10 66 0f e3 20 49 25 3d 39 20 b8 20 31 35 0d |..f.. I%=9 . 15.| 0001d4e0 10 67 18 20 20 f2 73 65 6c 65 63 74 28 70 61 73 |.g. .select(pas| 0001d4f0 73 57 25 2c 49 25 29 0d 10 68 08 ed 20 49 25 0d |sW%,I%)..h.. I%.| 0001d500 10 69 18 f2 64 65 73 65 6c 65 63 74 28 70 61 73 |.i..deselect(pas| 0001d510 73 57 25 2c 31 36 29 0d 10 6a 08 49 25 3d 39 0d |sW%,16)..j.I%=9.| 0001d520 10 6b 14 c8 95 20 49 25 3c 31 37 20 80 20 ac 20 |.k... I%<17 . . | 0001d530 c5 23 46 0d 10 6c 24 20 20 e8 23 46 2c 5a 25 3a |.#F..l$ .#F,Z%:| 0001d540 f2 73 65 74 5f 69 63 6f 6e 28 70 61 73 73 57 25 |.set_icon(passW%| 0001d550 2c 49 25 2c 5a 25 29 0d 10 6d 0b 20 20 49 25 2b |,I%,Z%)..m. I%+| 0001d560 3d 31 0d 10 6e 05 ce 0d 10 6f 1a e7 20 ac 20 c5 |=1..n....o.. . .| 0001d570 23 46 20 8c 20 e8 23 46 2c 6c 6f 67 70 61 74 68 |#F . .#F,logpath| 0001d580 24 0d 10 70 12 f2 63 6c 6f 73 65 5f 66 69 6c 65 |$..p..close_file| 0001d590 28 46 29 0d 10 71 14 e7 20 24 4d 61 6e 61 67 65 |(F)..q.. $Manage| 0001d5a0 72 25 3d 22 22 20 8c 0d 10 72 1f 20 20 41 63 63 |r%="" ...r. Acc| 0001d5b0 65 73 73 25 3d b9 3a 4d 6f 64 69 66 79 25 3d b9 |ess%=.:Modify%=.| 0001d5c0 3a 70 77 25 3d 30 0d 10 73 15 20 20 f2 72 65 73 |:pw%=0..s. .res| 0001d5d0 75 6d 65 5f 6f 70 65 6e 69 6e 67 0d 10 74 07 20 |ume_opening..t. | 0001d5e0 20 cc 0d 10 75 3b 20 20 24 41 63 63 65 73 73 54 | ...u; $AccessT| 0001d5f0 69 74 6c 65 25 3d 22 21 50 6f 77 65 72 62 61 73 |itle%="!Powerbas| 0001d600 65 20 6f 70 65 6e 69 6e 67 20 22 2b a4 6c 65 61 |e opening "+.lea| 0001d610 66 28 24 64 61 74 61 62 61 73 65 25 29 0d 10 76 |f($database%)..v| 0001d620 1c 20 20 f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 |. .open_window(| 0001d630 61 63 63 65 73 73 57 25 29 0d 10 77 13 20 20 24 |accessW%)..w. $| 0001d640 50 61 73 73 77 6f 72 64 25 3d 22 22 0d 10 78 1c |Password%=""..x.| 0001d650 20 20 f2 73 65 74 5f 63 61 72 65 74 28 61 63 63 | .set_caret(acc| 0001d660 65 73 73 57 25 2c 30 29 0d 10 79 26 20 20 c8 99 |essW%,0)..y& ..| 0001d670 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 | "Wimp_GetWindow| 0001d680 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 10 |State",,block%..| 0001d690 7a 43 20 20 c8 97 20 c8 93 20 62 6c 6f 63 6b 25 |zC .. .. block%| 0001d6a0 21 34 2c 62 6c 6f 63 6b 25 21 38 2c 62 6c 6f 63 |!4,block%!8,bloc| 0001d6b0 6b 25 21 31 32 2d 62 6c 6f 63 6b 25 21 34 2c 62 |k%!12-block%!4,b| 0001d6c0 6c 6f 63 6b 25 21 31 36 2d 62 6c 6f 63 6b 25 21 |lock%!16-block%!| 0001d6d0 38 0d 10 7b 07 20 20 f5 0d 10 7c 0c 20 20 61 63 |8..{. ...|. ac| 0001d6e0 74 25 3d 30 0d 10 7d 07 20 20 f5 0d 10 7e 0d 20 |t%=0..}. ...~. | 0001d6f0 20 20 20 f2 70 6f 6c 6c 0d 10 7f 17 20 20 fd 20 | .poll.... . | 0001d700 61 63 63 65 73 73 62 75 74 74 6f 6e 25 3e 30 0d |accessbutton%>0.| 0001d710 10 80 18 20 20 c8 8e 20 61 63 63 65 73 73 62 75 |... .. accessbu| 0001d720 74 74 6f 6e 25 20 ca 0d 10 81 23 20 20 20 20 c9 |tton% ....# .| 0001d730 20 32 3a f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 | 2:.close_window| 0001d740 28 61 63 63 65 73 73 57 25 29 0d 10 82 29 20 20 |(accessW%)...) | 0001d750 20 20 70 72 65 73 65 6e 74 25 3d a3 3a 61 63 63 | present%=.:acc| 0001d760 65 73 73 62 75 74 74 6f 6e 25 3d 30 3a 61 63 74 |essbutton%=0:act| 0001d770 25 3d 31 0d 10 83 0c 20 20 20 20 c9 20 33 3a 0d |%=1.... . 3:.| 0001d780 10 84 20 20 20 20 20 70 61 73 73 77 6f 72 64 24 |.. password$| 0001d790 3d a4 75 28 24 50 61 73 73 77 6f 72 64 25 29 0d |=.u($Password%).| 0001d7a0 10 85 16 20 20 20 20 c8 8e 20 70 61 73 73 77 6f |... .. passwo| 0001d7b0 72 64 24 20 ca 0d 10 86 36 20 20 20 20 20 20 c9 |rd$ ....6 .| 0001d7c0 20 24 4d 61 6e 61 67 65 72 25 3a 41 63 63 65 73 | $Manager%:Acces| 0001d7d0 73 25 3d b9 3a 4d 6f 64 69 66 79 25 3d b9 3a 61 |s%=.:Modify%=.:a| 0001d7e0 63 74 25 3d 32 3a 70 77 25 3d 33 0d 10 87 34 20 |ct%=2:pw%=3...4 | 0001d7f0 20 20 20 20 20 c9 20 24 57 72 69 74 65 25 3a 41 | . $Write%:A| 0001d800 63 63 65 73 73 25 3d b9 3a 4d 6f 64 69 66 79 25 |ccess%=.:Modify%| 0001d810 3d a3 3a 61 63 74 25 3d 32 3a 70 77 25 3d 32 0d |=.:act%=2:pw%=2.| 0001d820 10 88 33 20 20 20 20 20 20 c9 20 24 52 65 61 64 |..3 . $Read| 0001d830 25 3a 41 63 63 65 73 73 25 3d a3 3a 4d 6f 64 69 |%:Access%=.:Modi| 0001d840 66 79 25 3d a3 3a 61 63 74 25 3d 32 3a 70 77 25 |fy%=.:act%=2:pw%| 0001d850 3d 31 0d 10 89 1f 20 20 20 20 20 20 7f 3a 61 63 |=1.... .:ac| 0001d860 63 65 73 73 62 75 74 74 6f 6e 25 3d 30 3a ef 20 |cessbutton%=0:. | 0001d870 37 0d 10 8a 31 20 20 20 20 20 20 24 a4 74 65 78 |7...1 $.tex| 0001d880 74 28 61 63 63 65 73 73 57 25 2c 31 29 3d 22 50 |t(accessW%,1)="P| 0001d890 61 73 73 77 6f 72 64 20 6e 6f 74 20 6b 6e 6f 77 |assword not know| 0001d8a0 6e 22 0d 10 8b 23 20 20 20 20 20 20 f2 64 63 6f |n"...# .dco| 0001d8b0 6c 6f 75 72 28 61 63 63 65 73 73 57 25 2c 31 2c |lour(accessW%,1,| 0001d8c0 31 31 2c 31 29 0d 10 8c 16 20 20 20 20 20 20 64 |11,1).... d| 0001d8d0 65 6c 61 79 25 3d 91 2b 31 35 30 0d 10 8d 0b 20 |elay%=.+150.... | 0001d8e0 20 20 20 20 20 f5 0d 10 8e 11 20 20 20 20 20 20 | ..... | 0001d8f0 20 20 f2 70 6f 6c 6c 0d 10 8f 14 20 20 20 20 20 | .poll.... | 0001d900 20 fd 20 91 3e 64 65 6c 61 79 25 0d 10 90 47 20 | . .>delay%...G | 0001d910 20 20 20 20 20 24 50 61 73 73 77 6f 72 64 25 3d | $Password%=| 0001d920 22 22 3a f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 |"":.redraw_icon(| 0001d930 61 63 63 65 73 73 57 25 2c 30 29 3a f2 73 65 74 |accessW%,0):.set| 0001d940 5f 63 61 72 65 74 28 61 63 63 65 73 73 57 25 2c |_caret(accessW%,| 0001d950 30 29 0d 10 91 34 20 20 20 20 20 20 24 a4 74 65 |0)...4 $.te| 0001d960 78 74 28 61 63 63 65 73 73 57 25 2c 31 29 3d 22 |xt(accessW%,1)="| 0001d970 54 79 70 65 20 69 6e 20 79 6f 75 72 20 70 61 73 |Type in your pas| 0001d980 73 77 6f 72 64 22 0d 10 92 22 20 20 20 20 20 20 |sword"..." | 0001d990 f2 64 63 6f 6c 6f 75 72 28 61 63 63 65 73 73 57 |.dcolour(accessW| 0001d9a0 25 2c 31 2c 37 2c 31 29 0d 10 93 09 20 20 20 20 |%,1,7,1).... | 0001d9b0 cb 0d 10 94 07 20 20 cb 0d 10 95 0e 20 20 fd 20 |..... ..... . | 0001d9c0 61 63 74 25 3e 30 0d 10 96 1d 20 20 f2 63 6c 6f |act%>0.... .clo| 0001d9d0 73 65 5f 77 69 6e 64 6f 77 28 61 63 63 65 73 73 |se_window(access| 0001d9e0 57 25 29 0d 10 97 1b 20 20 f2 67 65 74 73 63 72 |W%).... .getscr| 0001d9f0 65 65 6e 73 69 7a 65 28 57 25 2c 48 25 29 0d 10 |eensize(W%,H%)..| 0001da00 98 15 20 20 c8 97 20 c8 93 20 30 2c 30 2c 57 25 |.. .. .. 0,0,W%| 0001da10 2c 48 25 0d 10 99 20 20 20 e7 20 61 63 74 25 3d |,H%... . act%=| 0001da20 32 20 8c 20 f2 72 65 73 75 6d 65 5f 6f 70 65 6e |2 . .resume_open| 0001da30 69 6e 67 0d 10 9a 05 cd 0d 10 9b 05 e1 0d 10 9c |ing.............| 0001da40 05 3a 0d 10 9d 15 dd 20 f2 72 65 73 75 6d 65 5f |.:..... .resume_| 0001da50 6f 70 65 6e 69 6e 67 0d 10 9e 15 c8 99 20 22 48 |opening...... "H| 0001da60 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 10 9f 26 |ourglass_On"...&| 0001da70 e7 20 a4 73 65 6c 65 63 74 65 64 28 70 61 73 73 |. .selected(pass| 0001da80 57 25 2c 31 36 29 20 8c 20 f2 6f 70 65 6e 5f 6c |W%,16) . .open_l| 0001da90 6f 67 0d 10 a0 27 c8 99 20 22 4f 53 5f 46 69 6c |og...'.. "OS_Fil| 0001daa0 65 22 2c 35 2c 66 24 2b 22 2e 55 73 65 72 46 75 |e",5,f$+".UserFu| 0001dab0 6e 63 73 22 20 b8 20 64 25 0d 10 a1 1f e7 20 64 |ncs" . d%..... d| 0001dac0 25 3d 31 20 8c 20 c8 9b 20 66 24 2b 22 2e 55 73 |%=1 . .. f$+".Us| 0001dad0 65 72 46 75 6e 63 73 22 0d 10 a2 28 f2 72 65 61 |erFuncs"...(.rea| 0001dae0 64 5f 63 6f 6c 6f 75 72 73 28 24 64 61 74 61 62 |d_colours($datab| 0001daf0 61 73 65 25 2b 22 2e 43 6f 6c 6f 75 72 73 22 29 |ase%+".Colours")| 0001db00 0d 10 a3 30 c8 99 20 22 4f 53 5f 46 69 6c 65 22 |...0.. "OS_File"| 0001db10 2c 35 2c 66 24 2b 22 2e 50 72 69 6e 74 52 65 73 |,5,f$+".PrintRes| 0001db20 2e 50 72 69 6e 74 4f 70 74 73 22 20 b8 20 64 25 |.PrintOpts" . d%| 0001db30 0d 10 a4 0c e7 20 64 25 3d 31 20 8c 0d 10 a5 2d |..... d%=1 ....-| 0001db40 20 20 f2 64 72 61 67 5f 6f 70 74 69 6f 6e 73 28 | .drag_options(| 0001db50 66 24 2b 22 2e 50 72 69 6e 74 52 65 73 2e 50 72 |f$+".PrintRes.Pr| 0001db60 69 6e 74 4f 70 74 73 22 29 0d 10 a6 38 20 20 cc |intOpts")...8 .| 0001db70 20 f2 64 72 61 67 5f 6f 70 74 69 6f 6e 73 28 22 | .drag_options("| 0001db80 3c 50 62 61 73 65 24 44 69 72 3e 2e 52 65 73 6f |<Pbase$Dir>.Reso| 0001db90 75 72 63 65 73 2e 50 72 69 6e 74 4f 70 74 73 22 |urces.PrintOpts"| 0001dba0 29 0d 10 a7 05 cd 0d 10 a8 1b e7 20 c0 66 24 2c |).......... .f$,| 0001dbb0 33 29 3d 22 52 41 4d 22 20 8c 20 72 61 6d 25 3d |3)="RAM" . ram%=| 0001dbc0 b9 0d 10 a9 39 2a 53 65 74 20 41 6c 69 61 73 24 |....9*Set Alias$| 0001dbd0 54 61 62 6c 65 73 20 46 69 6c 65 72 5f 4f 70 65 |Tables Filer_Ope| 0001dbe0 6e 44 69 72 20 3c 44 62 61 73 65 24 44 69 72 3e |nDir <Dbase$Dir>| 0001dbf0 2e 56 61 6c 54 61 62 6c 65 73 0d 10 aa 3b 2a 53 |.ValTables...;*S| 0001dc00 65 74 20 41 6c 69 61 73 24 52 65 73 6f 75 72 63 |et Alias$Resourc| 0001dc10 65 73 20 46 69 6c 65 72 5f 4f 70 65 6e 44 69 72 |es Filer_OpenDir| 0001dc20 20 3c 44 62 61 73 65 24 44 69 72 3e 2e 50 72 69 | <Dbase$Dir>.Pri| 0001dc30 6e 74 52 65 73 0d 10 ab 3b 2a 53 65 74 20 41 6c |ntRes...;*Set Al| 0001dc40 69 61 73 24 4a 6f 62 73 44 6f 6e 65 20 46 69 6c |ias$JobsDone Fil| 0001dc50 65 72 5f 4f 70 65 6e 44 69 72 20 3c 44 62 61 73 |er_OpenDir <Dbas| 0001dc60 65 24 44 69 72 3e 2e 50 72 69 6e 74 4a 6f 62 73 |e$Dir>.PrintJobs| 0001dc70 0d 10 ac 16 f2 6c 69 74 28 6d 65 6e 75 25 28 30 |.....lit(menu%(0| 0001dc80 29 2c 31 2c a3 29 0d 10 ad 16 f2 6c 69 74 28 6d |),1,.).....lit(m| 0001dc90 65 6e 75 25 28 30 29 2c 33 2c b9 29 0d 10 ae 16 |enu%(0),3,.)....| 0001dca0 f2 6c 69 74 28 6d 65 6e 75 25 28 30 29 2c 34 2c |.lit(menu%(0),4,| 0001dcb0 b9 29 0d 10 af 28 f2 6c 69 74 28 6d 65 6e 75 25 |.)...(.lit(menu%| 0001dcc0 28 31 29 2c 36 2c a4 73 65 6c 65 63 74 65 64 28 |(1),6,.selected(| 0001dcd0 70 61 73 73 57 25 2c 39 29 29 0d 10 b0 29 f2 6c |passW%,9))...).l| 0001dce0 69 74 28 6d 65 6e 75 25 28 33 29 2c 38 2c a4 73 |it(menu%(3),8,.s| 0001dcf0 65 6c 65 63 74 65 64 28 70 61 73 73 57 25 2c 31 |elected(passW%,1| 0001dd00 35 29 29 0d 10 b1 1c f2 6c 69 74 28 6d 65 6e 75 |5)).....lit(menu| 0001dd10 25 28 37 29 2c 30 2c 41 63 63 65 73 73 25 29 0d |%(7),0,Access%).| 0001dd20 10 b2 1c f2 6c 69 74 28 6d 65 6e 75 25 28 37 29 |....lit(menu%(7)| 0001dd30 2c 31 2c 4d 6f 64 69 66 79 25 29 0d 10 b3 1c f2 |,1,Modify%).....| 0001dd40 6c 69 74 28 6d 65 6e 75 25 28 37 29 2c 32 2c 41 |lit(menu%(7),2,A| 0001dd50 63 63 65 73 73 25 29 0d 10 b4 1c f2 6c 69 74 28 |ccess%).....lit(| 0001dd60 6d 65 6e 75 25 28 37 29 2c 33 2c 41 63 63 65 73 |menu%(7),3,Acces| 0001dd70 73 25 29 0d 10 b5 1c f2 6c 69 74 28 6d 65 6e 75 |s%).....lit(menu| 0001dd80 25 28 37 29 2c 34 2c 41 63 63 65 73 73 25 29 0d |%(7),4,Access%).| 0001dd90 10 b6 1c f2 6c 69 74 28 6d 65 6e 75 25 28 32 29 |....lit(menu%(2)| 0001dda0 2c 30 2c 41 63 63 65 73 73 25 29 0d 10 b7 1c f2 |,0,Access%).....| 0001ddb0 6c 69 74 28 6d 65 6e 75 25 28 30 29 2c 32 2c 4d |lit(menu%(0),2,M| 0001ddc0 6f 64 69 66 79 25 29 0d 10 b8 1d f2 6c 69 74 28 |odify%).....lit(| 0001ddd0 6d 65 6e 75 25 28 31 30 29 2c 30 2c 41 63 63 65 |menu%(10),0,Acce| 0001dde0 73 73 25 29 0d 10 b9 1d f2 6c 69 74 28 6d 65 6e |ss%).....lit(men| 0001ddf0 75 25 28 31 30 29 2c 32 2c 41 63 63 65 73 73 25 |u%(10),2,Access%| 0001de00 29 0d 10 ba 1d f2 6c 69 74 28 6d 65 6e 75 25 28 |).....lit(menu%(| 0001de10 31 30 29 2c 33 2c 41 63 63 65 73 73 25 29 0d 10 |10),3,Access%)..| 0001de20 bb 1d f2 6c 69 74 28 6d 65 6e 75 25 28 31 33 29 |...lit(menu%(13)| 0001de30 2c 30 2c 41 63 63 65 73 73 25 29 0d 10 bc 1d f2 |,0,Access%).....| 0001de40 6c 69 74 28 6d 65 6e 75 25 28 31 37 29 2c 30 2c |lit(menu%(17),0,| 0001de50 4d 6f 64 69 66 79 25 29 0d 10 bd 27 f2 6c 69 74 |Modify%)...'.lit| 0001de60 28 6d 65 6e 75 25 28 33 29 2c 30 2c 28 28 70 72 |(menu%(3),0,((pr| 0001de70 65 73 65 6e 74 25 20 80 20 34 29 3e 30 29 29 0d |esent% . 4)>0)).| 0001de80 10 be 27 f2 6c 69 74 28 6d 65 6e 75 25 28 39 29 |..'.lit(menu%(9)| 0001de90 2c 31 2c 28 28 70 72 65 73 65 6e 74 25 20 80 20 |,1,((present% . | 0001dea0 34 29 3d 30 29 29 0d 10 bf 0e e3 20 49 25 3d 31 |4)=0))..... I%=1| 0001deb0 20 b8 20 36 0d 10 c0 24 20 20 f2 6c 69 74 28 6d | . 6...$ .lit(m| 0001dec0 65 6e 75 25 28 33 29 2c 49 25 2c 28 70 72 65 73 |enu%(3),I%,(pres| 0001ded0 65 6e 74 25 3d 37 29 29 0d 10 c1 08 ed 20 49 25 |ent%=7))..... I%| 0001dee0 0d 10 c2 1b f2 6c 69 6d 69 74 5f 61 63 74 69 6f |.....limit_actio| 0001def0 6e 73 28 41 63 63 65 73 73 25 29 0d 10 c3 1c e7 |ns(Access%).....| 0001df00 20 70 72 65 73 65 6e 74 25 3c 34 20 8c 20 64 65 | present%<4 . de| 0001df10 73 69 67 6e 25 3d b9 0d 10 c4 20 e7 20 70 72 65 |sign%=.... . pre| 0001df20 73 65 6e 74 25 3d 35 20 8c 20 f2 61 64 6a 75 73 |sent%=5 . .adjus| 0001df30 74 5f 6f 6e 28 b9 29 0d 10 c5 16 f2 6c 69 74 28 |t_on(.).....lit(| 0001df40 6d 65 6e 75 25 28 39 29 2c 35 2c a3 29 0d 10 c6 |menu%(9),5,.)...| 0001df50 1c 66 69 65 6c 64 73 25 3d a4 67 65 74 5f 66 6f |.fields%=.get_fo| 0001df60 72 6d 28 46 70 74 72 25 29 0d 10 c7 11 e7 20 66 |rm(Fptr%)..... f| 0001df70 69 65 6c 64 73 25 3e 30 20 8c 0d 10 c8 25 20 20 |ields%>0 ....% | 0001df80 73 74 61 72 74 68 65 72 65 25 3d 66 69 65 6c 64 |starthere%=field| 0001df90 25 28 a4 66 69 72 73 74 5f 66 69 65 6c 64 29 0d |%(.first_field).| 0001dfa0 10 c9 25 20 20 f2 66 69 65 6c 64 5f 6d 65 6e 75 |..% .field_menu| 0001dfb0 28 66 69 65 6c 64 6d 65 6e 75 25 2c 66 69 65 6c |(fieldmenu%,fiel| 0001dfc0 64 73 25 29 0d 10 ca 39 20 20 f2 63 72 65 61 74 |ds%)...9 .creat| 0001dfd0 65 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f |e_named_sliding_| 0001dfe0 62 6c 6f 63 6b 28 74 72 61 6e 73 61 6e 63 68 6f |block(transancho| 0001dff0 72 25 2c 4c 65 6e 67 74 68 25 2b 31 29 0d 10 cb |r%,Length%+1)...| 0001e000 05 cd 0d 10 cc 2e e7 20 ac 20 61 64 6a 75 73 74 |....... . adjust| 0001e010 25 20 8c 20 f2 6c 69 74 28 6d 65 6e 75 25 28 39 |% . .lit(menu%(9| 0001e020 29 2c 32 2c 28 66 69 65 6c 64 73 25 3e 30 29 29 |),2,(fields%>0))| 0001e030 0d 10 cd 0f f2 6c 6f 61 64 5f 63 61 6c 63 73 0d |.....load_calcs.| 0001e040 10 ce 11 c8 8e 20 70 72 65 73 65 6e 74 25 20 ca |..... present% .| 0001e050 0d 10 cf 0a 20 20 c9 20 30 3a 0d 10 d0 2d 20 20 |.... . 0:...- | 0001e060 24 52 65 63 49 6e 66 6f 25 3d 22 4e 6f 20 72 65 |$RecInfo%="No re| 0001e070 63 6f 72 64 20 64 65 73 69 67 6e 20 65 78 69 73 |cord design exis| 0001e080 74 73 20 79 65 74 22 0d 10 d1 10 20 20 e3 20 49 |ts yet".... . I| 0001e090 25 3d 31 20 b8 20 34 0d 10 d2 1b 20 20 20 20 f2 |%=1 . 4.... .| 0001e0a0 6c 69 74 28 6d 65 6e 75 25 28 39 29 2c 49 25 2c |lit(menu%(9),I%,| 0001e0b0 a3 29 0d 10 d3 0a 20 20 ed 20 49 25 0d 10 d4 1a |.).... . I%....| 0001e0c0 20 20 f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 6d | .open_window(m| 0001e0d0 61 69 6e 57 25 29 0d 10 d5 18 20 20 e7 20 21 66 |ainW%).... . !f| 0001e0e0 6f 72 6d 61 6e 63 68 6f 72 25 3d 30 20 8c 0d 10 |ormanchor%=0 ...| 0001e0f0 d6 32 20 20 20 20 f2 65 78 74 65 6e 64 5f 6e 61 |.2 .extend_na| 0001e100 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |med_sliding_bloc| 0001e110 6b 28 66 6f 72 6d 61 6e 63 68 6f 72 25 2c 30 29 |k(formanchor%,0)| 0001e120 0d 10 d7 1a 20 20 20 20 46 70 74 72 25 3d 21 66 |.... Fptr%=!f| 0001e130 6f 72 6d 61 6e 63 68 6f 72 25 0d 10 d8 20 20 20 |ormanchor%... | 0001e140 20 20 66 69 65 6c 64 73 25 3d 30 3a 46 69 65 6c | fields%=0:Fiel| 0001e150 64 6e 75 6d 62 65 72 25 3d 30 0d 10 d9 07 20 20 |dnumber%=0.... | 0001e160 cd 0d 10 da 0a 20 20 c9 20 31 3a 0d 10 db 38 20 |..... . 1:...8 | 0001e170 20 24 52 65 63 49 6e 66 6f 25 3d 22 52 65 63 6f | $RecInfo%="Reco| 0001e180 72 64 20 64 65 73 69 67 6e 20 65 78 69 73 74 73 |rd design exists| 0001e190 2c 20 62 75 74 20 6e 6f 20 64 61 74 61 66 69 6c |, but no datafil| 0001e1a0 65 73 22 0d 10 dc 18 20 20 e7 20 a4 66 69 72 73 |es".... . .firs| 0001e1b0 74 5f 66 69 65 6c 64 3e 30 20 8c 0d 10 dd 1a 20 |t_field>0 ..... | 0001e1c0 20 20 20 f2 6c 69 74 28 6d 65 6e 75 25 28 39 29 | .lit(menu%(9)| 0001e1d0 2c 33 2c b9 29 0d 10 de 1a 20 20 20 20 f2 6c 69 |,3,.).... .li| 0001e1e0 74 28 6d 65 6e 75 25 28 39 29 2c 34 2c b9 29 0d |t(menu%(9),4,.).| 0001e1f0 10 df 07 20 20 cd 0d 10 e0 1a 20 20 f2 6f 70 65 |... ..... .ope| 0001e200 6e 5f 77 69 6e 64 6f 77 28 6d 61 69 6e 57 25 29 |n_window(mainW%)| 0001e210 0d 10 e1 0a 20 20 c9 20 35 3a 0d 10 e2 36 20 20 |.... . 5:...6 | 0001e220 24 52 65 63 49 6e 66 6f 25 3d 22 4e 6f 20 70 72 |$RecInfo%="No pr| 0001e230 69 6d 61 72 79 20 6b 65 79 20 69 6e 64 65 78 20 |imary key index | 0001e240 66 69 6c 65 20 65 78 69 73 74 73 20 79 65 74 22 |file exists yet"| 0001e250 0d 10 e3 36 20 20 c8 99 20 22 4f 53 5f 46 69 6c |...6 .. "OS_Fil| 0001e260 65 22 2c 35 2c 24 64 61 74 61 62 61 73 65 25 2b |e",5,$database%+| 0001e270 22 2e 44 61 74 61 62 61 73 65 22 20 b8 20 2c 2c |".Database" . ,,| 0001e280 2c 2c 6c 65 6e 25 0d 10 e4 2d 20 20 52 41 25 3d |,,len%...- RA%=| 0001e290 28 6c 65 6e 25 20 81 20 4c 65 6e 67 74 68 25 29 |(len% . Length%)| 0001e2a0 2d 31 3a 24 52 65 63 6f 72 64 73 25 3d c3 28 52 |-1:$Records%=.(R| 0001e2b0 41 25 29 0d 10 e5 2d 20 20 e7 20 a4 66 69 72 73 |A%)...- . .firs| 0001e2c0 74 5f 66 69 65 6c 64 3e 30 20 8c 20 f2 6f 70 65 |t_field>0 . .ope| 0001e2d0 6e 5f 77 69 6e 64 6f 77 28 6d 61 69 6e 57 25 29 |n_window(mainW%)| 0001e2e0 0d 10 e6 0a 20 20 c9 20 37 3a 0d 10 e7 2b 20 20 |.... . 7:...+ | 0001e2f0 f2 6c 69 74 28 6d 65 6e 75 25 28 31 29 2c 37 2c |.lit(menu%(1),7,| 0001e300 a4 73 65 6c 65 63 74 65 64 28 70 61 73 73 57 25 |.selected(passW%| 0001e310 2c 31 33 29 29 0d 10 e8 2b 20 20 f2 6c 69 74 28 |,13))...+ .lit(| 0001e320 6d 65 6e 75 25 28 31 29 2c 38 2c a4 73 65 6c 65 |menu%(1),8,.sele| 0001e330 63 74 65 64 28 70 61 73 73 57 25 2c 31 33 29 29 |cted(passW%,13))| 0001e340 0d 10 e9 2b 20 20 f2 6c 69 74 28 6d 65 6e 75 25 |...+ .lit(menu%| 0001e350 28 31 29 2c 32 2c a4 73 65 6c 65 63 74 65 64 28 |(1),2,.selected(| 0001e360 70 61 73 73 57 25 2c 31 34 29 29 0d 10 ea 36 20 |passW%,14))...6 | 0001e370 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c | .. "OS_File",5,| 0001e380 24 64 61 74 61 62 61 73 65 25 2b 22 2e 44 61 74 |$database%+".Dat| 0001e390 61 62 61 73 65 22 20 b8 20 2c 2c 2c 2c 6c 65 6e |abase" . ,,,,len| 0001e3a0 25 0d 10 eb 2d 20 20 52 41 25 3d 28 6c 65 6e 25 |%...- RA%=(len%| 0001e3b0 20 81 20 4c 65 6e 67 74 68 25 29 2d 31 3a 24 52 | . Length%)-1:$R| 0001e3c0 65 63 6f 72 64 73 25 3d c3 28 52 41 25 29 0d 10 |ecords%=.(RA%)..| 0001e3d0 ec 2d 20 20 f2 6f 70 65 6e 5f 69 6e 64 65 78 28 |.- .open_index(| 0001e3e0 24 64 61 74 61 62 61 73 65 25 2b 22 2e 50 72 69 |$database%+".Pri| 0001e3f0 6d 61 72 79 4b 65 79 22 2c 30 29 0d 10 ed 24 20 |maryKey",0)...$ | 0001e400 20 6b 65 79 25 3d 30 3a 66 69 6c 65 25 3d 30 3a | key%=0:file%=0:| 0001e410 74 6f 70 3d 38 2a 66 69 6c 65 25 2b 4c 48 25 0d |top=8*file%+LH%.| 0001e420 10 ee 18 20 20 f2 73 65 74 5f 6b 65 79 64 61 74 |... .set_keydat| 0001e430 61 28 6b 65 79 25 29 0d 10 ef 6c 20 20 6b 65 79 |a(key%)...l key| 0001e440 62 61 73 65 25 3d 21 6b 65 79 61 6e 63 68 6f 72 |base%=!keyanchor| 0001e450 25 28 30 29 3a e7 20 6b 65 79 62 61 73 65 25 21 |%(0):. keybase%!| 0001e460 34 3c 3d 31 30 30 20 80 20 6b 65 79 62 61 73 65 |4<=100 . keybase| 0001e470 25 21 34 3e 30 20 8c 20 24 49 6e 63 72 65 6d 65 |%!4>0 . $Increme| 0001e480 6e 74 25 3d c3 28 6b 65 79 62 61 73 65 25 21 34 |nt%=.(keybase%!4| 0001e490 29 20 8b 20 24 49 6e 63 72 65 6d 65 6e 74 25 3d |) . $Increment%=| 0001e4a0 22 30 22 0d 10 f0 2c 20 20 66 24 3d 24 64 61 74 |"0"..., f$=$dat| 0001e4b0 61 62 61 73 65 25 2b 22 2e 49 6e 64 69 63 65 73 |abase%+".Indices| 0001e4c0 22 3a 52 34 25 3d 30 3a 4b 65 79 73 25 3d 30 0d |":R4%=0:Keys%=0.| 0001e4d0 10 f1 10 20 20 c8 95 20 52 34 25 3c 3e 2d 31 0d |... .. R4%<>-1.| 0001e4e0 10 f2 10 20 20 20 20 4b 65 79 73 25 2b 3d 31 0d |... Keys%+=1.| 0001e4f0 10 f3 35 20 20 20 20 c8 99 20 22 4f 53 5f 47 42 |..5 .. "OS_GB| 0001e500 50 42 22 2c 39 2c 66 24 2c 62 6c 6f 63 6b 25 2c |PB",9,f$,block%,| 0001e510 31 2c 52 34 25 2c 31 31 20 b8 20 2c 2c 4b 24 2c |1,R4%,11 . ,,K$,| 0001e520 2c 52 34 25 0d 10 f4 41 20 20 20 20 e7 20 52 34 |,R4%...A . R4| 0001e530 25 3c 3e 2d 31 20 8c 20 f2 6f 70 65 6e 5f 69 6e |%<>-1 . .open_in| 0001e540 64 65 78 28 66 24 2b 22 2e 22 2b 4b 24 2c 4b 65 |dex(f$+"."+K$,Ke| 0001e550 79 73 25 29 3a f2 63 6f 6c 6f 75 72 28 4b 65 79 |ys%):.colour(Key| 0001e560 73 25 2c 32 29 0d 10 f5 07 20 20 ce 0d 10 f6 0e |s%,2).... .....| 0001e570 20 20 4b 65 79 73 25 2d 3d 31 0d 10 f7 34 20 20 | Keys%-=1...4 | 0001e580 e7 20 65 78 74 72 61 6b 65 79 73 24 3c 3e 22 22 |. extrakeys$<>""| 0001e590 20 8c 20 f2 73 6f 66 74 65 72 72 6f 72 28 c0 65 | . .softerror(.e| 0001e5a0 78 74 72 61 6b 65 79 73 24 29 2c 39 36 29 0d 10 |xtrakeys$),96)..| 0001e5b0 f8 1f 20 20 f2 63 6f 6c 6f 75 72 28 30 2c 30 29 |.. .colour(0,0)| 0001e5c0 3a f2 63 6f 6c 6f 75 72 28 30 2c 31 29 0d 10 f9 |:.colour(0,1)...| 0001e5d0 11 20 20 f2 67 65 74 5f 74 61 62 6c 65 73 0d 10 |. .get_tables..| 0001e5e0 fa 0c 20 20 6b 65 79 25 3d 30 0d 10 fb 16 20 20 |.. key%=0.... | 0001e5f0 f2 63 6f 75 6e 74 28 6b 65 79 25 2c 52 55 25 29 |.count(key%,RU%)| 0001e600 0d 10 fc 0b 20 20 f2 6a 6f 6b 65 0d 10 fd 13 20 |.... .joke.... | 0001e610 20 f2 73 68 6f 77 5f 77 69 6e 64 6f 77 73 0d 10 | .show_windows..| 0001e620 fe 05 cb 0d 10 ff 16 c8 99 20 22 48 6f 75 72 67 |......... "Hourg| 0001e630 6c 61 73 73 5f 4f 66 66 22 0d 11 00 17 24 64 62 |lass_Off"....$db| 0001e640 61 73 65 25 3d c1 24 54 69 74 6c 65 25 2c 32 29 |ase%=.$Title%,2)| 0001e650 0d 11 01 1f f2 72 65 64 72 61 77 5f 69 63 6f 6e |.....redraw_icon| 0001e660 28 2d 32 2c 70 62 61 73 65 69 63 6f 6e 25 29 0d |(-2,pbaseicon%).| 0001e670 11 02 1c 66 24 3d 24 64 61 74 61 62 61 73 65 25 |...f$=$database%| 0001e680 2b 22 2e 43 68 6f 69 63 65 73 22 0d 11 03 1a c8 |+".Choices".....| 0001e690 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c 66 24 |. "OS_File",5,f$| 0001e6a0 20 b8 20 64 25 0d 11 04 1d e7 20 64 25 3d 31 20 | . d%..... d%=1 | 0001e6b0 8c 20 f2 67 65 74 5f 63 68 6f 69 63 65 73 28 66 |. .get_choices(f| 0001e6c0 24 29 0d 11 05 2d c8 99 20 22 4f 53 5f 46 69 6c |$)...-.. "OS_Fil| 0001e6d0 65 22 2c 35 2c 24 64 61 74 61 62 61 73 65 25 2b |e",5,$database%+| 0001e6e0 22 2e 53 70 65 63 69 61 6c 22 20 b8 20 64 25 0d |".Special" . d%.| 0001e6f0 11 06 30 e7 20 64 25 3d 31 20 8c 20 c8 9b 20 24 |..0. d%=1 . .. $| 0001e700 64 61 74 61 62 61 73 65 25 2b 22 2e 53 70 65 63 |database%+".Spec| 0001e710 69 61 6c 22 3a f2 63 75 73 74 6f 6d 69 73 65 0d |ial":.customise.| 0001e720 11 07 05 e1 0d 11 08 05 3a 0d 11 09 0b dd 20 f2 |........:..... .| 0001e730 6a 6f 6b 65 0d 11 0a 19 53 24 3d 24 a4 76 61 6c |joke....S$=$.val| 0001e740 28 6b 65 79 70 61 64 57 25 2c 31 37 29 0d 11 0b |(keypadW%,17)...| 0001e750 2a e7 20 c1 91 24 2c 35 2c 36 29 3d 22 30 31 20 |*. ..$,5,6)="01 | 0001e760 41 70 72 22 20 80 20 c1 91 24 2c 31 37 2c 32 29 |Apr" . ..$,17,2)| 0001e770 3c 22 31 32 22 20 8c 0d 11 0c 21 20 20 53 24 3d |<"12" ....! S$=| 0001e780 22 53 74 6f 69 6c 65 74 22 2b c1 24 62 6c 6f 63 |"Stoilet"+.$bloc| 0001e790 6b 25 21 33 32 2c 38 29 0d 11 0d 23 20 20 cc 20 |k%!32,8)...# . | 0001e7a0 53 24 3d 22 53 64 65 6c 65 74 65 22 2b c1 24 62 |S$="Sdelete"+.$b| 0001e7b0 6c 6f 63 6b 25 21 33 32 2c 38 29 0d 11 0e 05 cd |lock%!32,8).....| 0001e7c0 0d 11 0f 19 24 a4 76 61 6c 28 6b 65 79 70 61 64 |....$.val(keypad| 0001e7d0 57 25 2c 31 37 29 3d 53 24 0d 11 10 05 e1 0d 11 |W%,17)=S$.......| 0001e7e0 11 05 3a 0d 11 12 16 dd 20 f2 67 65 74 5f 63 68 |..:..... .get_ch| 0001e7f0 6f 69 63 65 73 28 66 24 29 0d 11 13 10 ea 20 46 |oices(f$)..... F| 0001e800 2c 53 24 2c 43 24 2c 50 25 0d 11 14 0b 46 3d 8e |,S$,C$,P%....F=.| 0001e810 28 66 24 29 0d 11 15 05 f5 0d 11 16 32 20 20 53 |(f$)........2 S| 0001e820 24 3d be 23 46 3a 50 25 3d a7 53 24 2c 22 20 22 |$=.#F:P%=.S$," "| 0001e830 29 3a 43 24 3d c1 53 24 2c 50 25 2b 31 29 3a 53 |):C$=.S$,P%+1):S| 0001e840 24 3d c0 53 24 2c 50 25 2d 31 29 0d 11 17 0d 20 |$=.S$,P%-1).... | 0001e850 20 c8 8e 20 53 24 20 ca 0d 11 18 44 20 20 20 20 | .. S$ ....D | 0001e860 c9 20 22 56 61 6c 69 64 61 74 65 22 3a 76 61 6c |. "Validate":val| 0001e870 69 64 61 74 65 25 3d 28 43 24 3d 22 4f 4e 22 29 |idate%=(C$="ON")| 0001e880 3a f2 74 69 63 6b 28 6d 65 6e 75 25 28 32 29 2c |:.tick(menu%(2),| 0001e890 33 2c 76 61 6c 69 64 61 74 65 25 29 0d 11 19 47 |3,validate%)...G| 0001e8a0 20 20 20 20 c9 20 22 52 65 6c 61 74 69 6f 6e 73 | . "Relations| 0001e8b0 22 3a 72 65 6c 61 74 69 6f 6e 73 25 3d 28 43 24 |":relations%=(C$| 0001e8c0 3d 22 4f 4e 22 29 3a f2 74 69 63 6b 28 6d 65 6e |="ON"):.tick(men| 0001e8d0 75 25 28 32 29 2c 34 2c 72 65 6c 61 74 69 6f 6e |u%(2),4,relation| 0001e8e0 73 25 29 0d 11 1a 42 20 20 20 20 c9 20 22 57 61 |s%)...B . "Wa| 0001e8f0 72 6e 69 6e 67 22 3a 64 65 6c 77 61 72 6e 25 3d |rning":delwarn%=| 0001e900 28 43 24 3d 22 4f 4e 22 29 3a f2 74 69 63 6b 28 |(C$="ON"):.tick(| 0001e910 6d 65 6e 75 25 28 31 30 29 2c 37 2c 64 65 6c 77 |menu%(10),7,delw| 0001e920 61 72 6e 25 29 0d 11 1b 15 20 20 20 20 c9 20 22 |arn%).... . "| 0001e930 41 75 74 6f 73 61 76 65 22 3a 0d 11 1c 13 20 20 |Autosave":.... | 0001e940 20 20 c8 8e 20 c0 43 24 2c 34 29 20 ca 0d 11 1d | .. .C$,4) ....| 0001e950 2e 20 20 20 20 20 20 c9 20 22 4f 46 46 20 22 3a |. . "OFF ":| 0001e960 6d 6f 64 65 25 3d 30 3a 24 49 6e 74 65 72 76 61 |mode%=0:$Interva| 0001e970 6c 25 3d 22 31 30 20 6d 69 6e 22 0d 11 1e 2c 20 |l%="10 min"..., | 0001e980 20 20 20 20 20 c9 20 22 57 41 52 4e 22 3a 6d 6f | . "WARN":mo| 0001e990 64 65 25 3d 31 3a 24 49 6e 74 65 72 76 61 6c 25 |de%=1:$Interval%| 0001e9a0 3d c1 43 24 2c 35 29 0d 11 1f 2c 20 20 20 20 20 |=.C$,5)..., | 0001e9b0 20 c9 20 22 41 55 54 4f 22 3a 6d 6f 64 65 25 3d | . "AUTO":mode%=| 0001e9c0 32 3a 24 49 6e 74 65 72 76 61 6c 25 3d c1 43 24 |2:$Interval%=.C$| 0001e9d0 2c 35 29 0d 11 20 09 20 20 20 20 cb 0d 11 21 18 |,5).. . ...!.| 0001e9e0 20 20 20 20 f2 73 65 74 5f 61 75 74 6f 28 6d 6f | .set_auto(mo| 0001e9f0 64 65 25 29 0d 11 22 18 20 20 20 20 c9 20 22 41 |de%)..". . "A| 0001ea00 75 74 6f 62 61 6c 61 6e 63 65 22 3a 0d 11 23 13 |utobalance":..#.| 0001ea10 20 20 20 20 c8 8e 20 c0 43 24 2c 34 29 20 ca 0d | .. .C$,4) ..| 0001ea20 11 24 26 20 20 20 20 20 20 c9 20 22 4f 46 46 20 |.$& . "OFF | 0001ea30 22 3a f2 73 65 74 5f 61 75 74 6f 62 61 6c 61 6e |":.set_autobalan| 0001ea40 63 65 28 a3 29 0d 11 25 35 20 20 20 20 20 20 c9 |ce(.)..%5 .| 0001ea50 20 22 41 55 54 4f 22 3a 24 45 76 65 72 79 25 3d | "AUTO":$Every%=| 0001ea60 c1 43 24 2c 35 29 3a f2 73 65 74 5f 61 75 74 6f |.C$,5):.set_auto| 0001ea70 62 61 6c 61 6e 63 65 28 b9 29 0d 11 26 09 20 20 |balance(.)..&. | 0001ea80 20 20 cb 0d 11 27 16 20 20 20 20 c9 20 22 53 65 | ...'. . "Se| 0001ea90 70 61 72 61 74 6f 72 22 3a 0d 11 28 12 20 20 20 |parator":..(. | 0001eaa0 20 24 44 65 6c 69 6d 25 3d 22 22 0d 11 29 0f 20 | $Delim%=""..). | 0001eab0 20 20 20 c8 8e 20 43 24 20 ca 0d 11 2a 21 20 20 | .. C$ ...*! | 0001eac0 20 20 20 20 c9 20 22 43 6f 6d 6d 61 22 3a 73 65 | . "Comma":se| 0001ead0 70 24 3d 22 2c 22 3a 50 25 3d 30 0d 11 2b 20 20 |p$=",":P%=0..+ | 0001eae0 20 20 20 20 20 c9 20 22 54 41 42 22 3a 73 65 70 | . "TAB":sep| 0001eaf0 24 3d bd 28 39 29 3a 50 25 3d 31 0d 11 2c 20 20 |$=.(9):P%=1.., | 0001eb00 20 20 20 20 20 c9 20 22 43 52 22 3a 73 65 70 24 | . "CR":sep$| 0001eb10 3d bd 28 31 33 29 3a 50 25 3d 32 0d 11 2d 20 20 |=.(13):P%=2..- | 0001eb20 20 20 20 20 20 c9 20 22 4c 46 22 3a 73 65 70 24 | . "LF":sep$| 0001eb30 3d bd 28 31 30 29 3a 50 25 3d 33 0d 11 2e 23 20 |=.(10):P%=3...# | 0001eb40 20 20 20 20 20 7f 20 24 44 65 6c 69 6d 25 3d 43 | . $Delim%=C| 0001eb50 24 3a 73 65 70 24 3d 43 24 3a 50 25 3d 34 0d 11 |$:sep$=C$:P%=4..| 0001eb60 2f 09 20 20 20 20 cb 0d 11 30 23 20 20 20 20 f2 |/. ...0# .| 0001eb70 74 69 63 6b 5f 6f 6e 65 28 6d 65 6e 75 25 28 31 |tick_one(menu%(1| 0001eb80 35 29 2c 30 2c 33 2c 50 25 29 0d 11 31 32 20 20 |5),0,3,P%)..12 | 0001eb90 20 20 24 a4 74 65 78 74 28 63 73 76 57 25 2c 31 | $.text(csvW%,1| 0001eba0 34 29 3d 43 24 3a f2 72 65 64 72 61 77 5f 69 63 |4)=C$:.redraw_ic| 0001ebb0 6f 6e 28 63 73 76 57 25 2c 31 34 29 0d 11 32 17 |on(csvW%,14)..2.| 0001ebc0 20 20 20 20 c9 20 22 54 65 72 6d 69 6e 61 74 6f | . "Terminato| 0001ebd0 72 22 3a 0d 11 33 13 20 20 20 20 24 54 65 72 6d |r":..3. $Term| 0001ebe0 69 6e 25 3d 22 22 0d 11 34 0f 20 20 20 20 c8 8e |in%=""..4. ..| 0001ebf0 20 43 24 20 ca 0d 11 35 21 20 20 20 20 20 20 c9 | C$ ...5! .| 0001ec00 20 22 43 52 22 3a 74 65 72 6d 24 3d bd 28 31 33 | "CR":term$=.(13| 0001ec10 29 3a 50 25 3d 30 0d 11 36 21 20 20 20 20 20 20 |):P%=0..6! | 0001ec20 c9 20 22 4c 46 22 3a 74 65 72 6d 24 3d bd 28 31 |. "LF":term$=.(1| 0001ec30 30 29 3a 50 25 3d 31 0d 11 37 2a 20 20 20 20 20 |0):P%=1..7* | 0001ec40 20 c9 20 22 43 52 20 4c 46 22 3a 74 65 72 6d 24 | . "CR LF":term$| 0001ec50 3d bd 28 31 33 29 2b bd 28 31 30 29 3a 50 25 3d |=.(13)+.(10):P%=| 0001ec60 32 0d 11 38 2a 20 20 20 20 20 20 c9 20 22 4c 46 |2..8* . "LF| 0001ec70 20 43 52 22 3a 74 65 72 6d 24 3d bd 28 31 30 29 | CR":term$=.(10)| 0001ec80 2b bd 28 31 33 29 3a 50 25 3d 33 0d 11 39 2a 20 |+.(13):P%=3..9* | 0001ec90 20 20 20 20 20 c9 20 22 43 52 20 43 52 22 3a 74 | . "CR CR":t| 0001eca0 65 72 6d 24 3d bd 28 31 33 29 2b bd 28 31 33 29 |erm$=.(13)+.(13)| 0001ecb0 3a 50 25 3d 34 0d 11 3a 2a 20 20 20 20 20 20 c9 |:P%=4..:* .| 0001ecc0 20 22 4c 46 20 4c 46 22 3a 74 65 72 6d 24 3d bd | "LF LF":term$=.| 0001ecd0 28 31 30 29 2b bd 28 31 30 29 3a 50 25 3d 35 0d |(10)+.(10):P%=5.| 0001ece0 11 3b 26 20 20 20 20 20 20 7f 3a 20 24 54 65 72 |.;& .: $Ter| 0001ecf0 6d 69 6e 25 3d 43 24 3a 74 65 72 6d 24 3d 43 24 |min%=C$:term$=C$| 0001ed00 3a 50 25 3d 36 0d 11 3c 09 20 20 20 20 cb 0d 11 |:P%=6..<. ...| 0001ed10 3d 23 20 20 20 20 f2 74 69 63 6b 5f 6f 6e 65 28 |=# .tick_one(| 0001ed20 6d 65 6e 75 25 28 32 30 29 2c 30 2c 35 2c 50 25 |menu%(20),0,5,P%| 0001ed30 29 0d 11 3e 32 20 20 20 20 24 a4 74 65 78 74 28 |)..>2 $.text(| 0001ed40 63 73 76 57 25 2c 31 35 29 3d 43 24 3a f2 72 65 |csvW%,15)=C$:.re| 0001ed50 64 72 61 77 5f 69 63 6f 6e 28 63 73 76 57 25 2c |draw_icon(csvW%,| 0001ed60 31 35 29 0d 11 3f 2d 20 20 20 20 c9 20 22 51 75 |15)..?- . "Qu| 0001ed70 6f 74 65 73 22 3a f2 73 65 74 5f 69 63 6f 6e 28 |otes":.set_icon(| 0001ed80 63 73 76 57 25 2c 30 2c 43 24 3d 22 4f 4e 22 29 |csvW%,0,C$="ON")| 0001ed90 0d 11 40 2d 20 20 20 20 c9 20 22 48 65 61 64 65 |..@- . "Heade| 0001eda0 72 22 3a f2 73 65 74 5f 69 63 6f 6e 28 63 73 76 |r":.set_icon(csv| 0001edb0 57 25 2c 31 2c 43 24 3d 22 4f 4e 22 29 0d 11 41 |W%,1,C$="ON")..A| 0001edc0 2d 20 20 20 20 c9 20 22 42 6c 61 6e 6b 73 22 3a |- . "Blanks":| 0001edd0 f2 73 65 74 5f 69 63 6f 6e 28 63 73 76 57 25 2c |.set_icon(csvW%,| 0001ede0 32 2c 43 24 3d 22 4f 4e 22 29 0d 11 42 2a 20 20 |2,C$="ON")..B* | 0001edf0 20 20 c9 20 22 4b 65 79 22 3a f2 73 65 74 5f 69 | . "Key":.set_i| 0001ee00 63 6f 6e 28 63 73 76 57 25 2c 33 2c 43 24 3d 22 |con(csvW%,3,C$="| 0001ee10 4f 4e 22 29 0d 11 43 42 20 20 20 20 c9 20 22 44 |ON")..CB . "D| 0001ee20 61 74 61 22 3a f2 73 65 74 5f 69 63 6f 6e 28 63 |ata":.set_icon(c| 0001ee30 73 76 57 25 2c 34 2c 28 43 24 3d 22 4f 4e 22 20 |svW%,4,(C$="ON" | 0001ee40 80 20 a4 73 65 6c 65 63 74 65 64 28 63 73 76 57 |. .selected(csvW| 0001ee50 25 2c 31 29 29 29 0d 11 44 2f 20 20 20 20 c9 20 |%,1)))..D/ . | 0001ee60 22 44 69 73 70 6c 61 79 22 3a f2 73 65 74 5f 69 |"Display":.set_i| 0001ee70 63 6f 6e 28 63 73 76 57 25 2c 31 31 2c 43 24 3d |con(csvW%,11,C$=| 0001ee80 22 4f 4e 22 29 0d 11 45 2d 20 20 20 20 c9 20 22 |"ON")..E- . "| 0001ee90 53 74 72 69 70 22 3a f2 73 65 74 5f 69 63 6f 6e |Strip":.set_icon| 0001eea0 28 63 73 76 57 25 2c 31 36 2c 43 24 3d 22 4f 4e |(csvW%,16,C$="ON| 0001eeb0 22 29 0d 11 46 19 20 20 20 20 c9 20 22 43 61 73 |")..F. . "Cas| 0001eec0 65 53 70 65 63 69 66 69 63 22 3a 0d 11 47 27 20 |eSpecific":..G' | 0001eed0 20 20 20 f2 73 65 74 5f 69 63 6f 6e 28 6d 61 74 | .set_icon(mat| 0001eee0 63 68 57 25 2c 31 36 2c 28 43 24 3d 22 4f 4e 22 |chW%,16,(C$="ON"| 0001eef0 29 29 0d 11 48 28 20 20 20 20 f2 73 65 74 5f 69 |))..H( .set_i| 0001ef00 63 6f 6e 28 73 61 76 65 73 75 62 57 25 2c 35 2c |con(savesubW%,5,| 0001ef10 28 43 24 3d 22 4f 4e 22 29 29 0d 11 49 27 20 20 |(C$="ON"))..I' | 0001ef20 20 20 f2 73 65 74 5f 69 63 6f 6e 28 63 68 61 6e | .set_icon(chan| 0001ef30 67 65 57 25 2c 35 2c 28 43 24 3d 22 4f 4e 22 29 |geW%,5,(C$="ON")| 0001ef40 29 0d 11 4a 25 20 20 20 20 f2 73 65 74 5f 69 63 |)..J% .set_ic| 0001ef50 6f 6e 28 6d 6f 76 65 57 25 2c 39 2c 28 43 24 3d |on(moveW%,9,(C$=| 0001ef60 22 4f 4e 22 29 29 0d 11 4b 27 20 20 20 20 f2 73 |"ON"))..K' .s| 0001ef70 65 74 5f 69 63 6f 6e 28 6d 65 72 67 65 57 25 2c |et_icon(mergeW%,| 0001ef80 31 32 2c 28 43 24 3d 22 4f 4e 22 29 29 0d 11 4c |12,(C$="ON"))..L| 0001ef90 28 20 20 20 20 f2 73 65 74 5f 69 63 6f 6e 28 6b |( .set_icon(k| 0001efa0 65 79 70 61 64 57 25 2c 33 32 2c 28 43 24 3d 22 |eypadW%,32,(C$="| 0001efb0 4f 4e 22 29 29 0d 11 4d 18 20 20 20 20 c9 20 22 |ON"))..M. . "| 0001efc0 44 75 70 6c 69 63 61 74 69 6f 6e 22 3a 0d 11 4e |Duplication":..N| 0001efd0 2d 20 20 20 20 64 75 70 25 3d 28 43 24 3d 22 4f |- dup%=(C$="O| 0001efe0 4e 22 29 3a f2 74 69 63 6b 28 6d 65 6e 75 25 28 |N"):.tick(menu%(| 0001eff0 33 29 2c 38 2c 64 75 70 25 29 0d 11 4f 07 20 20 |3),8,dup%)..O. | 0001f000 cb 0d 11 50 09 fd 20 c5 23 46 0d 11 51 2e f2 69 |...P.. .#F..Q..i| 0001f010 63 6f 6e 5f 62 69 74 28 32 32 2c 63 73 76 57 25 |con_bit(22,csvW%| 0001f020 2c 34 2c 28 a4 73 65 6c 65 63 74 65 64 28 63 73 |,4,(.selected(cs| 0001f030 76 57 25 2c 31 29 29 29 0d 11 52 12 f2 63 6c 6f |vW%,1)))..R..clo| 0001f040 73 65 5f 66 69 6c 65 28 46 29 0d 11 53 05 e1 0d |se_file(F)..S...| 0001f050 11 54 05 3a 0d 11 55 17 dd 20 f2 73 61 76 65 5f |.T.:..U.. .save_| 0001f060 63 68 6f 69 63 65 73 28 66 24 29 0d 11 56 0a ea |choices(f$)..V..| 0001f070 20 46 2c 43 24 0d 11 57 0b 46 3d ae 28 66 24 29 | F,C$..W.F=.(f$)| 0001f080 0d 11 58 26 e7 20 76 61 6c 69 64 61 74 65 25 3d |..X&. validate%=| 0001f090 b9 20 8c 20 43 24 3d 22 4f 4e 22 20 8b 20 43 24 |. . C$="ON" . C$| 0001f0a0 3d 22 4f 46 46 22 0d 11 59 16 d5 23 46 2c 22 56 |="OFF"..Y..#F,"V| 0001f0b0 61 6c 69 64 61 74 65 20 22 2b 43 24 0d 11 5a 27 |alidate "+C$..Z'| 0001f0c0 e7 20 72 65 6c 61 74 69 6f 6e 73 25 3d b9 20 8c |. relations%=. .| 0001f0d0 20 43 24 3d 22 4f 4e 22 20 8b 20 43 24 3d 22 4f | C$="ON" . C$="O| 0001f0e0 46 46 22 0d 11 5b 17 d5 23 46 2c 22 52 65 6c 61 |FF"..[..#F,"Rela| 0001f0f0 74 69 6f 6e 73 20 22 2b 43 24 0d 11 5c 25 e7 20 |tions "+C$..\%. | 0001f100 64 65 6c 77 61 72 6e 25 3d b9 20 8c 20 43 24 3d |delwarn%=. . C$=| 0001f110 22 4f 4e 22 20 8b 20 43 24 3d 22 4f 46 46 22 0d |"ON" . C$="OFF".| 0001f120 11 5d 15 d5 23 46 2c 22 57 61 72 6e 69 6e 67 20 |.]..#F,"Warning | 0001f130 22 2b 43 24 0d 11 5e 12 c8 8e 20 61 75 74 6f 73 |"+C$..^... autos| 0001f140 61 76 65 25 20 ca 0d 11 5f 13 20 20 c9 20 30 3a |ave% ..._. . 0:| 0001f150 43 24 3d 22 4f 46 46 20 22 0d 11 60 1e 20 20 c9 |C$="OFF "..`. .| 0001f160 20 31 3a 43 24 3d 22 57 41 52 4e 22 2b 24 49 6e | 1:C$="WARN"+$In| 0001f170 74 65 72 76 61 6c 25 0d 11 61 1e 20 20 c9 20 32 |terval%..a. . 2| 0001f180 3a 43 24 3d 22 41 55 54 4f 22 2b 24 49 6e 74 65 |:C$="AUTO"+$Inte| 0001f190 72 76 61 6c 25 0d 11 62 05 cb 0d 11 63 16 d5 23 |rval%..b....c..#| 0001f1a0 46 2c 22 41 75 74 6f 73 61 76 65 20 22 2b 43 24 |F,"Autosave "+C$| 0001f1b0 0d 11 64 15 c8 8e 20 61 75 74 6f 62 61 6c 61 6e |..d... autobalan| 0001f1c0 63 65 25 20 ca 0d 11 65 13 20 20 c9 20 30 3a 43 |ce% ...e. . 0:C| 0001f1d0 24 3d 22 4f 46 46 20 22 0d 11 66 1b 20 20 c9 20 |$="OFF "..f. . | 0001f1e0 31 3a 43 24 3d 22 41 55 54 4f 22 2b 24 45 76 65 |1:C$="AUTO"+$Eve| 0001f1f0 72 79 25 0d 11 67 05 cb 0d 11 68 19 d5 23 46 2c |ry%..g....h..#F,| 0001f200 22 41 75 74 6f 62 61 6c 61 6e 63 65 20 22 2b 43 |"Autobalance "+C| 0001f210 24 0d 11 69 2d e7 20 a4 73 65 6c 65 63 74 65 64 |$..i-. .selected| 0001f220 28 63 73 76 57 25 2c 30 29 20 8c 20 43 24 3d 22 |(csvW%,0) . C$="| 0001f230 4f 4e 22 20 8b 20 43 24 3d 22 4f 46 46 22 0d 11 |ON" . C$="OFF"..| 0001f240 6a 14 d5 23 46 2c 22 51 75 6f 74 65 73 20 22 2b |j..#F,"Quotes "+| 0001f250 43 24 0d 11 6b 2d e7 20 a4 73 65 6c 65 63 74 65 |C$..k-. .selecte| 0001f260 64 28 63 73 76 57 25 2c 31 29 20 8c 20 43 24 3d |d(csvW%,1) . C$=| 0001f270 22 4f 4e 22 20 8b 20 43 24 3d 22 4f 46 46 22 0d |"ON" . C$="OFF".| 0001f280 11 6c 14 d5 23 46 2c 22 48 65 61 64 65 72 20 22 |.l..#F,"Header "| 0001f290 2b 43 24 0d 11 6d 2d e7 20 a4 73 65 6c 65 63 74 |+C$..m-. .select| 0001f2a0 65 64 28 63 73 76 57 25 2c 32 29 20 8c 20 43 24 |ed(csvW%,2) . C$| 0001f2b0 3d 22 4f 4e 22 20 8b 20 43 24 3d 22 4f 46 46 22 |="ON" . C$="OFF"| 0001f2c0 0d 11 6e 14 d5 23 46 2c 22 42 6c 61 6e 6b 73 20 |..n..#F,"Blanks | 0001f2d0 22 2b 43 24 0d 11 6f 2d e7 20 a4 73 65 6c 65 63 |"+C$..o-. .selec| 0001f2e0 74 65 64 28 63 73 76 57 25 2c 33 29 20 8c 20 43 |ted(csvW%,3) . C| 0001f2f0 24 3d 22 4f 4e 22 20 8b 20 43 24 3d 22 4f 46 46 |$="ON" . C$="OFF| 0001f300 22 0d 11 70 11 d5 23 46 2c 22 4b 65 79 20 22 2b |"..p..#F,"Key "+| 0001f310 43 24 0d 11 71 2d e7 20 a4 73 65 6c 65 63 74 65 |C$..q-. .selecte| 0001f320 64 28 63 73 76 57 25 2c 34 29 20 8c 20 43 24 3d |d(csvW%,4) . C$=| 0001f330 22 4f 4e 22 20 8b 20 43 24 3d 22 4f 46 46 22 0d |"ON" . C$="OFF".| 0001f340 11 72 12 d5 23 46 2c 22 44 61 74 61 20 22 2b 43 |.r..#F,"Data "+C| 0001f350 24 0d 11 73 0d c8 8e 20 73 65 70 24 20 ca 0d 11 |$..s... sep$ ...| 0001f360 74 16 20 20 c9 20 22 2c 22 3a 43 24 3d 22 43 6f |t. . ",":C$="Co| 0001f370 6d 6d 61 22 0d 11 75 15 20 20 c9 20 bd 28 39 29 |mma"..u. . .(9)| 0001f380 3a 43 24 3d 22 54 41 42 22 0d 11 76 15 20 20 c9 |:C$="TAB"..v. .| 0001f390 20 bd 28 31 30 29 3a 43 24 3d 22 4c 46 22 0d 11 | .(10):C$="LF"..| 0001f3a0 77 15 20 20 c9 20 bd 28 31 33 29 3a 43 24 3d 22 |w. . .(13):C$="| 0001f3b0 43 52 22 0d 11 78 0f 20 20 7f 3a 43 24 3d 73 65 |CR"..x. .:C$=se| 0001f3c0 70 24 0d 11 79 05 cb 0d 11 7a 17 d5 23 46 2c 22 |p$..y....z..#F,"| 0001f3d0 53 65 70 61 72 61 74 6f 72 20 22 2b 43 24 0d 11 |Separator "+C$..| 0001f3e0 7b 0e c8 8e 20 74 65 72 6d 24 20 ca 0d 11 7c 15 |{... term$ ...|.| 0001f3f0 20 20 c9 20 bd 28 31 33 29 3a 43 24 3d 22 43 52 | . .(13):C$="CR| 0001f400 22 0d 11 7d 15 20 20 c9 20 bd 28 31 30 29 3a 43 |"..}. . .(10):C| 0001f410 24 3d 22 4c 46 22 0d 11 7e 1e 20 20 c9 20 bd 28 |$="LF"..~. . .(| 0001f420 31 33 29 2b bd 28 31 30 29 3a 43 24 3d 22 43 52 |13)+.(10):C$="CR| 0001f430 20 4c 46 22 0d 11 7f 1e 20 20 c9 20 bd 28 31 30 | LF".... . .(10| 0001f440 29 2b bd 28 31 33 29 3a 43 24 3d 22 4c 46 20 43 |)+.(13):C$="LF C| 0001f450 52 22 0d 11 80 1e 20 20 c9 20 bd 28 31 33 29 2b |R".... . .(13)+| 0001f460 bd 28 31 33 29 3a 43 24 3d 22 43 52 20 43 52 22 |.(13):C$="CR CR"| 0001f470 0d 11 81 1e 20 20 c9 20 bd 28 31 30 29 2b bd 28 |.... . .(10)+.(| 0001f480 31 30 29 3a 43 24 3d 22 4c 46 20 4c 46 22 0d 11 |10):C$="LF LF"..| 0001f490 82 10 20 20 7f 3a 43 24 3d 74 65 72 6d 24 0d 11 |.. .:C$=term$..| 0001f4a0 83 05 cb 0d 11 84 18 d5 23 46 2c 22 54 65 72 6d |........#F,"Term| 0001f4b0 69 6e 61 74 6f 72 20 22 2b 43 24 0d 11 85 2e e7 |inator "+C$.....| 0001f4c0 20 a4 73 65 6c 65 63 74 65 64 28 63 73 76 57 25 | .selected(csvW%| 0001f4d0 2c 31 31 29 20 8c 20 43 24 3d 22 4f 4e 22 20 8b |,11) . C$="ON" .| 0001f4e0 20 43 24 3d 22 4f 46 46 22 0d 11 86 15 d5 23 46 | C$="OFF".....#F| 0001f4f0 2c 22 44 69 73 70 6c 61 79 20 22 2b 43 24 0d 11 |,"Display "+C$..| 0001f500 87 2e e7 20 a4 73 65 6c 65 63 74 65 64 28 63 73 |... .selected(cs| 0001f510 76 57 25 2c 31 36 29 20 8c 20 43 24 3d 22 4f 4e |vW%,16) . C$="ON| 0001f520 22 20 8b 20 43 24 3d 22 4f 46 46 22 0d 11 88 13 |" . C$="OFF"....| 0001f530 d5 23 46 2c 22 53 74 72 69 70 20 22 2b 43 24 0d |.#F,"Strip "+C$.| 0001f540 11 89 0a c8 8e 20 b9 20 ca 0d 11 8a 93 20 20 c9 |..... . ..... .| 0001f550 20 a4 73 65 6c 65 63 74 65 64 28 6d 61 74 63 68 | .selected(match| 0001f560 57 25 2c 31 36 29 2c a4 73 65 6c 65 63 74 65 64 |W%,16),.selected| 0001f570 28 73 61 76 65 73 75 62 57 25 2c 35 29 2c a4 73 |(savesubW%,5),.s| 0001f580 65 6c 65 63 74 65 64 28 63 68 61 6e 67 65 57 25 |elected(changeW%| 0001f590 2c 35 29 2c a4 73 65 6c 65 63 74 65 64 28 6d 6f |,5),.selected(mo| 0001f5a0 76 65 57 25 2c 39 29 2c a4 73 65 6c 65 63 74 65 |veW%,9),.selecte| 0001f5b0 64 28 6d 65 72 67 65 57 25 2c 31 32 29 2c a4 73 |d(mergeW%,12),.s| 0001f5c0 65 6c 65 63 74 65 64 28 6b 65 79 70 61 64 57 25 |elected(keypadW%| 0001f5d0 2c 33 32 29 3a 43 24 3d 22 4f 4e 22 0d 11 8b 10 |,32):C$="ON"....| 0001f5e0 20 20 7f 3a 43 24 3d 22 4f 46 46 22 0d 11 8c 05 | .:C$="OFF"....| 0001f5f0 cb 0d 11 8d 1a d5 23 46 2c 22 43 61 73 65 53 70 |......#F,"CaseSp| 0001f600 65 63 69 66 69 63 20 22 2b 43 24 0d 11 8e 1f e7 |ecific "+C$.....| 0001f610 20 64 75 70 25 20 8c 20 43 24 3d 22 4f 4e 22 20 | dup% . C$="ON" | 0001f620 8b 20 43 24 3d 22 4f 46 46 22 0d 11 8f 19 d5 23 |. C$="OFF".....#| 0001f630 46 2c 22 44 75 70 6c 69 63 61 74 69 6f 6e 20 22 |F,"Duplication "| 0001f640 2b 43 24 0d 11 90 12 f2 63 6c 6f 73 65 5f 66 69 |+C$.....close_fi| 0001f650 6c 65 28 46 29 0d 11 91 1b c8 99 20 22 4f 53 5f |le(F)...... "OS_| 0001f660 46 69 6c 65 22 2c 31 38 2c 66 24 2c 26 66 66 66 |File",18,f$,&fff| 0001f670 0d 11 92 05 e1 0d 11 93 05 3a 0d 11 94 1a dd 20 |.........:..... | 0001f680 f2 6f 70 65 6e 5f 69 6e 64 65 78 28 66 24 2c 6b |.open_index(f$,k| 0001f690 65 79 25 29 0d 11 95 11 ea 20 6b 65 79 62 61 73 |ey%)..... keybas| 0001f6a0 65 25 2c 49 25 0d 11 96 3a e7 20 6b 65 79 25 3e |e%,I%...:. key%>| 0001f6b0 4d 61 78 4b 65 79 73 25 20 8c 20 65 78 74 72 61 |MaxKeys% . extra| 0001f6c0 6b 65 79 73 24 2b 3d a4 6c 65 61 66 28 66 24 29 |keys$+=.leaf(f$)| 0001f6d0 2b 22 2c 22 3a 4b 65 79 73 25 2d 3d 31 3a e1 0d |+",":Keys%-=1:..| 0001f6e0 11 97 3f e7 20 6b 65 79 61 6e 63 68 6f 72 25 28 |..?. keyanchor%(| 0001f6f0 6b 65 79 25 29 20 8c 20 f2 73 63 72 61 70 5f 73 |key%) . .scrap_s| 0001f700 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 6b 65 79 |liding_block(key| 0001f710 61 6e 63 68 6f 72 25 28 6b 65 79 25 29 29 0d 11 |anchor%(key%))..| 0001f720 98 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 |. .. "OS_File",5| 0001f730 2c 66 24 20 b8 20 2c 2c 2c 2c 6c 65 6e 25 0d 11 |,f$ . ,,,,len%..| 0001f740 99 36 f2 63 72 65 61 74 65 5f 6e 61 6d 65 64 5f |.6.create_named_| 0001f750 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 6b 65 |sliding_block(ke| 0001f760 79 61 6e 63 68 6f 72 25 28 6b 65 79 25 29 2c 6c |yanchor%(key%),l| 0001f770 65 6e 25 29 0d 11 9a 29 c8 99 20 22 4f 53 5f 46 |en%)...).. "OS_F| 0001f780 69 6c 65 22 2c 32 35 35 2c 66 24 2c 21 6b 65 79 |ile",255,f$,!key| 0001f790 61 6e 63 68 6f 72 25 28 6b 65 79 25 29 0d 11 9b |anchor%(key%)...| 0001f7a0 1a 49 6e 64 65 78 24 28 6b 65 79 25 29 3d a4 6c |.Index$(key%)=.l| 0001f7b0 65 61 66 28 66 24 29 0d 11 9c 1e 6b 65 79 62 61 |eaf(f$)....keyba| 0001f7c0 73 65 25 3d 21 6b 65 79 61 6e 63 68 6f 72 25 28 |se%=!keyanchor%(| 0001f7d0 6b 65 79 25 29 0d 11 9d 0e e7 20 6b 65 79 25 3d |key%)..... key%=| 0001f7e0 30 20 8c 0d 11 9e 10 20 20 e3 20 49 25 3d 30 20 |0 ..... . I%=0 | 0001f7f0 b8 20 35 0d 11 9f 25 20 20 20 20 24 44 61 74 65 |. 5...% $Date| 0001f800 25 28 49 25 29 3d 24 28 6b 65 79 62 61 73 65 25 |%(I%)=$(keybase%| 0001f810 2b 38 2b 39 2a 49 25 29 0d 11 a0 0a 20 20 ed 20 |+8+9*I%).... . | 0001f820 49 25 0d 11 a1 05 cd 0d 11 a2 1b 4b 46 25 28 6b |I%.........KF%(k| 0001f830 65 79 25 2c 30 29 3d 6b 65 79 62 61 73 65 25 21 |ey%,0)=keybase%!| 0001f840 36 32 0d 11 a3 1b 4b 46 25 28 6b 65 79 25 2c 31 |62....KF%(key%,1| 0001f850 29 3d 6b 65 79 62 61 73 65 25 21 36 36 0d 11 a4 |)=keybase%!66...| 0001f860 19 4b 4c 25 28 6b 65 79 25 29 3d 6b 65 79 62 61 |.KL%(key%)=keyba| 0001f870 73 65 25 3f 37 30 0d 11 a5 21 63 61 73 65 25 28 |se%?70...!case%(| 0001f880 6b 65 79 25 29 3d 28 6b 65 79 62 61 73 65 25 3f |key%)=(keybase%?| 0001f890 37 31 3d 32 35 35 29 0d 11 a6 0e e3 20 49 25 3d |71=255)..... I%=| 0001f8a0 30 20 b8 20 33 0d 11 a7 26 20 20 4b 57 25 28 6b |0 . 3...& KW%(k| 0001f8b0 65 79 25 2c 49 25 29 3d 21 28 6b 65 79 62 61 73 |ey%,I%)=!(keybas| 0001f8c0 65 25 2b 37 34 2b 49 25 2a 34 29 0d 11 a8 08 ed |e%+74+I%*4).....| 0001f8d0 20 49 25 0d 11 a9 05 e1 0d 11 aa 05 3a 0d 11 ab | I%.........:...| 0001f8e0 11 dd 20 f2 67 65 74 5f 74 61 62 6c 65 73 0d 11 |.. .get_tables..| 0001f8f0 ac 1b ea 20 6c 6b 2c 46 25 2c 64 25 2c 52 34 25 |... lk,F%,d%,R4%| 0001f900 2c 66 24 2c 6e 61 6d 65 24 0d 11 ad 24 66 24 3d |,f$,name$...$f$=| 0001f910 24 64 61 74 61 62 61 73 65 25 2b 22 2e 56 61 6c |$database%+".Val| 0001f920 54 61 62 6c 65 73 22 3a 52 34 25 3d 30 0d 11 ae |Tables":R4%=0...| 0001f930 2c c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c |,.. "OS_File",5,| 0001f940 24 64 61 74 61 62 61 73 65 25 2b 22 2e 54 61 62 |$database%+".Tab| 0001f950 6c 65 73 22 20 b8 20 64 25 0d 11 af 22 e7 20 64 |les" . d%...". d| 0001f960 25 3d 32 20 8c 20 85 20 66 61 74 61 6c 5f 65 72 |%=2 . . fatal_er| 0001f970 72 25 2c a4 6d 73 67 28 31 38 29 0d 11 b0 07 ea |r%,.msg(18).....| 0001f980 20 85 0d 11 b1 2f ee 20 85 20 ea 3a f2 63 6c 6f | ..../. . .:.clo| 0001f990 73 65 5f 66 69 6c 65 28 6c 6b 29 3a f2 77 69 6d |se_file(lk):.wim| 0001f9a0 70 5f 65 72 72 6f 72 28 a3 2c 9f 2c 9e 2c f6 24 |p_error(.,.,.,.$| 0001f9b0 29 0d 11 b2 1c 6c 6b 3d 8e 28 24 64 61 74 61 62 |)....lk=.($datab| 0001f9c0 61 73 65 25 2b 22 2e 4c 69 6e 6b 22 29 0d 11 b3 |ase%+".Link")...| 0001f9d0 0c e7 20 6c 6b 3e 30 20 8c 0d 11 b4 14 20 20 21 |.. lk>0 ..... !| 0001f9e0 62 6c 6f 63 6b 25 3d 6d 61 69 6e 57 25 0d 11 b5 |block%=mainW%...| 0001f9f0 0f 20 20 c8 95 20 ac 20 c5 23 6c 6b 0d 11 b6 0d |. .. . .#lk....| 0001fa00 20 20 20 20 46 25 2b 3d 31 0d 11 b7 16 20 20 20 | F%+=1.... | 0001fa10 20 e8 23 6c 6b 2c 6c 69 6e 6b 24 28 46 25 29 0d | .#lk,link$(F%).| 0001fa20 11 b8 19 20 20 20 20 6e 61 6d 65 24 3d c0 6c 69 |... name$=.li| 0001fa30 6e 6b 24 28 46 25 29 29 0d 11 b9 1a 20 20 20 20 |nk$(F%)).... | 0001fa40 e7 20 c0 6e 61 6d 65 24 2c 31 29 3c 3e 22 40 22 |. .name$,1)<>"@"| 0001fa50 20 8c 0d 11 ba 17 20 20 20 20 20 20 e7 20 6e 61 | ..... . na| 0001fa60 6d 65 24 3c 3e 22 22 20 8c 0d 11 bb 2b 20 20 20 |me$<>"" ....+ | 0001fa70 20 20 20 20 20 e7 20 97 28 6e 61 6d 65 24 29 3c | . .(name$)<| 0001fa80 35 38 20 8c 20 6e 61 6d 65 24 3d c1 6e 61 6d 65 |58 . name$=.name| 0001fa90 24 2c 32 29 0d 11 bc 36 20 20 20 20 20 20 20 20 |$,2)...6 | 0001faa0 f2 73 65 74 5f 69 63 6f 6e 5f 63 6f 6c 73 28 6d |.set_icon_cols(m| 0001fab0 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 25 29 |ainW%,field%(F%)| 0001fac0 2c 66 63 6f 6c 25 28 36 29 29 0d 11 bd 2e 20 20 |,fcol%(6)).... | 0001fad0 20 20 20 20 20 20 e7 20 64 25 3d 30 20 8c 20 f2 | . d%=0 . .| 0001fae0 64 72 61 67 5f 74 61 62 6c 65 28 66 24 2b 22 2e |drag_table(f$+".| 0001faf0 22 2b 6e 61 6d 65 24 29 0d 11 be 0b 20 20 20 20 |"+name$).... | 0001fb00 20 20 cd 0d 11 bf 09 20 20 20 20 cd 0d 11 c0 07 | ..... .....| 0001fb10 20 20 ce 0d 11 c1 17 20 20 6c 69 6e 6b 24 28 30 | ..... link$(0| 0001fb20 29 3d 22 4c 4f 41 44 45 44 22 0d 11 c2 15 20 20 |)="LOADED".... | 0001fb30 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 6c 6b 29 0d |.close_file(lk).| 0001fb40 11 c3 05 cd 0d 11 c4 3a f4 20 23 23 23 20 46 6f |.......:. ### Fo| 0001fb50 72 63 65 20 6c 6f 61 64 69 6e 67 20 6f 66 20 75 |rce loading of u| 0001fb60 6e 6c 69 6e 6b 65 64 20 62 75 74 20 66 6c 61 67 |nlinked but flag| 0001fb70 67 65 64 20 74 61 62 6c 65 73 20 23 23 23 0d 11 |ged tables ###..| 0001fb80 c5 0e c8 95 20 52 34 25 3c 3e 2d 31 0d 11 c6 36 |.... R4%<>-1...6| 0001fb90 20 20 c8 99 20 22 4f 53 5f 47 42 50 42 22 2c 39 | .. "OS_GBPB",9| 0001fba0 2c 66 24 2c 62 6c 6f 63 6b 25 2c 31 2c 52 34 25 |,f$,block%,1,R4%| 0001fbb0 2c 31 31 20 b8 20 2c 2c 6e 61 6d 65 24 2c 2c 52 |,11 . ,,name$,,R| 0001fbc0 34 25 0d 11 c7 3b 20 20 e7 20 52 34 25 3c 3e 2d |4%...; . R4%<>-| 0001fbd0 31 20 8c 20 e7 20 c2 6e 61 6d 65 24 29 3d 22 21 |1 . . .name$)="!| 0001fbe0 22 20 8c 20 f2 64 72 61 67 5f 74 61 62 6c 65 28 |" . .drag_table(| 0001fbf0 66 24 2b 22 2e 22 2b 6e 61 6d 65 24 29 0d 11 c8 |f$+"."+name$)...| 0001fc00 05 ce 0d 11 c9 07 f7 20 85 0d 11 ca 32 e7 20 65 |....... ....2. e| 0001fc10 78 74 72 61 74 61 62 73 24 3c 3e 22 22 20 8c 20 |xtratabs$<>"" . | 0001fc20 f2 73 6f 66 74 65 72 72 6f 72 28 c0 65 78 74 72 |.softerror(.extr| 0001fc30 61 74 61 62 73 24 29 2c 39 37 29 0d 11 cb 05 e1 |atabs$),97).....| 0001fc40 0d 11 cc 05 3a 0d 11 cd 11 dd 20 f2 6c 6f 61 64 |....:..... .load| 0001fc50 5f 63 61 6c 63 73 0d 11 ce 15 ea 20 46 25 2c 46 |_calcs..... F%,F| 0001fc60 31 25 2c 50 25 2c 63 61 6c 63 24 0d 11 cf 10 75 |1%,P%,calc$....u| 0001fc70 70 64 61 74 65 24 28 29 3d 22 22 0d 11 d0 1c 63 |pdate$()=""....c| 0001fc80 6c 3d 8e 28 24 64 61 74 61 62 61 73 65 25 2b 22 |l=.($database%+"| 0001fc90 2e 43 61 6c 63 22 29 0d 11 d1 0c e7 20 63 6c 3e |.Calc")..... cl>| 0001fca0 30 20 8c 0d 11 d2 0f 20 20 c8 95 20 ac 20 c5 23 |0 ..... .. . .#| 0001fcb0 63 6c 0d 11 d3 2b 20 20 20 20 46 25 2b 3d 31 3a |cl...+ F%+=1:| 0001fcc0 46 24 3d c3 7e 28 46 25 29 3a e7 20 46 25 3c 31 |F$=.~(F%):. F%<1| 0001fcd0 36 20 8c 20 46 24 3d 22 30 22 2b 46 24 0d 11 d4 |6 . F$="0"+F$...| 0001fce0 22 20 20 20 20 e8 23 63 6c 2c 63 61 6c 63 24 3a |" .#cl,calc$:| 0001fcf0 63 61 6c 63 24 28 46 25 29 3d 63 61 6c 63 24 0d |calc$(F%)=calc$.| 0001fd00 11 d5 1a 20 20 20 20 c8 8e 20 63 68 61 72 74 79 |... .. charty| 0001fd10 70 65 25 28 46 25 29 20 ca 0d 11 d6 10 20 20 20 |pe%(F%) ..... | 0001fd20 20 20 20 c9 20 36 2c 37 3a 0d 11 d7 0b 20 20 20 | . 6,7:.... | 0001fd30 20 20 20 f5 0d 11 d8 21 20 20 20 20 20 20 20 20 | ....! | 0001fd40 50 25 3d a7 63 61 6c 63 24 2c 22 24 52 66 25 28 |P%=.calc$,"$Rf%(| 0001fd50 22 2c 50 25 29 0d 11 d9 3f 20 20 20 20 20 20 20 |",P%)...? | 0001fd60 20 e7 20 50 25 3e 30 20 8c 20 46 31 25 3d bb 28 | . P%>0 . F1%=.(| 0001fd70 c1 63 61 6c 63 24 2c 50 25 2b 35 29 29 3a 75 70 |.calc$,P%+5)):up| 0001fd80 64 61 74 65 24 28 46 31 25 29 2b 3d 46 24 3a 50 |date$(F1%)+=F$:P| 0001fd90 25 2b 3d 35 0d 11 da 10 20 20 20 20 20 20 fd 20 |%+=5.... . | 0001fda0 50 25 3d 30 0d 11 db 0b 20 20 20 20 20 20 f5 0d |P%=0.... ..| 0001fdb0 11 dc 20 20 20 20 20 20 20 20 20 50 25 3d a7 63 |.. P%=.c| 0001fdc0 61 6c 63 24 2c 22 46 4e 6e 28 22 2c 50 25 29 0d |alc$,"FNn(",P%).| 0001fdd0 11 dd 3f 20 20 20 20 20 20 20 20 e7 20 50 25 3e |..? . P%>| 0001fde0 30 20 8c 20 46 31 25 3d bb 28 c1 63 61 6c 63 24 |0 . F1%=.(.calc$| 0001fdf0 2c 50 25 2b 34 29 29 3a 75 70 64 61 74 65 24 28 |,P%+4)):update$(| 0001fe00 46 31 25 29 2b 3d 46 24 3a 50 25 2b 3d 34 0d 11 |F1%)+=F$:P%+=4..| 0001fe10 de 10 20 20 20 20 20 20 fd 20 50 25 3d 30 0d 11 |.. . P%=0..| 0001fe20 df 2e 20 20 20 20 20 20 e7 20 a7 63 61 6c 63 24 |.. . .calc$| 0001fe30 2c 22 54 49 4d 45 24 22 29 3e 30 20 8c 20 75 70 |,"TIME$")>0 . up| 0001fe40 64 61 74 65 24 28 30 29 2b 3d 46 24 0d 11 e0 09 |date$(0)+=F$....| 0001fe50 20 20 20 20 cb 0d 11 e1 07 20 20 ce 0d 11 e2 17 | ..... .....| 0001fe60 20 20 63 61 6c 63 24 28 30 29 3d 22 4c 4f 41 44 | calc$(0)="LOAD| 0001fe70 45 44 22 0d 11 e3 15 20 20 f2 63 6c 6f 73 65 5f |ED".... .close_| 0001fe80 66 69 6c 65 28 63 6c 29 0d 11 e4 05 cd 0d 11 e5 |file(cl)........| 0001fe90 05 e1 0d 11 e6 05 3a 0d 11 e7 18 dd 20 a4 67 65 |......:..... .ge| 0001fea0 74 5f 66 6f 72 6d 28 f8 20 46 70 74 72 25 29 0d |t_form(. Fptr%).| 0001feb0 11 e8 2b ea 20 46 2c 4c 25 2c 4e 25 2c 49 25 2c |..+. F,L%,N%,I%,| 0001fec0 56 25 2c 78 25 2c 79 25 2c 78 6c 69 6d 25 2c 79 |V%,x%,y%,xlim%,y| 0001fed0 6c 69 6d 25 2c 74 65 78 74 25 0d 11 e9 14 62 75 |lim%,text%....bu| 0001fee0 74 74 6f 6e 66 69 65 6c 64 25 28 29 3d 30 0d 11 |ttonfield%()=0..| 0001fef0 ea 72 e7 20 64 65 73 69 67 6e 25 20 8c 20 64 66 |.r. design% . df| 0001ff00 6c 67 25 3d 28 77 69 6e 62 61 63 6b 25 3c 3c 32 |lg%=(winback%<<2| 0001ff10 38 29 2b 26 37 30 31 36 37 33 31 3a 64 76 61 6c |8)+&7016731:dval| 0001ff20 25 3d 68 61 6e 64 25 3a 66 75 6e 63 25 3d 31 20 |%=hand%:func%=1 | 0001ff30 8b 20 64 66 6c 67 25 3d 28 77 69 6e 62 61 63 6b |. dflg%=(winback| 0001ff40 25 3c 3c 32 38 29 2b 26 37 30 31 30 37 33 31 3a |%<<28)+&7010731:| 0001ff50 64 76 61 6c 25 3d 2d 31 3a 66 75 6e 63 25 3d 30 |dval%=-1:func%=0| 0001ff60 0d 11 eb 1b 46 3d 8e 28 24 64 61 74 61 62 61 73 |....F=.($databas| 0001ff70 65 25 2b 22 2e 46 6f 72 6d 22 29 0d 11 ec 0b e7 |e%+".Form").....| 0001ff80 20 46 3e 30 20 8c 0d 11 ed 0c 20 20 e8 23 46 2c | F>0 ..... .#F,| 0001ff90 4e 25 0d 11 ee 26 20 20 e7 20 4e 25 3e 31 32 37 |N%...& . N%>127| 0001ffa0 20 8c 20 85 20 66 61 74 61 6c 5f 65 72 72 25 2c | . . fatal_err%,| 0001ffb0 a4 6d 73 67 28 39 38 29 0d 11 ef 32 20 20 66 6f |.msg(98)...2 fo| 0001ffc0 72 6d 6c 65 6e 25 3d 26 31 30 30 3a 66 6f 72 6d |rmlen%=&100:form| 0001ffd0 69 6e 63 25 3d 66 6f 72 6d 6c 65 6e 25 3a 66 6f |inc%=formlen%:fo| 0001ffe0 72 6d 5f 69 6e 63 73 25 3d 30 0d 11 f0 37 20 20 |rm_incs%=0...7 | 0001fff0 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c |.extend_named_sl| 00020000 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 66 6f 72 6d |iding_block(form| 00020010 61 6e 63 68 6f 72 25 2c 66 6f 72 6d 6c 65 6e 25 |anchor%,formlen%| 00020020 29 0d 11 f1 39 20 20 46 70 74 72 25 3d 21 66 6f |)...9 Fptr%=!fo| 00020030 72 6d 61 6e 63 68 6f 72 25 3a 52 66 25 28 30 29 |rmanchor%:Rf%(0)| 00020040 3d 46 70 74 72 25 3a 24 52 66 25 28 30 29 3d 22 |=Fptr%:$Rf%(0)="| 00020050 22 3a 46 70 74 72 25 2b 3d 31 0d 11 f2 0f 20 20 |":Fptr%+=1.... | 00020060 4c 65 6e 67 74 68 25 3d 30 0d 11 f3 11 20 20 e3 |Length%=0.... .| 00020070 20 49 25 3d 31 20 b8 20 4e 25 0d 11 f4 40 20 20 | I%=1 . N%...@ | 00020080 20 20 e8 23 46 2c 44 65 73 63 24 2c 54 61 67 24 | .#F,Desc$,Tag$| 00020090 28 49 25 29 2c 78 64 25 2c 79 64 25 2c 78 66 25 |(I%),xd%,yd%,xf%| 000200a0 2c 79 66 25 2c 6c 65 6e 25 2c 63 68 61 72 25 2c |,yf%,len%,char%,| 000200b0 66 69 78 25 2c 62 62 6f 78 25 0d 11 f5 0e 20 20 |fix%,bbox%.... | 000200c0 20 20 c8 8e 20 b9 20 ca 0d 11 f6 2f 20 20 20 20 | .. . ..../ | 000200d0 20 20 c9 20 62 62 6f 78 25 3d 30 20 80 20 6c 65 | . bbox%=0 . le| 000200e0 6e 25 3d 30 3a 77 69 64 74 68 25 3d 30 3a 68 65 |n%=0:width%=0:he| 000200f0 69 67 68 74 25 3d 30 0d 11 f7 30 20 20 20 20 20 |ight%=0...0 | 00020100 20 c9 20 62 62 6f 78 25 3d 30 3a 77 69 64 74 68 | . bbox%=0:width| 00020110 25 3d 6c 65 6e 25 2a 31 36 2b 31 36 3a 68 65 69 |%=len%*16+16:hei| 00020120 67 68 74 25 3d 34 38 0d 11 f8 36 20 20 20 20 20 |ght%=48...6 | 00020130 20 c9 20 62 62 6f 78 25 3c 26 31 30 30 30 30 3a | . bbox%<&10000:| 00020140 77 69 64 74 68 25 3d 62 62 6f 78 25 2a 31 36 2b |width%=bbox%*16+| 00020150 31 36 3a 68 65 69 67 68 74 25 3d 34 38 0d 11 f9 |16:height%=48...| 00020160 32 20 20 20 20 20 20 7f 3a 77 69 64 74 68 25 3d |2 .:width%=| 00020170 62 62 6f 78 25 20 80 20 26 46 46 46 46 3a 68 65 |bbox% . &FFFF:he| 00020180 69 67 68 74 25 3d 62 62 6f 78 25 3e 3e 31 36 0d |ight%=bbox%>>16.| 00020190 11 fa 09 20 20 20 20 cb 0d 11 fb 13 20 20 20 20 |... ..... | 000201a0 e7 20 64 65 73 69 67 6e 25 20 8c 0d 11 fc 14 20 |. design% ..... | 000201b0 20 20 20 20 20 c8 8e 20 63 68 61 72 25 20 ca 0d | .. char% ..| 000201c0 11 fd 31 20 20 20 20 20 20 20 20 c9 20 30 2c 31 |..1 . 0,1| 000201d0 2c 32 2c 33 2c 34 2c 35 2c 36 2c 37 2c 38 2c 33 |,2,3,4,5,6,7,8,3| 000201e0 39 2c 34 30 3a 66 76 61 6c 25 3d 68 61 6e 64 25 |9,40:fval%=hand%| 000201f0 0d 11 fe 22 20 20 20 20 20 20 20 20 7f 3a 66 76 |..." .:fv| 00020200 61 6c 25 3d 68 76 61 6c 69 64 25 28 63 68 61 72 |al%=hvalid%(char| 00020210 25 29 0d 11 ff 0b 20 20 20 20 20 20 cb 0d 12 00 |%).... ....| 00020220 0b 20 20 20 20 20 20 cc 0d 12 01 10 20 20 20 20 |. ..... | 00020230 20 20 c8 8e 20 b9 20 ca 0d 12 02 3d 20 20 20 20 | .. . ....= | 00020240 20 20 20 20 c9 20 63 68 61 72 25 3e 38 20 80 20 | . char%>8 . | 00020250 63 68 61 72 25 3c 33 32 3a 66 76 61 6c 25 3d a4 |char%<32:fval%=.| 00020260 76 61 6c 28 6b 65 79 70 61 64 57 25 2c 63 68 61 |val(keypadW%,cha| 00020270 72 25 2d 39 29 0d 12 03 21 20 20 20 20 20 20 20 |r%-9)...! | 00020280 20 7f 3a 66 76 61 6c 25 3d 76 61 6c 69 64 25 28 | .:fval%=valid%(| 00020290 63 68 61 72 25 29 0d 12 04 0b 20 20 20 20 20 20 |char%).... | 000202a0 cb 0d 12 05 09 20 20 20 20 cd 0d 12 06 22 20 20 |..... ...." | 000202b0 20 20 78 25 3d 78 66 25 2b 77 69 64 74 68 25 2b | x%=xf%+width%+| 000202c0 33 32 3a 79 25 3d 79 66 25 2d 31 36 0d 12 07 1d |32:y%=yf%-16....| 000202d0 20 20 20 20 e7 20 78 25 3e 78 6c 69 6d 25 20 8c | . x%>xlim% .| 000202e0 20 78 6c 69 6d 25 3d 78 25 0d 12 08 1d 20 20 20 | xlim%=x%.... | 000202f0 20 e7 20 79 25 3c 79 6c 69 6d 25 20 8c 20 79 6c | . y%<ylim% . yl| 00020300 69 6d 25 3d 79 25 0d 12 09 27 20 20 20 20 79 25 |im%=y%...' y%| 00020310 3d 79 64 25 2d 31 36 3a e7 20 79 25 3c 79 6c 69 |=yd%-16:. y%<yli| 00020320 6d 25 20 8c 20 79 6c 69 6d 25 3d 79 25 0d 12 0a |m% . ylim%=y%...| 00020330 17 20 20 20 20 4c 65 6e 67 74 68 25 2b 3d 6c 65 |. Length%+=le| 00020340 6e 25 2b 31 0d 12 0b 46 20 20 20 20 e7 20 64 65 |n%+1...F . de| 00020350 73 69 67 6e 25 3d a3 20 80 20 63 68 61 72 25 3d |sign%=. . char%=| 00020360 33 39 20 8c 20 6c 65 6e 25 3d 28 68 65 69 67 68 |39 . len%=(heigh| 00020370 74 25 20 81 20 34 30 29 2a 28 28 77 69 64 74 68 |t% . 40)*((width| 00020380 25 20 81 20 31 36 29 2d 34 29 0d 12 0c 37 20 20 |% . 16)-4)...7 | 00020390 20 20 6c 65 6e 25 28 49 25 29 3d 6c 65 6e 25 3a | len%(I%)=len%:| 000203a0 63 68 61 72 74 79 70 65 25 28 49 25 29 3d 63 68 |chartype%(I%)=ch| 000203b0 61 72 25 3a 66 69 78 25 28 49 25 29 3d 66 69 78 |ar%:fix%(I%)=fix| 000203c0 25 0d 12 0d 13 20 20 20 20 4c 25 3d a9 28 44 65 |%.... L%=.(De| 000203d0 73 63 24 29 0d 12 0e 31 20 20 20 20 e7 20 46 70 |sc$)...1 . Fp| 000203e0 74 72 25 2d 21 66 6f 72 6d 61 6e 63 68 6f 72 25 |tr%-!formanchor%| 000203f0 2b 4c 25 2b 6c 65 6e 25 2b 32 3e 66 6f 72 6d 6c |+L%+len%+2>forml| 00020400 65 6e 25 20 8c 0d 12 0f 2a 20 20 20 20 20 20 66 |en% ....* f| 00020410 6f 72 6d 5f 69 6e 63 73 25 2b 3d 31 3a 66 6f 72 |orm_incs%+=1:for| 00020420 6d 6c 65 6e 25 2b 3d 66 6f 72 6d 69 6e 63 25 0d |mlen%+=forminc%.| 00020430 12 10 3b 20 20 20 20 20 20 f2 65 78 74 65 6e 64 |..; .extend| 00020440 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 |_named_sliding_b| 00020450 6c 6f 63 6b 28 66 6f 72 6d 61 6e 63 68 6f 72 25 |lock(formanchor%| 00020460 2c 66 6f 72 6d 6c 65 6e 25 29 0d 12 11 09 20 20 |,formlen%).... | 00020470 20 20 cd 0d 12 12 14 20 20 20 20 24 46 70 74 72 | ..... $Fptr| 00020480 25 3d 44 65 73 63 24 0d 12 13 51 20 20 20 20 64 |%=Desc$...Q d| 00020490 65 73 63 25 28 49 25 29 3d a4 63 72 65 61 74 65 |esc%(I%)=.create| 000204a0 5f 69 63 6f 6e 28 6d 61 69 6e 57 25 2c 78 64 25 |_icon(mainW%,xd%| 000204b0 2c 79 64 25 2c 4c 25 2a 31 36 2b 38 2c 34 38 2c |,yd%,L%*16+8,48,| 000204c0 64 66 6c 67 25 2c 22 22 2c 46 70 74 72 25 2c 64 |dflg%,"",Fptr%,d| 000204d0 76 61 6c 25 2c 4c 25 29 0d 12 14 2d 20 20 20 20 |val%,L%)...- | 000204e0 46 70 74 72 25 2b 3d 4c 25 2b 31 3a 52 66 25 28 |Fptr%+=L%+1:Rf%(| 000204f0 49 25 29 3d 46 70 74 72 25 3a 24 52 66 25 28 49 |I%)=Fptr%:$Rf%(I| 00020500 25 29 3d 22 22 0d 12 15 30 20 20 20 20 f2 69 63 |%)=""...0 .ic| 00020510 6f 6e 5f 64 65 73 69 67 6e 28 63 68 61 72 25 2c |on_design(char%,| 00020520 66 75 6e 63 25 2c 77 69 64 74 68 25 2c 68 65 69 |func%,width%,hei| 00020530 67 68 74 25 29 0d 12 16 54 20 20 20 20 e7 20 63 |ght%)...T . c| 00020540 68 61 72 25 3d 35 39 20 80 20 ac 20 64 65 73 69 |har%=59 . . desi| 00020550 67 6e 25 20 8c 20 24 46 70 74 72 25 3d 54 61 67 |gn% . $Fptr%=Tag| 00020560 24 28 49 25 29 3a 6c 65 6e 25 3d a9 28 54 61 67 |$(I%):len%=.(Tag| 00020570 24 28 49 25 29 29 3a 66 76 61 6c 25 3d 21 6c 6f |$(I%)):fval%=!lo| 00020580 67 6f 61 6e 63 68 6f 72 25 0d 12 17 5c 20 20 20 |goanchor%...\ | 00020590 20 66 69 65 6c 64 25 28 49 25 29 3d a4 63 72 65 | field%(I%)=.cre| 000205a0 61 74 65 5f 69 63 6f 6e 28 6d 61 69 6e 57 25 2c |ate_icon(mainW%,| 000205b0 78 66 25 2c 79 66 25 2c 77 69 64 74 68 25 2c 68 |xf%,yf%,width%,h| 000205c0 65 69 67 68 74 25 2c 69 66 6c 61 67 73 25 2c 22 |eight%,iflags%,"| 000205d0 22 2c 46 70 74 72 25 2c 66 76 61 6c 25 2c 6c 65 |",Fptr%,fval%,le| 000205e0 6e 25 2b 31 29 0d 12 18 12 20 20 20 20 c8 8e 20 |n%+1).... .. | 000205f0 63 68 61 72 25 20 ca 0d 12 19 68 20 20 20 20 20 |char% ....h | 00020600 20 c9 20 39 2c 31 30 2c 31 31 2c 31 32 2c 31 33 | . 9,10,11,12,13| 00020610 2c 31 34 2c 31 35 2c 31 36 2c 31 37 2c 31 38 2c |,14,15,16,17,18,| 00020620 31 39 2c 32 30 2c 32 31 2c 32 32 2c 32 33 2c 32 |19,20,21,22,23,2| 00020630 34 2c 32 35 2c 32 36 2c 32 37 2c 32 38 2c 32 39 |4,25,26,27,28,29| 00020640 2c 33 30 2c 33 31 3a 62 75 74 74 6f 6e 66 69 65 |,30,31:buttonfie| 00020650 6c 64 25 28 63 68 61 72 25 2d 39 29 3d 49 25 0d |ld%(char%-9)=I%.| 00020660 12 1a 36 20 20 20 20 20 20 c9 20 34 30 3a 52 66 |..6 . 40:Rf| 00020670 25 28 49 25 29 3d a4 63 72 65 61 74 65 5f 61 6e |%(I%)=.create_an| 00020680 63 68 6f 72 28 22 50 69 63 74 75 72 65 22 2b c3 |chor("Picture"+.| 00020690 28 49 25 29 29 0d 12 1b 3f 20 20 20 20 20 20 c9 |(I%))...? .| 000206a0 20 33 2c 36 2c 34 36 2c 34 37 2c 35 34 2c 35 36 | 3,6,46,47,54,56| 000206b0 2c 35 37 3a f2 69 63 6f 6e 5f 62 69 74 28 39 2c |,57:.icon_bit(9,| 000206c0 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 49 25 |mainW%,field%(I%| 000206d0 29 2c a3 29 0d 12 1c 09 20 20 20 20 cb 0d 12 1d |),.).... ....| 000206e0 15 20 20 20 20 46 70 74 72 25 2b 3d 6c 65 6e 25 |. Fptr%+=len%| 000206f0 2b 31 0d 12 1e 0a 20 20 ed 20 49 25 0d 12 1f 14 |+1.... . I%....| 00020700 20 20 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 46 29 | .close_file(F)| 00020710 0d 12 20 4f 20 20 f2 65 78 74 65 6e 64 5f 6e 61 |.. O .extend_na| 00020720 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |med_sliding_bloc| 00020730 6b 28 66 6f 72 6d 61 6e 63 68 6f 72 25 2c 46 70 |k(formanchor%,Fp| 00020740 74 72 25 2d 21 66 6f 72 6d 61 6e 63 68 6f 72 25 |tr%-!formanchor%| 00020750 29 3a 66 6f 72 6d 5f 69 6e 63 73 25 2b 3d 31 0d |):form_incs%+=1.| 00020760 12 21 17 20 20 f2 73 65 74 75 70 5f 73 65 6c 65 |.!. .setup_sele| 00020770 63 74 28 4e 25 29 0d 12 22 0c 20 20 cc 20 4e 25 |ct(N%)..". . N%| 00020780 3d 30 0d 12 23 05 cd 0d 12 24 2f e7 20 28 70 72 |=0..#....$/. (pr| 00020790 65 73 65 6e 74 25 20 80 20 34 29 3d 30 20 8c 20 |esent% . 4)=0 . | 000207a0 78 6c 69 6d 25 3d 31 32 37 39 3a 79 6c 69 6d 25 |xlim%=1279:ylim%| 000207b0 3d 2d 31 30 32 33 0d 12 25 1c 21 62 6c 6f 63 6b |=-1023..%.!block| 000207c0 25 3d 30 3a 62 6c 6f 63 6b 25 21 34 3d 79 6c 69 |%=0:block%!4=yli| 000207d0 6d 25 0d 12 26 1e 62 6c 6f 63 6b 25 21 38 3d 78 |m%..&.block%!8=x| 000207e0 6c 69 6d 25 3a 62 6c 6f 63 6b 25 21 31 32 3d 30 |lim%:block%!12=0| 000207f0 0d 12 27 25 c8 99 20 22 57 69 6d 70 5f 53 65 74 |..'%.. "Wimp_Set| 00020800 45 78 74 65 6e 74 22 2c 6d 61 69 6e 57 25 2c 62 |Extent",mainW%,b| 00020810 6c 6f 63 6b 25 0d 12 28 12 21 62 6c 6f 63 6b 25 |lock%..(.!block%| 00020820 3d 6d 61 69 6e 57 25 0d 12 29 24 c8 99 20 22 57 |=mainW%..)$.. "W| 00020830 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 |imp_GetWindowSta| 00020840 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 12 2a 0e 62 |te",,block%..*.b| 00020850 6c 6f 63 6b 25 21 34 3d 30 0d 12 2b 34 e7 20 79 |lock%!4=0..+4. y| 00020860 6c 69 6d 25 3e 2d 38 34 30 20 8c 20 62 6c 6f 63 |lim%>-840 . bloc| 00020870 6b 25 21 38 3d 39 30 30 2b 79 6c 69 6d 25 20 8b |k%!8=900+ylim% .| 00020880 20 62 6c 6f 63 6b 25 21 38 3d 31 38 34 0d 12 2c | block%!8=184..,| 00020890 33 e7 20 78 6c 69 6d 25 3c 31 32 34 30 20 8c 20 |3. xlim%<1240 . | 000208a0 62 6c 6f 63 6b 25 21 31 32 3d 78 6c 69 6d 25 20 |block%!12=xlim% | 000208b0 8b 20 62 6c 6f 63 6b 25 21 31 32 3d 31 32 34 30 |. block%!12=1240| 000208c0 0d 12 2d 11 62 6c 6f 63 6b 25 21 31 36 3d 39 30 |..-.block%!16=90| 000208d0 30 0d 12 2e 20 c8 99 20 22 57 69 6d 70 5f 4f 70 |0... .. "Wimp_Op| 000208e0 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b |enWindow",,block| 000208f0 25 0d 12 2f 07 3d 4e 25 0d 12 30 05 3a 0d 12 31 |%../.=N%..0.:..1| 00020900 1c dd 20 f2 73 65 74 75 70 5f 73 65 6c 65 63 74 |.. .setup_select| 00020910 28 66 69 65 6c 64 73 25 29 0d 12 32 1a ea 20 53 |(fields%)..2.. S| 00020920 24 2c 49 25 2c 4a 25 2c 46 70 74 72 25 2c 72 6f |$,I%,J%,Fptr%,ro| 00020930 77 73 25 0d 12 33 26 73 65 6c 65 63 74 6c 65 6e |ws%..3&selectlen| 00020940 25 3d 26 32 30 30 3a 73 65 6c 69 6e 63 25 3d 73 |%=&200:selinc%=s| 00020950 65 6c 65 63 74 6c 65 6e 25 0d 12 34 36 f2 63 72 |electlen%..46.cr| 00020960 65 61 74 65 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 |eate_named_slidi| 00020970 6e 67 5f 62 6c 6f 63 6b 28 73 65 6c 61 6e 63 68 |ng_block(selanch| 00020980 6f 72 25 2c 73 65 6c 65 63 74 6c 65 6e 25 29 0d |or%,selectlen%).| 00020990 12 35 15 46 70 74 72 25 3d 21 73 65 6c 61 6e 63 |.5.Fptr%=!selanc| 000209a0 68 6f 72 25 0d 12 36 14 e3 20 49 25 3d 31 20 b8 |hor%..6.. I%=1 .| 000209b0 20 66 69 65 6c 64 73 25 0d 12 37 2a 20 20 e7 20 | fields%..7* . | 000209c0 46 70 74 72 25 2d 21 73 65 6c 61 6e 63 68 6f 72 |Fptr%-!selanchor| 000209d0 25 2b 31 34 34 3e 73 65 6c 65 63 74 6c 65 6e 25 |%+144>selectlen%| 000209e0 20 8c 0d 12 38 1b 20 20 20 20 73 65 6c 65 63 74 | ...8. select| 000209f0 6c 65 6e 25 2b 3d 73 65 6c 69 6e 63 25 0d 12 39 |len%+=selinc%..9| 00020a00 3a 20 20 20 20 f2 65 78 74 65 6e 64 5f 6e 61 6d |: .extend_nam| 00020a10 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b |ed_sliding_block| 00020a20 28 73 65 6c 61 6e 63 68 6f 72 25 2c 73 65 6c 65 |(selanchor%,sele| 00020a30 63 74 6c 65 6e 25 29 0d 12 3a 07 20 20 cd 0d 12 |ctlen%)..:. ...| 00020a40 3b 18 20 20 c8 8e 20 63 68 61 72 74 79 70 65 25 |;. .. chartype%| 00020a50 28 49 25 29 20 ca 0d 12 3c 1f 20 20 20 20 c9 20 |(I%) ...<. . | 00020a60 33 2c 36 2c 38 2c 34 36 2c 34 37 2c 35 34 2c 35 |3,6,8,46,47,54,5| 00020a70 36 2c 35 37 3a 0d 12 3d 23 20 20 20 20 72 6f 77 |6,57:..=# row| 00020a80 73 25 2b 3d 31 3a f2 6c 69 74 28 6d 65 6e 75 25 |s%+=1:.lit(menu%| 00020a90 28 36 29 2c 36 2c b9 29 0d 12 3e 57 20 20 20 20 |(6),6,.)..>W | 00020aa0 68 61 6e 64 6c 65 25 3d a4 63 72 65 61 74 65 5f |handle%=.create_| 00020ab0 69 63 6f 6e 28 70 73 65 6c 65 63 74 57 25 2c 31 |icon(pselectW%,1| 00020ac0 36 2c 2d 72 6f 77 73 25 2a 34 38 2d 35 36 2c 32 |6,-rows%*48-56,2| 00020ad0 34 30 2c 34 38 2c 26 31 37 30 30 30 35 33 31 2c |40,48,&17000531,| 00020ae0 22 22 2c 46 70 74 72 25 2c 2d 31 2c 31 35 29 0d |"",Fptr%,-1,15).| 00020af0 12 3f 23 20 20 20 20 53 24 3d 24 a4 74 65 78 74 |.?# S$=$.text| 00020b00 28 6d 61 69 6e 57 25 2c 64 65 73 63 25 28 49 25 |(mainW%,desc%(I%| 00020b10 29 29 0d 12 40 37 20 20 20 20 e7 20 a9 28 53 24 |))..@7 . .(S$| 00020b20 29 3e 38 20 8c 20 53 24 3d c0 53 24 2c 38 29 2b |)>8 . S$=.S$,8)+| 00020b30 22 20 20 22 20 8b 20 53 24 2b 3d c4 31 30 2d a9 |" " . S$+=.10-.| 00020b40 28 53 24 29 2c 22 20 22 29 0d 12 41 2d 20 20 20 |(S$)," ")..A- | 00020b50 20 24 46 70 74 72 25 3d 53 24 2b 54 61 67 24 28 | $Fptr%=S$+Tag$(| 00020b60 49 25 29 3a 46 70 74 72 25 2b 3d a9 28 24 46 70 |I%):Fptr%+=.($Fp| 00020b70 74 72 25 29 2b 31 0d 12 42 12 20 20 20 20 e3 20 |tr%)+1..B. . | 00020b80 4a 25 3d 30 20 b8 20 33 0d 12 43 62 20 20 20 20 |J%=0 . 3..Cb | 00020b90 20 20 68 61 6e 64 6c 65 25 3d a4 63 72 65 61 74 | handle%=.creat| 00020ba0 65 5f 69 63 6f 6e 28 70 73 65 6c 65 63 74 57 25 |e_icon(pselectW%| 00020bb0 2c 32 37 38 2b 4a 25 2a 31 31 32 2c 2d 72 6f 77 |,278+J%*112,-row| 00020bc0 73 25 2a 34 38 2d 35 32 2c 34 34 2c 34 34 2c 26 |s%*48-52,44,44,&| 00020bd0 30 37 34 30 42 31 33 42 2c 22 22 2c 46 70 74 72 |0740B13B,"",Fptr| 00020be0 25 2c 74 69 63 6b 25 2c 31 29 0d 12 44 1c 20 20 |%,tick%,1)..D. | 00020bf0 20 20 20 20 24 46 70 74 72 25 3d 22 22 3a 46 70 | $Fptr%="":Fp| 00020c00 74 72 25 2b 3d 31 0d 12 45 0c 20 20 20 20 ed 20 |tr%+=1..E. . | 00020c10 4a 25 0d 12 46 19 20 20 20 20 63 61 6c 63 72 6f |J%..F. calcro| 00020c20 77 25 3f 49 25 3d 72 6f 77 73 25 0d 12 47 17 20 |w%?I%=rows%..G. | 00020c30 20 20 20 7f 3a 63 61 6c 63 72 6f 77 25 3f 49 25 | .:calcrow%?I%| 00020c40 3d 30 0d 12 48 07 20 20 cb 0d 12 49 08 ed 20 49 |=0..H. ...I.. I| 00020c50 25 0d 12 4a 23 21 62 6c 6f 63 6b 25 3d 30 3a 62 |%..J#!block%=0:b| 00020c60 6c 6f 63 6b 25 21 34 3d 2d 72 6f 77 73 25 2a 34 |lock%!4=-rows%*4| 00020c70 38 2d 35 36 0d 12 4b 1c 62 6c 6f 63 6b 25 21 38 |8-56..K.block%!8| 00020c80 3d 37 30 30 3a 62 6c 6f 63 6b 25 21 31 32 3d 30 |=700:block%!12=0| 00020c90 0d 12 4c 28 c8 99 20 22 57 69 6d 70 5f 53 65 74 |..L(.. "Wimp_Set| 00020ca0 45 78 74 65 6e 74 22 2c 70 73 65 6c 65 63 74 57 |Extent",pselectW| 00020cb0 25 2c 62 6c 6f 63 6b 25 0d 12 4d 05 e1 0d 12 4e |%,block%..M....N| 00020cc0 05 3a 0d 12 4f 19 dd 20 f2 65 6e 61 62 6c 65 5f |.:..O.. .enable_| 00020cd0 72 6f 77 28 52 25 2c 6f 6e 25 29 0d 12 50 08 ea |row(R%,on%)..P..| 00020ce0 20 49 25 0d 12 51 0c e7 20 52 25 3e 30 20 8c 0d | I%..Q.. R%>0 ..| 00020cf0 12 52 18 20 20 e3 20 49 25 3d 52 25 2a 35 2d 33 |.R. . I%=R%*5-3| 00020d00 20 b8 20 52 25 2a 35 0d 12 53 26 20 20 20 20 f2 | . R%*5..S& .| 00020d10 69 63 6f 6e 5f 62 69 74 28 32 32 2c 70 73 65 6c |icon_bit(22,psel| 00020d20 65 63 74 57 25 2c 49 25 2c 6f 6e 25 29 0d 12 54 |ectW%,I%,on%)..T| 00020d30 0a 20 20 ed 20 49 25 0d 12 55 05 cd 0d 12 56 05 |. . I%..U....V.| 00020d40 e1 0d 12 57 05 3a 0d 12 58 14 dd 20 f2 73 61 76 |...W.:..X.. .sav| 00020d50 65 5f 66 6f 72 6d 28 66 24 29 0d 12 59 2c ea 20 |e_form(f$)..Y,. | 00020d60 46 2c 49 25 2c 78 64 25 2c 79 64 25 2c 78 66 25 |F,I%,xd%,yd%,xf%| 00020d70 2c 79 66 25 2c 77 25 2c 68 25 2c 62 62 6f 78 25 |,yf%,w%,h%,bbox%| 00020d80 2c 74 79 70 65 25 0d 12 5a 13 e7 20 66 69 65 6c |,type%..Z.. fiel| 00020d90 64 73 25 3d 30 20 8c 20 e1 0d 12 5b 0d 4c 65 6e |ds%=0 . ...[.Len| 00020da0 67 74 68 25 3d 30 0d 12 5c 12 21 62 6c 6f 63 6b |gth%=0..\.!block| 00020db0 25 3d 6d 61 69 6e 57 25 0d 12 5d 0b 46 3d ae 28 |%=mainW%..].F=.(| 00020dc0 66 24 29 0d 12 5e 0f f1 23 46 2c 66 69 65 6c 64 |f$)..^..#F,field| 00020dd0 73 25 0d 12 5f 14 e3 20 49 25 3d 31 20 b8 20 66 |s%.._.. I%=1 . f| 00020de0 69 65 6c 64 73 25 0d 12 60 28 20 20 64 69 63 6f |ields%..`( dico| 00020df0 6e 25 3d 64 65 73 63 25 28 49 25 29 3a 66 69 63 |n%=desc%(I%):fic| 00020e00 6f 6e 25 3d 66 69 65 6c 64 25 28 49 25 29 0d 12 |on%=field%(I%)..| 00020e10 61 34 20 20 62 6c 6f 63 6b 25 21 34 3d 64 69 63 |a4 block%!4=dic| 00020e20 6f 6e 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 |on%:.. "Wimp_Get| 00020e30 49 63 6f 6e 53 74 61 74 65 22 2c 2c 62 6c 6f 63 |IconState",,bloc| 00020e40 6b 25 0d 12 62 20 20 20 78 64 25 3d 62 6c 6f 63 |k%..b xd%=bloc| 00020e50 6b 25 21 38 3a 79 64 25 3d 62 6c 6f 63 6b 25 21 |k%!8:yd%=block%!| 00020e60 31 32 0d 12 63 18 20 20 44 65 73 63 24 3d 24 28 |12..c. Desc$=$(| 00020e70 62 6c 6f 63 6b 25 21 32 38 29 0d 12 64 34 20 20 |block%!28)..d4 | 00020e80 62 6c 6f 63 6b 25 21 34 3d 66 69 63 6f 6e 25 3a |block%!4=ficon%:| 00020e90 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e |.. "Wimp_GetIcon| 00020ea0 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 12 |State",,block%..| 00020eb0 65 20 20 20 78 66 25 3d 62 6c 6f 63 6b 25 21 38 |e xf%=block%!8| 00020ec0 3a 79 66 25 3d 62 6c 6f 63 6b 25 21 31 32 0d 12 |:yf%=block%!12..| 00020ed0 66 32 20 20 77 25 3d 62 6c 6f 63 6b 25 21 31 36 |f2 w%=block%!16| 00020ee0 2d 62 6c 6f 63 6b 25 21 38 3a 68 25 3d 62 6c 6f |-block%!8:h%=blo| 00020ef0 63 6b 25 21 32 30 2d 62 6c 6f 63 6b 25 21 31 32 |ck%!20-block%!12| 00020f00 0d 12 67 17 20 20 62 62 6f 78 25 3d 28 68 25 3c |..g. bbox%=(h%<| 00020f10 3c 31 36 29 2b 77 25 0d 12 68 4e 20 20 f1 23 46 |<16)+w%..hN .#F| 00020f20 2c 44 65 73 63 24 2c 54 61 67 24 28 49 25 29 2c |,Desc$,Tag$(I%),| 00020f30 78 64 25 2c 79 64 25 2c 78 66 25 2c 79 66 25 2c |xd%,yd%,xf%,yf%,| 00020f40 6c 65 6e 25 28 49 25 29 2c 63 68 61 72 74 79 70 |len%(I%),chartyp| 00020f50 65 25 28 49 25 29 2c 66 69 78 25 28 49 25 29 2c |e%(I%),fix%(I%),| 00020f60 62 62 6f 78 25 0d 12 69 19 20 20 4c 65 6e 67 74 |bbox%..i. Lengt| 00020f70 68 25 2b 3d 6c 65 6e 25 28 49 25 29 2b 31 0d 12 |h%+=len%(I%)+1..| 00020f80 6a 41 20 20 66 69 65 6c 64 24 28 49 25 29 3d 22 |jA field$(I%)="| 00020f90 22 3a e7 20 52 66 25 28 49 25 29 3e 30 20 80 20 |":. Rf%(I%)>0 . | 00020fa0 63 68 61 72 74 79 70 65 25 28 49 25 29 3c 3e 34 |chartype%(I%)<>4| 00020fb0 30 20 8c 20 24 52 66 25 28 49 25 29 3d 22 22 0d |0 . $Rf%(I%)="".| 00020fc0 12 6b 08 ed 20 49 25 0d 12 6c 12 f2 63 6c 6f 73 |.k.. I%..l..clos| 00020fd0 65 5f 66 69 6c 65 28 46 29 0d 12 6d 1b c8 99 20 |e_file(F)..m... | 00020fe0 22 4f 53 5f 46 69 6c 65 22 2c 31 38 2c 66 24 2c |"OS_File",18,f$,| 00020ff0 26 37 66 32 0d 12 6e 16 f2 6c 69 74 28 6d 65 6e |&7f2..n..lit(men| 00021000 75 25 28 30 29 2c 33 2c b9 29 0d 12 6f 16 f2 6c |u%(0),3,.)..o..l| 00021010 69 74 28 6d 65 6e 75 25 28 30 29 2c 34 2c b9 29 |it(menu%(0),4,.)| 00021020 0d 12 70 05 e1 0d 12 71 05 3a 0d 12 72 24 dd 20 |..p....q.:..r$. | 00021030 f2 6d 61 6b 65 5f 65 6d 70 74 79 5f 69 6e 64 65 |.make_empty_inde| 00021040 78 28 52 41 25 2c 6b 65 79 25 2c 5a 25 29 0d 12 |x(RA%,key%,Z%)..| 00021050 73 16 ea 20 49 25 2c 4b 25 2c 50 25 2c 4b 4c 4d |s.. I%,K%,P%,KLM| 00021060 25 2c 53 24 0d 12 74 15 c8 99 20 22 48 6f 75 72 |%,S$..t... "Hour| 00021070 67 6c 61 73 73 5f 4f 6e 22 0d 12 75 16 53 24 3d |glass_On"..u.S$=| 00021080 c4 4b 4c 25 28 6b 65 79 25 29 2c 22 2e 22 29 0d |.KL%(key%),".").| 00021090 12 76 15 4b 4c 4d 25 3d 4b 4c 25 28 6b 65 79 25 |.v.KLM%=KL%(key%| 000210a0 29 2b 31 33 0d 12 77 1a 50 25 3d 4c 48 25 2b 34 |)+13..w.P%=LH%+4| 000210b0 38 2b 28 52 41 25 2b 31 29 2a 4b 4c 4d 25 0d 12 |8+(RA%+1)*KLM%..| 000210c0 78 3b e7 20 5a 25 20 8c 20 f2 63 72 65 61 74 65 |x;. Z% . .create| 000210d0 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 |_named_sliding_b| 000210e0 6c 6f 63 6b 28 6b 65 79 61 6e 63 68 6f 72 25 28 |lock(keyanchor%(| 000210f0 6b 65 79 25 29 2c 50 25 29 0d 12 79 1e 6b 65 79 |key%),P%)..y.key| 00021100 62 61 73 65 25 3d 21 6b 65 79 61 6e 63 68 6f 72 |base%=!keyanchor| 00021110 25 28 6b 65 79 25 29 0d 12 7a 12 6b 65 79 62 61 |%(key%)..z.keyba| 00021120 73 65 25 21 30 3d 31 33 38 0d 12 7b 1d 6b 65 79 |se%!0=138..{.key| 00021130 62 61 73 65 25 21 34 3d bb 28 24 49 6e 63 72 65 |base%!4=.($Incre| 00021140 6d 65 6e 74 25 29 0d 12 7c 1f 24 64 61 74 65 25 |ment%)..|.$date%| 00021150 3d c4 36 2c bd 28 31 29 29 3a f2 64 61 74 65 28 |=.6,.(1)):.date(| 00021160 6b 65 79 25 29 0d 12 7d 1b 6b 65 79 62 61 73 65 |key%)..}.keybase| 00021170 25 21 36 32 3d 4b 46 25 28 6b 65 79 25 2c 30 29 |%!62=KF%(key%,0)| 00021180 0d 12 7e 1b 6b 65 79 62 61 73 65 25 21 36 36 3d |..~.keybase%!66=| 00021190 4b 46 25 28 6b 65 79 25 2c 31 29 0d 12 7f 19 6b |KF%(key%,1)....k| 000211a0 65 79 62 61 73 65 25 3f 37 30 3d 4b 4c 25 28 6b |eybase%?70=KL%(k| 000211b0 65 79 25 29 0d 12 80 23 6b 65 79 62 61 73 65 25 |ey%)...#keybase%| 000211c0 3f 37 31 3d a4 73 65 6c 65 63 74 65 64 28 6b 65 |?71=.selected(ke| 000211d0 79 57 25 2c 32 30 29 0d 12 81 1f 6b 65 79 62 61 |yW%,20)....keyba| 000211e0 73 65 25 3f 37 32 3d 30 3a 6b 65 79 62 61 73 65 |se%?72=0:keybase| 000211f0 25 3f 37 33 3d 30 0d 12 82 0e e3 20 49 25 3d 30 |%?73=0..... I%=0| 00021200 20 b8 20 33 0d 12 83 28 20 20 21 28 6b 65 79 62 | . 3...( !(keyb| 00021210 61 73 65 25 2b 37 34 2b 28 49 25 2a 34 29 29 3d |ase%+74+(I%*4))=| 00021220 4b 57 25 28 6b 65 79 25 2c 49 25 29 0d 12 84 08 |KW%(key%,I%)....| 00021230 ed 20 49 25 0d 12 85 0e e3 20 49 25 3d 30 20 b8 |. I%..... I%=0 .| 00021240 20 35 0d 12 86 11 20 20 50 25 3d 49 25 2a 38 2b | 5.... P%=I%*8+| 00021250 4c 48 25 0d 12 87 18 20 20 21 28 6b 65 79 62 61 |LH%.... !(keyba| 00021260 73 65 25 2b 50 25 29 3d 2d 50 25 0d 12 88 19 20 |se%+P%)=-P%.... | 00021270 20 21 28 6b 65 79 62 61 73 65 25 2b 50 25 2b 34 | !(keybase%+P%+4| 00021280 29 3d 50 25 0d 12 89 08 ed 20 49 25 0d 12 8a 10 |)=P%..... I%....| 00021290 50 25 3d 21 6b 65 79 62 61 73 65 25 0d 12 8b 12 |P%=!keybase%....| 000212a0 e3 20 49 25 3d 30 20 b8 20 52 41 25 2d 31 0d 12 |. I%=0 . RA%-1..| 000212b0 8c 2e 20 20 c8 99 20 22 48 6f 75 72 67 6c 61 73 |.. .. "Hourglas| 000212c0 73 5f 50 65 72 63 65 6e 74 61 67 65 22 2c 28 49 |s_Percentage",(I| 000212d0 25 2a 31 30 30 29 20 81 20 52 41 25 0d 12 8d 1c |%*100) . RA%....| 000212e0 20 20 21 28 6b 65 79 62 61 73 65 25 2b 50 25 29 | !(keybase%+P%)| 000212f0 3d 50 25 2b 4b 4c 4d 25 0d 12 8e 18 20 20 21 28 |=P%+KLM%.... !(| 00021300 6b 65 79 62 61 73 65 25 2b 50 25 2b 34 29 3d 30 |keybase%+P%+4)=0| 00021310 0d 12 8f 19 20 20 24 28 6b 65 79 62 61 73 65 25 |.... $(keybase%| 00021320 2b 50 25 2b 38 29 3d 53 24 0d 12 90 23 20 20 21 |+P%+8)=S$...# !| 00021330 28 6b 65 79 62 61 73 65 25 2b 50 25 2b 4b 4c 25 |(keybase%+P%+KL%| 00021340 28 6b 65 79 25 29 2b 39 29 3d 49 25 0d 12 91 0e |(key%)+9)=I%....| 00021350 20 20 50 25 2b 3d 4b 4c 4d 25 0d 12 92 08 ed 20 | P%+=KLM%..... | 00021360 49 25 0d 12 93 14 21 28 6b 65 79 62 61 73 65 25 |I%....!(keybase%| 00021370 2b 50 25 29 3d 30 0d 12 94 16 21 28 6b 65 79 62 |+P%)=0....!(keyb| 00021380 61 73 65 25 2b 50 25 2b 34 29 3d 30 0d 12 95 17 |ase%+P%+4)=0....| 00021390 24 28 6b 65 79 62 61 73 65 25 2b 50 25 2b 38 29 |$(keybase%+P%+8)| 000213a0 3d 53 24 0d 12 96 20 21 28 6b 65 79 62 61 73 65 |=S$... !(keybase| 000213b0 25 2b 50 25 2b 4b 4c 25 28 6b 65 79 25 29 2b 39 |%+P%+KL%(key%)+9| 000213c0 29 3d 30 0d 12 97 16 c8 99 20 22 48 6f 75 72 67 |)=0...... "Hourg| 000213d0 6c 61 73 73 5f 4f 66 66 22 0d 12 98 05 e1 0d 12 |lass_Off".......| 000213e0 99 05 3a 0d 12 9a 18 dd 20 f2 73 61 76 65 5f 72 |..:..... .save_r| 000213f0 65 63 73 28 66 24 2c 52 41 25 29 0d 12 9b 1d ea |ecs(f$,RA%).....| 00021400 20 64 62 61 73 65 68 61 6e 64 6c 65 25 2c 49 25 | dbasehandle%,I%| 00021410 2c 4a 25 2c 72 65 63 24 0d 12 9c 1a 72 65 63 24 |,J%,rec$....rec$| 00021420 3d c4 66 69 65 6c 64 73 25 2d 31 2c bd 28 31 30 |=.fields%-1,.(10| 00021430 29 29 0d 12 9d 15 c8 99 20 22 48 6f 75 72 67 6c |))...... "Hourgl| 00021440 61 73 73 5f 4f 6e 22 0d 12 9e 16 64 62 61 73 65 |ass_On"....dbase| 00021450 68 61 6e 64 6c 65 25 3d ae 28 66 24 29 0d 12 9f |handle%=.(f$)...| 00021460 10 e3 20 49 25 3d 30 20 b8 20 52 41 25 0d 12 a0 |.. I%=0 . RA%...| 00021470 1f 20 20 cf 23 64 62 61 73 65 68 61 6e 64 6c 65 |. .#dbasehandle| 00021480 25 3d 49 25 2a 4c 65 6e 67 74 68 25 0d 12 a1 19 |%=I%*Length%....| 00021490 20 20 d5 23 64 62 61 73 65 68 61 6e 64 6c 65 25 | .#dbasehandle%| 000214a0 2c 72 65 63 24 0d 12 a2 2e 20 20 c8 99 20 22 48 |,rec$.... .. "H| 000214b0 6f 75 72 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 |ourglass_Percent| 000214c0 61 67 65 22 2c 28 49 25 2a 31 30 30 29 20 81 20 |age",(I%*100) . | 000214d0 52 41 25 0d 12 a3 08 ed 20 49 25 0d 12 a4 22 a2 |RA%..... I%...".| 000214e0 23 64 62 61 73 65 68 61 6e 64 6c 65 25 3d 28 52 |#dbasehandle%=(R| 000214f0 41 25 2b 31 29 2a 4c 65 6e 67 74 68 25 0d 12 a5 |A%+1)*Length%...| 00021500 1d f2 63 6c 6f 73 65 5f 66 69 6c 65 28 64 62 61 |..close_file(dba| 00021510 73 65 68 61 6e 64 6c 65 25 29 0d 12 a6 1b c8 99 |sehandle%)......| 00021520 20 22 4f 53 5f 46 69 6c 65 22 2c 31 38 2c 66 24 | "OS_File",18,f$| 00021530 2c 26 37 66 32 0d 12 a7 16 c8 99 20 22 48 6f 75 |,&7f2...... "Hou| 00021540 72 67 6c 61 73 73 5f 4f 66 66 22 0d 12 a8 05 e1 |rglass_Off".....| 00021550 0d 12 a9 05 3a 0d 12 aa 0c dd 20 f2 63 6c 65 61 |....:..... .clea| 00021560 72 0d 12 ab 1b ea 20 52 45 43 25 2c 61 63 74 69 |r..... REC%,acti| 00021570 6f 6e 24 2c 65 78 25 2c 70 74 72 25 0d 12 ac 38 |on$,ex%,ptr%...8| 00021580 53 65 61 72 63 68 24 3d a4 70 61 72 73 65 28 24 |Search$=.parse($| 00021590 a4 74 65 78 74 28 6d 6f 76 65 57 25 2c 37 29 2c |.text(moveW%,7),| 000215a0 a4 73 65 6c 65 63 74 65 64 28 6d 6f 76 65 57 25 |.selected(moveW%| 000215b0 2c 39 29 29 0d 12 ad 39 c8 99 20 22 57 69 6d 70 |,9))...9.. "Wimp| 000215c0 5f 57 68 69 63 68 49 63 6f 6e 22 2c 6d 6f 76 65 |_WhichIcon",move| 000215d0 57 25 2c 62 6c 6f 63 6b 25 2c 26 30 30 33 46 30 |W%,block%,&003F0| 000215e0 30 30 30 2c 26 30 30 32 31 30 30 30 30 0d 12 ae |000,&00210000...| 000215f0 17 6d 6f 76 65 74 79 70 65 25 3d 21 62 6c 6f 63 |.movetype%=!bloc| 00021600 6b 25 2d 31 0d 12 af 29 50 25 3d a7 54 69 74 6c |k%-1...)P%=.Titl| 00021610 65 24 2c 22 2e 20 22 29 2b 32 3a 54 69 74 6c 65 |e$,". ")+2:Title| 00021620 24 3d c1 54 69 74 6c 65 24 2c 50 25 29 0d 12 b0 |$=.Title$,P%)...| 00021630 48 e7 20 54 69 74 6c 65 24 3c 3e 22 41 6c 6c 20 |H. Title$<>"All | 00021640 72 65 63 6f 72 64 73 22 20 8c 20 54 69 74 6c 65 |records" . Title| 00021650 24 3d 22 20 77 68 65 6e 20 22 2b 54 69 74 6c 65 |$=" when "+Title| 00021660 24 20 8b 20 54 69 74 6c 65 24 3d 22 20 22 2b 54 |$ . Title$=" "+T| 00021670 69 74 6c 65 24 0d 12 b1 39 61 63 74 69 6f 6e 24 |itle$...9action$| 00021680 3d c1 22 4d 6f 76 65 20 88 44 65 6c 65 74 65 4d |=."Move .DeleteM| 00021690 6f 76 65 20 89 22 2c 6d 6f 76 65 74 79 70 65 25 |ove .",movetype%| 000216a0 2a 36 2b 37 2c 36 29 2b 54 69 74 6c 65 24 0d 12 |*6+7,6)+Title$..| 000216b0 b2 1d e7 20 ac 20 a4 63 6f 6e 66 69 72 6d 28 61 |... . .confirm(a| 000216c0 63 74 69 6f 6e 24 29 20 8c 20 e1 0d 12 b3 15 c8 |ction$) . ......| 000216d0 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 |. "Hourglass_On"| 000216e0 0d 12 b4 2a 64 62 61 73 65 68 61 6e 64 6c 65 25 |...*dbasehandle%| 000216f0 3d 8e 28 24 64 61 74 61 62 61 73 65 25 2b 22 2e |=.($database%+".| 00021700 44 61 74 61 62 61 73 65 22 29 0d 12 b5 0c f2 65 |Database").....e| 00021710 61 72 6d 61 72 6b 0d 12 b6 1d f2 63 6c 6f 73 65 |armark.....close| 00021720 5f 66 69 6c 65 28 64 62 61 73 65 68 61 6e 64 6c |_file(dbasehandl| 00021730 65 25 29 0d 12 b7 15 70 74 72 25 3d 21 74 65 6d |e%)....ptr%=!tem| 00021740 70 61 6e 63 68 6f 72 25 0d 12 b8 25 73 75 62 74 |panchor%...%subt| 00021750 6f 74 61 6c 25 3d a4 63 6f 75 6e 74 5f 72 65 63 |otal%=.count_rec| 00021760 73 28 6b 65 79 25 2c 7a 65 72 6f 25 29 0d 12 b9 |s(key%,zero%)...| 00021770 14 e3 20 52 45 43 25 3d 30 20 b8 20 52 41 25 2d |.. REC%=0 . RA%-| 00021780 31 0d 12 ba 3c 20 20 65 78 25 2b 3d 31 3a c8 99 |1...< ex%+=1:..| 00021790 20 22 48 6f 75 72 67 6c 61 73 73 5f 50 65 72 63 | "Hourglass_Perc| 000217a0 65 6e 74 61 67 65 22 2c 28 65 78 25 2a 31 30 30 |entage",(ex%*100| 000217b0 29 20 81 20 73 75 62 74 6f 74 61 6c 25 0d 12 bb |) . subtotal%...| 000217c0 17 20 20 e7 20 70 74 72 25 3f 52 45 43 25 3d 32 |. . ptr%?REC%=2| 000217d0 35 35 20 8c 0d 12 bc 28 20 20 20 20 f2 72 65 61 |55 ....( .rea| 000217e0 64 28 66 69 65 6c 64 73 25 2c b9 2c 52 45 43 25 |d(fields%,.,REC%| 000217f0 2c 24 64 61 74 61 62 61 73 65 25 29 0d 12 bd 25 |,$database%)...%| 00021800 20 20 20 20 61 64 64 72 3d a4 73 68 69 66 74 28 | addr=.shift(| 00021810 6d 6f 76 65 74 79 70 65 25 2c 6b 65 79 25 2c 30 |movetype%,key%,0| 00021820 29 0d 12 be 07 20 20 cd 0d 12 bf 0a ed 20 52 45 |).... ...... RE| 00021830 43 25 0d 12 c0 25 f2 73 63 72 61 70 5f 73 6c 69 |C%...%.scrap_sli| 00021840 64 69 6e 67 5f 62 6c 6f 63 6b 28 74 65 6d 70 61 |ding_block(tempa| 00021850 6e 63 68 6f 72 25 29 0d 12 c1 16 c8 99 20 22 48 |nchor%)...... "H| 00021860 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d 12 c2 |ourglass_Off"...| 00021870 1c c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 |... "Wimp_Create| 00021880 4d 65 6e 75 22 2c 2c 2d 31 0d 12 c3 1c 61 64 64 |Menu",,-1....add| 00021890 72 3d a4 6d 6f 76 65 74 6f 28 6b 65 79 25 2c 74 |r=.moveto(key%,t| 000218a0 6f 70 2c 31 29 0d 12 c4 05 e1 0d 12 c5 05 3a 0d |op,1).........:.| 000218b0 12 c6 18 dd 20 f2 65 78 70 6f 72 74 5f 73 75 62 |.... .export_sub| 000218c0 73 65 74 28 66 24 29 0d 12 c7 4d ea 20 49 25 2c |set(f$)...M. I%,| 000218d0 46 2c 52 25 2c 72 65 63 73 25 2c 70 74 72 25 2c |F,R%,recs%,ptr%,| 000218e0 63 6f 75 6e 74 25 2c 73 75 62 74 6f 74 61 6c 25 |count%,subtotal%| 000218f0 2c 62 6c 6f 62 73 25 2c 65 78 25 2c 5a 25 2c 6c |,blobs%,ex%,Z%,l| 00021900 65 6e 25 2c 73 6f 75 72 63 65 24 2c 64 65 73 74 |en%,source$,dest| 00021910 24 2c 4f 24 0d 12 c8 3b c8 99 20 22 4f 53 5f 43 |$,O$...;.. "OS_C| 00021920 4c 49 22 2c 22 43 6f 70 79 20 22 2b 24 64 61 74 |LI","Copy "+$dat| 00021930 61 62 61 73 65 25 2b 22 2e 46 6f 72 6d 20 22 2b |abase%+".Form "+| 00021940 66 24 2b 22 2e 46 6f 72 6d 20 7e 43 7e 56 22 0d |f$+".Form ~C~V".| 00021950 12 c9 51 e7 20 6c 69 6e 6b 24 28 30 29 3d 22 4c |..Q. link$(0)="L| 00021960 4f 41 44 45 44 22 20 8c 20 c8 99 20 22 4f 53 5f |OADED" . .. "OS_| 00021970 43 4c 49 22 2c 22 43 6f 70 79 20 22 2b 24 64 61 |CLI","Copy "+$da| 00021980 74 61 62 61 73 65 25 2b 22 2e 4c 69 6e 6b 20 22 |tabase%+".Link "| 00021990 2b 66 24 2b 22 2e 4c 69 6e 6b 20 7e 43 7e 56 22 |+f$+".Link ~C~V"| 000219a0 0d 12 ca 51 e7 20 63 61 6c 63 24 28 30 29 3d 22 |...Q. calc$(0)="| 000219b0 4c 4f 41 44 45 44 22 20 8c 20 c8 99 20 22 4f 53 |LOADED" . .. "OS| 000219c0 5f 43 4c 49 22 2c 22 43 6f 70 79 20 22 2b 24 64 |_CLI","Copy "+$d| 000219d0 61 74 61 62 61 73 65 25 2b 22 2e 43 61 6c 63 20 |atabase%+".Calc | 000219e0 22 2b 66 24 2b 22 2e 43 61 6c 63 20 7e 43 7e 56 |"+f$+".Calc ~C~V| 000219f0 22 0d 12 cb 46 c8 99 20 22 4f 53 5f 43 4c 49 22 |"...F.. "OS_CLI"| 00021a00 2c 22 43 6f 70 79 20 22 2b 24 64 61 74 61 62 61 |,"Copy "+$databa| 00021a10 73 65 25 2b 22 2e 56 61 6c 54 61 62 6c 65 73 20 |se%+".ValTables | 00021a20 22 2b 66 24 2b 22 2e 56 61 6c 74 61 62 6c 65 73 |"+f$+".Valtables| 00021a30 20 7e 43 7e 56 52 22 0d 12 cc 42 c8 99 20 22 4f | ~C~VR"...B.. "O| 00021a40 53 5f 43 4c 49 22 2c 22 43 6f 70 79 20 22 2b 24 |S_CLI","Copy "+$| 00021a50 64 61 74 61 62 61 73 65 25 2b 22 2e 43 6f 6c 6f |database%+".Colo| 00021a60 75 72 73 20 22 2b 66 24 2b 22 2e 43 6f 6c 6f 75 |urs "+f$+".Colou| 00021a70 72 73 20 7e 43 46 7e 56 22 0d 12 cd 2f c8 99 20 |rs ~CF~V".../.. | 00021a80 22 4f 53 5f 46 69 6c 65 22 2c 35 2c 24 64 61 74 |"OS_File",5,$dat| 00021a90 61 62 61 73 65 25 2b 22 2e 55 73 65 72 46 75 6e |abase%+".UserFun| 00021aa0 63 73 22 20 b8 20 64 25 0d 12 ce 4f e7 20 64 25 |cs" . d%...O. d%| 00021ab0 3d 31 20 8c 20 c8 99 20 22 4f 53 5f 43 4c 49 22 |=1 . .. "OS_CLI"| 00021ac0 2c 22 43 6f 70 79 20 22 2b 24 64 61 74 61 62 61 |,"Copy "+$databa| 00021ad0 73 65 25 2b 22 2e 55 73 65 72 46 75 6e 63 73 20 |se%+".UserFuncs | 00021ae0 22 2b 66 24 2b 22 2e 55 73 65 72 46 75 6e 63 73 |"+f$+".UserFuncs| 00021af0 20 7e 43 46 7e 56 22 0d 12 cf 30 c8 99 20 22 4f | ~CF~V"...0.. "O| 00021b00 53 5f 46 69 6c 65 22 2c 35 2c 24 64 61 74 61 62 |S_File",5,$datab| 00021b10 61 73 65 25 2b 22 2e 55 73 72 53 70 72 69 74 65 |ase%+".UsrSprite| 00021b20 73 22 20 b8 20 64 25 0d 12 d0 51 e7 20 64 25 3d |s" . d%...Q. d%=| 00021b30 31 20 8c 20 c8 99 20 22 4f 53 5f 43 4c 49 22 2c |1 . .. "OS_CLI",| 00021b40 22 43 6f 70 79 20 22 2b 24 64 61 74 61 62 61 73 |"Copy "+$databas| 00021b50 65 25 2b 22 2e 55 73 72 53 70 72 69 74 65 73 20 |e%+".UsrSprites | 00021b60 22 2b 66 24 2b 22 2e 55 73 72 53 70 72 69 74 65 |"+f$+".UsrSprite| 00021b70 73 20 7e 43 46 7e 56 22 0d 12 d1 15 c8 99 20 22 |s ~CF~V"...... "| 00021b80 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 12 d2 |Hourglass_On"...| 00021b90 22 62 6c 6f 62 73 25 3d a4 66 69 6e 64 5f 62 6c |"blobs%=.find_bl| 00021ba0 6f 62 73 28 24 64 61 74 61 62 61 73 65 25 29 0d |obs($database%).| 00021bb0 12 d3 3e 53 65 61 72 63 68 24 3d a4 70 61 72 73 |..>Search$=.pars| 00021bc0 65 28 24 a4 74 65 78 74 28 73 61 76 65 73 75 62 |e($.text(savesub| 00021bd0 57 25 2c 30 29 2c a4 73 65 6c 65 63 74 65 64 28 |W%,0),.selected(| 00021be0 73 61 76 65 73 75 62 57 25 2c 35 29 29 0d 12 d4 |savesubW%,5))...| 00021bf0 2a 64 62 61 73 65 68 61 6e 64 6c 65 25 3d 8e 28 |*dbasehandle%=.(| 00021c00 24 64 61 74 61 62 61 73 65 25 2b 22 2e 44 61 74 |$database%+".Dat| 00021c10 61 62 61 73 65 22 29 0d 12 d5 0c f2 65 61 72 6d |abase").....earm| 00021c20 61 72 6b 0d 12 d6 17 46 3d ae 28 66 24 2b 22 2e |ark....F=.(f$+".| 00021c30 44 61 74 61 62 61 73 65 22 29 0d 12 d7 15 70 74 |Database")....pt| 00021c40 72 25 3d 21 74 65 6d 70 61 6e 63 68 6f 72 25 0d |r%=!tempanchor%.| 00021c50 12 d8 25 73 75 62 74 6f 74 61 6c 25 3d a4 63 6f |..%subtotal%=.co| 00021c60 75 6e 74 5f 72 65 63 73 28 6b 65 79 25 2c 7a 65 |unt_recs(key%,ze| 00021c70 72 6f 25 29 0d 12 d9 12 e3 20 49 25 3d 30 20 b8 |ro%)..... I%=0 .| 00021c80 20 52 41 25 2d 31 0d 12 da 15 20 20 e7 20 70 74 | RA%-1.... . pt| 00021c90 72 25 3f 49 25 3d 32 35 35 20 8c 0d 12 db 0e 20 |r%?I%=255 ..... | 00021ca0 20 20 20 65 78 25 3d 2d 31 0d 12 dc 15 20 20 20 | ex%=-1.... | 00021cb0 20 c8 95 20 65 78 25 3c 62 6c 6f 62 73 25 0d 12 | .. ex%<blobs%..| 00021cc0 dd 1d 20 20 20 20 20 20 65 78 25 2b 3d 31 3a 46 |.. ex%+=1:F| 00021cd0 25 3d 45 78 74 25 28 65 78 25 29 0d 12 de 40 20 |%=Ext%(ex%)...@ | 00021ce0 20 20 20 20 20 f2 63 6f 70 79 5f 62 6c 6f 62 28 | .copy_blob(| 00021cf0 24 64 61 74 61 62 61 73 65 25 2c 66 24 2c 49 25 |$database%,f$,I%| 00021d00 2c 72 65 63 73 25 2c 46 25 2c 46 25 2c 63 68 61 |,recs%,F%,F%,cha| 00021d10 72 74 79 70 65 25 28 46 25 29 29 0d 12 df 09 20 |rtype%(F%)).... | 00021d20 20 20 20 ce 0d 12 e0 3c 20 20 20 20 f2 72 65 61 | ....< .rea| 00021d30 64 73 6d 61 72 72 61 79 28 64 62 61 73 65 68 61 |dsmarray(dbaseha| 00021d40 6e 64 6c 65 25 2c 49 25 29 3a f2 77 72 69 74 65 |ndle%,I%):.write| 00021d50 73 6d 61 72 72 61 79 28 46 2c 72 65 63 73 25 29 |smarray(F,recs%)| 00021d60 0d 12 e1 11 20 20 20 20 63 6f 75 6e 74 25 2b 3d |.... count%+=| 00021d70 31 0d 12 e2 3a 20 20 20 20 c8 99 20 22 48 6f 75 |1...: .. "Hou| 00021d80 72 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 |rglass_Percentag| 00021d90 65 22 2c 28 63 6f 75 6e 74 25 2a 31 30 30 29 20 |e",(count%*100) | 00021da0 81 20 73 75 62 74 6f 74 61 6c 25 0d 12 e3 07 20 |. subtotal%.... | 00021db0 20 cd 0d 12 e4 08 ed 20 49 25 0d 12 e5 25 f2 73 | ...... I%...%.s| 00021dc0 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f |crap_sliding_blo| 00021dd0 63 6b 28 74 65 6d 70 61 6e 63 68 6f 72 25 29 0d |ck(tempanchor%).| 00021de0 12 e6 3d 46 24 28 29 3d 22 22 3a f2 77 72 69 74 |..=F$()="":.writ| 00021df0 65 73 6d 61 72 72 61 79 28 46 2c 72 65 63 73 25 |esmarray(F,recs%| 00021e00 29 3a a2 23 46 3d 4c 65 6e 67 74 68 25 2a 72 65 |):.#F=Length%*re| 00021e10 63 73 25 3a 72 65 63 73 25 2d 3d 31 0d 12 e7 12 |cs%:recs%-=1....| 00021e20 e3 20 4b 25 3d 30 20 b8 20 4b 65 79 73 25 0d 12 |. K%=0 . Keys%..| 00021e30 e8 2c 20 20 4b 4c 25 28 4d 61 78 4b 65 79 73 25 |., KL%(MaxKeys%| 00021e40 2b 31 29 3d 4b 4c 25 28 4b 25 29 3a 76 61 6c 24 |+1)=KL%(K%):val$| 00021e50 3d a4 74 79 70 65 28 4b 25 29 0d 12 e9 21 20 20 |=.type(K%)...! | 00021e60 4b 46 25 28 4d 61 78 4b 65 79 73 25 2b 31 2c 30 |KF%(MaxKeys%+1,0| 00021e70 29 3d 4b 46 25 28 4b 25 2c 30 29 0d 12 ea 21 20 |)=KF%(K%,0)...! | 00021e80 20 4b 46 25 28 4d 61 78 4b 65 79 73 25 2b 31 2c | KF%(MaxKeys%+1,| 00021e90 31 29 3d 4b 46 25 28 4b 25 2c 31 29 0d 12 eb 10 |1)=KF%(K%,1)....| 00021ea0 20 20 e3 20 49 25 3d 30 20 b8 20 33 0d 12 ec 25 | . I%=0 . 3...%| 00021eb0 20 20 20 20 4b 57 25 28 4d 61 78 4b 65 79 73 25 | KW%(MaxKeys%| 00021ec0 2b 31 2c 49 25 29 3d 4b 57 25 28 4b 25 2c 49 25 |+1,I%)=KW%(K%,I%| 00021ed0 29 0d 12 ed 0a 20 20 ed 20 49 25 0d 12 ee 2b 20 |).... . I%...+ | 00021ee0 20 f2 6d 61 6b 65 5f 65 6d 70 74 79 5f 69 6e 64 | .make_empty_ind| 00021ef0 65 78 28 72 65 63 73 25 2c 4d 61 78 4b 65 79 73 |ex(recs%,MaxKeys| 00021f00 25 2b 31 2c b9 29 0d 12 ef 16 20 20 e3 20 49 25 |%+1,.).... . I%| 00021f10 3d 30 20 b8 20 72 65 63 73 25 2d 31 0d 12 f0 1a |=0 . recs%-1....| 00021f20 20 20 20 20 f2 72 65 61 64 73 6d 61 72 72 61 79 | .readsmarray| 00021f30 28 46 2c 49 25 29 0d 12 f1 18 20 20 20 20 4b 45 |(F,I%).... KE| 00021f40 59 24 3d a4 6b 65 79 32 28 4b 25 2c 31 29 0d 12 |Y$=.key2(K%,1)..| 00021f50 f2 22 20 20 20 20 f2 69 6e 73 65 72 74 28 b9 2c |." .insert(.,| 00021f60 4b 45 59 24 2c 4d 61 78 4b 65 79 73 25 2b 31 29 |KEY$,MaxKeys%+1)| 00021f70 0d 12 f3 32 20 20 20 20 c8 99 20 22 48 6f 75 72 |...2 .. "Hour| 00021f80 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 |glass_Percentage| 00021f90 22 2c 28 49 25 2a 31 30 30 29 20 81 20 72 65 63 |",(I%*100) . rec| 00021fa0 73 25 0d 12 f4 0a 20 20 ed 20 49 25 0d 12 f5 26 |s%.... . I%...&| 00021fb0 20 20 6b 65 79 62 61 73 65 25 3d 21 6b 65 79 61 | keybase%=!keya| 00021fc0 6e 63 68 6f 72 25 28 4d 61 78 4b 65 79 73 25 2b |nchor%(MaxKeys%+| 00021fd0 31 29 0d 12 f6 5c 20 20 c8 99 20 22 53 6c 69 64 |1)...\ .. "Slid| 00021fe0 69 6e 67 48 65 61 70 5f 44 65 73 63 72 69 62 65 |ingHeap_Describe| 00021ff0 42 6c 6f 63 6b 22 2c 73 6c 69 64 69 6e 67 68 65 |Block",slidinghe| 00022000 61 70 62 61 73 65 25 2c 6b 65 79 61 6e 63 68 6f |apbase%,keyancho| 00022010 72 25 28 4d 61 78 4b 65 79 73 25 2b 31 29 20 b8 |r%(MaxKeys%+1) .| 00022020 20 2c 2c 66 69 6c 65 6c 65 6e 67 74 68 25 0d 12 | ,,filelength%..| 00022030 f7 2c 20 20 e7 20 4b 25 3e 30 20 8c 20 69 6e 64 |., . K%>0 . ind| 00022040 65 78 24 3d 22 49 6e 64 69 63 65 73 2e 22 20 8b |ex$="Indices." .| 00022050 20 69 6e 64 65 78 24 3d 22 22 0d 12 f8 52 20 20 | index$=""...R | 00022060 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 31 30 2c |.. "OS_File",10,| 00022070 66 24 2b 22 2e 22 2b 69 6e 64 65 78 24 2b 49 6e |f$+"."+index$+In| 00022080 64 65 78 24 28 4b 25 29 2c 26 37 66 30 2c 2c 6b |dex$(K%),&7f0,,k| 00022090 65 79 62 61 73 65 25 2c 6b 65 79 62 61 73 65 25 |eybase%,keybase%| 000220a0 2b 66 69 6c 65 6c 65 6e 67 74 68 25 0d 12 f9 32 |+filelength%...2| 000220b0 20 20 f2 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 | .scrap_sliding| 000220c0 5f 62 6c 6f 63 6b 28 6b 65 79 61 6e 63 68 6f 72 |_block(keyanchor| 000220d0 25 28 4d 61 78 4b 65 79 73 25 2b 31 29 29 0d 12 |%(MaxKeys%+1))..| 000220e0 fa 08 ed 20 4b 25 0d 12 fb 12 f2 63 6c 6f 73 65 |... K%.....close| 000220f0 5f 66 69 6c 65 28 46 29 0d 12 fc 1d f2 63 6c 6f |_file(F).....clo| 00022100 73 65 5f 66 69 6c 65 28 64 62 61 73 65 68 61 6e |se_file(dbasehan| 00022110 64 6c 65 25 29 0d 12 fd 27 c8 99 20 22 4f 53 5f |dle%)...'.. "OS_| 00022120 46 69 6c 65 22 2c 31 38 2c 66 24 2b 22 2e 44 61 |File",18,f$+".Da| 00022130 74 61 62 61 73 65 22 2c 26 37 66 32 0d 12 fe 0d |tabase",&7f2....| 00022140 65 78 70 6f 72 74 25 3d a3 0d 12 ff 16 c8 99 20 |export%=....... | 00022150 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d |"Hourglass_Off".| 00022160 13 00 05 e1 0d 13 01 05 3a 0d 13 02 15 dd 20 a4 |........:..... .| 00022170 66 69 6e 64 5f 62 6c 6f 62 73 28 66 24 29 0d 13 |find_blobs(f$)..| 00022180 03 0f ea 20 4e 25 2c 52 34 25 2c 53 24 0d 13 04 |... N%,R4%,S$...| 00022190 09 4e 25 3d 2d 31 0d 13 05 0e c8 95 20 52 34 25 |.N%=-1...... R4%| 000221a0 3c 3e 2d 31 0d 13 06 33 20 20 c8 99 20 22 4f 53 |<>-1...3 .. "OS| 000221b0 5f 47 42 50 42 22 2c 39 2c 66 24 2c 62 6c 6f 63 |_GBPB",9,f$,bloc| 000221c0 6b 25 2c 31 2c 52 34 25 2c 31 31 20 b8 20 2c 2c |k%,1,R4%,11 . ,,| 000221d0 53 24 2c 2c 52 34 25 0d 13 07 11 20 20 c8 8e 20 |S$,,R4%.... .. | 000221e0 c0 53 24 2c 34 29 20 ca 0d 13 08 29 20 20 20 20 |.S$,4) ....) | 000221f0 c9 20 22 4d 65 6d 6f 22 3a 4e 25 2b 3d 31 3a 45 |. "Memo":N%+=1:E| 00022200 78 74 25 28 4e 25 29 3d bb 28 c1 53 24 2c 35 29 |xt%(N%)=.(.S$,5)| 00022210 29 0d 13 09 29 20 20 20 20 c9 20 22 44 72 61 77 |)...) . "Draw| 00022220 22 3a 4e 25 2b 3d 31 3a 45 78 74 25 28 4e 25 29 |":N%+=1:Ext%(N%)| 00022230 3d bb 28 c1 53 24 2c 35 29 29 0d 13 0a 29 20 20 |=.(.S$,5))...) | 00022240 20 20 c9 20 22 53 70 72 69 22 3a 4e 25 2b 3d 31 | . "Spri":N%+=1| 00022250 3a 45 78 74 25 28 4e 25 29 3d bb 28 c1 53 24 2c |:Ext%(N%)=.(.S$,| 00022260 37 29 29 0d 13 0b 07 20 20 cb 0d 13 0c 05 ce 0d |7)).... .......| 00022270 13 0d 07 3d 4e 25 0d 13 0e 05 3a 0d 13 0f 0e dd |...=N%....:.....| 00022280 20 f2 65 61 72 6d 61 72 6b 0d 13 10 0b ea 20 49 | .earmark..... I| 00022290 25 2c 50 25 0d 13 11 35 e7 20 74 65 6d 70 61 6e |%,P%...5. tempan| 000222a0 63 68 6f 72 25 20 8c 20 f2 73 63 72 61 70 5f 73 |chor% . .scrap_s| 000222b0 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 74 65 6d |liding_block(tem| 000222c0 70 61 6e 63 68 6f 72 25 29 0d 13 12 30 f2 63 72 |panchor%)...0.cr| 000222d0 65 61 74 65 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 |eate_named_slidi| 000222e0 6e 67 5f 62 6c 6f 63 6b 28 74 65 6d 70 61 6e 63 |ng_block(tempanc| 000222f0 68 6f 72 25 2c 52 41 25 29 0d 13 13 15 70 74 72 |hor%,RA%)....ptr| 00022300 25 3d 21 74 65 6d 70 61 6e 63 68 6f 72 25 0d 13 |%=!tempanchor%..| 00022310 14 12 e3 20 49 25 3d 30 20 b8 20 52 41 25 2d 31 |... I%=0 . RA%-1| 00022320 0d 13 15 0f 20 20 70 74 72 25 3f 49 25 3d 30 0d |.... ptr%?I%=0.| 00022330 13 16 08 ed 20 49 25 0d 13 17 1d 50 25 3d a4 6e |.... I%....P%=.n| 00022340 65 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 74 6f |eighbour(key%,to| 00022350 70 2c 31 29 0d 13 18 20 f2 73 63 61 6e 5f 66 69 |p,1)... .scan_fi| 00022360 6c 65 28 22 50 25 3c 3e 74 6f 70 22 2c 6b 65 79 |le("P%<>top",key| 00022370 25 2c 32 29 0d 13 19 05 e1 0d 13 1a 05 3a 0d 13 |%,2).........:..| 00022380 1b 0d dd 20 f2 72 6f 74 61 74 65 0d 13 1c 13 e7 |... .rotate.....| 00022390 20 ac 20 41 63 63 65 73 73 25 20 8c 20 e1 0d 13 | . Access% . ...| 000223a0 1d 1e e7 20 a4 63 6f 6e 66 69 72 6d 28 a4 6d 73 |... .confirm(.ms| 000223b0 67 28 34 39 29 29 3d a3 20 8c 20 e1 0d 13 1e 0e |g(49))=. . .....| 000223c0 ea 20 6b 65 79 62 61 73 65 25 0d 13 1f 1c ea 20 |. keybase%..... | 000223d0 49 25 2c 4c 25 2c 5a 25 2c 51 25 2c 52 25 2c 53 |I%,L%,Z%,Q%,R%,S| 000223e0 25 2c 6b 65 79 25 0d 13 20 14 e3 20 6b 65 79 25 |%,key%.. .. key%| 000223f0 3d 30 20 b8 20 4b 65 79 73 25 0d 13 21 20 20 20 |=0 . Keys%..! | 00022400 6b 65 79 62 61 73 65 25 3d 21 6b 65 79 61 6e 63 |keybase%=!keyanc| 00022410 68 6f 72 25 28 6b 65 79 25 29 0d 13 22 0f 20 20 |hor%(key%)..". | 00022420 53 25 3d 4c 48 25 2b 34 30 0d 13 23 14 20 20 5a |S%=LH%+40..#. Z| 00022430 25 3d 6b 65 79 62 61 73 65 25 21 53 25 0d 13 24 |%=keybase%!S%..$| 00022440 1b 20 20 e3 20 49 25 3d 53 25 2d 38 20 b8 20 53 |. . I%=S%-8 . S| 00022450 25 2d 34 30 20 88 2d 38 0d 13 25 29 20 20 20 20 |%-40 .-8..%) | 00022460 4c 25 3d 6b 65 79 62 61 73 65 25 21 49 25 3a 52 |L%=keybase%!I%:R| 00022470 25 3d 6b 65 79 62 61 73 65 25 21 28 49 25 2b 34 |%=keybase%!(I%+4| 00022480 29 0d 13 26 3d 20 20 20 20 e7 20 4c 25 3e 30 20 |)..&= . L%>0 | 00022490 8c 20 6b 65 79 62 61 73 65 25 21 28 49 25 2b 38 |. keybase%!(I%+8| 000224a0 29 3d 4c 25 20 8b 20 6b 65 79 62 61 73 65 25 21 |)=L% . keybase%!| 000224b0 28 49 25 2b 38 29 3d 2d 28 49 25 2b 38 29 0d 13 |(I%+8)=-(I%+8)..| 000224c0 27 0a 20 20 ed 20 49 25 0d 13 28 3e 20 20 e7 20 |'. . I%..(> . | 000224d0 5a 25 3e 30 20 8c 20 6b 65 79 62 61 73 65 25 21 |Z%>0 . keybase%!| 000224e0 28 53 25 2d 34 30 29 3d 5a 25 20 8b 20 6b 65 79 |(S%-40)=Z% . key| 000224f0 62 61 73 65 25 21 28 53 25 2d 34 30 29 3d 2d 28 |base%!(S%-40)=-(| 00022500 53 25 2d 34 30 29 0d 13 29 19 20 20 e3 20 49 25 |S%-40)..). . I%| 00022510 3d 53 25 2d 34 30 20 b8 20 53 25 20 88 20 38 0d |=S%-40 . S% . 8.| 00022520 13 2a 0f 20 20 20 20 51 25 3d 49 25 2d 38 0d 13 |.*. Q%=I%-8..| 00022530 2b 1a 20 20 20 20 e7 20 51 25 3d 53 25 2d 34 38 |+. . Q%=S%-48| 00022540 20 8c 20 51 25 3d 53 25 0d 13 2c 21 20 20 20 20 | . Q%=S%..,! | 00022550 50 52 25 3d a4 6e 65 69 67 68 62 6f 75 72 28 6b |PR%=.neighbour(k| 00022560 65 79 25 2c 49 25 2c 30 29 0d 13 2d 21 20 20 20 |ey%,I%,0)..-! | 00022570 20 53 55 25 3d a4 6e 65 69 67 68 62 6f 75 72 28 | SU%=.neighbour(| 00022580 6b 65 79 25 2c 49 25 2c 31 29 0d 13 2e 27 20 20 |key%,I%,1)...' | 00022590 20 20 e7 20 50 52 25 3e 53 25 20 8c 20 6b 65 79 | . PR%>S% . key| 000225a0 62 61 73 65 25 21 28 50 52 25 2b 34 29 3d 2d 49 |base%!(PR%+4)=-I| 000225b0 25 0d 13 2f 23 20 20 20 20 e7 20 53 55 25 3e 53 |%../# . SU%>S| 000225c0 25 20 8c 20 6b 65 79 62 61 73 65 25 21 53 55 25 |% . keybase%!SU%| 000225d0 3d 2d 49 25 0d 13 30 0a 20 20 ed 20 49 25 0d 13 |=-I%..0. . I%..| 000225e0 31 0a ed 20 6b 65 79 25 0d 13 32 13 24 64 61 74 |1.. key%..2.$dat| 000225f0 65 25 3d c4 36 2c bd 28 31 29 29 0d 13 33 0b 77 |e%=.6,.(1))..3.w| 00022600 61 72 6e 25 3d b9 0d 13 34 05 e1 0d 13 35 05 3a |arn%=...4....5.:| 00022610 0d 13 36 13 dd 20 f2 63 72 65 61 74 65 5f 69 6e |..6.. .create_in| 00022620 64 65 78 0d 13 37 1f e7 20 69 6e 64 65 78 69 6e |dex..7.. indexin| 00022630 67 25 20 84 20 70 72 69 6e 74 69 6e 67 25 20 8c |g% . printing% .| 00022640 20 e1 0d 13 38 30 e7 20 4b 65 79 73 25 3d 4d 61 | ...80. Keys%=Ma| 00022650 78 4b 65 79 73 25 20 8c 20 f2 73 6f 66 74 65 72 |xKeys% . .softer| 00022660 72 6f 72 28 c3 28 4b 65 79 73 25 29 2c 39 35 29 |ror(.(Keys%),95)| 00022670 3a e1 0d 13 39 37 ea 20 66 69 6c 65 25 2c 74 6f |:...97. file%,to| 00022680 70 2c 50 25 2c 4b 45 59 24 2c 52 45 43 25 2c 76 |p,P%,KEY$,REC%,v| 00022690 61 6c 24 2c 7a 65 72 6f 25 2c 61 62 6f 72 74 25 |al$,zero%,abort%| 000226a0 2c 72 65 70 6c 61 63 65 25 0d 13 3a 0d 6e 65 77 |,replace%..:.new| 000226b0 6b 65 79 25 3d 30 0d 13 3b 3b 66 24 3d 54 61 67 |key%=0..;;f$=Tag| 000226c0 24 28 4b 65 79 66 6c 64 30 25 29 3a e7 20 4b 65 |$(Keyfld0%):. Ke| 000226d0 79 66 6c 64 31 25 3e 30 20 8c 20 66 24 2b 3d 22 |yfld1%>0 . f$+="| 000226e0 2b 22 2b 54 61 67 24 28 4b 65 79 66 6c 64 31 25 |+"+Tag$(Keyfld1%| 000226f0 29 0d 13 3c 05 f5 0d 13 3d 10 20 20 6e 65 77 6b |)..<....=. newk| 00022700 65 79 25 2b 3d 31 0d 13 3e 28 fd 20 49 6e 64 65 |ey%+=1..>(. Inde| 00022710 78 24 28 6e 65 77 6b 65 79 25 29 3d 66 24 20 84 |x$(newkey%)=f$ .| 00022720 20 6e 65 77 6b 65 79 25 3e 4b 65 79 73 25 0d 13 | newkey%>Keys%..| 00022730 3f 0a c8 8e 20 b9 20 ca 0d 13 40 17 20 20 c9 20 |?... . ...@. . | 00022740 6e 65 77 6b 65 79 25 3c 3d 4b 65 79 73 25 3a 0d |newkey%<=Keys%:.| 00022750 13 41 20 20 20 20 20 e7 20 a4 63 6f 6e 66 69 72 |.A . .confir| 00022760 6d 28 a4 6d 73 67 28 35 30 29 29 3d b9 20 8c 0d |m(.msg(50))=. ..| 00022770 13 42 33 20 20 20 20 20 20 f2 73 63 72 61 70 5f |.B3 .scrap_| 00022780 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 6b 65 |sliding_block(ke| 00022790 79 61 6e 63 68 6f 72 25 28 6e 65 77 6b 65 79 25 |yanchor%(newkey%| 000227a0 29 29 0d 13 43 14 20 20 20 20 20 20 72 65 70 6c |))..C. repl| 000227b0 61 63 65 25 3d b9 0d 13 44 14 20 20 20 20 20 20 |ace%=...D. | 000227c0 cc 20 61 62 6f 72 74 25 3d b9 0d 13 45 09 20 20 |. abort%=...E. | 000227d0 20 20 cd 0d 13 46 3a 20 20 c9 20 4b 65 79 73 25 | ...F: . Keys%| 000227e0 3e 4d 61 78 4b 65 79 73 25 3a 4b 65 79 73 25 2d |>MaxKeys%:Keys%-| 000227f0 3d 31 3a f2 73 6f 66 74 65 72 72 6f 72 28 22 22 |=1:.softerror(""| 00022800 2c 33 31 29 3a 61 62 6f 72 74 25 3d b9 0d 13 47 |,31):abort%=...G| 00022810 15 20 20 7f 3a 4b 65 79 73 25 3d 6e 65 77 6b 65 |. .:Keys%=newke| 00022820 79 25 0d 13 48 05 cb 0d 13 49 10 e7 20 61 62 6f |y%..H....I.. abo| 00022830 72 74 25 20 8c 20 e1 0d 13 4a 2a 62 6c 6f 63 6b |rt% . ...J*block| 00022840 25 21 38 3d 30 3a 62 6c 6f 63 6b 25 21 31 32 3d |%!8=0:block%!12=| 00022850 6b 65 79 57 25 3a 62 6c 6f 63 6b 25 21 31 36 3d |keyW%:block%!16=| 00022860 37 0d 13 4b 25 c8 99 20 22 49 6e 74 65 72 66 61 |7..K%.. "Interfa| 00022870 63 65 5f 53 6c 61 62 42 75 74 74 6f 6e 22 2c 2c |ce_SlabButton",,| 00022880 62 6c 6f 63 6b 25 0d 13 4c 1a f2 63 6f 70 79 5f |block%..L..copy_| 00022890 6b 65 79 64 61 74 61 28 6e 65 77 6b 65 79 25 29 |keydata(newkey%)| 000228a0 0d 13 4d 16 49 6e 64 65 78 24 28 6e 65 77 6b 65 |..M.Index$(newke| 000228b0 79 25 29 3d 66 24 0d 13 4e 2d 66 24 3d 24 64 61 |y%)=f$..N-f$=$da| 000228c0 74 61 62 61 73 65 25 2b 22 2e 49 6e 64 69 63 65 |tabase%+".Indice| 000228d0 73 2e 22 2b 49 6e 64 65 78 24 28 6e 65 77 6b 65 |s."+Index$(newke| 000228e0 79 25 29 0d 13 4f 24 f2 6d 61 6b 65 5f 65 6d 70 |y%)..O$.make_emp| 000228f0 74 79 5f 69 6e 64 65 78 28 52 41 25 2c 6e 65 77 |ty_index(RA%,new| 00022900 6b 65 79 25 2c b9 29 0d 13 50 16 f2 6c 69 74 28 |key%,.)..P..lit(| 00022910 6d 65 6e 75 25 28 30 29 2c 32 2c a3 29 0d 13 51 |menu%(0),2,.)..Q| 00022920 15 f2 6c 69 6d 69 74 5f 61 63 74 69 6f 6e 73 28 |..limit_actions(| 00022930 a3 29 0d 13 52 07 ea 20 85 0d 13 53 20 ee 20 85 |.)..R.. ...S . .| 00022940 20 ea 3a f7 20 85 3a f2 61 62 6f 72 74 5f 69 6e | .:. .:.abort_in| 00022950 64 65 78 28 66 24 29 3a e1 0d 13 54 2a 64 62 61 |dex(f$):...T*dba| 00022960 73 65 68 61 6e 64 6c 65 25 3d 8e 28 24 64 61 74 |sehandle%=.($dat| 00022970 61 62 61 73 65 25 2b 22 2e 44 61 74 61 62 61 73 |abase%+".Databas| 00022980 65 22 29 0d 13 55 0f 69 6e 64 65 78 69 6e 67 25 |e")..U.indexing%| 00022990 3d b9 0d 13 56 11 f2 75 70 64 61 74 65 5f 73 74 |=...V..update_st| 000229a0 61 74 73 0d 13 57 11 e3 20 66 69 6c 65 25 3d 30 |ats..W.. file%=0| 000229b0 20 b8 20 35 0d 13 58 15 20 20 74 6f 70 3d 66 69 | . 5..X. top=fi| 000229c0 6c 65 25 2a 38 2b 4c 48 25 0d 13 59 1f 20 20 50 |le%*8+LH%..Y. P| 000229d0 25 3d a4 6e 65 69 67 68 62 6f 75 72 28 6b 65 79 |%=.neighbour(key| 000229e0 25 2c 74 6f 70 2c 31 29 0d 13 5a 19 20 20 76 61 |%,top,1)..Z. va| 000229f0 6c 24 3d a4 74 79 70 65 28 6e 65 77 6b 65 79 25 |l$=.type(newkey%| 00022a00 29 0d 13 5b 17 20 20 c8 99 20 22 48 6f 75 72 67 |)..[. .. "Hourg| 00022a10 6c 61 73 73 5f 4f 6e 22 0d 13 5c 22 20 20 f2 73 |lass_On"..\" .s| 00022a20 63 61 6e 5f 66 69 6c 65 28 22 50 25 3c 3e 74 6f |can_file("P%<>to| 00022a30 70 22 2c 6b 65 79 25 2c 34 29 0d 13 5d 0b ed 20 |p",key%,4)..].. | 00022a40 66 69 6c 65 25 0d 13 5e 0e f2 65 6e 64 5f 69 6e |file%..^..end_in| 00022a50 64 65 78 0d 13 5f 16 f2 63 6f 6c 6f 75 72 28 6e |dex.._..colour(n| 00022a60 65 77 6b 65 79 25 2c 32 29 0d 13 60 0b 77 61 72 |ewkey%,2)..`.war| 00022a70 6e 25 3d b9 0d 13 61 07 f7 20 85 0d 13 62 4d e7 |n%=...a.. ...bM.| 00022a80 20 a4 73 65 6c 65 63 74 65 64 28 70 61 73 73 57 | .selected(passW| 00022a90 25 2c 31 36 29 20 8c 20 d5 23 6c 6f 67 68 61 6e |%,16) . .#loghan| 00022aa0 64 6c 65 25 2c 22 49 6e 64 65 78 20 22 2b 49 6e |dle%,"Index "+In| 00022ab0 64 65 78 24 28 6e 65 77 6b 65 79 25 29 2b 22 20 |dex$(newkey%)+" | 00022ac0 63 72 65 61 74 65 64 22 0d 13 63 05 e1 0d 13 64 |created"..c....d| 00022ad0 05 3a 0d 13 65 16 dd 20 f2 61 62 6f 72 74 5f 69 |.:..e.. .abort_i| 00022ae0 6e 64 65 78 28 66 24 29 0d 13 66 0e f2 65 6e 64 |ndex(f$)..f..end| 00022af0 5f 69 6e 64 65 78 0d 13 67 10 e7 20 72 65 70 6c |_index..g.. repl| 00022b00 61 63 65 25 20 8c 0d 13 68 1d 20 20 f2 6f 70 65 |ace% ...h. .ope| 00022b10 6e 5f 69 6e 64 65 78 28 66 24 2c 6e 65 77 6b 65 |n_index(f$,newke| 00022b20 79 25 29 0d 13 69 07 20 20 cc 0d 13 6a 1e 20 20 |y%)..i. ...j. | 00022b30 e3 20 69 6e 64 65 78 25 3d 6e 65 77 6b 65 79 25 |. index%=newkey%| 00022b40 20 b8 20 4b 65 79 73 25 0d 13 6b 29 20 20 20 20 | . Keys%..k) | 00022b50 49 6e 64 65 78 24 28 6e 65 77 6b 65 79 25 29 3d |Index$(newkey%)=| 00022b60 49 6e 64 65 78 24 28 6e 65 77 6b 65 79 25 2b 31 |Index$(newkey%+1| 00022b70 29 0d 13 6c 0e 20 20 ed 20 69 6e 64 65 78 25 0d |)..l. . index%.| 00022b80 13 6d 2f 20 20 f2 73 63 72 61 70 5f 73 6c 69 64 |.m/ .scrap_slid| 00022b90 69 6e 67 5f 62 6c 6f 63 6b 28 6b 65 79 61 6e 63 |ing_block(keyanc| 00022ba0 68 6f 72 25 28 6e 65 77 6b 65 79 25 29 29 0d 13 |hor%(newkey%))..| 00022bb0 6e 0e 20 20 4b 65 79 73 25 2d 3d 31 0d 13 6f 0f |n. Keys%-=1..o.| 00022bc0 20 20 6e 65 77 6b 65 79 25 3d 30 0d 13 70 05 cd | newkey%=0..p..| 00022bd0 0d 13 71 0c e7 20 9f 3d 31 37 20 8c 0d 13 72 17 |..q.. .=17 ...r.| 00022be0 20 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 2c | .softerror("",| 00022bf0 34 33 29 0d 13 73 1d 20 20 cc 20 f2 77 69 6d 70 |43)..s. . .wimp| 00022c00 5f 65 72 72 6f 72 28 b9 2c 9f 2c 9e 2c f6 24 29 |_error(.,.,.,.$)| 00022c10 0d 13 74 05 cd 0d 13 75 05 e1 0d 13 76 05 3a 0d |..t....u....v.:.| 00022c20 13 77 10 dd 20 f2 65 6e 64 5f 69 6e 64 65 78 0d |.w.. .end_index.| 00022c30 13 78 18 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 |.x... "Hourglass| 00022c40 5f 53 6d 61 73 68 22 0d 13 79 0f 69 6e 64 65 78 |_Smash"..y.index| 00022c50 69 6e 67 25 3d a3 0d 13 7a 1b f2 6c 69 6d 69 74 |ing%=...z..limit| 00022c60 5f 61 63 74 69 6f 6e 73 28 41 63 63 65 73 73 25 |_actions(Access%| 00022c70 29 0d 13 7b 1c c8 99 20 22 57 69 6d 70 5f 43 72 |)..{... "Wimp_Cr| 00022c80 65 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 13 7c |eateMenu",,-1..|| 00022c90 1c f2 6c 69 74 28 6d 65 6e 75 25 28 30 29 2c 32 |..lit(menu%(0),2| 00022ca0 2c 4d 6f 64 69 66 79 25 29 0d 13 7d 1d f2 63 6c |,Modify%)..}..cl| 00022cb0 6f 73 65 5f 66 69 6c 65 28 64 62 61 73 65 68 61 |ose_file(dbaseha| 00022cc0 6e 64 6c 65 25 29 0d 13 7e 05 e1 0d 13 7f 05 3a |ndle%)..~......:| 00022cd0 0d 13 80 16 dd 20 a4 73 68 69 66 74 28 74 25 2c |..... .shift(t%,| 00022ce0 6b 25 2c 6d 25 29 0d 13 81 17 ea 20 61 25 2c 6b |k%,m%)..... a%,k| 00022cf0 65 79 25 2c 66 69 25 2c 49 25 2c 46 24 0d 13 82 |ey%,fi%,I%,F$...| 00022d00 16 e7 20 ac 20 41 63 63 65 73 73 25 20 8c 3d 61 |.. . Access% .=a| 00022d10 64 64 72 0d 13 83 15 e7 20 52 45 43 25 3d 52 41 |ddr..... REC%=RA| 00022d20 25 20 8c 3d 61 64 64 72 0d 13 84 31 e7 20 74 25 |% .=addr...1. t%| 00022d30 3d 30 20 80 20 6d 25 3d 31 20 8c 20 e7 20 a4 63 |=0 . m%=1 . . .c| 00022d40 6f 6e 66 69 72 6d 28 a4 6d 73 67 28 35 31 29 29 |onfirm(.msg(51))| 00022d50 3d a3 20 8c 3d 61 64 64 72 0d 13 85 14 e3 20 6b |=. .=addr..... k| 00022d60 65 79 25 3d 30 20 b8 20 4b 65 79 73 25 0d 13 86 |ey%=0 . Keys%...| 00022d70 32 20 20 4e 24 3d a4 6b 65 79 28 6b 65 79 25 29 |2 N$=.key(key%)| 00022d80 3a 6b 6c 25 3d 4b 4c 25 28 6b 65 79 25 29 3a 76 |:kl%=KL%(key%):v| 00022d90 61 6c 24 3d a4 74 79 70 65 28 6b 65 79 25 29 0d |al$=.type(key%).| 00022da0 13 87 16 20 20 f2 64 65 6c 65 74 65 28 4e 24 2c |... .delete(N$,| 00022db0 6b 65 79 25 29 0d 13 88 1c 20 20 e7 20 4e 24 3d |key%).... . N$=| 00022dc0 22 2a 46 61 69 6c 65 64 2a 22 20 8c 3d 61 64 64 |"*Failed*" .=add| 00022dd0 72 0d 13 89 18 20 20 e7 20 6b 65 79 25 3d 6b 25 |r.... . key%=k%| 00022de0 20 8c 20 61 25 3d 53 55 25 0d 13 8a 20 20 20 e7 | . a%=SU%... .| 00022df0 20 74 25 3d 31 20 8c 20 66 69 25 3d 28 66 69 6c | t%=1 . fi%=(fil| 00022e00 65 25 2b 31 29 20 83 20 36 0d 13 8b 29 20 20 e7 |e%+1) . 6...) .| 00022e10 20 74 25 3d 2d 31 20 8c 20 66 69 25 3d 28 66 69 | t%=-1 . fi%=(fi| 00022e20 6c 65 25 2d 31 2d 36 2a 28 66 69 6c 65 25 3d 30 |le%-1-6*(file%=0| 00022e30 29 29 0d 13 8c 13 20 20 74 6f 70 3d 38 2a 66 69 |)).... top=8*fi| 00022e40 25 2b 4c 48 25 0d 13 8d 0d 20 20 c8 8e 20 74 25 |%+LH%.... .. t%| 00022e50 20 ca 0d 13 8e 0c 20 20 20 20 c9 20 30 3a 0d 13 | ..... . 0:..| 00022e60 8f 18 20 20 20 20 e3 20 49 25 3d 31 20 b8 20 66 |.. . I%=1 . f| 00022e70 69 65 6c 64 73 25 0d 13 90 1a 20 20 20 20 20 20 |ields%.... | 00022e80 56 25 3d 63 68 61 72 74 79 70 65 25 28 49 25 29 |V%=chartype%(I%)| 00022e90 0d 13 91 11 20 20 20 20 20 20 c8 8e 20 56 25 20 |.... .. V% | 00022ea0 ca 0d 13 92 14 20 20 20 20 20 20 20 20 c9 20 33 |..... . 3| 00022eb0 36 2c 33 39 3a 0d 13 93 52 20 20 20 20 20 20 20 |6,39:...R | 00022ec0 20 e7 20 a4 62 6c 6f 62 5f 70 61 74 68 28 a3 2c | . .blob_path(.,| 00022ed0 24 64 61 74 61 62 61 73 65 25 2c 52 45 43 25 2c |$database%,REC%,| 00022ee0 49 25 2c 56 25 2c 46 24 29 3e 3d 30 20 8c 3a c8 |I%,V%,F$)>=0 .:.| 00022ef0 99 20 22 4f 53 5f 43 4c 49 22 2c 22 44 65 6c 65 |. "OS_CLI","Dele| 00022f00 74 65 20 22 2b 46 24 0d 13 94 13 20 20 20 20 20 |te "+F$.... | 00022f10 20 20 20 c9 20 39 2c 33 37 3a 0d 13 95 52 20 20 | . 9,37:...R | 00022f20 20 20 20 20 20 20 e7 20 a4 62 6c 6f 62 5f 70 61 | . .blob_pa| 00022f30 74 68 28 a3 2c 24 64 61 74 61 62 61 73 65 25 2c |th(.,$database%,| 00022f40 52 45 43 25 2c 49 25 2c 56 25 2c 46 24 29 3e 3d |REC%,I%,V%,F$)>=| 00022f50 30 20 8c 3a c8 99 20 22 4f 53 5f 43 4c 49 22 2c |0 .:.. "OS_CLI",| 00022f60 22 44 65 6c 65 74 65 20 22 2b 46 24 0d 13 96 11 |"Delete "+F$....| 00022f70 20 20 20 20 20 20 20 20 c9 20 33 38 3a 0d 13 97 | . 38:...| 00022f80 52 20 20 20 20 20 20 20 20 e7 20 a4 62 6c 6f 62 |R . .blob| 00022f90 5f 70 61 74 68 28 a3 2c 24 64 61 74 61 62 61 73 |_path(.,$databas| 00022fa0 65 25 2c 52 45 43 25 2c 49 25 2c 56 25 2c 46 24 |e%,REC%,I%,V%,F$| 00022fb0 29 3e 3d 30 20 8c 3a c8 99 20 22 4f 53 5f 43 4c |)>=0 .:.. "OS_CL| 00022fc0 49 22 2c 22 44 65 6c 65 74 65 20 22 2b 46 24 0d |I","Delete "+F$.| 00022fd0 13 98 0b 20 20 20 20 20 20 cb 0d 13 99 0c 20 20 |... ..... | 00022fe0 20 20 ed 20 49 25 0d 13 9a 0a 20 20 20 20 7f 3a | . I%.... .:| 00022ff0 0d 13 9b 38 20 20 20 20 f2 69 6e 73 65 72 74 28 |...8 .insert(| 00023000 a3 2c 4e 24 2c 6b 65 79 25 29 3a 64 61 74 65 25 |.,N$,key%):date%| 00023010 3f 66 69 25 3d 31 3a 24 44 61 74 65 25 28 66 69 |?fi%=1:$Date%(fi| 00023020 25 29 3d a4 64 61 74 65 0d 13 9c 07 20 20 cb 0d |%)=.date.... ..| 00023030 13 9d 15 20 20 74 6f 70 3d 38 2a 66 69 6c 65 25 |... top=8*file%| 00023040 2b 4c 48 25 0d 13 9e 13 20 20 64 61 74 65 25 3f |+LH%.... date%?| 00023050 66 69 6c 65 25 3d 31 0d 13 9f 19 20 20 24 44 61 |file%=1.... $Da| 00023060 74 65 25 28 66 69 6c 65 25 29 3d a4 64 61 74 65 |te%(file%)=.date| 00023070 0d 13 a0 0a ed 20 6b 65 79 25 0d 13 a1 1c e7 20 |..... key%..... | 00023080 a4 73 65 6c 65 63 74 65 64 28 70 61 73 73 57 25 |.selected(passW%| 00023090 2c 31 36 29 20 8c 0d 13 a2 0e 20 20 e7 20 74 25 |,16) ..... . t%| 000230a0 3d 30 20 8c 0d 13 a3 29 20 20 20 20 d5 23 6c 6f |=0 ....) .#lo| 000230b0 67 68 61 6e 64 6c 65 25 2c 6c 6f 67 65 6e 74 72 |ghandle%,logentr| 000230c0 79 24 2b 22 20 44 65 6c 65 74 65 64 22 0d 13 a4 |y$+" Deleted"...| 000230d0 38 20 20 20 20 cc 20 d5 23 6c 6f 67 68 61 6e 64 |8 . .#loghand| 000230e0 6c 65 25 2c 6c 6f 67 65 6e 74 72 79 24 2b 22 20 |le%,logentry$+" | 000230f0 3d 3d 3d 3e 20 73 75 62 66 69 6c 65 20 22 2b c3 |===> subfile "+.| 00023100 28 66 69 25 29 0d 13 a5 07 20 20 cd 0d 13 a6 05 |(fi%).... .....| 00023110 cd 0d 13 a7 0b 77 61 72 6e 25 3d b9 0d 13 a8 07 |.....warn%=.....| 00023120 3d 61 25 0d 13 a9 05 3a 0d 13 aa 11 dd 20 a4 74 |=a%....:..... .t| 00023130 79 70 65 28 6b 65 79 25 29 0d 13 ab 0b ea 20 46 |ype(key%)..... F| 00023140 25 2c 56 24 0d 13 ac 29 e7 20 6b 65 79 25 3e 3d |%,V$...). key%>=| 00023150 30 20 8c 20 46 25 3d 4b 46 25 28 6b 65 79 25 2c |0 . F%=KF%(key%,| 00023160 30 29 20 8b 20 46 25 3d 2d 6b 65 79 25 0d 13 ad |0) . F%=-key%...| 00023170 16 c8 8e 20 63 68 61 72 74 79 70 65 25 28 46 25 |... chartype%(F%| 00023180 29 20 ca 0d 13 ae 23 20 20 c9 20 33 2c 36 2c 34 |) ....# . 3,6,4| 00023190 36 2c 34 37 2c 35 34 2c 35 36 2c 35 37 3a 56 24 |6,47,54,56,57:V$| 000231a0 3d 22 56 41 4c 22 0d 13 af 05 cb 0d 13 b0 07 3d |="VAL".........=| 000231b0 56 24 0d 13 b1 05 3a 0d 13 b2 17 dd 20 a4 63 6f |V$....:..... .co| 000231c0 6e 66 69 72 6d 28 73 74 72 69 6e 67 24 29 0d 13 |nfirm(string$)..| 000231d0 b3 0f 21 62 6c 6f 63 6b 25 3d 32 35 35 0d 13 b4 |..!block%=255...| 000231e0 17 24 28 62 6c 6f 63 6b 25 2b 34 29 3d 73 74 72 |.$(block%+4)=str| 000231f0 69 6e 67 24 0d 13 b5 5d c8 99 20 22 57 69 6d 70 |ing$...].. "Wimp| 00023200 5f 52 65 70 6f 72 74 45 72 72 6f 72 22 2c 62 6c |_ReportError",bl| 00023210 6f 63 6b 25 2c 28 31 3c 3c 30 29 2b 28 31 3c 3c |ock%,(1<<0)+(1<<| 00023220 31 29 2b 28 31 3c 3c 34 29 2c 22 50 6f 77 65 72 |1)+(1<<4),"Power| 00023230 62 61 73 65 3a 20 70 6c 65 61 73 65 20 63 6f 6e |base: please con| 00023240 66 69 72 6d 3a 22 20 b8 20 2c 72 65 73 75 6c 74 |firm:" . ,result| 00023250 25 0d 13 b6 0e 3d 72 65 73 75 6c 74 25 3d 31 0d |%....=result%=1.| 00023260 13 b7 05 3a 0d 13 b8 2c dd 20 f2 67 65 74 73 63 |...:...,. .getsc| 00023270 72 65 65 6e 73 69 7a 65 28 f8 20 53 5f 57 69 64 |reensize(. S_Wid| 00023280 74 68 25 2c f8 20 53 5f 48 65 69 67 68 74 25 29 |th%,. S_Height%)| 00023290 0d 13 b9 1a ea 20 48 31 25 2c 56 31 25 2c 48 32 |..... H1%,V1%,H2| 000232a0 25 2c 56 32 25 2c 45 6e 64 25 0d 13 ba 24 48 31 |%,V2%,End%...$H1| 000232b0 25 3d 30 3a 56 31 25 3d 34 3a 48 32 25 3d 38 3a |%=0:V1%=4:H2%=8:| 000232c0 56 32 25 3d 31 32 3a 45 6e 64 25 3d 31 36 0d 13 |V2%=12:End%=16..| 000232d0 bb 39 4d 69 25 21 48 31 25 3d 34 3a 4d 69 25 21 |.9Mi%!H1%=4:Mi%!| 000232e0 56 31 25 3d 35 3a 4d 69 25 21 48 32 25 3d 31 31 |V1%=5:Mi%!H2%=11| 000232f0 3a 4d 69 25 21 56 32 25 3d 31 32 3a 4d 69 25 21 |:Mi%!V2%=12:Mi%!| 00023300 45 6e 64 25 3d 2d 31 0d 13 bc 24 c8 99 20 22 4f |End%=-1...$.. "O| 00023310 53 5f 52 65 61 64 56 64 75 56 61 72 69 61 62 6c |S_ReadVduVariabl| 00023320 65 73 22 2c 4d 69 25 2c 4d 6f 25 0d 13 bd 29 53 |es",Mi%,Mo%...)S| 00023330 5f 57 69 64 74 68 25 3d 28 31 3c 3c 28 4d 6f 25 |_Width%=(1<<(Mo%| 00023340 21 48 31 25 29 29 2a 28 28 4d 6f 25 21 48 32 25 |!H1%))*((Mo%!H2%| 00023350 29 2b 31 29 0d 13 be 2a 53 5f 48 65 69 67 68 74 |)+1)...*S_Height| 00023360 25 3d 28 31 3c 3c 28 4d 6f 25 21 56 31 25 29 29 |%=(1<<(Mo%!V1%))| 00023370 2a 28 28 4d 6f 25 21 56 32 25 29 2b 31 29 0d 13 |*((Mo%!V2%)+1)..| 00023380 bf 05 e1 0d 13 c0 05 3a 0d 13 c1 0c dd 20 f2 6d |.......:..... .m| 00023390 61 74 63 68 0d 13 c2 11 f2 63 68 65 63 6b 5f 63 |atch.....check_c| 000233a0 68 61 6e 67 65 0d 13 c3 26 e7 20 ac 20 63 6f 6d |hange...&. . com| 000233b0 6d 6f 6e 25 20 8c 20 24 a4 74 65 78 74 28 6d 61 |mon% . $.text(ma| 000233c0 74 63 68 57 25 2c 30 29 3d 22 22 0d 13 c4 1b f2 |tchW%,0)="".....| 000233d0 72 65 64 72 61 77 5f 69 63 6f 6e 28 6d 61 74 63 |redraw_icon(matc| 000233e0 68 57 25 2c 30 29 0d 13 c5 19 f2 6f 70 65 6e 5f |hW%,0).....open_| 000233f0 77 69 6e 64 6f 77 28 6d 61 74 63 68 57 25 29 0d |window(matchW%).| 00023400 13 c6 19 f2 73 65 74 5f 63 61 72 65 74 28 6d 61 |....set_caret(ma| 00023410 74 63 68 57 25 2c 30 29 0d 13 c7 26 24 a4 74 65 |tchW%,0)...&$.te| 00023420 78 74 28 6d 61 74 63 68 57 25 2c 33 29 3d 54 61 |xt(matchW%,3)=Ta| 00023430 67 24 28 4d 61 74 63 68 5f 74 61 67 25 29 0d 13 |g$(Match_tag%)..| 00023440 c8 32 f2 74 69 63 6b 5f 6f 6e 65 28 66 69 65 6c |.2.tick_one(fiel| 00023450 64 6d 65 6e 75 25 2c 30 2c 66 69 65 6c 64 73 25 |dmenu%,0,fields%| 00023460 2d 31 2c 4d 61 74 63 68 5f 74 61 67 25 2d 31 29 |-1,Match_tag%-1)| 00023470 0d 13 c9 1b f2 72 65 64 72 61 77 5f 69 63 6f 6e |.....redraw_icon| 00023480 28 6d 61 74 63 68 57 25 2c 33 29 0d 13 ca 19 24 |(matchW%,3)....$| 00023490 a4 74 65 78 74 28 6d 61 74 63 68 57 25 2c 31 34 |.text(matchW%,14| 000234a0 29 3d 22 22 0d 13 cb 1c f2 72 65 64 72 61 77 5f |)="".....redraw_| 000234b0 69 63 6f 6e 28 6d 61 74 63 68 57 25 2c 31 34 29 |icon(matchW%,14)| 000234c0 0d 13 cc 61 e7 20 a4 73 65 6c 65 63 74 65 64 28 |...a. .selected(| 000234d0 6d 61 74 63 68 57 25 2c 32 37 29 20 8c 20 24 a4 |matchW%,27) . $.| 000234e0 74 65 78 74 28 6d 61 74 63 68 57 25 2c 32 35 29 |text(matchW%,25)| 000234f0 3d 22 4e 75 6d 62 65 72 20 66 6f 75 6e 64 22 20 |="Number found" | 00023500 8b 20 24 a4 74 65 78 74 28 6d 61 74 63 68 57 25 |. $.text(matchW%| 00023510 2c 32 35 29 3d 22 54 69 6d 65 20 74 61 6b 65 6e |,25)="Time taken| 00023520 22 0d 13 cd 1c f2 72 65 64 72 61 77 5f 69 63 6f |".....redraw_ico| 00023530 6e 28 6d 61 74 63 68 57 25 2c 32 35 29 0d 13 ce |n(matchW%,25)...| 00023540 22 66 69 65 6c 64 66 75 6e 63 24 3d 22 6d 61 74 |"fieldfunc$="mat| 00023550 63 68 22 3a 6d 61 74 63 68 69 6e 67 25 3d b9 0d |ch":matching%=..| 00023560 13 cf 05 e1 0d 13 d0 05 3a 0d 13 d1 49 f4 20 4c |........:...I. L| 00023570 69 73 74 20 70 72 69 6e 74 69 6e 67 20 2d 2d 2d |ist printing ---| 00023580 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000235b0 2d 2d 0d 13 d2 05 3a 0d 13 d3 11 dd 20 f2 70 72 |--....:..... .pr| 000235c0 69 6e 74 5f 74 68 69 73 0d 13 d4 25 66 24 3d 24 |int_this...%f$=$| 000235d0 64 61 74 61 62 61 73 65 25 2b 22 2e 50 72 69 6e |database%+".Prin| 000235e0 74 52 65 73 2e 44 65 66 61 75 6c 74 22 0d 13 d5 |tRes.Default"...| 000235f0 1a c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c |... "OS_File",5,| 00023600 66 24 20 b8 20 64 25 0d 13 d6 20 e7 20 64 25 3d |f$ . d%... . d%=| 00023610 31 20 8c 20 f2 64 72 61 67 5f 73 65 6c 65 63 74 |1 . .drag_select| 00023620 69 6f 6e 28 66 24 29 0d 13 d7 21 6f 6c 64 25 3d |ion(f$)...!old%=| 00023630 a4 73 65 6c 65 63 74 65 64 5f 65 73 67 28 70 72 |.selected_esg(pr| 00023640 69 6e 74 57 25 2c 33 29 0d 13 d8 1b f2 64 65 73 |intW%,3).....des| 00023650 65 6c 65 63 74 28 70 72 69 6e 74 57 25 2c 6f 6c |elect(printW%,ol| 00023660 64 25 29 0d 13 d9 17 f2 73 65 6c 65 63 74 28 70 |d%).....select(p| 00023670 72 69 6e 74 57 25 2c 32 34 29 0d 13 da 1c f2 6d |rintW%,24).....m| 00023680 6f 75 73 65 28 30 2c 30 2c 34 2c 6d 61 74 63 68 |ouse(0,0,4,match| 00023690 57 25 2c 32 34 29 0d 13 db 14 f2 63 6c 65 61 72 |W%,24).....clear| 000236a0 5f 73 65 6c 65 63 74 69 6f 6e 0d 13 dc 19 f2 64 |_selection.....d| 000236b0 65 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 2c |eselect(printW%,| 000236c0 32 34 29 0d 13 dd 19 f2 73 65 6c 65 63 74 28 70 |24).....select(p| 000236d0 72 69 6e 74 57 25 2c 6f 6c 64 25 29 0d 13 de 05 |rintW%,old%)....| 000236e0 e1 0d 13 df 05 3a 0d 13 e0 20 dd 20 f2 64 6f 5f |.....:... . .do_| 000236f0 69 74 28 53 65 61 72 63 68 24 2c 64 69 73 70 6c |it(Search$,displ| 00023700 61 79 65 64 25 29 0d 13 e1 13 e7 20 70 72 69 6e |ayed%)..... prin| 00023710 74 69 6e 67 25 20 8c 20 e1 0d 13 e2 13 ea 20 7a |ting% . ...... z| 00023720 65 72 6f 25 2c 50 25 2c 72 65 63 25 0d 13 e3 07 |ero%,P%,rec%....| 00023730 ea 20 85 0d 13 e4 15 46 6f 72 6d 24 3d 70 72 69 |. .....Form$=pri| 00023740 6e 74 6f 72 64 65 72 24 0d 13 e5 10 e7 20 46 6f |ntorder$..... Fo| 00023750 72 6d 24 3d 22 22 20 8c 0d 13 e6 10 20 20 e3 20 |rm$="" ..... . | 00023760 57 25 3d 30 20 b8 20 31 0d 13 e7 17 20 20 20 20 |W%=0 . 1.... | 00023770 e7 20 4b 46 25 28 30 2c 57 25 29 3e 30 20 8c 0d |. KF%(0,W%)>0 ..| 00023780 13 e8 3a 20 20 20 20 20 20 46 24 3d c3 7e 28 4b |..: F$=.~(K| 00023790 46 25 28 30 2c 57 25 29 29 3a e7 20 a9 28 46 24 |F%(0,W%)):. .(F$| 000237a0 29 3d 31 20 8c 20 46 24 3d 22 30 22 2b 46 24 3a |)=1 . F$="0"+F$:| 000237b0 46 6f 72 6d 24 2b 3d 46 24 0d 13 e9 7d 20 20 20 |Form$+=F$...} | 000237c0 20 20 20 e7 20 ac 20 a4 73 65 6c 65 63 74 65 64 | . . .selected| 000237d0 28 6d 61 74 63 68 57 25 2c 32 37 29 20 8c 20 f2 |(matchW%,27) . .| 000237e0 73 65 6c 65 63 74 28 6d 61 69 6e 57 25 2c 66 69 |select(mainW%,fi| 000237f0 65 6c 64 25 28 4b 46 25 28 30 2c 57 25 29 29 29 |eld%(KF%(0,W%)))| 00023800 3a 70 72 69 6e 74 6f 72 64 65 72 24 2b 3d 46 24 |:printorder$+=F$| 00023810 3a f2 6c 69 74 28 6d 65 6e 75 25 28 36 29 2c 37 |:.lit(menu%(6),7| 00023820 2c b9 29 3a f2 6c 69 74 28 6d 65 6e 75 25 28 36 |,.):.lit(menu%(6| 00023830 29 2c 38 2c b9 29 0d 13 ea 09 20 20 20 20 cd 0d |),8,.).... ..| 00023840 13 eb 0a 20 20 ed 20 57 25 0d 13 ec 05 cd 0d 13 |... . W%.......| 00023850 ed 23 48 65 61 64 69 6e 67 24 3d 22 22 3a 48 6c |.#Heading$="":Hl| 00023860 6f 6e 67 65 73 74 25 3d 30 3a 53 75 6d 28 29 3d |ongest%=0:Sum()=| 00023870 30 0d 13 ee 2b 43 6f 75 6e 74 25 3d 30 3a 65 78 |0...+Count%=0:ex| 00023880 61 6d 69 6e 65 64 25 3d 30 3a 70 72 69 6e 74 65 |amined%=0:printe| 00023890 64 25 3d 30 3a 73 75 6d 73 25 3d 30 0d 13 ef 17 |d%=0:sums%=0....| 000238a0 f2 72 65 61 64 5f 70 72 69 6e 74 5f 6f 70 74 69 |.read_print_opti| 000238b0 6f 6e 73 0d 13 f0 4e e7 20 a4 73 65 6c 65 63 74 |ons...N. .select| 000238c0 65 64 28 70 72 69 6e 74 57 25 2c 34 30 29 20 8c |ed(printW%,40) .| 000238d0 20 f2 66 69 6e 64 5f 6d 61 78 5f 6c 65 6e 67 74 | .find_max_lengt| 000238e0 68 73 28 64 69 73 70 6c 61 79 65 64 25 29 20 8b |hs(displayed%) .| 000238f0 20 6d 61 78 6c 65 6e 25 28 29 3d 6c 65 6e 25 28 | maxlen%()=len%(| 00023900 29 0d 13 f1 1c 4c 65 6e 4c 69 6e 65 25 3d a4 69 |)....LenLine%=.i| 00023910 6e 63 6c 75 64 65 5f 66 69 65 6c 64 73 0d 13 f2 |nclude_fields...| 00023920 2c 6e 75 6d 66 69 72 73 74 25 3d a4 6d 61 72 67 |,numfirst%=.marg| 00023930 69 6e 5f 77 61 72 6e 3a e7 20 6e 75 6d 66 69 72 |in_warn:. numfir| 00023940 73 74 25 3c 30 20 8c 20 e1 0d 13 f3 11 f2 6c 69 |st%<0 . ......li| 00023950 73 74 5f 68 65 61 64 28 30 29 0d 13 f4 24 c8 99 |st_head(0)...$..| 00023960 20 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 | "Wimp_GetPointe| 00023970 72 49 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 25 0d 13 |rInfo",,block%..| 00023980 f5 15 f2 6c 69 6d 69 74 5f 61 63 74 69 6f 6e 73 |...limit_actions| 00023990 28 a3 29 0d 13 f6 16 f2 6c 69 74 28 6d 65 6e 75 |(.).....lit(menu| 000239a0 25 28 30 29 2c 32 2c 30 29 0d 13 f7 0f 70 72 69 |%(0),2,0)....pri| 000239b0 6e 74 69 6e 67 25 3d b9 0d 13 f8 26 c8 99 20 22 |nting%=....&.. "| 000239c0 4f 53 5f 52 65 61 64 4d 6f 6e 6f 74 6f 6e 69 63 |OS_ReadMonotonic| 000239d0 54 69 6d 65 22 20 b8 20 73 74 69 6d 65 25 0d 13 |Time" . stime%..| 000239e0 f9 1f ee 20 85 20 ea 3a f7 20 85 3a f2 61 62 6f |... . .:. .:.abo| 000239f0 72 74 5f 70 72 69 6e 74 69 6e 67 3a e1 0d 13 fa |rt_printing:....| 00023a00 2a 64 62 61 73 65 68 61 6e 64 6c 65 25 3d 8e 28 |*dbasehandle%=.(| 00023a10 24 64 61 74 61 62 61 73 65 25 2b 22 2e 44 61 74 |$database%+".Dat| 00023a20 61 62 61 73 65 22 29 0d 13 fb 15 c8 99 20 22 48 |abase")...... "H| 00023a30 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 13 fc 0a |ourglass_On"....| 00023a40 c8 8e 20 b9 20 ca 0d 13 fd 13 20 20 c9 20 64 69 |.. . ..... . di| 00023a50 73 70 6c 61 79 65 64 25 3a 0d 13 fe 25 20 20 f2 |splayed%:...% .| 00023a60 72 65 61 64 73 6d 61 72 72 61 79 28 64 62 61 73 |readsmarray(dbas| 00023a70 65 68 61 6e 64 6c 65 25 2c 52 45 43 25 29 0d 13 |ehandle%,REC%)..| 00023a80 ff 19 20 20 f2 70 72 69 6e 74 5f 72 65 63 6f 72 |.. .print_recor| 00023a90 64 28 52 45 43 25 29 0d 14 00 2d 20 20 c9 20 75 |d(REC%)...- . u| 00023aa0 73 65 6b 65 79 25 3d 2d 31 20 84 20 a4 73 65 6c |sekey%=-1 . .sel| 00023ab0 65 63 74 65 64 28 6d 61 74 63 68 57 25 2c 32 33 |ected(matchW%,23| 00023ac0 29 3d a3 3a 0d 14 01 3c 20 20 50 25 3d a4 6e 65 |)=.:...< P%=.ne| 00023ad0 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 74 6f 70 |ighbour(key%,top| 00023ae0 2c 31 29 3a f2 73 63 61 6e 5f 66 69 6c 65 28 22 |,1):.scan_file("| 00023af0 50 25 3c 3e 74 6f 70 22 2c 6b 65 79 25 2c 31 29 |P%<>top",key%,1)| 00023b00 0d 14 02 08 20 20 7f 3a 0d 14 03 23 20 20 50 25 |.... .:...# P%| 00023b10 3d a4 73 65 61 72 63 68 28 75 73 65 76 61 6c 24 |=.search(useval$| 00023b20 2c 75 73 65 6b 65 79 25 2c 31 29 0d 14 04 49 20 |,usekey%,1)...I | 00023b30 20 e7 20 50 25 3e 3d 30 20 8c 20 6b 24 3d 75 73 | . P%>=0 . k$=us| 00023b40 65 76 61 6c 24 3a f2 73 63 61 6e 5f 66 69 6c 65 |eval$:.scan_file| 00023b50 28 22 50 25 3c 3e 74 6f 70 20 41 4e 44 20 6b 24 |("P%<>top AND k$| 00023b60 3d 75 73 65 76 61 6c 24 22 2c 75 73 65 6b 65 79 |=useval$",usekey| 00023b70 25 2c 31 29 0d 14 05 05 cb 0d 14 06 07 f7 20 85 |%,1).......... .| 00023b80 0d 14 07 11 f2 65 6e 64 5f 70 72 69 6e 74 69 6e |.....end_printin| 00023b90 67 0d 14 08 05 e1 0d 14 09 05 3a 0d 14 0a 15 dd |g.........:.....| 00023ba0 20 f2 61 62 6f 72 74 5f 70 72 69 6e 74 69 6e 67 | .abort_printing| 00023bb0 0d 14 0b 11 f2 65 6e 64 5f 70 72 69 6e 74 69 6e |.....end_printin| 00023bc0 67 0d 14 0c 0c e7 20 9f 3d 31 37 20 8c 0d 14 0d |g..... .=17 ....| 00023bd0 17 20 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 |. .softerror(""| 00023be0 2c 32 39 29 0d 14 0e 1d 20 20 cc 20 f2 77 69 6d |,29).... . .wim| 00023bf0 70 5f 65 72 72 6f 72 28 b9 2c 9f 2c 9e 2c f6 24 |p_error(.,.,.,.$| 00023c00 29 0d 14 0f 05 cd 0d 14 10 05 e1 0d 14 11 05 3a |)..............:| 00023c10 0d 14 12 13 dd 20 f2 65 6e 64 5f 70 72 69 6e 74 |..... .end_print| 00023c20 69 6e 67 0d 14 13 0b ea 20 74 69 6d 65 25 0d 14 |ing..... time%..| 00023c30 14 32 e7 20 66 6f 72 6d 61 74 24 3d 22 6c 61 62 |.2. format$="lab| 00023c40 65 6c 22 20 80 20 74 68 69 73 6c 61 62 25 3e 30 |el" . thislab%>0| 00023c50 20 8c 20 f2 70 72 69 6e 74 5f 6c 61 62 65 6c 73 | . .print_labels| 00023c60 0d 14 15 26 c8 99 20 22 4f 53 5f 52 65 61 64 4d |...&.. "OS_ReadM| 00023c70 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 22 20 b8 20 |onotonicTime" . | 00023c80 65 74 69 6d 65 25 0d 14 16 17 74 69 6d 65 25 3d |etime%....time%=| 00023c90 65 74 69 6d 65 25 2d 73 74 69 6d 65 25 0d 14 17 |etime%-stime%...| 00023ca0 7a e7 20 a4 73 65 6c 65 63 74 65 64 28 6d 61 74 |z. .selected(mat| 00023cb0 63 68 57 25 2c 32 37 29 20 8c 20 24 a4 74 65 78 |chW%,27) . $.tex| 00023cc0 74 28 6d 61 74 63 68 57 25 2c 31 34 29 3d c3 28 |t(matchW%,14)=.(| 00023cd0 70 72 69 6e 74 65 64 25 29 20 8b 20 24 a4 74 65 |printed%) . $.te| 00023ce0 78 74 28 6d 61 74 63 68 57 25 2c 31 34 29 3d c3 |xt(matchW%,14)=.| 00023cf0 28 74 69 6d 65 25 20 81 20 31 30 30 29 2b 22 2e |(time% . 100)+".| 00023d00 22 2b c3 28 74 69 6d 65 25 20 83 20 31 30 30 29 |"+.(time% . 100)| 00023d10 2b 22 20 73 65 63 22 0d 14 18 1c f2 72 65 64 72 |+" sec".....redr| 00023d20 61 77 5f 69 63 6f 6e 28 6d 61 74 63 68 57 25 2c |aw_icon(matchW%,| 00023d30 31 34 29 0d 14 19 18 c8 99 20 22 48 6f 75 72 67 |14)...... "Hourg| 00023d40 6c 61 73 73 5f 53 6d 61 73 68 22 0d 14 1a 33 e7 |lass_Smash"...3.| 00023d50 20 66 6f 72 6d 61 74 24 3c 3e 22 6c 61 62 65 6c | format$<>"label| 00023d60 22 20 80 20 64 69 73 70 6c 61 79 65 64 25 3d a3 |" . displayed%=.| 00023d70 20 8c 20 f2 74 6f 74 61 6c 5f 6c 69 73 74 0d 14 | . .total_list..| 00023d80 1b 14 c8 8e 20 72 65 70 6f 72 74 64 65 73 74 24 |.... reportdest$| 00023d90 20 ca 0d 14 1c 11 20 20 c9 20 22 57 69 6e 64 6f | ..... . "Windo| 00023da0 77 22 3a 0d 14 1d 40 20 20 e7 20 28 ac 20 73 63 |w":...@ . (. sc| 00023db0 72 69 70 74 6f 6e 25 29 20 80 20 28 ac 20 a4 73 |ripton%) . (. .s| 00023dc0 65 6c 65 63 74 65 64 28 6d 61 74 63 68 57 25 2c |elected(matchW%,| 00023dd0 32 37 29 29 20 8c 20 f2 73 63 72 65 65 6e 5f 6c |27)) . .screen_l| 00023de0 69 73 74 0d 14 1e 3e 20 20 f2 65 78 74 65 6e 64 |ist...> .extend| 00023df0 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 |_named_sliding_b| 00023e00 6c 6f 63 6b 28 74 65 78 74 61 6e 63 68 6f 72 25 |lock(textanchor%| 00023e10 2c 43 6f 75 6e 74 25 2a 4c 65 6e 4c 69 6e 65 25 |,Count%*LenLine%| 00023e20 29 0d 14 1f 0f 20 20 c9 20 22 46 69 6c 65 22 3a |).... . "File":| 00023e30 0d 14 20 36 20 20 f2 63 6c 6f 73 65 5f 66 69 6c |.. 6 .close_fil| 00023e40 65 28 74 65 78 74 68 61 6e 64 6c 65 25 29 3a c8 |e(texthandle%):.| 00023e50 99 20 22 4f 53 5f 46 69 6c 65 22 2c 31 38 2c 66 |. "OS_File",18,f| 00023e60 24 2c 26 66 66 66 0d 14 21 1b 20 20 f2 63 6c 6f |$,&fff..!. .clo| 00023e70 73 65 5f 77 69 6e 64 6f 77 28 73 61 76 65 57 25 |se_window(saveW%| 00023e80 29 0d 14 22 12 20 20 c9 20 22 50 72 69 6e 74 65 |)..". . "Printe| 00023e90 72 22 3a 0d 14 23 40 20 20 f2 65 78 74 65 6e 64 |r":..#@ .extend| 00023ea0 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 |_named_sliding_b| 00023eb0 6c 6f 63 6b 28 74 65 78 74 61 6e 63 68 6f 72 25 |lock(textanchor%| 00023ec0 2c 43 6f 75 6e 74 25 2a 4c 65 6e 4c 69 6e 65 25 |,Count%*LenLine%| 00023ed0 2b 31 29 0d 14 24 42 20 20 53 74 61 72 74 25 3d |+1)..$B Start%=| 00023ee0 21 74 65 78 74 61 6e 63 68 6f 72 25 3a 45 6e 64 |!textanchor%:End| 00023ef0 25 3d 53 74 61 72 74 25 2b 43 6f 75 6e 74 25 2a |%=Start%+Count%*| 00023f00 4c 65 6e 4c 69 6e 65 25 2b 31 3a 54 79 70 65 25 |LenLine%+1:Type%| 00023f10 3d 26 66 66 66 0d 14 25 29 20 20 24 53 74 61 72 |=&fff..%) $Star| 00023f20 74 25 3d 70 69 74 63 68 24 3a 3f 28 45 6e 64 25 |t%=pitch$:?(End%| 00023f30 2d 31 29 3d 30 3a 3f 45 6e 64 25 3d 31 32 0d 14 |-1)=0:?End%=12..| 00023f40 26 3b 20 20 62 6c 6f 63 6b 25 21 30 3d 32 35 36 |&; block%!0=256| 00023f50 3a 62 6c 6f 63 6b 25 21 31 32 3d 30 3a 62 6c 6f |:block%!12=0:blo| 00023f60 63 6b 25 21 31 36 3d 26 38 30 31 34 32 3a 62 6c |ck%!16=&80142:bl| 00023f70 6f 63 6b 25 21 32 30 3d 30 0d 14 27 44 20 20 62 |ock%!20=0..'D b| 00023f80 6c 6f 63 6b 25 21 32 34 3d 30 3a 62 6c 6f 63 6b |lock%!24=0:block| 00023f90 25 21 32 38 3d 30 3a 62 6c 6f 63 6b 25 21 33 32 |%!28=0:block%!32| 00023fa0 3d 30 3a 62 6c 6f 63 6b 25 21 33 36 3d 30 3a 62 |=0:block%!36=0:b| 00023fb0 6c 6f 63 6b 25 21 34 30 3d 26 66 66 66 0d 14 28 |lock%!40=&fff..(| 00023fc0 19 20 20 24 28 62 6c 6f 63 6b 25 2b 34 34 29 3d |. $(block%+44)=| 00023fd0 22 4c 69 73 74 22 0d 14 29 27 20 20 c8 99 20 22 |"List"..)' .. "| 00023fe0 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 |Wimp_SendMessage| 00023ff0 22 2c 31 38 2c 62 6c 6f 63 6b 25 2c 30 0d 14 2a |",18,block%,0..*| 00024000 05 cb 0d 14 2b 29 70 72 69 6e 74 69 6e 67 25 3d |....+)printing%=| 00024010 a3 3a 73 63 72 69 70 74 6f 6e 25 3d a3 3a 73 61 |.:scripton%=.:sa| 00024020 76 65 74 6f 66 69 6c 65 25 3d a3 0d 14 2c 1c f2 |vetofile%=...,..| 00024030 6c 69 74 28 6d 65 6e 75 25 28 30 29 2c 32 2c 4d |lit(menu%(0),2,M| 00024040 6f 64 69 66 79 25 29 0d 14 2d 1b f2 6c 69 6d 69 |odify%)..-..limi| 00024050 74 5f 61 63 74 69 6f 6e 73 28 41 63 63 65 73 73 |t_actions(Access| 00024060 25 29 0d 14 2e 1d f2 63 6c 6f 73 65 5f 66 69 6c |%).....close_fil| 00024070 65 28 64 62 61 73 65 68 61 6e 64 6c 65 25 29 0d |e(dbasehandle%).| 00024080 14 2f 05 e1 0d 14 30 05 3a 0d 14 31 23 dd 20 f2 |./....0.:..1#. .| 00024090 66 69 6e 64 5f 6d 61 78 5f 6c 65 6e 67 74 68 73 |find_max_lengths| 000240a0 28 64 69 73 70 6c 61 79 65 64 25 29 0d 14 32 0b |(displayed%)..2.| 000240b0 ea 20 50 25 2c 6b 24 0d 14 33 07 ea 20 85 0d 14 |. P%,k$..3.. ...| 000240c0 34 1d ee 20 85 20 ea 3a f7 20 85 3a f2 65 6e 64 |4.. . .:. .:.end| 000240d0 5f 66 69 6e 64 5f 6d 61 78 3a e1 0d 14 35 0f 6d |_find_max:...5.m| 000240e0 61 78 6c 65 6e 25 28 29 3d 30 0d 14 36 2a 64 62 |axlen%()=0..6*db| 000240f0 61 73 65 68 61 6e 64 6c 65 25 3d 8e 28 24 64 61 |asehandle%=.($da| 00024100 74 61 62 61 73 65 25 2b 22 2e 44 61 74 61 62 61 |tabase%+".Databa| 00024110 73 65 22 29 0d 14 37 15 c8 99 20 22 48 6f 75 72 |se")..7... "Hour| 00024120 67 6c 61 73 73 5f 4f 6e 22 0d 14 38 1b c8 99 20 |glass_On"..8... | 00024130 22 48 6f 75 72 67 6c 61 73 73 5f 4c 45 44 73 22 |"Hourglass_LEDs"| 00024140 2c 25 31 31 0d 14 39 12 e7 20 64 69 73 70 6c 61 |,%11..9.. displa| 00024150 79 65 64 25 20 8c 0d 14 3a 25 20 20 f2 72 65 61 |yed% ...:% .rea| 00024160 64 73 6d 61 72 72 61 79 28 64 62 61 73 65 68 61 |dsmarray(dbaseha| 00024170 6e 64 6c 65 25 2c 52 45 43 25 29 0d 14 3b 12 20 |ndle%,REC%)..;. | 00024180 20 f2 67 65 74 5f 6c 65 6e 67 74 68 73 0d 14 3c | .get_lengths..<| 00024190 07 20 20 cc 0d 14 3d 2e 20 20 e7 20 75 73 65 6b |. ...=. . usek| 000241a0 65 79 25 3d 2d 31 20 84 20 a4 73 65 6c 65 63 74 |ey%=-1 . .select| 000241b0 65 64 28 6d 61 74 63 68 57 25 2c 32 33 29 3d a3 |ed(matchW%,23)=.| 000241c0 20 8c 0d 14 3e 21 20 20 20 20 50 25 3d a4 6e 65 | ...>! P%=.ne| 000241d0 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 74 6f 70 |ighbour(key%,top| 000241e0 2c 31 29 0d 14 3f 24 20 20 20 20 f2 73 63 61 6e |,1)..?$ .scan| 000241f0 5f 66 69 6c 65 28 22 50 25 3c 3e 74 6f 70 22 2c |_file("P%<>top",| 00024200 6b 65 79 25 2c 30 29 0d 14 40 09 20 20 20 20 cc |key%,0)..@. .| 00024210 0d 14 41 25 20 20 20 20 50 25 3d a4 73 65 61 72 |..A% P%=.sear| 00024220 63 68 28 75 73 65 76 61 6c 24 2c 75 73 65 6b 65 |ch(useval$,useke| 00024230 79 25 2c 31 29 0d 14 42 11 20 20 20 20 e7 20 50 |y%,1)..B. . P| 00024240 25 3e 3d 30 20 8c 0d 14 43 14 20 20 20 20 20 20 |%>=0 ...C. | 00024250 6b 24 3d 75 73 65 76 61 6c 24 0d 14 44 38 20 20 |k$=useval$..D8 | 00024260 20 20 20 20 f2 73 63 61 6e 5f 66 69 6c 65 28 22 | .scan_file("| 00024270 50 25 3c 3e 74 6f 70 20 41 4e 44 20 6b 24 3d 75 |P%<>top AND k$=u| 00024280 73 65 76 61 6c 24 22 2c 75 73 65 6b 65 79 25 2c |seval$",usekey%,| 00024290 30 29 0d 14 45 09 20 20 20 20 cd 0d 14 46 07 20 |0)..E. ...F. | 000242a0 20 cd 0d 14 47 05 cd 0d 14 48 1b c8 99 20 22 48 | ...G....H... "H| 000242b0 6f 75 72 67 6c 61 73 73 5f 4c 45 44 73 22 2c 25 |ourglass_LEDs",%| 000242c0 30 30 0d 14 49 16 c8 99 20 22 48 6f 75 72 67 6c |00..I... "Hourgl| 000242d0 61 73 73 5f 4f 66 66 22 0d 14 4a 1d f2 63 6c 6f |ass_Off"..J..clo| 000242e0 73 65 5f 66 69 6c 65 28 64 62 61 73 65 68 61 6e |se_file(dbasehan| 000242f0 64 6c 65 25 29 0d 14 4b 05 e1 0d 14 4c 05 3a 0d |dle%)..K....L.:.| 00024300 14 4d 12 dd 20 f2 67 65 74 5f 6c 65 6e 67 74 68 |.M.. .get_length| 00024310 73 0d 14 4e 14 ea 20 49 25 2c 4c 25 2c 46 25 2c |s..N.. I%,L%,F%,| 00024320 6c 25 2c 46 24 0d 14 4f 17 49 25 3d 2d 31 3a 4c |l%,F$..O.I%=-1:L| 00024330 25 3d a9 28 46 6f 72 6d 24 29 2d 31 0d 14 50 0c |%=.(Form$)-1..P.| 00024340 c8 95 20 49 25 3c 4c 25 0d 14 51 35 20 20 49 25 |.. I%<L%..Q5 I%| 00024350 2b 3d 32 3a 46 25 3d a4 66 6e 75 6d 28 c1 46 6f |+=2:F%=.fnum(.Fo| 00024360 72 6d 24 2c 49 25 2c 32 29 29 3a 46 24 3d 46 24 |rm$,I%,2)):F$=F$| 00024370 28 46 25 29 3a 6c 25 3d a9 28 46 24 29 0d 14 52 |(F%):l%=.(F$)..R| 00024380 27 20 20 e7 20 6c 25 3e 6d 61 78 6c 65 6e 25 28 |' . l%>maxlen%(| 00024390 46 25 29 20 8c 20 6d 61 78 6c 65 6e 25 28 46 25 |F%) . maxlen%(F%| 000243a0 29 3d 6c 25 0d 14 53 05 ce 0d 14 54 05 e1 0d 14 |)=l%..S....T....| 000243b0 55 05 3a 0d 14 56 13 dd 20 f2 65 6e 64 5f 66 69 |U.:..V.. .end_fi| 000243c0 6e 64 5f 6d 61 78 0d 14 57 18 c8 99 20 22 48 6f |nd_max..W... "Ho| 000243d0 75 72 67 6c 61 73 73 5f 53 6d 61 73 68 22 0d 14 |urglass_Smash"..| 000243e0 58 1d f2 63 6c 6f 73 65 5f 66 69 6c 65 28 64 62 |X..close_file(db| 000243f0 61 73 65 68 61 6e 64 6c 65 25 29 0d 14 59 14 6d |asehandle%)..Y.m| 00024400 61 78 6c 65 6e 25 28 29 3d 6c 65 6e 25 28 29 0d |axlen%()=len%().| 00024410 14 5a 0c e7 20 9f 3d 31 37 20 8c 0d 14 5b 17 20 |.Z.. .=17 ...[. | 00024420 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 2c 37 | .softerror("",7| 00024430 30 29 0d 14 5c 1d 20 20 cc 20 f2 77 69 6d 70 5f |0)..\. . .wimp_| 00024440 65 72 72 6f 72 28 b9 2c 9f 2c 9e 2c f6 24 29 0d |error(.,.,.,.$).| 00024450 14 5d 05 cd 0d 14 5e 05 e1 0d 14 5f 05 3a 0d 14 |.]....^...._.:..| 00024460 60 19 dd 20 f2 70 72 69 6e 74 5f 72 65 63 6f 72 |`.. .print_recor| 00024470 64 28 52 45 43 25 29 0d 14 61 2b ea 20 49 25 2c |d(REC%)..a+. I%,| 00024480 46 25 2c 4e 25 2c 46 24 2c 53 46 24 2c 54 61 62 |F%,N%,F$,SF$,Tab| 00024490 25 2c 6e 24 2c 79 24 2c 62 61 73 65 25 2c 70 6f |%,n$,y$,base%,po| 000244a0 73 25 0d 14 62 24 e7 20 66 6f 72 6d 61 74 24 3c |s%..b$. format$<| 000244b0 3e 22 6c 61 62 65 6c 22 20 8c 20 70 72 69 6e 74 |>"label" . print| 000244c0 65 64 25 2b 3d 31 0d 14 63 1f e7 20 a4 73 65 6c |ed%+=1..c.. .sel| 000244d0 65 63 74 65 64 28 6d 61 74 63 68 57 25 2c 32 37 |ected(matchW%,27| 000244e0 29 20 8c 20 e1 0d 14 64 2d 74 68 69 73 72 6f 77 |) . ...d-thisrow| 000244f0 25 3d 2d 31 3a 62 61 73 65 25 3d 21 6c 69 6e 65 |%=-1:base%=!line| 00024500 61 6e 63 68 6f 72 25 3a 70 6f 73 25 3d 62 61 73 |anchor%:pos%=bas| 00024510 65 25 0d 14 65 36 f2 68 65 61 70 5f 73 74 6f 72 |e%..e6.heap_stor| 00024520 65 28 6c 69 6e 65 61 6e 63 68 6f 72 25 2c 4c 65 |e(lineanchor%,Le| 00024530 6e 4c 69 6e 65 25 2c 30 2c 70 6f 73 25 2c 30 2c |nLine%,0,pos%,0,| 00024540 6d 61 72 67 69 6e 24 29 0d 14 66 1b e3 20 49 25 |margin$)..f.. I%| 00024550 3d 31 20 b8 20 a9 28 46 6f 72 6d 24 29 2d 31 20 |=1 . .(Form$)-1 | 00024560 88 20 32 0d 14 67 1c 20 20 46 25 3d a4 66 6e 75 |. 2..g. F%=.fnu| 00024570 6d 28 c1 46 6f 72 6d 24 2c 49 25 2c 32 29 29 0d |m(.Form$,I%,2)).| 00024580 14 68 2d 20 20 e7 20 66 6f 72 6d 61 74 24 3d 22 |.h- . format$="| 00024590 6c 61 62 65 6c 22 20 8c 20 6e 65 77 6c 69 6e 65 |label" . newline| 000245a0 25 3d ac 20 6e 65 77 6c 69 6e 65 25 0d 14 69 0b |%=. newline%..i.| 000245b0 20 20 4e 25 2b 3d 31 0d 14 6a 1f 20 20 e7 20 a4 | N%+=1..j. . .| 000245c0 73 65 6c 65 63 74 65 64 28 70 72 69 6e 74 57 25 |selected(printW%| 000245d0 2c 31 31 29 20 8c 0d 14 6b 2d 20 20 20 20 46 24 |,11) ...k- F$| 000245e0 3d a4 65 78 70 61 6e 64 28 46 24 28 46 25 29 2c |=.expand(F$(F%),| 000245f0 6c 69 6e 6b 24 28 46 25 29 2c 4c 65 6e 25 2c 53 |link$(F%),Len%,S| 00024600 46 24 29 0d 14 6c 09 20 20 20 20 cc 0d 14 6d 21 |F$)..l. ...m!| 00024610 20 20 20 20 46 24 3d 46 24 28 46 25 29 3a 4c 65 | F$=F$(F%):Le| 00024620 6e 25 3d 6c 65 6e 25 28 46 25 29 2b 32 0d 14 6e |n%=len%(F%)+2..n| 00024630 1a 20 20 20 20 c8 8e 20 63 68 61 72 74 79 70 65 |. .. chartype| 00024640 25 28 46 25 29 20 ca 0d 14 6f 1b 20 20 20 20 20 |%(F%) ...o. | 00024650 20 c9 20 34 31 2c 34 32 2c 34 33 2c 34 34 2c 34 | . 41,42,43,44,4| 00024660 35 3a 0d 14 70 1e 20 20 20 20 20 20 5a 25 3d a4 |5:..p. Z%=.| 00024670 6e 6f 5f 79 65 73 28 46 25 2c 6e 24 2c 79 24 29 |no_yes(F%,n$,y$)| 00024680 0d 14 71 22 20 20 20 20 20 20 e7 20 46 24 3d 22 |..q" . F$="| 00024690 20 22 20 8c 20 46 24 3d 79 24 20 8b 20 46 24 3d | " . F$=y$ . F$=| 000246a0 6e 24 0d 14 72 21 20 20 20 20 20 20 c9 20 33 2c |n$..r! . 3,| 000246b0 36 2c 38 2c 34 36 2c 34 37 2c 35 34 2c 35 36 2c |6,8,46,47,54,56,| 000246c0 35 37 3a 0d 14 73 2d 20 20 20 20 20 20 f2 73 75 |57:..s- .su| 000246d0 6d 73 28 46 24 2c 63 61 6c 63 72 6f 77 25 3f 46 |ms(F$,calcrow%?F| 000246e0 25 2c 63 68 61 72 74 79 70 65 25 28 46 25 29 29 |%,chartype%(F%))| 000246f0 0d 14 74 1c 20 20 20 20 20 20 e7 20 66 6f 72 6d |..t. . form| 00024700 61 74 24 3d 22 76 65 72 74 22 20 8c 0d 14 75 26 |at$="vert" ...u&| 00024710 20 20 20 20 20 20 20 20 46 24 3d c4 6c 65 6e 25 | F$=.len%| 00024720 28 46 25 29 2d a9 28 46 24 29 2c 22 20 22 29 2b |(F%)-.(F$)," ")+| 00024730 46 24 0d 14 76 25 20 20 20 20 20 20 20 20 cc 20 |F$..v% . | 00024740 46 24 3d a4 6a 75 73 74 69 66 79 28 46 24 2c 4e |F$=.justify(F$,N| 00024750 25 2c 4e 25 2d 31 29 0d 14 77 0b 20 20 20 20 20 |%,N%-1)..w. | 00024760 20 cd 0d 14 78 09 20 20 20 20 cb 0d 14 79 07 20 | ...x. ...y. | 00024770 20 cd 0d 14 7a 29 20 20 e7 20 a4 73 65 6c 65 63 | ...z) . .selec| 00024780 74 65 64 28 70 72 69 6e 74 57 25 2c 31 32 29 20 |ted(printW%,12) | 00024790 8c 20 46 24 3d a4 75 28 46 24 29 0d 14 7b 18 20 |. F$=.u(F$)..{. | 000247a0 20 c8 8e 20 63 68 61 72 74 79 70 65 25 28 46 25 | .. chartype%(F%| 000247b0 29 20 ca 0d 14 7c 1a 20 20 20 20 c9 20 33 37 3a |) ...|. . 37:| 000247c0 46 24 3d 22 3c 53 70 72 69 74 65 3e 22 0d 14 7d |F$="<Sprite>"..}| 000247d0 1c 20 20 20 20 c9 20 33 38 3a 46 24 3d 22 3c 44 |. . 38:F$="<D| 000247e0 72 61 77 66 69 6c 65 3e 22 0d 14 7e 07 20 20 cb |rawfile>"..~. .| 000247f0 0d 14 7f 12 20 20 c8 8e 20 66 6f 72 6d 61 74 24 |.... .. format$| 00024800 20 ca 0d 14 80 1a 20 20 20 20 c9 20 22 68 6f 72 | ..... . "hor| 00024810 69 7a 22 2c 22 74 61 62 6c 65 22 3a 0d 14 81 3e |iz","table":...>| 00024820 20 20 20 20 f2 68 65 61 70 5f 73 74 6f 72 65 28 | .heap_store(| 00024830 6c 69 6e 65 61 6e 63 68 6f 72 25 2c 4c 65 6e 4c |lineanchor%,LenL| 00024840 69 6e 65 25 2c 30 2c 70 6f 73 25 2c 30 2c a4 74 |ine%,0,pos%,0,.t| 00024850 61 62 28 46 24 2c 4e 25 29 29 0d 14 82 11 20 20 |ab(F$,N%)).... | 00024860 20 20 c9 20 22 76 65 72 74 22 3a 0d 14 83 52 20 | . "vert":...R | 00024870 20 20 20 e7 20 a4 73 65 6c 65 63 74 65 64 28 70 | . .selected(p| 00024880 72 69 6e 74 57 25 2c 32 29 20 8c 20 48 65 61 64 |rintW%,2) . Head| 00024890 24 3d 24 a4 74 65 78 74 28 6d 61 69 6e 57 25 2c |$=$.text(mainW%,| 000248a0 28 64 65 73 63 25 28 46 25 29 29 29 20 8b 20 48 |(desc%(F%))) . H| 000248b0 65 61 64 24 3d 54 61 67 24 28 46 25 29 0d 14 84 |ead$=Tag$(F%)...| 000248c0 38 20 20 20 20 48 65 61 64 24 3d 6d 61 72 67 69 |8 Head$=margi| 000248d0 6e 24 2b c4 54 61 62 25 28 31 29 2d a9 28 48 65 |n$+.Tab%(1)-.(He| 000248e0 61 64 24 29 2c 22 20 22 29 2b 48 65 61 64 24 2b |ad$)," ")+Head$+| 000248f0 22 20 3a 20 22 0d 14 85 24 20 20 20 20 70 6f 73 |" : "...$ pos| 00024900 25 3d 62 61 73 65 25 3a 4c 25 3d a9 28 48 65 61 |%=base%:L%=.(Hea| 00024910 64 24 29 2b a9 28 46 24 29 0d 14 86 38 20 20 20 |d$)+.(F$)...8 | 00024920 20 f2 68 65 61 70 5f 73 74 6f 72 65 28 6c 69 6e | .heap_store(lin| 00024930 65 61 6e 63 68 6f 72 25 2c 4c 65 6e 4c 69 6e 65 |eanchor%,LenLine| 00024940 25 2c 30 2c 70 6f 73 25 2c 30 2c 48 65 61 64 24 |%,0,pos%,0,Head$| 00024950 29 0d 14 87 35 20 20 20 20 f2 68 65 61 70 5f 73 |)...5 .heap_s| 00024960 74 6f 72 65 28 6c 69 6e 65 61 6e 63 68 6f 72 25 |tore(lineanchor%| 00024970 2c 4c 65 6e 4c 69 6e 65 25 2c 30 2c 70 6f 73 25 |,LenLine%,0,pos%| 00024980 2c 30 2c 46 24 29 0d 14 88 2a 20 20 20 20 f2 6c |,0,F$)...* .l| 00024990 69 73 74 5f 6c 69 6e 65 28 52 45 43 25 2c 6c 69 |ist_line(REC%,li| 000249a0 6e 65 61 6e 63 68 6f 72 25 2c 4c 25 2c 33 32 29 |neanchor%,L%,32)| 000249b0 0d 14 89 44 20 20 20 20 e7 20 63 68 61 72 74 79 |...D . charty| 000249c0 70 65 25 28 46 25 29 3d 33 36 20 84 20 63 68 61 |pe%(F%)=36 . cha| 000249d0 72 74 79 70 65 25 28 46 25 29 3d 33 39 20 8c 20 |rtype%(F%)=39 . | 000249e0 f2 70 72 69 6e 74 5f 6d 65 6d 6f 28 52 45 43 25 |.print_memo(REC%| 000249f0 2c 46 25 29 0d 14 8a 23 20 20 20 20 f2 65 78 74 |,F%)...# .ext| 00024a00 72 61 5f 6c 69 6e 65 73 28 6c 69 6e 65 66 65 65 |ra_lines(linefee| 00024a10 64 25 2d 31 2c 30 29 0d 14 8b 12 20 20 20 20 c9 |d%-1,0).... .| 00024a20 20 22 6c 61 62 65 6c 22 3a 0d 14 8c 14 20 20 20 | "label":.... | 00024a30 20 e7 20 6e 65 77 6c 69 6e 65 25 20 8c 0d 14 8d | . newline% ....| 00024a40 6e 20 20 20 20 20 20 e7 20 28 46 24 3c 3e 22 22 |n . (F$<>""| 00024a50 20 84 20 a4 73 65 6c 65 63 74 65 64 28 6c 61 62 | . .selected(lab| 00024a60 65 6c 57 25 2c 31 36 29 3d a3 29 20 80 20 74 68 |elW%,16)=.) . th| 00024a70 69 73 72 6f 77 25 3c 3d 6c 61 62 72 65 70 6c 25 |isrow%<=labrepl%| 00024a80 20 8c 20 74 68 69 73 72 6f 77 25 2b 3d 31 3a 4c | . thisrow%+=1:L| 00024a90 61 62 65 6c 24 28 74 68 69 73 72 6f 77 25 2c 74 |abel$(thisrow%,t| 00024aa0 68 69 73 6c 61 62 25 29 3d 46 24 0d 14 8e 0b 20 |hislab%)=F$.... | 00024ab0 20 20 20 20 20 cc 0d 14 8f 2f 20 20 20 20 20 20 | ..../ | 00024ac0 4c 61 62 65 6c 24 28 74 68 69 73 72 6f 77 25 2c |Label$(thisrow%,| 00024ad0 74 68 69 73 6c 61 62 25 29 2b 3d 73 70 61 63 65 |thislab%)+=space| 00024ae0 72 24 2b 46 24 0d 14 90 09 20 20 20 20 cd 0d 14 |r$+F$.... ...| 00024af0 91 07 20 20 cb 0d 14 92 08 ed 20 49 25 0d 14 93 |.. ...... I%...| 00024b00 10 c8 8e 20 66 6f 72 6d 61 74 24 20 ca 0d 14 94 |... format$ ....| 00024b10 10 20 20 c9 20 22 68 6f 72 69 7a 22 3a 0d 14 95 |. . "horiz":...| 00024b20 30 20 20 f2 6c 69 73 74 5f 6c 69 6e 65 28 52 45 |0 .list_line(RE| 00024b30 43 25 2c 6c 69 6e 65 61 6e 63 68 6f 72 25 2c 70 |C%,lineanchor%,p| 00024b40 6f 73 25 2d 62 61 73 65 25 2c 33 32 29 0d 14 96 |os%-base%,32)...| 00024b50 21 20 20 f2 65 78 74 72 61 5f 6c 69 6e 65 73 28 |! .extra_lines(| 00024b60 6c 69 6e 65 66 65 65 64 25 2d 31 2c 30 29 0d 14 |linefeed%-1,0)..| 00024b70 97 0f 20 20 c9 20 22 76 65 72 74 22 3a 0d 14 98 |.. . "vert":...| 00024b80 13 20 20 f2 72 75 6c 65 5f 6f 66 66 28 34 35 29 |. .rule_off(45)| 00024b90 0d 14 99 10 20 20 c9 20 22 74 61 62 6c 65 22 3a |.... . "table":| 00024ba0 0d 14 9a 18 20 20 63 6f 6c 70 6f 73 25 3d 70 6f |.... colpos%=po| 00024bb0 73 25 2d 62 61 73 65 25 0d 14 9b 38 20 20 f2 68 |s%-base%...8 .h| 00024bc0 65 61 70 5f 73 74 6f 72 65 28 6c 69 6e 65 61 6e |eap_store(linean| 00024bd0 63 68 6f 72 25 2c 4c 65 6e 4c 69 6e 65 25 2c 30 |chor%,LenLine%,0| 00024be0 2c 70 6f 73 25 2c 30 2c 63 6f 6c 75 6d 6e 24 29 |,pos%,0,column$)| 00024bf0 0d 14 9c 30 20 20 f2 6c 69 73 74 5f 6c 69 6e 65 |...0 .list_line| 00024c00 28 52 45 43 25 2c 6c 69 6e 65 61 6e 63 68 6f 72 |(REC%,lineanchor| 00024c10 25 2c 70 6f 73 25 2d 62 61 73 65 25 2c 33 32 29 |%,pos%-base%,32)| 00024c20 0d 14 9d 27 20 20 f2 65 78 74 72 61 5f 6c 69 6e |...' .extra_lin| 00024c30 65 73 28 6c 69 6e 65 66 65 65 64 25 2d 31 2c 63 |es(linefeed%-1,c| 00024c40 6f 6c 70 6f 73 25 29 0d 14 9e 10 20 20 c9 20 22 |olpos%).... . "| 00024c50 6c 61 62 65 6c 22 3a 0d 14 9f 2c 20 20 4c 61 62 |label":..., Lab| 00024c60 65 6c 24 28 6c 61 62 72 65 70 6c 25 2b 31 2c 74 |el$(labrepl%+1,t| 00024c70 68 69 73 6c 61 62 25 29 3d a4 6b 65 79 32 28 30 |hislab%)=.key2(0| 00024c80 2c 31 29 0d 14 a0 33 20 20 74 68 69 73 6c 61 62 |,1)...3 thislab| 00024c90 25 2b 3d 31 3a e7 20 74 68 69 73 6c 61 62 25 3e |%+=1:. thislab%>| 00024ca0 6c 61 62 75 70 25 20 8c 20 f2 70 72 69 6e 74 5f |labup% . .print_| 00024cb0 6c 61 62 65 6c 73 0d 14 a1 05 cb 0d 14 a2 18 e7 |labels..........| 00024cc0 20 66 6f 72 6d 61 74 24 3c 3e 22 6c 61 62 65 6c | format$<>"label| 00024cd0 22 20 8c 0d 14 a3 4f 20 20 e7 20 28 70 72 69 6e |" ....O . (prin| 00024ce0 74 65 64 25 20 83 20 4c 69 6e 65 73 50 65 72 50 |ted% . LinesPerP| 00024cf0 61 67 65 25 29 3d 30 20 80 20 a4 73 65 6c 65 63 |age%)=0 . .selec| 00024d00 74 65 64 28 70 72 69 6e 74 57 25 2c 31 30 29 3d |ted(printW%,10)=| 00024d10 a3 20 80 20 64 69 73 70 6c 61 79 65 64 25 3d a3 |. . displayed%=.| 00024d20 20 8c 0d 14 a4 4e 20 20 20 20 24 28 21 6c 69 6e | ....N $(!lin| 00024d30 65 61 6e 63 68 6f 72 25 29 3d 6d 61 72 67 69 6e |eanchor%)=margin| 00024d40 24 2b bd 28 31 32 29 3a f2 6c 69 73 74 5f 6c 69 |$+.(12):.list_li| 00024d50 6e 65 28 2d 31 2c 6c 69 6e 65 61 6e 63 68 6f 72 |ne(-1,lineanchor| 00024d60 25 2c 4c 6d 61 72 67 69 6e 25 2b 31 2c 33 32 29 |%,Lmargin%+1,32)| 00024d70 0d 14 a5 15 20 20 20 20 f2 6c 69 73 74 5f 68 65 |.... .list_he| 00024d80 61 64 28 31 29 0d 14 a6 07 20 20 cd 0d 14 a7 05 |ad(1).... .....| 00024d90 cd 0d 14 a8 05 e1 0d 14 a9 05 3a 0d 14 aa 1c dd |..........:.....| 00024da0 20 f2 65 78 74 72 61 5f 6c 69 6e 65 73 28 65 78 | .extra_lines(ex| 00024db0 25 2c 74 61 62 25 29 0d 14 ab 10 ea 20 62 61 73 |%,tab%)..... bas| 00024dc0 65 25 2c 70 6f 73 25 0d 14 ac 0c c8 95 20 65 78 |e%,pos%...... ex| 00024dd0 25 3e 30 0d 14 ad 0f 20 20 c8 8e 20 74 61 62 25 |%>0.... .. tab%| 00024de0 20 ca 0d 14 ae 19 20 20 20 20 c9 20 30 3a f2 72 | ..... . 0:.r| 00024df0 75 6c 65 5f 6f 66 66 28 33 32 29 0d 14 af 0a 20 |ule_off(32).... | 00024e00 20 20 20 7f 3a 0d 14 b0 25 20 20 20 20 62 61 73 | .:...% bas| 00024e10 65 25 3d 21 6c 69 6e 65 61 6e 63 68 6f 72 25 3a |e%=!lineanchor%:| 00024e20 70 6f 73 25 3d 62 61 73 65 25 0d 14 b1 17 20 20 |pos%=base%.... | 00024e30 20 20 e3 20 49 25 3d 30 20 b8 20 74 61 62 25 2d | . I%=0 . tab%-| 00024e40 31 0d 14 b2 14 20 20 20 20 20 20 70 6f 73 25 3f |1.... pos%?| 00024e50 49 25 3d 33 32 0d 14 b3 0c 20 20 20 20 ed 20 49 |I%=32.... . I| 00024e60 25 0d 14 b4 12 20 20 20 20 70 6f 73 25 2b 3d 74 |%.... pos%+=t| 00024e70 61 62 25 0d 14 b5 3a 20 20 20 20 f2 68 65 61 70 |ab%...: .heap| 00024e80 5f 73 74 6f 72 65 28 6c 69 6e 65 61 6e 63 68 6f |_store(lineancho| 00024e90 72 25 2c 4c 65 6e 4c 69 6e 65 25 2c 30 2c 70 6f |r%,LenLine%,0,po| 00024ea0 73 25 2c 30 2c 63 6f 6c 75 6d 6e 24 29 0d 14 b6 |s%,0,column$)...| 00024eb0 32 20 20 20 20 f2 6c 69 73 74 5f 6c 69 6e 65 28 |2 .list_line(| 00024ec0 52 45 43 25 2c 6c 69 6e 65 61 6e 63 68 6f 72 25 |REC%,lineanchor%| 00024ed0 2c 70 6f 73 25 2d 62 61 73 65 25 2c 33 32 29 0d |,pos%-base%,32).| 00024ee0 14 b7 07 20 20 cb 0d 14 b8 0c 20 20 65 78 25 2d |... ..... ex%-| 00024ef0 3d 31 0d 14 b9 05 ce 0d 14 ba 05 e1 0d 14 bb 05 |=1..............| 00024f00 3a 0d 14 bc 18 dd 20 f2 70 72 69 6e 74 5f 6d 65 |:..... .print_me| 00024f10 6d 6f 28 52 25 2c 46 25 29 0d 14 bd 2e ea 20 74 |mo(R%,F%)..... t| 00024f20 65 78 74 25 2c 42 25 2c 46 24 2c 73 70 25 2c 4c |ext%,B%,F$,sp%,L| 00024f30 25 2c 72 65 6d 24 2c 62 61 73 65 25 2c 70 6f 73 |%,rem$,base%,pos| 00024f40 25 2c 4c 69 6e 65 24 0d 14 be 2f e7 20 a4 62 6c |%,Line$.../. .bl| 00024f50 6f 62 5f 70 61 74 68 28 a3 2c 24 64 61 74 61 62 |ob_path(.,$datab| 00024f60 61 73 65 25 2c 52 25 2c 46 25 2c 33 36 2c 46 24 |ase%,R%,F%,36,F$| 00024f70 29 3e 3d 30 20 8c 0d 14 bf 11 20 20 74 65 78 74 |)>=0 ..... text| 00024f80 25 3d 8e 28 46 24 29 0d 14 c0 12 20 20 c8 95 20 |%=.(F$).... .. | 00024f90 ac 20 c5 23 74 65 78 74 25 0d 14 c1 26 20 20 20 |. .#text%...& | 00024fa0 20 4c 69 6e 65 24 3d 6d 61 72 67 69 6e 24 2b 72 | Line$=margin$+r| 00024fb0 65 6d 24 3a 4c 25 3d a9 28 4c 69 6e 65 24 29 0d |em$:L%=.(Line$).| 00024fc0 14 c2 09 20 20 20 20 f5 0d 14 c3 14 20 20 20 20 |... ..... | 00024fd0 20 20 42 25 3d 9a 23 74 65 78 74 25 0d 14 c4 1c | B%=.#text%....| 00024fe0 20 20 20 20 20 20 4c 69 6e 65 24 2b 3d bd 28 42 | Line$+=.(B| 00024ff0 25 29 3a 4c 25 2b 3d 31 0d 14 c5 1a 20 20 20 20 |%):L%+=1.... | 00025000 20 20 e7 20 42 25 3d 33 32 20 8c 20 73 70 25 3d | . B%=32 . sp%=| 00025010 4c 25 0d 14 c6 29 20 20 20 20 fd 20 42 25 3d 31 |L%...) . B%=1| 00025020 30 20 84 20 4c 25 3d 4c 65 6e 4c 69 6e 65 25 2d |0 . L%=LenLine%-| 00025030 33 20 84 20 c5 23 74 65 78 74 25 0d 14 c7 0e 20 |3 . .#text%.... | 00025040 20 20 20 c8 8e 20 b9 20 ca 0d 14 c8 27 20 20 20 | .. . ....' | 00025050 20 20 20 c9 20 42 25 3d 31 30 3a 72 65 6d 24 3d | . B%=10:rem$=| 00025060 22 22 3a 4c 69 6e 65 24 3d c0 4c 69 6e 65 24 29 |"":Line$=.Line$)| 00025070 0d 14 c9 1b 20 20 20 20 20 20 c9 20 c5 23 74 65 |.... . .#te| 00025080 78 74 25 3a 72 65 6d 24 3d 22 22 0d 14 ca 32 20 |xt%:rem$=""...2 | 00025090 20 20 20 20 20 7f 3a 72 65 6d 24 3d c1 4c 69 6e | .:rem$=.Lin| 000250a0 65 24 2c 73 70 25 2b 31 29 3a 4c 69 6e 65 24 3d |e$,sp%+1):Line$=| 000250b0 c0 4c 69 6e 65 24 2c 73 70 25 2d 31 29 0d 14 cb |.Line$,sp%-1)...| 000250c0 09 20 20 20 20 cb 0d 14 cc 19 20 20 20 20 70 6f |. ..... po| 000250d0 73 25 3d 21 6c 69 6e 65 61 6e 63 68 6f 72 25 0d |s%=!lineanchor%.| 000250e0 14 cd 38 20 20 20 20 f2 68 65 61 70 5f 73 74 6f |..8 .heap_sto| 000250f0 72 65 28 6c 69 6e 65 61 6e 63 68 6f 72 25 2c 4c |re(lineanchor%,L| 00025100 65 6e 4c 69 6e 65 25 2c 30 2c 70 6f 73 25 2c 30 |enLine%,0,pos%,0| 00025110 2c 4c 69 6e 65 24 29 0d 14 ce 30 20 20 20 20 f2 |,Line$)...0 .| 00025120 6c 69 73 74 5f 6c 69 6e 65 28 52 45 43 25 2c 6c |list_line(REC%,l| 00025130 69 6e 65 61 6e 63 68 6f 72 25 2c a9 28 4c 69 6e |ineanchor%,.(Lin| 00025140 65 24 29 2c 33 32 29 0d 14 cf 07 20 20 ce 0d 14 |e$),32).... ...| 00025150 d0 18 20 20 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 |.. .close_file(| 00025160 74 65 78 74 25 29 0d 14 d1 05 cd 0d 14 d2 05 e1 |text%)..........| 00025170 0d 14 d3 05 3a 0d 14 d4 13 dd 20 f2 70 72 69 6e |....:..... .prin| 00025180 74 5f 6c 61 62 65 6c 73 0d 14 d5 24 ea 20 49 25 |t_labels...$. I%| 00025190 2c 4c 69 6e 65 24 2c 53 24 2c 6c 69 6e 65 73 70 |,Line$,S$,linesp| 000251a0 72 69 6e 74 65 64 25 2c 70 6f 73 25 0d 14 d6 17 |rinted%,pos%....| 000251b0 e3 20 49 25 3d 30 20 b8 20 6c 61 62 72 65 70 6c |. I%=0 . labrepl| 000251c0 25 2d 31 0d 14 d7 13 20 20 4c 69 6e 65 24 3d 6d |%-1.... Line$=m| 000251d0 61 72 67 69 6e 24 0d 14 d8 19 20 20 e3 20 4b 25 |argin$.... . K%| 000251e0 3d 30 20 b8 20 74 68 69 73 6c 61 62 25 2d 31 0d |=0 . thislab%-1.| 000251f0 14 d9 18 20 20 20 20 53 24 3d 4c 61 62 65 6c 24 |... S$=Label$| 00025200 28 49 25 2c 4b 25 29 0d 14 da 21 20 20 20 20 e7 |(I%,K%)...! .| 00025210 20 a4 73 65 6c 65 63 74 65 64 28 6c 61 62 65 6c | .selected(label| 00025220 57 25 2c 31 31 29 20 8c 0d 14 db 39 20 20 20 20 |W%,11) ....9 | 00025230 20 20 e7 20 49 25 3d 6c 61 62 73 75 62 73 74 25 | . I%=labsubst%| 00025240 20 80 20 53 24 3d 22 22 20 8c 20 53 24 3d 4c 61 | . S$="" . S$=La| 00025250 62 65 6c 24 28 6c 61 62 72 65 70 6c 25 2c 4b 25 |bel$(labrepl%,K%| 00025260 29 0d 14 dc 09 20 20 20 20 cd 0d 14 dd 39 20 20 |).... ....9 | 00025270 20 20 e7 20 4b 25 3d 74 68 69 73 6c 61 62 25 2d | . K%=thislab%-| 00025280 31 20 8c 20 57 25 3d 6c 6f 6e 67 65 73 74 66 69 |1 . W%=longestfi| 00025290 65 6c 64 25 20 8b 20 57 25 3d 6c 61 62 77 69 64 |eld% . W%=labwid| 000252a0 74 68 25 0d 14 de 1f 20 20 20 20 e7 20 a9 28 53 |th%.... . .(S| 000252b0 24 29 3e 57 25 20 8c 20 53 24 3d c0 53 24 2c 57 |$)>W% . S$=.S$,W| 000252c0 25 29 0d 14 df 20 20 20 20 20 4c 69 6e 65 24 2b |%)... Line$+| 000252d0 3d 53 24 2b c4 57 25 2d a9 28 53 24 29 2c 22 20 |=S$+.W%-.(S$)," | 000252e0 22 29 0d 14 e0 0a 20 20 ed 20 4b 25 0d 14 e1 17 |").... . K%....| 000252f0 20 20 70 6f 73 25 3d 21 6c 69 6e 65 61 6e 63 68 | pos%=!lineanch| 00025300 6f 72 25 0d 14 e2 36 20 20 f2 68 65 61 70 5f 73 |or%...6 .heap_s| 00025310 74 6f 72 65 28 6c 69 6e 65 61 6e 63 68 6f 72 25 |tore(lineanchor%| 00025320 2c 4c 65 6e 4c 69 6e 65 25 2c 30 2c 70 6f 73 25 |,LenLine%,0,pos%| 00025330 2c 30 2c 4c 69 6e 65 24 29 0d 14 e3 2e 20 20 f2 |,0,Line$).... .| 00025340 6c 69 73 74 5f 6c 69 6e 65 28 52 45 43 25 2c 6c |list_line(REC%,l| 00025350 69 6e 65 61 6e 63 68 6f 72 25 2c a9 28 4c 69 6e |ineanchor%,.(Lin| 00025360 65 24 29 2c 33 32 29 0d 14 e4 16 20 20 6c 69 6e |e$),32).... lin| 00025370 65 73 70 72 69 6e 74 65 64 25 2b 3d 31 0d 14 e5 |esprinted%+=1...| 00025380 08 ed 20 49 25 0d 14 e6 1d e7 20 a4 73 65 6c 65 |.. I%..... .sele| 00025390 63 74 65 64 28 6c 61 62 65 6c 57 25 2c 31 33 29 |cted(labelW%,13)| 000253a0 20 8c 0d 14 e7 13 20 20 f2 72 75 6c 65 5f 6f 66 | ..... .rule_of| 000253b0 66 28 33 32 29 0d 14 e8 0e 20 20 4c 69 6e 65 24 |f(32).... Line$| 000253c0 3d 22 22 0d 14 e9 19 20 20 e3 20 4b 25 3d 30 20 |="".... . K%=0 | 000253d0 b8 20 74 68 69 73 6c 61 62 25 2d 31 0d 14 ea 28 |. thislab%-1...(| 000253e0 20 20 20 20 53 24 3d 22 28 22 2b 4c 61 62 65 6c | S$="("+Label| 000253f0 24 28 6c 61 62 72 65 70 6c 25 2b 31 2c 4b 25 29 |$(labrepl%+1,K%)| 00025400 2b 22 29 22 0d 14 eb 27 20 20 20 20 4c 69 6e 65 |+")"...' Line| 00025410 24 2b 3d 53 24 2b c4 6c 61 62 77 69 64 74 68 25 |$+=S$+.labwidth%| 00025420 2d a9 28 53 24 29 2c 22 20 22 29 0d 14 ec 0a 20 |-.(S$)," ").... | 00025430 20 ed 20 4b 25 0d 14 ed 17 20 20 70 6f 73 25 3d | . K%.... pos%=| 00025440 21 6c 69 6e 65 61 6e 63 68 6f 72 25 0d 14 ee 36 |!lineanchor%...6| 00025450 20 20 f2 68 65 61 70 5f 73 74 6f 72 65 28 6c 69 | .heap_store(li| 00025460 6e 65 61 6e 63 68 6f 72 25 2c 4c 65 6e 4c 69 6e |neanchor%,LenLin| 00025470 65 25 2c 30 2c 70 6f 73 25 2c 30 2c 4c 69 6e 65 |e%,0,pos%,0,Line| 00025480 24 29 0d 14 ef 2e 20 20 f2 6c 69 73 74 5f 6c 69 |$).... .list_li| 00025490 6e 65 28 52 45 43 25 2c 6c 69 6e 65 61 6e 63 68 |ne(REC%,lineanch| 000254a0 6f 72 25 2c a9 28 4c 69 6e 65 24 29 2c 33 32 29 |or%,.(Line$),32)| 000254b0 0d 14 f0 16 20 20 6c 69 6e 65 73 70 72 69 6e 74 |.... linesprint| 000254c0 65 64 25 2b 3d 31 0d 14 f1 05 cd 0d 14 f2 14 72 |ed%+=1.........r| 000254d0 6f 77 73 5f 70 72 69 6e 74 65 64 25 2b 3d 31 0d |ows_printed%+=1.| 000254e0 14 f3 1e e7 20 72 6f 77 73 5f 70 72 69 6e 74 65 |.... rows_printe| 000254f0 64 25 3d 6c 61 62 72 6f 77 73 25 20 8c 0d 14 f4 |d%=labrows% ....| 00025500 4c 20 20 24 28 21 6c 69 6e 65 61 6e 63 68 6f 72 |L $(!lineanchor| 00025510 25 29 3d 6d 61 72 67 69 6e 24 2b bd 28 31 32 29 |%)=margin$+.(12)| 00025520 3a f2 6c 69 73 74 5f 6c 69 6e 65 28 2d 31 2c 6c |:.list_line(-1,l| 00025530 69 6e 65 61 6e 63 68 6f 72 25 2c 4c 6d 61 72 67 |ineanchor%,Lmarg| 00025540 69 6e 25 2b 31 2c 33 32 29 0d 14 f5 13 20 20 f2 |in%+1,32).... .| 00025550 6c 69 73 74 5f 68 65 61 64 28 31 29 0d 14 f6 15 |list_head(1)....| 00025560 20 20 72 6f 77 73 5f 70 72 69 6e 74 65 64 25 3d | rows_printed%=| 00025570 30 0d 14 f7 07 20 20 cc 0d 14 f8 07 20 20 f5 0d |0.... ..... ..| 00025580 14 f9 15 20 20 20 20 f2 72 75 6c 65 5f 6f 66 66 |... .rule_off| 00025590 28 33 32 29 0d 14 fa 18 20 20 20 20 6c 69 6e 65 |(32).... line| 000255a0 73 70 72 69 6e 74 65 64 25 2b 3d 31 0d 14 fb 1f |sprinted%+=1....| 000255b0 20 20 fd 20 6c 69 6e 65 73 70 72 69 6e 74 65 64 | . linesprinted| 000255c0 25 3d 6c 61 62 64 65 70 74 68 25 0d 14 fc 05 cd |%=labdepth%.....| 000255d0 0d 14 fd 26 74 68 69 73 6c 61 62 25 3d 30 3a 74 |...&thislab%=0:t| 000255e0 68 69 73 72 6f 77 25 3d 2d 31 3a 4c 61 62 65 6c |hisrow%=-1:Label| 000255f0 24 28 29 3d 22 22 0d 14 fe 05 e1 0d 14 ff 05 3a |$()="".........:| 00025600 0d 15 00 19 dd 20 f2 72 65 61 64 5f 70 72 69 6e |..... .read_prin| 00025610 74 5f 6f 70 74 69 6f 6e 73 0d 15 01 08 ea 20 53 |t_options..... S| 00025620 24 0d 15 02 1e 74 68 69 73 6c 61 62 25 3d 30 3a |$....thislab%=0:| 00025630 4c 69 6e 65 73 50 65 72 50 61 67 65 25 3d 30 0d |LinesPerPage%=0.| 00025640 15 03 40 e7 20 75 73 65 6b 65 79 25 3d 2d 31 20 |..@. usekey%=-1 | 00025650 8c 20 53 24 3d 49 6e 64 65 78 24 28 6b 65 79 25 |. S$=Index$(key%| 00025660 29 20 8b 20 53 24 3d 49 6e 64 65 78 24 28 75 73 |) . S$=Index$(us| 00025670 65 6b 65 79 25 29 2b 22 20 69 6e 64 65 78 22 0d |ekey%)+" index".| 00025680 15 04 1c 54 69 74 6c 65 31 24 3d 22 4f 72 64 65 |...Title1$="Orde| 00025690 72 65 64 20 62 79 20 22 2b 53 24 0d 15 05 32 e7 |red by "+S$...2.| 000256a0 20 a4 73 65 6c 65 63 74 65 64 28 70 72 69 6e 74 | .selected(print| 000256b0 57 25 2c 31 39 29 20 8c 20 54 69 74 6c 65 31 24 |W%,19) . Title1$| 000256c0 2b 3d 22 20 28 22 2b 91 24 2b 22 29 22 0d 15 06 |+=" ("+.$+")"...| 000256d0 1e 54 69 74 6c 65 32 24 3d 24 a4 74 65 78 74 28 |.Title2$=$.text(| 000256e0 70 72 69 6e 74 57 25 2c 31 38 29 0d 15 07 2b f2 |printW%,18)...+.| 000256f0 6c 69 74 28 6d 65 6e 75 25 28 31 38 29 2c 31 2c |lit(menu%(18),1,| 00025700 a4 73 65 6c 65 63 74 65 64 28 70 72 69 6e 74 57 |.selected(printW| 00025710 25 2c 31 30 29 29 0d 15 08 21 c8 8e 20 a4 73 65 |%,10))...!.. .se| 00025720 6c 65 63 74 65 64 5f 65 73 67 28 70 72 69 6e 74 |lected_esg(print| 00025730 57 25 2c 32 29 20 ca 0d 15 09 17 20 20 c9 20 34 |W%,2) ..... . 4| 00025740 3a 63 70 69 25 3d 35 3a 70 24 3d 22 33 22 0d 15 |:cpi%=5:p$="3"..| 00025750 0a 18 20 20 c9 20 37 3a 63 70 69 25 3d 31 30 3a |.. . 7:cpi%=10:| 00025760 70 24 3d 22 30 22 0d 15 0b 18 20 20 c9 20 38 3a |p$="0".... . 8:| 00025770 63 70 69 25 3d 31 32 3a 70 24 3d 22 31 22 0d 15 |cpi%=12:p$="1"..| 00025780 0c 18 20 20 c9 20 36 3a 63 70 69 25 3d 31 37 3a |.. . 6:cpi%=17:| 00025790 70 24 3d 22 32 22 0d 15 0d 05 cb 0d 15 0e 15 70 |p$="2".........p| 000257a0 69 74 63 68 24 3d a4 70 69 74 63 68 28 70 24 29 |itch$=.pitch(p$)| 000257b0 0d 15 0f 33 4c 6d 61 72 67 69 6e 25 3d bb 28 24 |...3Lmargin%=.($| 000257c0 a4 74 65 78 74 28 70 72 69 6e 74 57 25 2c 33 30 |.text(printW%,30| 000257d0 29 29 3a 54 61 62 25 28 30 29 3d 4c 6d 61 72 67 |)):Tab%(0)=Lmarg| 000257e0 69 6e 25 0d 15 10 1a 6d 61 72 67 69 6e 24 3d c4 |in%....margin$=.| 000257f0 4c 6d 61 72 67 69 6e 25 2c 22 20 22 29 0d 15 11 |Lmargin%," ")...| 00025800 22 54 6d 61 72 67 69 6e 25 3d bb 28 24 a4 74 65 |"Tmargin%=.($.te| 00025810 78 74 28 70 72 69 6e 74 57 25 2c 33 32 29 29 0d |xt(printW%,32)).| 00025820 15 12 23 54 65 78 74 4c 69 6e 65 25 3d bb 28 24 |..#TextLine%=.($| 00025830 a4 74 65 78 74 28 70 72 69 6e 74 57 25 2c 33 34 |.text(printW%,34| 00025840 29 29 0d 15 13 23 6c 69 6e 65 66 65 65 64 25 3d |))...#linefeed%=| 00025850 bb 28 24 a4 74 65 78 74 28 70 72 69 6e 74 57 25 |.($.text(printW%| 00025860 2c 31 37 29 29 0d 15 14 23 63 6f 6c 77 69 64 74 |,17))...#colwidt| 00025870 68 25 3d bb 28 24 a4 74 65 78 74 28 70 72 69 6e |h%=.($.text(prin| 00025880 74 57 25 2c 34 35 29 29 0d 15 15 2a 73 24 3d 24 |tW%,45))...*s$=$| 00025890 a4 74 65 78 74 28 70 72 69 6e 74 57 25 2c 34 33 |.text(printW%,43| 000258a0 29 3a 73 25 3d bb 28 73 24 29 3a 63 24 3d c2 73 |):s%=.(s$):c$=.s| 000258b0 24 29 0d 15 16 0a c8 8e 20 b9 20 ca 0d 15 17 17 |$)...... . .....| 000258c0 20 20 c9 20 73 25 3d 30 3a 73 70 61 63 65 72 24 | . s%=0:spacer$| 000258d0 3d 73 24 0d 15 18 27 20 20 c9 20 63 24 3c 22 30 |=s$...' . c$<"0| 000258e0 22 20 84 20 63 24 3e 22 39 22 3a 73 70 61 63 65 |" . c$>"9":space| 000258f0 72 24 3d c4 73 25 2c 63 24 29 0d 15 19 18 20 20 |r$=.s%,c$).... | 00025900 7f 3a 73 70 61 63 65 72 24 3d c4 73 25 2c 22 20 |.:spacer$=.s%," | 00025910 22 29 0d 15 1a 05 cb 0d 15 1b 3f e7 20 6c 69 6e |")........?. lin| 00025920 65 66 65 65 64 25 3d 30 20 8c 20 6c 69 6e 65 66 |efeed%=0 . linef| 00025930 65 65 64 25 3d 31 3a 24 a4 74 65 78 74 28 70 72 |eed%=1:$.text(pr| 00025940 69 6e 74 57 25 2c 31 37 29 3d c3 28 6c 69 6e 65 |intW%,17)=.(line| 00025950 66 65 65 64 25 29 0d 15 1c 25 70 61 67 65 6c 65 |feed%)...%pagele| 00025960 6e 67 74 68 25 3d bb 28 24 a4 74 65 78 74 28 70 |ngth%=.($.text(p| 00025970 72 69 6e 74 57 25 2c 31 36 29 29 0d 15 1d 46 e7 |rintW%,16))...F.| 00025980 20 70 61 67 65 6c 65 6e 67 74 68 25 3d 30 20 8c | pagelength%=0 .| 00025990 20 70 61 67 65 6c 65 6e 67 74 68 25 3d 37 30 3a | pagelength%=70:| 000259a0 24 a4 74 65 78 74 28 70 72 69 6e 74 57 25 2c 31 |$.text(printW%,1| 000259b0 36 29 3d c3 28 70 61 67 65 6c 65 6e 67 74 68 25 |6)=.(pagelength%| 000259c0 29 0d 15 1e 21 c8 8e 20 a4 73 65 6c 65 63 74 65 |)...!.. .selecte| 000259d0 64 5f 65 73 67 28 70 72 69 6e 74 57 25 2c 33 29 |d_esg(printW%,3)| 000259e0 20 ca 0d 15 1f 0b 20 20 c9 20 32 33 3a 0d 15 20 | ..... . 23:.. | 000259f0 15 20 20 66 6f 72 6d 61 74 24 3d 22 68 6f 72 69 |. format$="hori| 00025a00 7a 22 0d 15 21 39 20 20 4c 69 6e 65 73 50 65 72 |z"..!9 LinesPer| 00025a10 50 61 67 65 25 3d 28 70 61 67 65 6c 65 6e 67 74 |Page%=(pagelengt| 00025a20 68 25 2d 54 6d 61 72 67 69 6e 25 2d 31 35 29 20 |h%-Tmargin%-15) | 00025a30 81 20 6c 69 6e 65 66 65 65 64 25 0d 15 22 19 20 |. linefeed%..". | 00025a40 20 c9 20 32 34 3a 66 6f 72 6d 61 74 24 3d 22 76 | . 24:format$="v| 00025a50 65 72 74 22 0d 15 23 4a 20 20 4c 69 6e 65 73 50 |ert"..#J LinesP| 00025a60 65 72 50 61 67 65 25 3d 28 70 61 67 65 6c 65 6e |erPage%=(pagelen| 00025a70 67 74 68 25 2d 54 6d 61 72 67 69 6e 25 2d 31 35 |gth%-Tmargin%-15| 00025a80 29 20 81 20 28 6c 69 6e 65 66 65 65 64 25 2a 28 |) . (linefeed%*(| 00025a90 a9 28 46 6f 72 6d 24 29 20 81 20 32 29 29 0d 15 |.(Form$) . 2))..| 00025aa0 24 0b 20 20 c9 20 32 35 3a 0d 15 25 15 20 20 66 |$. . 25:..%. f| 00025ab0 6f 72 6d 61 74 24 3d 22 74 61 62 6c 65 22 0d 15 |ormat$="table"..| 00025ac0 26 24 20 20 63 6f 6c 75 6d 6e 73 25 3d bb 28 24 |&$ columns%=.($| 00025ad0 a4 74 65 78 74 28 70 72 69 6e 74 57 25 2c 31 35 |.text(printW%,15| 00025ae0 29 29 0d 15 27 30 20 20 63 6f 6c 75 6d 6e 24 3d |))..'0 column$=| 00025af0 c4 63 6f 6c 75 6d 6e 73 25 2c 22 7c 22 2b c4 63 |.columns%,"|"+.c| 00025b00 6f 6c 77 69 64 74 68 25 2c 22 20 22 29 29 2b 22 |olwidth%," "))+"| 00025b10 7c 22 0d 15 28 39 20 20 4c 69 6e 65 73 50 65 72 ||"..(9 LinesPer| 00025b20 50 61 67 65 25 3d 28 70 61 67 65 6c 65 6e 67 74 |Page%=(pagelengt| 00025b30 68 25 2d 54 6d 61 72 67 69 6e 25 2d 31 35 29 20 |h%-Tmargin%-15) | 00025b40 81 20 6c 69 6e 65 66 65 65 64 25 0d 15 29 0b 20 |. linefeed%..). | 00025b50 20 c9 20 32 36 3a 0d 15 2a 15 20 20 66 6f 72 6d | . 26:..*. form| 00025b60 61 74 24 3d 22 6c 61 62 65 6c 22 0d 15 2b 29 20 |at$="label"..+) | 00025b70 20 6c 61 62 77 69 64 74 68 25 3d bb 28 24 a4 74 | labwidth%=.($.t| 00025b80 65 78 74 28 6c 61 62 65 6c 57 25 2c 34 29 29 2a |ext(labelW%,4))*| 00025b90 63 70 69 25 0d 15 2c 26 20 20 6c 61 62 64 65 70 |cpi%..,& labdep| 00025ba0 74 68 25 3d bb 28 24 a4 74 65 78 74 28 6c 61 62 |th%=.($.text(lab| 00025bb0 65 6c 57 25 2c 36 29 29 2a 36 0d 15 2d 31 20 20 |elW%,6))*6..-1 | 00025bc0 6c 61 62 72 6f 77 73 25 3d 28 70 61 67 65 6c 65 |labrows%=(pagele| 00025bd0 6e 67 74 68 25 2d 54 6d 61 72 67 69 6e 25 29 20 |ngth%-Tmargin%) | 00025be0 81 20 6c 61 62 64 65 70 74 68 25 0d 15 2e 15 20 |. labdepth%.... | 00025bf0 20 72 6f 77 73 5f 70 72 69 6e 74 65 64 25 3d 30 | rows_printed%=0| 00025c00 0d 15 2f 25 20 20 6c 61 62 75 70 25 3d a4 73 65 |../% labup%=.se| 00025c10 6c 65 63 74 65 64 5f 65 73 67 28 6c 61 62 65 6c |lected_esg(label| 00025c20 57 25 2c 31 29 0d 15 30 24 20 20 6c 61 62 72 65 |W%,1)..0$ labre| 00025c30 70 6c 25 3d bb 28 24 a4 74 65 78 74 28 6c 61 62 |pl%=.($.text(lab| 00025c40 65 6c 57 25 2c 31 30 29 29 0d 15 31 27 20 20 6c |elW%,10))..1' l| 00025c50 61 62 73 75 62 73 74 25 3d bb 28 24 a4 74 65 78 |absubst%=.($.tex| 00025c60 74 28 6c 61 62 65 6c 57 25 2c 31 32 29 29 2d 31 |t(labelW%,12))-1| 00025c70 0d 15 32 25 20 20 54 69 74 6c 65 24 3d 22 22 3a |..2% Title$="":| 00025c80 54 69 74 6c 65 31 24 3d 22 22 3a 54 69 74 6c 65 |Title1$="":Title| 00025c90 32 24 3d 22 22 0d 15 33 05 cb 0d 15 34 21 c8 8e |2$=""..3....4!..| 00025ca0 20 a4 73 65 6c 65 63 74 65 64 5f 65 73 67 28 70 | .selected_esg(p| 00025cb0 72 69 6e 74 57 25 2c 34 29 20 ca 0d 15 35 1f 20 |rintW%,4) ...5. | 00025cc0 20 c9 20 33 38 3a 72 65 70 6f 72 74 64 65 73 74 | . 38:reportdest| 00025cd0 24 3d 22 57 69 6e 64 6f 77 22 0d 15 36 1d 20 20 |$="Window"..6. | 00025ce0 c9 20 33 39 3a 72 65 70 6f 72 74 64 65 73 74 24 |. 39:reportdest$| 00025cf0 3d 22 46 69 6c 65 22 0d 15 37 20 20 20 c9 20 34 |="File"..7 . 4| 00025d00 31 3a 72 65 70 6f 72 74 64 65 73 74 24 3d 22 50 |1:reportdest$="P| 00025d10 72 69 6e 74 65 72 22 0d 15 38 05 cb 0d 15 39 27 |rinter"..8....9'| 00025d20 e7 20 4c 69 6e 65 73 50 65 72 50 61 67 65 25 3d |. LinesPerPage%=| 00025d30 30 20 8c 20 4c 69 6e 65 73 50 65 72 50 61 67 65 |0 . LinesPerPage| 00025d40 25 3d 31 0d 15 3a 05 e1 0d 15 3b 05 3a 0d 15 3c |%=1..:....;.:..<| 00025d50 10 dd 20 a4 70 69 74 63 68 28 70 24 29 0d 15 3d |.. .pitch(p$)..=| 00025d60 34 e7 20 a4 73 65 6c 65 63 74 65 64 28 70 72 69 |4. .selected(pri| 00025d70 6e 74 57 25 2c 34 32 29 20 8c 3d bd 28 33 31 29 |ntW%,42) .=.(31)| 00025d80 2b 22 39 22 2b 70 24 2b 22 30 31 22 20 8b 3d 22 |+"9"+p$+"01" .="| 00025d90 22 0d 15 3e 05 3a 0d 15 3f 18 dd 20 f2 6c 69 73 |"..>.:..?.. .lis| 00025da0 74 5f 68 65 61 64 28 70 6c 61 63 65 25 29 0d 15 |t_head(place%)..| 00025db0 40 10 e7 20 70 6c 61 63 65 25 3d 30 20 8c 0d 15 |@.. place%=0 ...| 00025dc0 41 16 20 20 c8 8e 20 72 65 70 6f 72 74 64 65 73 |A. .. reportdes| 00025dd0 74 24 20 ca 0d 15 42 1d 20 20 20 20 c9 20 22 57 |t$ ...B. . "W| 00025de0 69 6e 64 6f 77 22 2c 22 50 72 69 6e 74 65 72 22 |indow","Printer"| 00025df0 3a 0d 15 43 15 20 20 20 20 52 55 25 3d bb 28 24 |:..C. RU%=.($| 00025e00 75 73 65 64 25 29 0d 15 44 4f 20 20 20 20 e7 20 |used%)..DO . | 00025e10 52 55 25 3c 35 20 8c 20 74 65 78 74 62 6c 6f 63 |RU%<5 . textbloc| 00025e20 6b 73 69 7a 65 25 3d 35 2a 4c 65 6e 4c 69 6e 65 |ksize%=5*LenLine| 00025e30 25 20 8b 20 74 65 78 74 62 6c 6f 63 6b 73 69 7a |% . textblocksiz| 00025e40 65 25 3d 28 52 55 25 20 81 20 35 29 2a 4c 65 6e |e%=(RU% . 5)*Len| 00025e50 4c 69 6e 65 25 0d 15 45 24 20 20 20 20 74 65 78 |Line%..E$ tex| 00025e60 74 62 6c 6f 63 6b 69 6e 63 25 3d 74 65 78 74 62 |tblockinc%=textb| 00025e70 6c 6f 63 6b 73 69 7a 65 25 0d 15 46 3f 20 20 20 |locksize%..F? | 00025e80 20 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 | .extend_named_s| 00025e90 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 74 65 78 |liding_block(tex| 00025ea0 74 61 6e 63 68 6f 72 25 2c 74 65 78 74 62 6c 6f |tanchor%,textblo| 00025eb0 63 6b 73 69 7a 65 25 29 0d 15 47 1d 20 20 20 20 |cksize%)..G. | 00025ec0 54 65 78 74 50 74 72 25 3d 21 74 65 78 74 61 6e |TextPtr%=!textan| 00025ed0 63 68 6f 72 25 0d 15 48 19 20 20 20 20 72 65 63 |chor%..H. rec| 00025ee0 62 6c 6f 63 6b 73 69 7a 65 25 3d 34 30 30 0d 15 |blocksize%=400..| 00025ef0 49 3d 20 20 20 20 f2 65 78 74 65 6e 64 5f 6e 61 |I= .extend_na| 00025f00 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |med_sliding_bloc| 00025f10 6b 28 72 65 63 61 6e 63 68 6f 72 25 2c 72 65 63 |k(recanchor%,rec| 00025f20 62 6c 6f 63 6b 73 69 7a 65 25 29 0d 15 4a 26 20 |blocksize%)..J& | 00025f30 20 20 20 c9 20 22 46 69 6c 65 22 3a 3a d5 23 74 | . "File"::.#t| 00025f40 65 78 74 68 61 6e 64 6c 65 25 2c 70 69 74 63 68 |exthandle%,pitch| 00025f50 24 0d 15 4b 07 20 20 cb 0d 15 4c 05 cd 0d 15 4d |$..K. ...L....M| 00025f60 1c f2 65 78 74 72 61 5f 6c 69 6e 65 73 28 54 6d |..extra_lines(Tm| 00025f70 61 72 67 69 6e 25 2c 30 29 0d 15 4e 14 e7 20 ac |argin%,0)..N.. .| 00025f80 20 64 69 73 70 6c 61 79 65 64 25 20 8c 0d 15 4f | displayed% ...O| 00025f90 19 20 20 f2 73 65 6e 64 5f 74 69 74 6c 65 28 54 |. .send_title(T| 00025fa0 69 74 6c 65 24 29 0d 15 50 1a 20 20 f2 73 65 6e |itle$)..P. .sen| 00025fb0 64 5f 74 69 74 6c 65 28 54 69 74 6c 65 31 24 29 |d_title(Title1$)| 00025fc0 0d 15 51 1a 20 20 f2 73 65 6e 64 5f 74 69 74 6c |..Q. .send_titl| 00025fd0 65 28 54 69 74 6c 65 32 24 29 0d 15 52 05 cd 0d |e(Title2$)..R...| 00025fe0 15 53 10 c8 8e 20 66 6f 72 6d 61 74 24 20 ca 0d |.S... format$ ..| 00025ff0 15 54 10 20 20 c9 20 22 68 6f 72 69 7a 22 3a 0d |.T. . "horiz":.| 00026000 15 55 20 20 20 c8 8e 20 a4 73 65 6c 65 63 74 65 |.U .. .selecte| 00026010 64 28 70 72 69 6e 74 57 25 2c 32 39 29 20 ca 0d |d(printW%,29) ..| 00026020 15 56 0c 20 20 20 20 c9 20 b9 3a 0d 15 57 56 20 |.V. . .:..WV | 00026030 20 20 20 e7 20 a4 73 65 6c 65 63 74 65 64 28 70 | . .selected(p| 00026040 72 69 6e 74 57 25 2c 34 32 29 20 8c 20 24 28 21 |rintW%,42) . $(!| 00026050 6c 69 6e 65 61 6e 63 68 6f 72 25 29 3d 75 6f 6e |lineanchor%)=uon| 00026060 24 3a f2 6c 69 73 74 5f 6c 69 6e 65 28 2d 31 2c |$:.list_line(-1,| 00026070 6c 69 6e 65 61 6e 63 68 6f 72 25 2c 32 2c 33 32 |lineanchor%,2,32| 00026080 29 0d 15 58 2e 20 20 20 20 f2 6c 69 73 74 5f 6c |)..X. .list_l| 00026090 69 6e 65 28 2d 31 2c 68 65 61 64 61 6e 63 68 6f |ine(-1,headancho| 000260a0 72 25 2c 4c 65 6e 4c 69 6e 65 25 2c 33 32 29 0d |r%,LenLine%,32).| 000260b0 15 59 0c 20 20 20 20 c9 20 a3 3a 0d 15 5a 15 20 |.Y. . .:..Z. | 000260c0 20 20 20 f2 72 75 6c 65 5f 6f 66 66 28 34 35 29 | .rule_off(45)| 000260d0 0d 15 5b 2e 20 20 20 20 f2 6c 69 73 74 5f 6c 69 |..[. .list_li| 000260e0 6e 65 28 2d 31 2c 68 65 61 64 61 6e 63 68 6f 72 |ne(-1,headanchor| 000260f0 25 2c 4c 65 6e 4c 69 6e 65 25 2c 33 32 29 0d 15 |%,LenLine%,32)..| 00026100 5c 15 20 20 20 20 f2 72 75 6c 65 5f 6f 66 66 28 |\. .rule_off(| 00026110 34 35 29 0d 15 5d 07 20 20 cb 0d 15 5e 10 20 20 |45)..]. ...^. | 00026120 c9 20 22 74 61 62 6c 65 22 3a 0d 15 5f 26 20 20 |. "table":.._& | 00026130 f2 72 75 6c 65 5f 6f 66 66 28 33 32 29 3a 24 28 |.rule_off(32):$(| 00026140 54 65 78 74 50 74 72 25 2d 33 29 3d 75 6f 6e 24 |TextPtr%-3)=uon$| 00026150 0d 15 60 13 20 20 f2 72 75 6c 65 5f 6f 66 66 28 |..`. .rule_off(| 00026160 33 32 29 0d 15 61 2c 20 20 f2 6c 69 73 74 5f 6c |32)..a, .list_l| 00026170 69 6e 65 28 2d 31 2c 68 65 61 64 61 6e 63 68 6f |ine(-1,headancho| 00026180 72 25 2c 4c 65 6e 4c 69 6e 65 25 2c 33 32 29 0d |r%,LenLine%,32).| 00026190 15 62 13 20 20 f2 72 75 6c 65 5f 6f 66 66 28 33 |.b. .rule_off(3| 000261a0 32 29 0d 15 63 1c 20 20 c9 20 22 76 65 72 74 22 |2)..c. . "vert"| 000261b0 3a f2 72 75 6c 65 5f 6f 66 66 28 34 35 29 0d 15 |:.rule_off(45)..| 000261c0 64 05 cb 0d 15 65 18 68 65 61 64 65 72 5f 6c 69 |d....e.header_li| 000261d0 6e 65 73 25 3d 43 6f 75 6e 74 25 0d 15 66 05 e1 |nes%=Count%..f..| 000261e0 0d 15 67 05 3a 0d 15 68 2c dd 20 f2 6c 69 73 74 |..g.:..h,. .list| 000261f0 5f 6c 69 6e 65 28 52 45 43 25 2c 61 6e 63 68 6f |_line(REC%,ancho| 00026200 72 25 2c 6c 65 6e 67 74 68 25 2c 63 68 61 72 25 |r%,length%,char%| 00026210 29 0d 15 69 0d 43 6f 75 6e 74 25 2b 3d 31 0d 15 |)..i.Count%+=1..| 00026220 6a 14 c8 8e 20 72 65 70 6f 72 74 64 65 73 74 24 |j... reportdest$| 00026230 20 ca 0d 15 6b 1b 20 20 c9 20 22 57 69 6e 64 6f | ...k. . "Windo| 00026240 77 22 2c 22 50 72 69 6e 74 65 72 22 3a 0d 15 6c |w","Printer":..l| 00026250 29 20 20 f2 70 61 64 5f 6c 69 6e 65 28 4c 65 6e |) .pad_line(Len| 00026260 4c 69 6e 65 25 2d 6c 65 6e 67 74 68 25 2d 31 2c |Line%-length%-1,| 00026270 63 68 61 72 25 29 0d 15 6d 50 20 20 f2 68 65 61 |char%)..mP .hea| 00026280 70 5f 73 74 6f 72 65 28 74 65 78 74 61 6e 63 68 |p_store(textanch| 00026290 6f 72 25 2c 74 65 78 74 62 6c 6f 63 6b 73 69 7a |or%,textblocksiz| 000262a0 65 25 2c 74 65 78 74 62 6c 6f 63 6b 69 6e 63 25 |e%,textblockinc%| 000262b0 2c 54 65 78 74 50 74 72 25 2c 4c 65 6e 4c 69 6e |,TextPtr%,LenLin| 000262c0 65 25 2c 22 22 29 0d 15 6e 48 20 20 c8 99 20 22 |e%,"")..nH .. "| 000262d0 57 69 6d 70 5f 54 72 61 6e 73 66 65 72 42 6c 6f |Wimp_TransferBlo| 000262e0 63 6b 22 2c 6d 79 74 61 73 6b 25 2c 21 61 6e 63 |ck",mytask%,!anc| 000262f0 68 6f 72 25 2c 6d 79 74 61 73 6b 25 2c 54 65 78 |hor%,mytask%,Tex| 00026300 74 50 74 72 25 2c 4c 65 6e 4c 69 6e 65 25 0d 15 |tPtr%,LenLine%..| 00026310 6f 21 20 20 e7 20 43 6f 75 6e 74 25 2a 34 3e 3d |o! . Count%*4>=| 00026320 72 65 63 62 6c 6f 63 6b 73 69 7a 65 25 20 8c 0d |recblocksize% ..| 00026330 15 70 1a 20 20 20 20 72 65 63 62 6c 6f 63 6b 73 |.p. recblocks| 00026340 69 7a 65 25 2b 3d 34 30 30 0d 15 71 3d 20 20 20 |ize%+=400..q= | 00026350 20 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 | .extend_named_s| 00026360 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 72 65 63 |liding_block(rec| 00026370 61 6e 63 68 6f 72 25 2c 72 65 63 62 6c 6f 63 6b |anchor%,recblock| 00026380 73 69 7a 65 25 29 0d 15 72 07 20 20 cd 0d 15 73 |size%)..r. ...s| 00026390 22 20 20 21 28 21 72 65 63 61 6e 63 68 6f 72 25 |" !(!recanchor%| 000263a0 2b 43 6f 75 6e 74 25 2a 34 29 3d 52 45 43 25 0d |+Count%*4)=REC%.| 000263b0 15 74 18 20 20 54 65 78 74 50 74 72 25 2b 3d 4c |.t. TextPtr%+=L| 000263c0 65 6e 4c 69 6e 65 25 0d 15 75 0f 20 20 c9 20 22 |enLine%..u. . "| 000263d0 46 69 6c 65 22 3a 0d 15 76 29 20 20 f2 70 61 64 |File":..v) .pad| 000263e0 5f 6c 69 6e 65 28 4c 65 6e 4c 69 6e 65 25 2d 6c |_line(LenLine%-l| 000263f0 65 6e 67 74 68 25 2d 31 2c 63 68 61 72 25 29 0d |ength%-1,char%).| 00026400 15 77 32 20 20 c8 99 20 22 4f 53 5f 47 42 50 42 |.w2 .. "OS_GBPB| 00026410 22 2c 32 2c 74 65 78 74 68 61 6e 64 6c 65 25 2c |",2,texthandle%,| 00026420 21 61 6e 63 68 6f 72 25 2c 4c 65 6e 4c 69 6e 65 |!anchor%,LenLine| 00026430 25 0d 15 78 05 cb 0d 15 79 09 f2 70 6f 6c 6c 0d |%..x....y..poll.| 00026440 15 7a 05 e1 0d 15 7b 05 3a 0d 15 7c 1d dd 20 f2 |.z....{.:..|.. .| 00026450 70 61 64 5f 6c 69 6e 65 28 62 79 74 65 73 25 2c |pad_line(bytes%,| 00026460 63 68 61 72 25 29 0d 15 7d 13 ea 20 62 61 73 65 |char%)..}.. base| 00026470 25 2c 70 74 72 25 2c 49 25 0d 15 7e 2f 62 61 73 |%,ptr%,I%..~/bas| 00026480 65 25 3d 21 61 6e 63 68 6f 72 25 3a 70 74 72 25 |e%=!anchor%:ptr%| 00026490 3d 62 61 73 65 25 2b 4c 65 6e 4c 69 6e 65 25 2d |=base%+LenLine%-| 000264a0 62 79 74 65 73 25 2d 31 0d 15 7f 10 e7 20 62 79 |bytes%-1..... by| 000264b0 74 65 73 25 3e 30 20 8c 0d 15 80 17 20 20 e3 20 |tes%>0 ..... . | 000264c0 49 25 3d 30 20 b8 20 62 79 74 65 73 25 2d 32 0d |I%=0 . bytes%-2.| 000264d0 15 81 15 20 20 20 20 70 74 72 25 3f 49 25 3d 63 |... ptr%?I%=c| 000264e0 68 61 72 25 0d 15 82 0a 20 20 ed 20 49 25 0d 15 |har%.... . I%..| 000264f0 83 05 cd 0d 15 84 16 70 74 72 25 3f 28 62 79 74 |.......ptr%?(byt| 00026500 65 73 25 2d 31 29 3d 33 32 0d 15 85 12 70 74 72 |es%-1)=32....ptr| 00026510 25 3f 62 79 74 65 73 25 3d 31 30 0d 15 86 05 e1 |%?bytes%=10.....| 00026520 0d 15 87 05 3a 0d 15 88 16 dd 20 f2 72 75 6c 65 |....:..... .rule| 00026530 5f 6f 66 66 28 63 68 61 72 25 29 0d 15 89 0b ea |_off(char%).....| 00026540 20 62 61 73 65 25 0d 15 8a 16 62 61 73 65 25 3d | base%....base%=| 00026550 21 6c 69 6e 65 61 6e 63 68 6f 72 25 0d 15 8b 12 |!lineanchor%....| 00026560 24 62 61 73 65 25 3d 6d 61 72 67 69 6e 24 0d 15 |$base%=margin$..| 00026570 8c 2d f2 6c 69 73 74 5f 6c 69 6e 65 28 2d 31 2c |.-.list_line(-1,| 00026580 6c 69 6e 65 61 6e 63 68 6f 72 25 2c 4c 6d 61 72 |lineanchor%,Lmar| 00026590 67 69 6e 25 2c 63 68 61 72 25 29 0d 15 8d 05 e1 |gin%,char%).....| 000265a0 0d 15 8e 05 3a 0d 15 8f 11 dd 20 f2 74 6f 74 61 |....:..... .tota| 000265b0 6c 5f 6c 69 73 74 0d 15 90 19 ea 20 43 25 2c 4c |l_list..... C%,L| 000265c0 25 2c 62 61 73 65 25 2c 70 6f 73 25 2c 4c 24 0d |%,base%,pos%,L$.| 000265d0 15 91 23 4c 24 3d 6d 61 72 67 69 6e 24 2b 22 54 |..#L$=margin$+"T| 000265e0 6f 74 61 6c 20 22 2b c3 28 70 72 69 6e 74 65 64 |otal "+.(printed| 000265f0 25 29 0d 15 92 21 62 61 73 65 25 3d 21 6c 69 6e |%)...!base%=!lin| 00026600 65 61 6e 63 68 6f 72 25 3a 70 6f 73 25 3d 62 61 |eanchor%:pos%=ba| 00026610 73 65 25 0d 15 93 10 c8 8e 20 66 6f 72 6d 61 74 |se%...... format| 00026620 24 20 ca 0d 15 94 10 20 20 c9 20 22 68 6f 72 69 |$ ..... . "hori| 00026630 7a 22 3a 0d 15 95 2f 20 20 e7 20 ac 20 a4 73 65 |z":.../ . . .se| 00026640 6c 65 63 74 65 64 28 70 72 69 6e 74 57 25 2c 32 |lected(printW%,2| 00026650 39 29 20 8c 20 f2 72 75 6c 65 5f 6f 66 66 28 34 |9) . .rule_off(4| 00026660 35 29 0d 15 96 19 20 20 f2 63 74 6f 74 61 6c 73 |5).... .ctotals| 00026670 28 6e 75 6d 66 69 72 73 74 25 29 0d 15 97 31 20 |(numfirst%)...1 | 00026680 20 e7 20 a9 28 4c 24 29 3e 4c 65 6e 4c 69 6e 65 | . .(L$)>LenLine| 00026690 25 2d 32 20 8c 20 4c 24 3d 6d 61 72 67 69 6e 24 |%-2 . L$=margin$| 000266a0 2b c3 28 70 72 69 6e 74 65 64 25 29 0d 15 98 33 |+.(printed%)...3| 000266b0 20 20 f2 68 65 61 70 5f 73 74 6f 72 65 28 6c 69 | .heap_store(li| 000266c0 6e 65 61 6e 63 68 6f 72 25 2c 4c 65 6e 4c 69 6e |neanchor%,LenLin| 000266d0 65 25 2c 30 2c 70 6f 73 25 2c 30 2c 4c 24 29 0d |e%,0,pos%,0,L$).| 000266e0 15 99 30 20 20 f2 6c 69 73 74 5f 6c 69 6e 65 28 |..0 .list_line(| 000266f0 52 45 43 25 2c 6c 69 6e 65 61 6e 63 68 6f 72 25 |REC%,lineanchor%| 00026700 2c 70 6f 73 25 2d 62 61 73 65 25 2c 33 32 29 0d |,pos%-base%,32).| 00026710 15 9a 2f 20 20 e7 20 ac 20 a4 73 65 6c 65 63 74 |../ . . .select| 00026720 65 64 28 70 72 69 6e 74 57 25 2c 32 39 29 20 8c |ed(printW%,29) .| 00026730 20 f2 72 75 6c 65 5f 6f 66 66 28 34 35 29 0d 15 | .rule_off(45)..| 00026740 9b 10 20 20 c9 20 22 74 61 62 6c 65 22 3a 0d 15 |.. . "table":..| 00026750 9c 13 20 20 f2 72 75 6c 65 5f 6f 66 66 28 33 32 |.. .rule_off(32| 00026760 29 0d 15 9d 25 20 20 f2 65 78 74 72 61 5f 6c 69 |)...% .extra_li| 00026770 6e 65 73 28 6c 69 6e 65 66 65 65 64 25 2c 63 6f |nes(linefeed%,co| 00026780 6c 70 6f 73 25 29 0d 15 9e 19 20 20 f2 63 74 6f |lpos%).... .cto| 00026790 74 61 6c 73 28 6e 75 6d 66 69 72 73 74 25 29 0d |tals(numfirst%).| 000267a0 15 9f 05 cb 0d 15 a0 16 f2 6c 69 74 28 6d 65 6e |.........lit(men| 000267b0 75 25 28 36 29 2c 37 2c b9 29 0d 15 a1 05 e1 0d |u%(6),7,.)......| 000267c0 15 a2 05 3a 0d 15 a3 15 dd 20 f2 73 65 6e 64 5f |...:..... .send_| 000267d0 74 69 74 6c 65 28 54 24 29 0d 15 a4 11 ea 20 43 |title(T$)..... C| 000267e0 24 2c 4c 24 2c 50 25 2c 4c 25 0d 15 a5 0f e7 20 |$,L$,P%,L%..... | 000267f0 54 24 3d 22 22 20 8c 20 e1 0d 15 a6 1a 4c 25 3d |T$="" . .....L%=| 00026800 4c 65 6e 4c 69 6e 65 25 2d 4c 6d 61 72 67 69 6e |LenLine%-Lmargin| 00026810 25 2d 31 0d 15 a7 10 c8 95 20 a9 28 54 24 29 3e |%-1...... .(T$)>| 00026820 3d 4c 25 0d 15 a8 0e 20 20 50 25 3d a9 28 54 24 |=L%.... P%=.(T$| 00026830 29 0d 15 a9 07 20 20 f5 0d 15 aa 1a 20 20 20 20 |).... ..... | 00026840 50 25 2d 3d 31 3a 43 24 3d c1 54 24 2c 50 25 2c |P%-=1:C$=.T$,P%,| 00026850 31 29 0d 15 ab 28 20 20 fd 20 28 a7 22 3d 20 2c |1)...( . (."= ,| 00026860 2e 3b 3a 22 2c 43 24 29 3e 30 20 80 20 50 25 3c |.;:",C$)>0 . P%<| 00026870 4c 25 29 20 84 20 50 25 3d 30 0d 15 ac 0e 20 20 |L%) . P%=0.... | 00026880 e7 20 50 25 3d 30 20 8c 0d 15 ad 27 20 20 20 20 |. P%=0 ....' | 00026890 4c 24 3d 6d 61 72 67 69 6e 24 2b c0 54 24 2c 4c |L$=margin$+.T$,L| 000268a0 25 2d 31 29 3a 54 24 3d c1 54 24 2c 4c 25 29 0d |%-1):T$=.T$,L%).| 000268b0 15 ae 29 20 20 20 20 cc 20 4c 24 3d 6d 61 72 67 |..) . L$=marg| 000268c0 69 6e 24 2b c0 54 24 2c 50 25 29 3a 54 24 3d c1 |in$+.T$,P%):T$=.| 000268d0 54 24 2c 50 25 2b 31 29 0d 15 af 07 20 20 cd 0d |T$,P%+1).... ..| 000268e0 15 b0 18 20 20 24 28 21 6c 69 6e 65 61 6e 63 68 |... $(!lineanch| 000268f0 6f 72 25 29 3d 4c 24 0d 15 b1 29 20 20 f2 6c 69 |or%)=L$...) .li| 00026900 73 74 5f 6c 69 6e 65 28 2d 31 2c 6c 69 6e 65 61 |st_line(-1,linea| 00026910 6e 63 68 6f 72 25 2c a9 28 4c 24 29 2c 33 32 29 |nchor%,.(L$),32)| 00026920 0d 15 b2 05 ce 0d 15 b3 1e 24 28 21 6c 69 6e 65 |.........$(!line| 00026930 61 6e 63 68 6f 72 25 29 3d 6d 61 72 67 69 6e 24 |anchor%)=margin$| 00026940 2b 54 24 0d 15 b4 30 f2 6c 69 73 74 5f 6c 69 6e |+T$...0.list_lin| 00026950 65 28 2d 31 2c 6c 69 6e 65 61 6e 63 68 6f 72 25 |e(-1,lineanchor%| 00026960 2c 4c 6d 61 72 67 69 6e 25 2b a9 28 54 24 29 2c |,Lmargin%+.(T$),| 00026970 33 32 29 0d 15 b5 05 e1 0d 15 b6 05 3a 0d 15 b7 |32).........:...| 00026980 12 dd 20 f2 73 63 72 65 65 6e 5f 6c 69 73 74 0d |.. .screen_list.| 00026990 15 b8 21 21 62 6c 6f 63 6b 25 3d 30 3a 62 6c 6f |..!!block%=0:blo| 000269a0 63 6b 25 21 34 3d 2d 43 6f 75 6e 74 25 2a 33 32 |ck%!4=-Count%*32| 000269b0 0d 15 b9 28 62 6c 6f 63 6b 25 21 38 3d 28 4c 65 |...(block%!8=(Le| 000269c0 6e 4c 69 6e 65 25 2d 31 29 2a 31 36 3a 62 6c 6f |nLine%-1)*16:blo| 000269d0 63 6b 25 21 31 32 3d 30 0d 15 ba 25 c8 99 20 22 |ck%!12=0...%.. "| 000269e0 57 69 6d 70 5f 53 65 74 45 78 74 65 6e 74 22 2c |Wimp_SetExtent",| 000269f0 6c 69 73 74 57 25 2c 62 6c 6f 63 6b 25 0d 15 bb |listW%,block%...| 00026a00 12 21 62 6c 6f 63 6b 25 3d 6c 69 73 74 57 25 0d |.!block%=listW%.| 00026a10 15 bc 24 c8 99 20 22 57 69 6d 70 5f 47 65 74 57 |..$.. "Wimp_GetW| 00026a20 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c 6f |indowState",,blo| 00026a30 63 6b 25 0d 15 bd 3b 78 25 3d 28 62 6c 6f 63 6b |ck%...;x%=(block| 00026a40 25 21 31 32 2b 62 6c 6f 63 6b 25 21 34 29 20 81 |%!12+block%!4) .| 00026a50 20 32 3a 79 25 3d 28 62 6c 6f 63 6b 25 21 31 36 | 2:y%=(block%!16| 00026a60 2b 62 6c 6f 63 6b 25 21 38 29 20 81 20 32 0d 15 |+block%!8) . 2..| 00026a70 be 22 62 6c 6f 63 6b 25 21 31 32 3d 62 6c 6f 63 |."block%!12=bloc| 00026a80 6b 25 21 34 2b 4c 65 6e 4c 69 6e 65 25 2a 31 36 |k%!4+LenLine%*16| 00026a90 0d 15 bf 11 e7 20 43 6f 75 6e 74 25 3c 32 38 20 |..... Count%<28 | 00026aa0 8c 0d 15 c0 22 20 20 62 6c 6f 63 6b 25 21 31 36 |...." block%!16| 00026ab0 3d 62 6c 6f 63 6b 25 21 38 2b 43 6f 75 6e 74 25 |=block%!8+Count%| 00026ac0 2a 33 32 0d 15 c1 07 20 20 cc 0d 15 c2 1e 20 20 |*32.... ..... | 00026ad0 62 6c 6f 63 6b 25 21 31 36 3d 62 6c 6f 63 6b 25 |block%!16=block%| 00026ae0 21 38 2b 33 32 2a 32 38 0d 15 c3 05 cd 0d 15 c4 |!8+32*28........| 00026af0 21 c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 57 |!.. "Wimp_CloseW| 00026b00 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d 15 |indow",,block%..| 00026b10 c5 18 f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 6c |...open_window(l| 00026b20 69 73 74 57 25 29 0d 15 c6 0d 4c 69 73 74 65 64 |istW%)....Listed| 00026b30 25 3d b9 0d 15 c7 1f f2 73 68 6f 77 5f 6d 65 6e |%=......show_men| 00026b40 75 28 6d 65 6e 75 25 28 31 38 29 2c 78 25 2c 79 |u(menu%(18),x%,y| 00026b50 25 29 0d 15 c8 05 e1 0d 15 c9 05 3a 0d 15 ca 10 |%).........:....| 00026b60 dd 20 f2 73 6f 72 74 5f 6c 69 73 74 0d 15 cb 08 |. .sort_list....| 00026b70 ea 20 49 25 0d 15 cc 2e 69 6e 64 25 3d 21 74 65 |. I%....ind%=!te| 00026b80 78 74 61 6e 63 68 6f 72 25 2b 4c 65 6e 4c 69 6e |xtanchor%+LenLin| 00026b90 65 25 2a 68 65 61 64 65 72 5f 6c 69 6e 65 73 25 |e%*header_lines%| 00026ba0 2d 31 0d 15 cd 17 e3 20 49 25 3d 30 20 b8 20 70 |-1..... I%=0 . p| 00026bb0 72 69 6e 74 65 64 25 2d 31 0d 15 ce 14 20 20 69 |rinted%-1.... i| 00026bc0 6e 64 25 2b 3d 4c 65 6e 4c 69 6e 65 25 0d 15 cf |nd%+=LenLine%...| 00026bd0 18 20 20 62 6c 6f 63 6b 25 21 28 49 25 2a 34 29 |. block%!(I%*4)| 00026be0 3d 69 6e 64 25 0d 15 d0 08 ed 20 49 25 0d 15 d1 |=ind%..... I%...| 00026bf0 6a c8 99 20 22 4f 53 5f 48 65 61 70 53 6f 72 74 |j.. "OS_HeapSort| 00026c00 22 2c 70 72 69 6e 74 65 64 25 2c 28 62 6c 6f 63 |",printed%,(bloc| 00026c10 6b 25 20 84 20 28 31 3c 3c 33 30 29 20 84 20 28 |k% . (1<<30) . (| 00026c20 31 3c 3c 33 31 29 29 2c 34 2c 2c 21 74 65 78 74 |1<<31)),4,,!text| 00026c30 61 6e 63 68 6f 72 25 2b 4c 65 6e 4c 69 6e 65 25 |anchor%+LenLine%| 00026c40 2a 68 65 61 64 65 72 5f 6c 69 6e 65 73 25 2c 4c |*header_lines%,L| 00026c50 65 6e 4c 69 6e 65 25 0d 15 d2 13 f2 72 65 64 72 |enLine%.....redr| 00026c60 61 77 28 6c 69 73 74 57 25 29 0d 15 d3 05 e1 0d |aw(listW%)......| 00026c70 15 d4 05 3a 0d 15 d5 10 dd 20 f2 6c 6f 73 65 5f |...:..... .lose_| 00026c80 6c 69 73 74 0d 15 d6 19 f2 63 6c 6f 73 65 5f 77 |list.....close_w| 00026c90 69 6e 64 6f 77 28 6c 69 73 74 57 25 29 0d 15 d7 |indow(listW%)...| 00026ca0 25 f2 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f |%.scrap_sliding_| 00026cb0 62 6c 6f 63 6b 28 74 65 78 74 61 6e 63 68 6f 72 |block(textanchor| 00026cc0 25 29 0d 15 d8 24 f2 73 63 72 61 70 5f 73 6c 69 |%)...$.scrap_sli| 00026cd0 64 69 6e 67 5f 62 6c 6f 63 6b 28 72 65 63 61 6e |ding_block(recan| 00026ce0 63 68 6f 72 25 29 0d 15 d9 0d 4c 69 73 74 65 64 |chor%)....Listed| 00026cf0 25 3d a3 0d 15 da 05 e1 0d 15 db 05 3a 0d 15 dc |%=..........:...| 00026d00 16 dd 20 a4 70 61 72 73 65 28 53 24 2c 63 61 73 |.. .parse(S$,cas| 00026d10 65 25 29 0d 15 dd 7e ea 20 76 61 6c 25 2c 49 25 |e%)...~. val%,I%| 00026d20 2c 50 25 2c 46 25 2c 66 25 2c 74 25 2c 66 6c 61 |,P%,F%,f%,t%,fla| 00026d30 67 25 2c 6c 65 66 74 25 2c 72 69 67 68 74 25 2c |g%,left%,right%,| 00026d40 73 65 61 72 63 68 24 2c 66 69 65 6c 64 24 2c 6f |search$,field$,o| 00026d50 70 24 2c 62 6f 24 2c 74 61 72 67 65 74 24 2c 74 |p$,bo$,target$,t| 00026d60 61 72 67 24 2c 66 24 2c 74 24 2c 45 24 2c 45 31 |arg$,f$,t$,E$,E1| 00026d70 24 2c 54 69 74 46 64 24 2c 54 69 74 54 67 24 2c |$,TitFd$,TitTg$,| 00026d80 73 69 6d 70 6c 65 25 2c 64 61 74 65 24 2c 53 46 |simple%,date$,SF| 00026d90 24 0d 15 de 19 75 73 65 6b 65 79 25 3d 2d 31 3a |$....usekey%=-1:| 00026da0 75 73 65 76 61 6c 24 3d 22 22 0d 15 df 51 e7 20 |useval$=""...Q. | 00026db0 53 24 3d 22 22 20 84 20 a4 75 28 53 24 29 3d 22 |S$="" . .u(S$)="| 00026dc0 41 4c 4c 22 20 8c 20 54 69 74 6c 65 24 3d c1 a4 |ALL" . Title$=..| 00026dd0 6c 65 61 66 28 24 64 61 74 61 62 61 73 65 25 29 |leaf($database%)| 00026de0 2c 32 29 2b 22 2e 20 41 6c 6c 20 72 65 63 6f 72 |,2)+". All recor| 00026df0 64 73 22 3a 3d 22 54 52 55 45 22 0d 15 e0 17 73 |ds":="TRUE"....s| 00026e00 69 6d 70 6c 65 25 3d a4 73 69 6d 70 6c 65 28 53 |imple%=.simple(S| 00026e10 24 29 0d 15 e1 15 53 24 2b 3d 22 20 22 3a 54 69 |$)....S$+=" ":Ti| 00026e20 74 6c 65 24 3d 22 22 0d 15 e2 0e c8 95 20 a9 28 |tle$=""...... .(| 00026e30 53 24 29 3e 30 0d 15 e3 16 20 20 57 24 3d a4 77 |S$)>0.... W$=.w| 00026e40 6f 72 64 28 53 24 2c 22 20 22 29 0d 15 e4 35 20 |ord(S$," ")...5 | 00026e50 20 e7 20 57 24 3d 22 4e 4f 54 22 20 80 20 c0 53 | . W$="NOT" . .S| 00026e60 24 2c 31 29 3c 3e 22 28 22 20 8c 20 85 20 6d 6f |$,1)<>"(" . . mo| 00026e70 61 6e 5f 65 72 72 25 2c a4 6d 73 67 28 36 30 29 |an_err%,.msg(60)| 00026e80 0d 15 e5 15 20 20 f2 73 74 72 69 70 5f 62 72 61 |.... .strip_bra| 00026e90 63 6b 65 74 73 0d 15 e6 11 20 20 e7 20 a9 28 57 |ckets.... . .(W| 00026ea0 24 29 3e 30 20 8c 0d 15 e7 2a 20 20 20 20 66 6c |$)>0 ....* fl| 00026eb0 61 67 25 3d a3 3a 54 69 74 46 64 24 3d 22 22 3a |ag%=.:TitFd$="":| 00026ec0 54 69 74 54 67 24 3d 22 22 3a 6f 70 24 3d 22 22 |TitTg$="":op$=""| 00026ed0 0d 15 e8 0f 20 20 20 20 c8 8e 20 57 24 20 ca 0d |.... .. W$ ..| 00026ee0 15 e9 35 20 20 20 20 20 20 c9 20 22 41 4e 44 22 |..5 . "AND"| 00026ef0 2c 22 4f 52 22 2c 22 4e 4f 54 22 3a 45 24 3d 57 |,"OR","NOT":E$=W| 00026f00 24 3a 54 69 74 6c 65 24 2b 3d 22 20 22 2b 45 24 |$:Title$+=" "+E$| 00026f10 2b 22 20 22 0d 15 ea 2b 20 20 20 20 20 20 c9 20 |+" "...+ . | 00026f20 22 26 22 3a 45 24 3d 22 41 4e 44 22 3a 54 69 74 |"&":E$="AND":Tit| 00026f30 6c 65 24 2b 3d 22 20 22 2b 45 24 2b 22 20 22 0d |le$+=" "+E$+" ".| 00026f40 15 eb 0c 20 20 20 20 20 20 7f 3a 0d 15 ec 0f 20 |... .:.... | 00026f50 20 20 20 20 20 45 24 3d 22 22 0d 15 ed 10 20 20 | E$="".... | 00026f60 20 20 20 20 f2 73 70 6c 69 74 0d 15 ee 18 20 20 | .split.... | 00026f70 20 20 20 20 c8 95 20 a9 28 66 69 65 6c 64 24 29 | .. .(field$)| 00026f80 3e 30 0d 15 ef 24 20 20 20 20 20 20 20 20 66 24 |>0...$ f$| 00026f90 3d a4 75 28 a4 77 6f 72 64 28 66 69 65 6c 64 24 |=.u(.word(field$| 00026fa0 2c 22 2c 22 29 29 0d 15 f0 1b 20 20 20 20 20 20 |,",")).... | 00026fb0 20 20 66 25 3d a4 66 69 65 6c 64 28 66 24 2c b9 | f%=.field(f$,.| 00026fc0 29 0d 15 f1 1e 20 20 20 20 20 20 20 20 66 24 3d |).... f$=| 00026fd0 22 46 24 28 22 2b c3 28 66 25 29 2b 22 29 22 0d |"F$("+.(f%)+")".| 00026fe0 15 f2 28 20 20 20 20 20 20 20 20 e7 20 ac 20 63 |..( . . c| 00026ff0 61 73 65 25 20 8c 20 66 24 3d 22 46 4e 75 28 22 |ase% . f$="FNu("| 00027000 2b 66 24 2b 22 29 22 0d 15 f3 25 20 20 20 20 20 |+f$+")"...% | 00027010 20 20 20 e7 20 76 61 6c 25 20 8c 20 66 24 3d 22 | . val% . f$="| 00027020 56 41 4c 28 22 2b 66 24 2b 22 29 22 0d 15 f4 1e |VAL("+f$+")"....| 00027030 20 20 20 20 20 20 20 20 c8 8e 20 63 68 61 72 74 | .. chart| 00027040 79 70 65 25 28 66 25 29 20 ca 0d 15 f5 33 20 20 |ype%(f%) ....3 | 00027050 20 20 20 20 20 20 20 20 c9 20 35 2c 35 31 2c 35 | . 5,51,5| 00027060 32 3a 66 24 3d 22 46 4e 72 65 76 65 72 73 65 5f |2:f$="FNreverse_| 00027070 64 61 74 65 28 22 2b 66 24 2b 22 29 22 0d 15 f6 |date("+f$+")"...| 00027080 0d 20 20 20 20 20 20 20 20 cb 0d 15 f7 19 20 20 |. ..... | 00027090 20 20 20 20 20 20 74 61 72 67 24 3d 74 61 72 67 | targ$=targ| 000270a0 65 74 24 0d 15 f8 19 20 20 20 20 20 20 20 20 c8 |et$.... .| 000270b0 95 20 a9 28 74 61 72 67 24 29 3e 30 0d 15 f9 27 |. .(targ$)>0...'| 000270c0 20 20 20 20 20 20 20 20 20 20 74 24 3d a4 77 6f | t$=.wo| 000270d0 72 64 28 74 61 72 67 24 2c 22 2c 22 29 3a 75 24 |rd(targ$,","):u$| 000270e0 3d 74 24 0d 15 fa 42 20 20 20 20 20 20 20 20 20 |=t$...B | 000270f0 20 e7 20 ac 20 66 6c 61 67 25 20 8c 20 54 69 74 | . . flag% . Tit| 00027100 54 67 24 2b 3d a4 65 78 70 61 6e 64 28 74 24 2c |Tg$+=.expand(t$,| 00027110 6c 69 6e 6b 24 28 66 25 29 2c 4c 25 2c 53 46 24 |link$(f%),L%,SF$| 00027120 29 2b 22 2c 22 0d 15 fb 32 20 20 20 20 20 20 20 |)+","...2 | 00027130 20 20 20 e7 20 63 68 61 72 74 79 70 65 25 28 66 | . chartype%(f| 00027140 25 29 3e 34 30 20 8c 20 74 24 3d a4 70 6f 73 5f |%)>40 . t$=.pos_| 00027150 6e 65 67 28 74 24 29 0d 15 fc 20 20 20 20 20 20 |neg(t$)... | 00027160 20 20 20 20 20 c8 8e 20 63 68 61 72 74 79 70 65 | .. chartype| 00027170 25 28 66 25 29 20 ca 0d 15 fd 1a 20 20 20 20 20 |%(f%) ..... | 00027180 20 20 20 20 20 20 20 c9 20 35 2c 35 31 2c 35 32 | . 5,51,52| 00027190 3a 0d 15 fe 4b 20 20 20 20 20 20 20 20 20 20 20 |:...K | 000271a0 20 e7 20 a4 63 68 65 63 6b 5f 64 61 74 65 28 74 | . .check_date(t| 000271b0 24 2c 32 2c 64 61 74 65 24 29 3d b9 20 8c 20 74 |$,2,date$)=. . t| 000271c0 24 3d a4 72 65 76 65 72 73 65 5f 64 61 74 65 28 |$=.reverse_date(| 000271d0 64 61 74 65 24 29 3a 75 24 3d 74 24 0d 15 ff 0f |date$):u$=t$....| 000271e0 20 20 20 20 20 20 20 20 20 20 cb 0d 16 00 1d 20 | ..... | 000271f0 20 20 20 20 20 20 20 20 20 74 24 3d 22 22 22 22 | t$=""""| 00027200 2b 74 24 2b 22 22 22 22 0d 16 01 27 20 20 20 20 |+t$+""""...' | 00027210 20 20 20 20 20 20 e7 20 76 61 6c 25 20 8c 20 74 | . val% . t| 00027220 24 3d 22 56 41 4c 28 22 2b 74 24 2b 22 29 22 0d |$="VAL("+t$+")".| 00027230 16 02 16 20 20 20 20 20 20 20 20 20 20 e7 20 66 |... . f| 00027240 25 3d 30 20 8c 0d 16 03 18 20 20 20 20 20 20 20 |%=0 ..... | 00027250 20 20 20 20 20 c8 8e 20 6f 70 24 20 ca 0d 16 04 | .. op$ ....| 00027260 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 c9 |; .| 00027270 20 22 7b 22 2c 22 3d 22 3a 45 31 24 3d 22 46 4e | "{","=":E1$="FN| 00027280 61 6e 79 28 22 2b 74 24 2b 22 2c 22 22 22 2b 6f |any("+t$+","""+o| 00027290 70 24 2b 22 22 22 29 22 0d 16 05 2e 20 20 20 20 |p$+""")".... | 000272a0 20 20 20 20 20 20 20 20 20 20 c9 20 22 7d 7b 22 | . "}{"| 000272b0 3a 85 20 6d 6f 61 6e 5f 65 72 72 25 2c a4 6d 73 |:. moan_err%,.ms| 000272c0 67 28 31 30 30 29 0d 16 06 2e 20 20 20 20 20 20 |g(100).... | 000272d0 20 20 20 20 20 20 20 20 c9 20 22 3c 3e 22 3a 85 | . "<>":.| 000272e0 20 6d 6f 61 6e 5f 65 72 72 25 2c a4 6d 73 67 28 | moan_err%,.msg(| 000272f0 31 30 31 29 0d 16 07 37 20 20 20 20 20 20 20 20 |101)...7 | 00027300 20 20 20 20 20 20 7f 3a 85 20 6d 6f 61 6e 5f 65 | .:. moan_e| 00027310 72 72 25 2c 22 22 22 22 2b 6f 70 24 2b 22 22 22 |rr%,""""+op$+"""| 00027320 22 2b a4 6d 73 67 28 31 30 32 29 0d 16 08 11 20 |"+.msg(102).... | 00027330 20 20 20 20 20 20 20 20 20 20 20 cb 0d 16 09 11 | .....| 00027340 20 20 20 20 20 20 20 20 20 20 20 20 cc 0d 16 0a | ....| 00027350 18 20 20 20 20 20 20 20 20 20 20 20 20 c8 8e 20 |. .. | 00027360 6f 70 24 20 ca 0d 16 0b 34 20 20 20 20 20 20 20 |op$ ....4 | 00027370 20 20 20 20 20 20 20 c9 20 22 7b 22 3a 45 31 24 | . "{":E1$| 00027380 3d 22 49 4e 53 54 52 28 22 2b 66 24 2b 22 2c 22 |="INSTR("+f$+","| 00027390 2b 74 24 2b 22 29 3e 30 22 0d 16 0c 35 20 20 20 |+t$+")>0"...5 | 000273a0 20 20 20 20 20 20 20 20 20 20 20 c9 20 22 7d 7b | . "}{| 000273b0 22 3a 45 31 24 3d 22 49 4e 53 54 52 28 22 2b 66 |":E1$="INSTR("+f| 000273c0 24 2b 22 2c 22 2b 74 24 2b 22 29 3d 30 22 0d 16 |$+","+t$+")=0"..| 000273d0 0d 18 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.. | 000273e0 c9 20 22 3d 22 3a 0d 16 0e 1f 20 20 20 20 20 20 |. "=":.... | 000273f0 20 20 20 20 20 20 20 20 45 31 24 3d 66 24 2b 6f | E1$=f$+o| 00027400 70 24 2b 74 24 0d 16 0f 2c 20 20 20 20 20 20 20 |p$+t$..., | 00027410 20 20 20 20 20 20 20 e7 20 73 69 6d 70 6c 65 25 | . simple%| 00027420 3d b9 20 80 20 75 73 65 6b 65 79 25 3d 2d 31 20 |=. . usekey%=-1 | 00027430 8c 0d 16 10 2b 20 20 20 20 20 20 20 20 20 20 20 |....+ | 00027440 20 20 20 20 20 66 6f 75 6e 64 6b 65 79 25 3d a4 | foundkey%=.| 00027450 69 73 5f 61 5f 6b 65 79 28 66 25 29 0d 16 11 40 |is_a_key(f%)...@| 00027460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00027470 e7 20 66 6f 75 6e 64 6b 65 79 25 3e 3d 30 20 8c |. foundkey%>=0 .| 00027480 20 e7 20 4b 4c 25 28 66 6f 75 6e 64 6b 65 79 25 | . KL%(foundkey%| 00027490 29 3d 6c 65 6e 25 28 66 25 29 20 8c 0d 16 12 32 |)=len%(f%) ....2| 000274a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000274b0 20 20 75 73 65 6b 65 79 25 3d 66 6f 75 6e 64 6b | usekey%=foundk| 000274c0 65 79 25 3a 75 73 65 76 61 6c 24 3d 75 24 0d 16 |ey%:useval$=u$..| 000274d0 13 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.. | 000274e0 20 20 cd 0d 16 14 13 20 20 20 20 20 20 20 20 20 | ..... | 000274f0 20 20 20 20 20 cd 0d 16 15 21 20 20 20 20 20 20 | ....! | 00027500 20 20 20 20 20 20 20 20 7f 3a 45 31 24 3d 66 24 | .:E1$=f$| 00027510 2b 6f 70 24 2b 74 24 0d 16 16 11 20 20 20 20 20 |+op$+t$.... | 00027520 20 20 20 20 20 20 20 cb 0d 16 17 0f 20 20 20 20 | ..... | 00027530 20 20 20 20 20 20 cd 0d 16 18 40 20 20 20 20 20 | ....@ | 00027540 20 20 20 20 20 e7 20 a9 28 45 24 29 2b a9 28 45 | . .(E$)+.(E| 00027550 31 24 29 3e 32 35 35 20 8c 20 85 20 6d 6f 61 6e |1$)>255 . . moan| 00027560 5f 65 72 72 25 2c a4 6d 73 67 28 36 29 20 8b 20 |_err%,.msg(6) . | 00027570 45 24 2b 3d 45 31 24 0d 16 19 40 20 20 20 20 20 |E$+=E1$...@ | 00027580 20 20 20 20 20 e7 20 a9 28 45 24 29 2b a9 28 62 | . .(E$)+.(b| 00027590 6f 24 29 3e 32 35 35 20 8c 20 85 20 6d 6f 61 6e |o$)>255 . . moan| 000275a0 5f 65 72 72 25 2c a4 6d 73 67 28 36 29 20 8b 20 |_err%,.msg(6) . | 000275b0 45 24 2b 3d 62 6f 24 0d 16 1a 0d 20 20 20 20 20 |E$+=bo$.... | 000275c0 20 20 20 ce 0d 16 1b 13 20 20 20 20 20 20 20 20 | ..... | 000275d0 66 6c 61 67 25 3d b9 0d 16 1c 0b 20 20 20 20 20 |flag%=..... | 000275e0 20 ce 0d 16 1d 1e 20 20 20 20 20 20 45 24 3d c0 | ..... E$=.| 000275f0 45 24 2c a9 28 45 24 29 2d a9 28 62 6f 24 29 29 |E$,.(E$)-.(bo$))| 00027600 0d 16 1e 18 20 20 20 20 20 20 e7 20 a7 45 24 2c |.... . .E$,| 00027610 62 6f 24 29 3e 30 20 8c 0d 16 1f 3d 20 20 20 20 |bo$)>0 ....= | 00027620 20 20 20 20 e7 20 a9 28 45 24 29 3e 32 35 33 20 | . .(E$)>253 | 00027630 8c 20 85 20 6d 6f 61 6e 5f 65 72 72 25 2c a4 6d |. . moan_err%,.m| 00027640 73 67 28 36 29 20 8b 20 45 24 3d 22 28 22 2b 45 |sg(6) . E$="("+E| 00027650 24 2b 22 29 22 0d 16 20 0b 20 20 20 20 20 20 cd |$+")".. . .| 00027660 0d 16 21 09 20 20 20 20 cb 0d 16 22 07 20 20 cd |..!. ...". .| 00027670 0d 16 23 13 20 20 f2 61 64 64 5f 62 72 61 63 6b |..#. .add_brack| 00027680 65 74 73 0d 16 24 0d 20 20 45 24 2b 3d 22 20 22 |ets..$. E$+=" "| 00027690 0d 16 25 1e 20 20 e7 20 a9 28 73 65 61 72 63 68 |..%. . .(search| 000276a0 24 29 2b a9 28 45 24 29 3e 32 35 35 20 8c 0d 16 |$)+.(E$)>255 ...| 000276b0 26 1b 20 20 20 20 85 20 6d 6f 61 6e 5f 65 72 72 |&. . moan_err| 000276c0 25 2c a4 6d 73 67 28 36 29 0d 16 27 15 20 20 20 |%,.msg(6)..'. | 000276d0 20 cc 20 73 65 61 72 63 68 24 2b 3d 45 24 0d 16 | . search$+=E$..| 000276e0 28 14 20 20 20 20 f2 62 75 69 6c 64 5f 74 69 74 |(. .build_tit| 000276f0 6c 65 0d 16 29 07 20 20 cd 0d 16 2a 05 ce 0d 16 |le..). ...*....| 00027700 2b 2c 54 69 74 6c 65 24 3d c1 a4 6c 65 61 66 28 |+,Title$=..leaf(| 00027710 24 64 61 74 61 62 61 73 65 25 29 2c 32 29 2b 22 |$database%),2)+"| 00027720 2e 20 22 2b 54 69 74 6c 65 24 0d 16 2c 12 e7 20 |. "+Title$..,.. | 00027730 75 73 65 6b 65 79 25 3e 3d 30 20 8c 0d 16 2d 2a |usekey%>=0 ...-*| 00027740 20 20 6b 6c 25 3d 4b 4c 25 28 75 73 65 6b 65 79 | kl%=KL%(usekey| 00027750 25 29 3a 76 61 6c 24 3d a4 74 79 70 65 28 75 73 |%):val$=.type(us| 00027760 65 6b 65 79 25 29 0d 16 2e 1d 20 20 cc 20 f2 64 |ekey%).... . .d| 00027770 65 73 65 6c 65 63 74 28 6d 61 74 63 68 57 25 2c |eselect(matchW%,| 00027780 32 33 29 0d 16 2f 05 cd 0d 16 30 0c 3d 73 65 61 |23)../....0.=sea| 00027790 72 63 68 24 0d 16 31 05 3a 0d 16 32 12 dd 20 a4 |rch$..1.:..2.. .| 000277a0 70 6f 73 5f 6e 65 67 28 73 24 29 0d 16 33 0b c8 |pos_neg(s$)..3..| 000277b0 8e 20 73 24 20 ca 0d 16 34 2a 20 20 c9 20 22 2b |. s$ ...4* . "+| 000277c0 22 2c 22 79 22 2c 22 59 22 2c 22 2a 22 2c 22 80 |","y","Y","*",".| 000277d0 22 2c 22 54 22 2c 22 74 22 3a 73 24 3d 22 20 22 |","T","t":s$=" "| 000277e0 0d 16 35 29 20 20 c9 20 22 2d 22 2c 22 6e 22 2c |..5) . "-","n",| 000277f0 22 4e 22 2c 22 78 22 2c 22 58 22 2c 22 46 22 2c |"N","x","X","F",| 00027800 22 66 22 3a 73 24 3d 22 22 0d 16 36 05 cb 0d 16 |"f":s$=""..6....| 00027810 37 07 3d 73 24 0d 16 38 05 3a 0d 16 39 11 dd 20 |7.=s$..8.:..9.. | 00027820 a4 73 69 6d 70 6c 65 28 53 24 29 0d 16 3a 51 e7 |.simple(S$)..:Q.| 00027830 20 a7 53 24 2c 22 3d 22 29 3e 30 20 80 20 28 a7 | .S$,"=")>0 . (.| 00027840 53 24 2c 22 2c 22 29 3d 30 20 80 20 a7 53 24 2c |S$,",")=0 . .S$,| 00027850 22 2d 22 29 3d 30 20 80 20 a7 53 24 2c 22 4f 52 |"-")=0 . .S$,"OR| 00027860 22 29 3d 30 20 80 20 a7 53 24 2c 22 4e 4f 54 22 |")=0 . .S$,"NOT"| 00027870 29 3d 30 29 20 8c 3d b9 20 8b 3d a3 0d 16 3b 05 |)=0) .=. .=...;.| 00027880 3a 0d 16 3c 16 dd 20 a4 77 6f 72 64 28 f8 20 53 |:..<.. .word(. S| 00027890 24 2c 73 65 70 24 29 0d 16 3d 13 ea 20 50 25 2c |$,sep$)..=.. P%,| 000278a0 57 24 2c 51 31 25 2c 51 32 25 0d 16 3e 05 f5 0d |W$,Q1%,Q2%..>...| 000278b0 16 3f 27 20 20 51 31 25 3d a7 53 24 2c 22 22 22 |.?' Q1%=.S$,"""| 000278c0 22 29 3a 51 32 25 3d a7 53 24 2c 22 22 22 22 2c |"):Q2%=.S$,"""",| 000278d0 51 31 25 2b 31 29 0d 16 40 15 20 20 50 25 3d a7 |Q1%+1)..@. P%=.| 000278e0 53 24 2c 73 65 70 24 2c 50 25 29 0d 16 41 0c 20 |S$,sep$,P%)..A. | 000278f0 20 c8 8e 20 b9 20 ca 0d 16 42 2d 20 20 20 20 c9 | .. . ...B- .| 00027900 20 28 50 25 3e 51 31 25 20 80 20 50 25 3c 51 32 | (P%>Q1% . P%<Q2| 00027910 25 29 2c 28 50 25 3e 51 32 25 20 80 20 51 32 25 |%),(P%>Q2% . Q2%| 00027920 3e 30 29 3a 0d 16 43 35 20 20 20 20 53 24 3d c0 |>0):..C5 S$=.| 00027930 53 24 2c 51 31 25 2d 31 29 2b c1 53 24 2c 51 31 |S$,Q1%-1)+.S$,Q1| 00027940 25 2b 31 2c 51 32 25 2d 51 31 25 2d 31 29 2b c1 |%+1,Q2%-Q1%-1)+.| 00027950 53 24 2c 51 32 25 2b 31 29 0d 16 44 39 20 20 20 |S$,Q2%+1)..D9 | 00027960 20 50 25 3d 51 32 25 2d 32 3a f4 20 23 23 23 20 | P%=Q2%-2:. ### | 00027970 53 24 20 69 73 20 6e 6f 77 20 32 20 63 68 61 72 |S$ is now 2 char| 00027980 61 63 74 65 72 73 20 73 68 6f 72 74 65 72 20 23 |acters shorter #| 00027990 23 23 0d 16 45 29 20 20 20 20 c9 20 51 31 25 3e |##..E) . Q1%>| 000279a0 30 20 80 20 51 32 25 3d 30 3a f2 73 6f 66 74 65 |0 . Q2%=0:.softe| 000279b0 72 72 6f 72 28 22 22 2c 39 33 29 0d 16 46 20 20 |rror("",93)..F | 000279c0 20 20 20 53 24 3d c0 53 24 2c 51 31 25 2d 31 29 | S$=.S$,Q1%-1)| 000279d0 2b c1 53 24 2c 51 31 25 2b 31 29 0d 16 47 07 20 |+.S$,Q1%+1)..G. | 000279e0 20 cb 0d 16 48 18 fd 20 51 31 25 2b 51 32 25 3d | ...H.. Q1%+Q2%=| 000279f0 30 20 84 20 50 25 3c 51 31 25 0d 16 49 10 57 24 |0 . P%<Q1%..I.W$| 00027a00 3d c0 53 24 2c 50 25 2d 31 29 0d 16 4a 10 53 24 |=.S$,P%-1)..J.S$| 00027a10 3d c1 53 24 2c 50 25 2b 31 29 0d 16 4b 07 3d 57 |=.S$,P%+1)..K.=W| 00027a20 24 0d 16 4c 05 3a 0d 16 4d 15 dd 20 a4 61 6e 79 |$..L.:..M.. .any| 00027a30 28 74 61 72 67 24 2c 6f 70 24 29 0d 16 4e 18 ea |(targ$,op$)..N..| 00027a40 20 46 25 2c 66 6f 75 6e 64 25 2c 63 61 73 65 25 | F%,found%,case%| 00027a50 2c 46 24 0d 16 4f 1f 63 61 73 65 25 3d a4 73 65 |,F$..O.case%=.se| 00027a60 6c 65 63 74 65 64 28 6d 61 74 63 68 57 25 2c 31 |lected(matchW%,1| 00027a70 36 29 0d 16 50 05 f5 0d 16 51 15 20 20 46 25 2b |6)..P....Q. F%+| 00027a80 3d 31 3a 46 24 3d 46 24 28 46 25 29 0d 16 52 1b |=1:F$=F$(F%)..R.| 00027a90 20 20 e7 20 ac 20 63 61 73 65 25 20 8c 20 46 24 | . . case% . F$| 00027aa0 3d a4 75 28 46 24 29 0d 16 53 0e 20 20 c8 8e 20 |=.u(F$)..S. .. | 00027ab0 6f 70 24 20 ca 0d 16 54 27 20 20 20 20 c9 20 22 |op$ ...T' . "| 00027ac0 7b 22 3a e7 20 a7 46 24 2c 74 61 72 67 24 29 3e |{":. .F$,targ$)>| 00027ad0 30 20 8c 20 66 6f 75 6e 64 25 3d b9 0d 16 55 23 |0 . found%=...U#| 00027ae0 20 20 20 20 c9 20 22 3d 22 3a e7 20 46 24 3d 74 | . "=":. F$=t| 00027af0 61 72 67 24 20 8c 20 66 6f 75 6e 64 25 3d b9 0d |arg$ . found%=..| 00027b00 16 56 07 20 20 cb 0d 16 57 19 fd 20 66 6f 75 6e |.V. ...W.. foun| 00027b10 64 25 20 84 20 46 25 3d 66 69 65 6c 64 73 25 0d |d% . F%=fields%.| 00027b20 16 58 0b 3d 66 6f 75 6e 64 25 0d 16 59 05 3a 0d |.X.=found%..Y.:.| 00027b30 16 5a 0c dd 20 f2 73 70 6c 69 74 0d 16 5b 0e ea |.Z.. .split..[..| 00027b40 20 58 24 2c 51 25 2c 49 25 0d 16 5c 38 58 24 3d | X$,Q%,I%..\8X$=| 00027b50 22 3e 3d 3e 3d 2c 3c 3d 3c 3d 2c 3c 3e 2c 7d 7b |">=>=,<=<=,<>,}{| 00027b60 2c 3e 3d 2c 3c 3d 2c 3d 3d 2c 3e 3e 2c 3c 3c 2c |,>=,<=,==,>>,<<,| 00027b70 7b 7b 2c 3d 2c 3c 2c 3e 2c 7b 2c 22 3a 50 25 3d |{{,=,<,>,{,":P%=| 00027b80 30 0d 16 5d 15 c8 95 20 a9 28 58 24 29 3e 30 20 |0..]... .(X$)>0 | 00027b90 80 20 50 25 3d 30 0d 16 5e 2c 20 20 51 25 3d a7 |. P%=0..^, Q%=.| 00027ba0 58 24 2c 22 2c 22 29 3a 6f 70 24 3d c0 58 24 2c |X$,","):op$=.X$,| 00027bb0 51 25 2d 31 29 3a 58 24 3d c1 58 24 2c 51 25 2b |Q%-1):X$=.X$,Q%+| 00027bc0 31 29 0d 16 5f 11 20 20 50 25 3d a7 57 24 2c 6f |1).._. P%=.W$,o| 00027bd0 70 24 29 0d 16 60 05 ce 0d 16 61 0c e7 20 50 25 |p$)..`....a.. P%| 00027be0 3e 30 20 8c 0d 16 62 16 20 20 66 69 65 6c 64 24 |>0 ...b. field$| 00027bf0 3d c0 57 24 2c 50 25 2d 31 29 0d 16 63 20 20 20 |=.W$,P%-1)..c | 00027c00 74 61 72 67 65 74 24 3d c1 57 24 2c 50 25 2b a9 |target$=.W$,P%+.| 00027c10 28 6f 70 24 29 29 2b 22 2c 22 0d 16 64 25 20 20 |(op$))+","..d% | 00027c20 e7 20 ac 20 63 61 73 65 25 20 8c 20 74 61 72 67 |. . case% . targ| 00027c30 65 74 24 3d a4 75 28 74 61 72 67 65 74 24 29 0d |et$=.u(target$).| 00027c40 16 65 17 20 20 66 69 65 6c 64 24 3d a4 65 78 70 |.e. field$=.exp| 00027c50 5f 66 69 65 6c 64 0d 16 66 0e 20 20 c8 8e 20 6f |_field..f. .. o| 00027c60 70 24 20 ca 0d 16 67 1d 20 20 20 20 c9 20 22 3c |p$ ...g. . "<| 00027c70 3e 22 2c 22 7d 7b 22 3a 62 6f 24 3d 22 41 4e 44 |>","}{":bo$="AND| 00027c80 22 0d 16 68 1c 20 20 20 20 c9 20 22 3c 3d 22 2c |"..h. . "<=",| 00027c90 22 3e 3d 22 3a 62 6f 24 3d 22 4f 52 22 0d 16 69 |">=":bo$="OR"..i| 00027ca0 18 20 20 20 20 c9 20 22 3c 3d 3c 3d 22 2c 22 3e |. . "<=<=",">| 00027cb0 3d 3e 3d 22 3a 0d 16 6a 1d 20 20 20 20 6f 70 24 |=>=":..j. op$| 00027cc0 3d c0 6f 70 24 2c 32 29 3a 62 6f 24 3d 22 41 4e |=.op$,2):bo$="AN| 00027cd0 44 22 0d 16 6b 1e 20 20 20 20 c9 20 22 3d 3d 22 |D"..k. . "=="| 00027ce0 2c 22 3c 3c 22 2c 22 3e 3e 22 2c 22 7b 7b 22 3a |,"<<",">>","{{":| 00027cf0 0d 16 6c 1d 20 20 20 20 6f 70 24 3d c0 6f 70 24 |..l. op$=.op$| 00027d00 2c 31 29 3a 62 6f 24 3d 22 41 4e 44 22 0d 16 6d |,1):bo$="AND"..m| 00027d10 12 20 20 20 20 7f 3a 62 6f 24 3d 22 4f 52 22 0d |. .:bo$="OR".| 00027d20 16 6e 07 20 20 cb 0d 16 6f 1c 20 20 cc 20 85 20 |.n. ...o. . . | 00027d30 6d 6f 61 6e 5f 65 72 72 25 2c a4 6d 73 67 28 34 |moan_err%,.msg(4| 00027d40 30 29 0d 16 70 05 cd 0d 16 71 05 e1 0d 16 72 05 |0)..p....q....r.| 00027d50 3a 0d 16 73 10 dd 20 a4 65 78 70 5f 66 69 65 6c |:..s.. .exp_fiel| 00027d60 64 0d 16 74 16 ea 20 50 25 2c 49 25 2c 46 31 25 |d..t.. P%,I%,F1%| 00027d70 2c 46 32 25 2c 46 24 0d 16 75 13 50 25 3d a7 66 |,F2%,F$..u.P%=.f| 00027d80 69 65 6c 64 24 2c 22 2d 22 29 0d 16 76 0c e7 20 |ield$,"-")..v.. | 00027d90 50 25 3d 30 20 8c 0d 16 77 13 20 20 46 24 3d 66 |P%=0 ...w. F$=f| 00027da0 69 65 6c 64 24 2b 22 2c 22 0d 16 78 07 20 20 cc |ield$+","..x. .| 00027db0 0d 16 79 21 20 20 46 31 25 3d a4 66 69 65 6c 64 |..y! F1%=.field| 00027dc0 28 c0 66 69 65 6c 64 24 2c 50 25 2d 31 29 2c a3 |(.field$,P%-1),.| 00027dd0 29 0d 16 7a 21 20 20 46 32 25 3d a4 66 69 65 6c |)..z! F2%=.fiel| 00027de0 64 28 c1 66 69 65 6c 64 24 2c 50 25 2b 31 29 2c |d(.field$,P%+1),| 00027df0 a3 29 0d 16 7b 1c 20 20 e7 20 46 31 25 3e 46 32 |.)..{. . F1%>F2| 00027e00 25 20 8c 20 c8 94 20 46 31 25 2c 46 32 25 0d 16 |% . .. F1%,F2%..| 00027e10 7c 14 20 20 e3 20 49 25 3d 46 31 25 20 b8 20 46 ||. . I%=F1% . F| 00027e20 32 25 0d 16 7d 18 20 20 20 20 46 24 2b 3d 54 61 |2%..}. F$+=Ta| 00027e30 67 24 28 49 25 29 2b 22 2c 22 0d 16 7e 0a 20 20 |g$(I%)+","..~. | 00027e40 ed 20 49 25 0d 16 7f 05 cd 0d 16 80 07 3d 46 24 |. I%.........=F$| 00027e50 0d 16 81 05 3a 0d 16 82 0f dd 20 a4 66 6e 75 6d |....:..... .fnum| 00027e60 28 53 24 29 0d 16 83 08 ea 20 4e 25 0d 16 84 10 |(S$)..... N%....| 00027e70 4e 25 3d a0 28 22 26 22 2b 53 24 29 0d 16 85 1b |N%=.("&"+S$)....| 00027e80 6e 65 77 6c 69 6e 65 25 3d 28 28 4e 25 20 80 20 |newline%=((N% . | 00027e90 31 32 38 29 3e 30 29 0d 16 86 0f 3d 28 4e 25 20 |128)>0)....=(N% | 00027ea0 80 20 31 32 37 29 0d 16 87 05 3a 0d 16 88 13 dd |. 127)....:.....| 00027eb0 20 a4 66 69 65 6c 64 28 66 24 2c 5a 25 29 0d 16 | .field(f$,Z%)..| 00027ec0 89 11 ea 20 49 25 2c 46 25 2c 64 65 73 63 24 0d |... I%,F%,desc$.| 00027ed0 16 8a 25 e7 20 66 24 3d 22 40 22 20 8c 20 54 69 |..%. f$="@" . Ti| 00027ee0 74 46 64 24 3d 22 41 6e 79 20 66 69 65 6c 64 20 |tFd$="Any field | 00027ef0 22 3a 3d 30 0d 16 8b 0a 76 61 6c 25 3d a3 0d 16 |":=0....val%=...| 00027f00 8c 30 e7 20 c0 66 24 2c 31 29 3d 22 5b 22 20 80 |.0. .f$,1)="[" .| 00027f10 20 c2 66 24 29 3d 22 5d 22 20 8c 20 66 24 3d c1 | .f$)="]" . f$=.| 00027f20 c0 66 24 29 2c 32 29 3a 76 61 6c 25 3d b9 0d 16 |.f$),2):val%=...| 00027f30 8d 11 c8 95 20 49 25 3c 66 69 65 6c 64 73 25 0d |.... I%<fields%.| 00027f40 16 8e 0b 20 20 49 25 2b 3d 31 0d 16 8f 23 20 20 |... I%+=1...# | 00027f50 e7 20 a4 75 28 54 61 67 24 28 49 25 29 29 3d a4 |. .u(Tag$(I%))=.| 00027f60 75 28 66 24 29 20 8c 20 46 25 3d 49 25 0d 16 90 |u(f$) . F%=I%...| 00027f70 05 ce 0d 16 91 13 e7 20 46 25 3e 30 20 80 20 5a |....... F%>0 . Z| 00027f80 25 3d b9 20 8c 0d 16 92 24 20 20 64 65 73 63 24 |%=. ....$ desc$| 00027f90 3d 24 a4 74 65 78 74 28 6d 61 69 6e 57 25 2c 64 |=$.text(mainW%,d| 00027fa0 65 73 63 25 28 46 25 29 29 0d 16 93 36 20 20 e7 |esc%(F%))...6 .| 00027fb0 20 64 65 73 63 24 3c 3e 22 22 20 8c 20 54 69 74 | desc$<>"" . Tit| 00027fc0 46 64 24 2b 3d 64 65 73 63 24 2b 22 2c 22 20 8b |Fd$+=desc$+"," .| 00027fd0 20 54 69 74 46 64 24 2b 3d 66 24 2b 22 2c 22 0d | TitFd$+=f$+",".| 00027fe0 16 94 35 20 20 cc 20 e7 20 46 25 3d 30 20 8c 20 |..5 . . F%=0 . | 00027ff0 85 20 6d 6f 61 6e 5f 65 72 72 25 2c a4 6d 73 67 |. moan_err%,.msg| 00028000 28 38 29 2b 22 20 28 22 2b 66 24 2b 22 29 22 2b |(8)+" ("+f$+")"+| 00028010 bd 28 30 29 0d 16 95 05 cd 0d 16 96 16 c8 8e 20 |.(0)........... | 00028020 63 68 61 72 74 79 70 65 25 28 46 25 29 20 ca 0d |chartype%(F%) ..| 00028030 16 97 21 20 20 c9 20 33 2c 36 2c 34 36 2c 34 37 |..! . 3,6,46,47| 00028040 2c 35 34 2c 35 36 2c 35 37 3a 76 61 6c 25 3d b9 |,54,56,57:val%=.| 00028050 0d 16 98 05 cb 0d 16 99 07 3d 46 25 0d 16 9a 05 |.........=F%....| 00028060 3a 0d 16 9b 25 dd 20 a4 66 69 6e 64 5f 66 69 65 |:...%. .find_fie| 00028070 6c 64 73 28 53 24 2c 73 65 70 24 2c f8 20 6c 65 |lds(S$,sep$,. le| 00028080 6e 67 74 68 25 29 0d 16 9c 17 ea 20 66 24 2c 46 |ngth%)..... f$,F| 00028090 24 2c 43 24 2c 50 25 2c 51 25 2c 46 25 0d 16 9d |$,C$,P%,Q%,F%...| 000280a0 12 51 25 3d 31 3a 6c 65 6e 67 74 68 25 3d 30 0d |.Q%=1:length%=0.| 000280b0 16 9e 05 f5 0d 16 9f 15 20 20 50 25 3d a7 53 24 |........ P%=.S$| 000280c0 2c 73 65 70 24 2c 51 25 29 0d 16 a0 1f 20 20 e7 |,sep$,Q%).... .| 000280d0 20 50 25 3e 30 20 8c 20 66 24 3d c1 53 24 2c 51 | P%>0 . f$=.S$,Q| 000280e0 25 2c 50 25 2d 51 25 29 0d 16 a1 15 20 20 46 25 |%,P%-Q%).... F%| 000280f0 3d a4 66 69 65 6c 64 28 66 24 2c a3 29 0d 16 a2 |=.field(f$,.)...| 00028100 19 20 20 6c 65 6e 67 74 68 25 2b 3d 6c 65 6e 25 |. length%+=len%| 00028110 28 46 25 29 2b 31 0d 16 a3 0f 20 20 46 24 3d c3 |(F%)+1.... F$=.| 00028120 7e 28 46 25 29 0d 16 a4 1b 20 20 e7 20 a9 28 46 |~(F%).... . .(F| 00028130 24 29 3d 31 20 8c 20 46 24 3d 22 30 22 2b 46 24 |$)=1 . F$="0"+F$| 00028140 0d 16 a5 0c 20 20 43 24 2b 3d 46 24 0d 16 a6 0d |.... C$+=F$....| 00028150 20 20 51 25 3d 50 25 2b 31 0d 16 a7 0e fd 20 50 | Q%=P%+1..... P| 00028160 25 3d a9 28 53 24 29 0d 16 a8 18 6c 65 6e 67 74 |%=.(S$)....lengt| 00028170 68 25 2b 3d a9 28 c3 28 52 41 25 29 29 2b 31 0d |h%+=.(.(RA%))+1.| 00028180 16 a9 07 3d 43 24 0d 16 aa 05 3a 0d 16 ab 15 dd |...=C$....:.....| 00028190 20 f2 73 74 72 69 70 5f 62 72 61 63 6b 65 74 73 | .strip_brackets| 000281a0 0d 16 ac 11 c8 95 20 c0 57 24 2c 31 29 3d 22 28 |...... .W$,1)="(| 000281b0 22 0d 16 ad 18 20 20 6c 65 66 74 25 2b 3d 31 3a |".... left%+=1:| 000281c0 57 24 3d c1 57 24 2c 32 29 0d 16 ae 05 ce 0d 16 |W$=.W$,2).......| 000281d0 af 0f c8 95 20 c2 57 24 29 3d 22 29 22 0d 16 b0 |.... .W$)=")"...| 000281e0 17 20 20 72 69 67 68 74 25 2b 3d 31 3a 57 24 3d |. right%+=1:W$=| 000281f0 c0 57 24 29 0d 16 b1 05 ce 0d 16 b2 05 e1 0d 16 |.W$)............| 00028200 b3 05 3a 0d 16 b4 13 dd 20 f2 61 64 64 5f 62 72 |..:..... .add_br| 00028210 61 63 6b 65 74 73 0d 16 b5 0e c8 95 20 6c 65 66 |ackets...... lef| 00028220 74 25 3e 30 0d 16 b6 18 20 20 45 24 3d 22 28 22 |t%>0.... E$="("| 00028230 2b 45 24 3a 6c 65 66 74 25 2d 3d 31 0d 16 b7 05 |+E$:left%-=1....| 00028240 ce 0d 16 b8 0f c8 95 20 72 69 67 68 74 25 3e 30 |....... right%>0| 00028250 0d 16 b9 17 20 20 45 24 2b 3d 22 29 22 3a 72 69 |.... E$+=")":ri| 00028260 67 68 74 25 2d 3d 31 0d 16 ba 05 ce 0d 16 bb 05 |ght%-=1.........| 00028270 e1 0d 16 bc 05 3a 0d 16 bd 12 dd 20 f2 62 75 69 |.....:..... .bui| 00028280 6c 64 5f 74 69 74 6c 65 0d 16 be 0d ea 20 63 68 |ld_title..... ch| 00028290 61 6e 67 65 25 0d 16 bf 23 54 69 74 46 64 24 3d |ange%...#TitFd$=| 000282a0 c0 54 69 74 46 64 24 29 3a 54 69 74 54 67 24 3d |.TitFd$):TitTg$=| 000282b0 c0 54 69 74 54 67 24 29 0d 16 c0 16 e7 20 a7 54 |.TitTg$)..... .T| 000282c0 69 74 46 64 24 2c 22 2c 22 29 3e 30 20 8c 0d 16 |itFd$,",")>0 ...| 000282d0 c1 0e 20 20 c8 8e 20 62 6f 24 20 ca 0d 16 c2 26 |.. .. bo$ ....&| 000282e0 20 20 20 20 c9 20 22 4f 52 22 3a 54 69 74 46 64 | . "OR":TitFd| 000282f0 24 3d 22 4f 6e 65 20 6f 66 3a 22 2b 54 69 74 46 |$="One of:"+TitF| 00028300 64 24 0d 16 c3 10 20 20 20 20 c9 20 22 41 4e 44 |d$.... . "AND| 00028310 22 3a 0d 16 c4 10 20 20 20 20 c8 8e 20 6f 70 24 |":.... .. op$| 00028320 20 ca 0d 16 c5 3b 20 20 20 20 20 20 c9 20 22 3c | ....; . "<| 00028330 3e 22 3a 54 69 74 46 64 24 3d 22 4e 6f 6e 65 20 |>":TitFd$="None | 00028340 6f 66 3a 22 2b 54 69 74 46 64 24 3a 6f 70 24 3d |of:"+TitFd$:op$=| 00028350 22 3d 22 3a 63 68 61 6e 67 65 25 3d b9 0d 16 c6 |"=":change%=....| 00028360 3b 20 20 20 20 20 20 c9 20 22 7d 7b 22 3a 54 69 |; . "}{":Ti| 00028370 74 46 64 24 3d 22 4e 6f 6e 65 20 6f 66 3a 22 2b |tFd$="None of:"+| 00028380 54 69 74 46 64 24 3a 6f 70 24 3d 22 7b 22 3a 63 |TitFd$:op$="{":c| 00028390 68 61 6e 67 65 25 3d b9 0d 16 c7 23 20 20 20 20 |hange%=....# | 000283a0 20 20 7f 3a 54 69 74 46 64 24 3d 22 41 6c 6c 20 | .:TitFd$="All | 000283b0 6f 66 3a 22 2b 54 69 74 46 64 24 0d 16 c8 09 20 |of:"+TitFd$.... | 000283c0 20 20 20 cb 0d 16 c9 07 20 20 cb 0d 16 ca 05 cd | ..... ......| 000283d0 0d 16 cb 16 e7 20 a7 54 69 74 54 67 24 2c 22 2c |..... .TitTg$,",| 000283e0 22 29 3e 30 20 8c 0d 16 cc 0e 20 20 c8 8e 20 62 |")>0 ..... .. b| 000283f0 6f 24 20 ca 0d 16 cd 26 20 20 20 20 c9 20 22 4f |o$ ....& . "O| 00028400 52 22 3a 54 69 74 54 67 24 3d 22 4f 6e 65 20 6f |R":TitTg$="One o| 00028410 66 3a 22 2b 54 69 74 54 67 24 0d 16 ce 10 20 20 |f:"+TitTg$.... | 00028420 20 20 c9 20 22 41 4e 44 22 3a 0d 16 cf 10 20 20 | . "AND":.... | 00028430 20 20 c8 8e 20 6f 70 24 20 ca 0d 16 d0 31 20 20 | .. op$ ....1 | 00028440 20 20 20 20 c9 20 22 3c 3e 22 3a 54 69 74 54 67 | . "<>":TitTg| 00028450 24 3d 22 4e 6f 6e 65 20 6f 66 3a 22 2b 54 69 74 |$="None of:"+Tit| 00028460 54 67 24 3a 6f 70 24 3d 22 3d 22 0d 16 d1 31 20 |Tg$:op$="="...1 | 00028470 20 20 20 20 20 c9 20 22 7d 7b 22 3a 54 69 74 54 | . "}{":TitT| 00028480 67 24 3d 22 4e 6f 6e 65 20 6f 66 3a 22 2b 54 69 |g$="None of:"+Ti| 00028490 74 54 67 24 3a 6f 70 24 3d 22 7b 22 0d 16 d2 49 |tTg$:op$="{"...I| 000284a0 20 20 20 20 20 20 7f 3a e7 20 63 68 61 6e 67 65 | .:. change| 000284b0 25 20 8c 20 54 69 74 54 67 24 3d 22 41 6e 79 20 |% . TitTg$="Any | 000284c0 6f 66 3a 22 2b 54 69 74 54 67 24 20 8b 20 54 69 |of:"+TitTg$ . Ti| 000284d0 74 54 67 24 3d 22 41 6c 6c 20 6f 66 3a 22 2b 54 |tTg$="All of:"+T| 000284e0 69 74 54 67 24 0d 16 d3 09 20 20 20 20 cb 0d 16 |itTg$.... ...| 000284f0 d4 07 20 20 cb 0d 16 d5 05 cd 0d 16 d6 0c c8 8e |.. ............| 00028500 20 6f 70 24 20 ca 0d 16 d7 1c 20 20 c9 20 22 7b | op$ ..... . "{| 00028510 22 3a 6f 70 24 3d 22 20 63 6f 6e 74 61 69 6e 73 |":op$=" contains| 00028520 20 22 0d 16 d8 25 20 20 c9 20 22 7d 7b 22 3a 6f | "...% . "}{":o| 00028530 70 24 3d 22 20 64 6f 65 73 20 6e 6f 74 20 63 6f |p$=" does not co| 00028540 6e 74 61 69 6e 20 22 0d 16 d9 05 cb 0d 16 da 1d |ntain ".........| 00028550 54 69 74 6c 65 24 2b 3d 54 69 74 46 64 24 2b 6f |Title$+=TitFd$+o| 00028560 70 24 2b 54 69 74 54 67 24 0d 16 db 05 e1 0d 16 |p$+TitTg$.......| 00028570 dc 05 3a 0d 16 dd 30 dd 20 a4 65 78 70 61 6e 64 |..:...0. .expand| 00028580 28 73 74 72 69 6e 67 24 2c 74 61 62 6c 65 24 2c |(string$,table$,| 00028590 f8 20 45 78 70 4c 65 6e 25 2c f8 20 73 75 62 73 |. ExpLen%,. subs| 000285a0 74 24 29 0d 16 de 55 ea 20 70 24 2c 73 24 2c 73 |t$)...U. p$,s$,s| 000285b0 74 61 72 74 25 2c 46 25 2c 49 25 2c 54 25 2c 69 |tart%,F%,I%,T%,i| 000285c0 6e 64 25 2c 72 6f 77 25 2c 52 65 63 25 2c 52 6f |nd%,row%,Rec%,Ro| 000285d0 77 73 25 2c 54 61 62 46 69 65 6c 64 73 25 2c 66 |ws%,TabFields%,f| 000285e0 69 65 6c 64 25 2c 73 66 69 65 6c 64 25 2c 70 6f |ield%,sfield%,po| 000285f0 73 25 2c 73 70 6f 73 25 0d 16 df 12 73 75 62 73 |s%,spos%....subs| 00028600 74 24 3d 73 74 72 69 6e 67 24 0d 16 e0 39 e7 20 |t$=string$...9. | 00028610 74 61 62 6c 65 24 3d 22 22 20 8c 20 45 78 70 4c |table$="" . ExpL| 00028620 65 6e 25 3d 30 3a 3d 73 74 72 69 6e 67 24 3a f4 |en%=0:=string$:.| 00028630 20 23 23 23 20 4e 6f 74 20 6c 69 6e 6b 65 64 20 | ### Not linked | 00028640 23 23 23 0d 16 e1 26 66 69 65 6c 64 25 3d bb 28 |###...&field%=.(| 00028650 c2 74 61 62 6c 65 24 29 29 3a 74 61 62 6c 65 24 |.table$)):table$| 00028660 3d c0 74 61 62 6c 65 24 29 0d 16 e2 55 e7 20 97 |=.table$)...U. .| 00028670 28 74 61 62 6c 65 24 29 3c 35 38 20 80 20 97 28 |(table$)<58 . .(| 00028680 74 61 62 6c 65 24 29 3c 3e 2d 31 20 8c 20 73 66 |table$)<>-1 . sf| 00028690 69 65 6c 64 25 3d bb 28 74 61 62 6c 65 24 29 3a |ield%=.(table$):| 000286a0 74 61 62 6c 65 24 3d c1 74 61 62 6c 65 24 2c 32 |table$=.table$,2| 000286b0 29 20 8b 20 73 66 69 65 6c 64 25 3d 2d 31 0d 16 |) . sfield%=-1..| 000286c0 e3 1c 54 25 3d a4 74 61 62 6c 65 5f 6e 75 6d 62 |..T%=.table_numb| 000286d0 65 72 28 74 61 62 6c 65 24 29 0d 16 e4 39 e7 20 |er(table$)...9. | 000286e0 54 25 3c 30 20 8c 20 45 78 70 4c 65 6e 25 3d 30 |T%<0 . ExpLen%=0| 000286f0 3a 3d 73 74 72 69 6e 67 24 3a f4 20 23 23 23 20 |:=string$:. ### | 00028700 54 61 62 6c 65 20 6e 6f 74 20 66 6f 75 6e 64 20 |Table not found | 00028710 23 23 23 0d 16 e5 14 70 24 3d 70 72 69 6e 74 72 |###....p$=printr| 00028720 65 6c 24 28 54 25 29 0d 16 e6 3b 54 24 3d a4 74 |el$(T%)...;T$=.t| 00028730 61 62 6c 65 5f 69 6e 66 6f 28 54 25 2c 52 6f 77 |able_info(T%,Row| 00028740 73 25 2c 54 61 62 46 69 65 6c 64 73 25 2c 52 65 |s%,TabFields%,Re| 00028750 63 25 2c 74 61 62 66 69 65 6c 64 6c 65 6e 25 28 |c%,tabfieldlen%(| 00028760 29 29 0d 16 e7 2c 70 6f 73 25 3d a4 74 61 62 6c |))...,pos%=.tabl| 00028770 65 5f 66 69 65 6c 64 28 66 69 65 6c 64 25 2c 74 |e_field(field%,t| 00028780 61 62 66 69 65 6c 64 6c 65 6e 25 28 29 29 0d 16 |abfieldlen%())..| 00028790 e8 3d e7 20 73 66 69 65 6c 64 25 3e 3d 30 20 8c |.=. sfield%>=0 .| 000287a0 20 73 70 6f 73 25 3d a4 74 61 62 6c 65 5f 66 69 | spos%=.table_fi| 000287b0 65 6c 64 28 73 66 69 65 6c 64 25 2c 74 61 62 66 |eld(sfield%,tabf| 000287c0 69 65 6c 64 6c 65 6e 25 28 29 29 0d 16 e9 0e e7 |ieldlen%()).....| 000287d0 20 70 24 3c 3e 22 22 20 8c 0d 16 ea 0f 20 20 45 | p$<>"" ..... E| 000287e0 78 70 4c 65 6e 25 3d 30 0d 16 eb 14 20 20 e3 20 |xpLen%=0.... . | 000287f0 49 25 3d 31 20 b8 20 a9 28 70 24 29 0d 16 ec 17 |I%=1 . .(p$)....| 00028800 20 20 20 20 46 25 3d bb 28 c1 70 24 2c 49 25 2c | F%=.(.p$,I%,| 00028810 31 29 29 0d 16 ed 23 20 20 20 20 45 78 70 4c 65 |1))...# ExpLe| 00028820 6e 25 2b 3d 74 61 62 66 69 65 6c 64 6c 65 6e 25 |n%+=tabfieldlen%| 00028830 28 46 25 29 2b 32 0d 16 ee 0a 20 20 ed 20 49 25 |(F%)+2.... . I%| 00028840 0d 16 ef 10 20 20 45 78 70 4c 65 6e 25 2d 3d 32 |.... ExpLen%-=2| 00028850 0d 16 f0 1f 20 20 cc 20 45 78 70 4c 65 6e 25 3d |.... . ExpLen%=| 00028860 74 61 62 66 69 65 6c 64 6c 65 6e 25 28 31 29 0d |tabfieldlen%(1).| 00028870 16 f1 05 cd 0d 16 f2 34 73 74 61 72 74 25 3d 21 |.......4start%=!| 00028880 74 61 62 61 6e 63 68 6f 72 25 28 54 25 29 2b 31 |tabanchor%(T%)+1| 00028890 36 30 2d 52 65 63 25 3a 69 6e 64 25 3d 73 74 61 |60-Rec%:ind%=sta| 000288a0 72 74 25 2b 70 6f 73 25 0d 16 f3 05 f5 0d 16 f4 |rt%+pos%........| 000288b0 18 20 20 72 6f 77 25 2b 3d 31 3a 69 6e 64 25 2b |. row%+=1:ind%+| 000288c0 3d 52 65 63 25 0d 16 f5 20 fd 20 72 6f 77 25 3e |=Rec%... . row%>| 000288d0 52 6f 77 73 25 20 84 20 24 69 6e 64 25 3d 73 74 |Rows% . $ind%=st| 000288e0 72 69 6e 67 24 0d 16 f6 42 e7 20 72 6f 77 25 3e |ring$...B. row%>| 000288f0 52 6f 77 73 25 20 8c 20 73 75 62 73 74 24 3d 22 |Rows% . subst$="| 00028900 22 3a 3d 73 74 72 69 6e 67 24 3a f4 20 23 23 20 |":=string$:. ## | 00028910 53 74 72 69 6e 67 20 6e 6f 74 20 69 6e 20 74 61 |String not in ta| 00028920 62 6c 65 20 23 23 23 0d 16 f7 3d 69 6e 64 25 3d |ble ###...=ind%=| 00028930 73 74 61 72 74 25 2b 72 6f 77 25 2a 52 65 63 25 |start%+row%*Rec%| 00028940 3a e7 20 73 66 69 65 6c 64 25 3e 3d 30 20 8c 20 |:. sfield%>=0 . | 00028950 73 75 62 73 74 24 3d 24 28 69 6e 64 25 2b 73 70 |subst$=$(ind%+sp| 00028960 6f 73 25 29 0d 16 f8 0e e7 20 70 24 3c 3e 22 22 |os%)..... p$<>""| 00028970 20 8c 0d 16 f9 14 20 20 e3 20 49 25 3d 31 20 b8 | ..... . I%=1 .| 00028980 20 a9 28 70 24 29 0d 16 fa 17 20 20 20 20 46 25 | .(p$).... F%| 00028990 3d bb 28 c1 70 24 2c 49 25 2c 31 29 29 0d 16 fb |=.(.p$,I%,1))...| 000289a0 2c 20 20 20 20 70 6f 73 25 3d a4 74 61 62 6c 65 |, pos%=.table| 000289b0 5f 66 69 65 6c 64 28 46 25 2c 74 61 62 66 69 65 |_field(F%,tabfie| 000289c0 6c 64 6c 65 6e 25 28 29 29 0d 16 fc 34 20 20 20 |ldlen%())...4 | 000289d0 20 73 24 2b 3d a4 70 61 64 28 24 28 69 6e 64 25 | s$+=.pad($(ind%| 000289e0 2b 70 6f 73 25 29 2c 74 61 62 66 69 65 6c 64 6c |+pos%),tabfieldl| 000289f0 65 6e 25 28 46 25 29 29 2b 22 20 20 22 0d 16 fd |en%(F%))+" "...| 00028a00 0a 20 20 ed 20 49 25 0d 16 fe 0f 20 20 73 24 3d |. . I%.... s$=| 00028a10 c0 c0 73 24 29 29 0d 16 ff 43 20 20 cc 20 69 6e |..s$))...C . in| 00028a20 64 25 2b 3d 74 61 62 66 69 65 6c 64 6c 65 6e 25 |d%+=tabfieldlen%| 00028a30 28 30 29 2b 31 3a 73 24 3d 24 69 6e 64 25 3a f4 |(0)+1:s$=$ind%:.| 00028a40 20 23 23 23 20 52 65 74 75 72 6e 20 32 6e 64 20 | ### Return 2nd | 00028a50 66 69 65 6c 64 20 23 23 23 0d 17 00 05 cd 0d 17 |field ###.......| 00028a60 01 07 3d 73 24 0d 17 02 05 3a 0d 17 03 0c dd 20 |..=s$....:..... | 00028a70 a4 6e 28 46 25 29 0d 17 04 56 ea 20 54 25 2c 72 |.n(F%)...V. T%,r| 00028a80 6f 77 25 2c 69 6e 64 25 2c 73 74 61 72 74 25 2c |ow%,ind%,start%,| 00028a90 52 6f 77 73 25 2c 52 65 63 25 2c 54 61 62 46 69 |Rows%,Rec%,TabFi| 00028aa0 65 6c 64 73 25 2c 70 6f 73 25 2c 76 61 6c 70 6f |elds%,pos%,valpo| 00028ab0 73 25 2c 4e 25 2c 66 69 65 6c 64 25 2c 6e 61 6d |s%,N%,field%,nam| 00028ac0 65 24 2c 74 61 62 6c 65 24 2c 53 24 0d 17 05 16 |e$,table$,S$....| 00028ad0 e7 20 6c 69 6e 6b 24 28 46 25 29 3d 22 22 20 8c |. link$(F%)="" .| 00028ae0 3d 30 0d 17 06 0f 53 24 3d 24 52 66 25 28 46 25 |=0....S$=$Rf%(F%| 00028af0 29 0d 17 07 13 6e 61 6d 65 24 3d 6c 69 6e 6b 24 |)....name$=link$| 00028b00 28 46 25 29 0d 17 08 24 66 69 65 6c 64 25 3d bb |(F%)...$field%=.| 00028b10 28 c2 6e 61 6d 65 24 29 29 3a 74 61 62 6c 65 24 |(.name$)):table$| 00028b20 3d c0 6e 61 6d 65 24 29 0d 17 09 36 e7 20 97 28 |=.name$)...6. .(| 00028b30 74 61 62 6c 65 24 29 3c 35 38 20 80 20 97 28 74 |table$)<58 . .(t| 00028b40 61 62 6c 65 24 29 3c 3e 2d 31 20 8c 20 74 61 62 |able$)<>-1 . tab| 00028b50 6c 65 24 3d c1 74 61 62 6c 65 24 2c 32 29 0d 17 |le$=.table$,2)..| 00028b60 0a 2f 74 61 62 6c 65 25 3d a4 74 61 62 6c 65 5f |./table%=.table_| 00028b70 6e 75 6d 62 65 72 28 74 61 62 6c 65 24 29 3a e7 |number(table$):.| 00028b80 20 74 61 62 6c 65 25 3c 30 20 8c 3d 30 0d 17 0b | table%<0 .=0...| 00028b90 3f 54 24 3d a4 74 61 62 6c 65 5f 69 6e 66 6f 28 |?T$=.table_info(| 00028ba0 74 61 62 6c 65 25 2c 52 6f 77 73 25 2c 54 61 62 |table%,Rows%,Tab| 00028bb0 46 69 65 6c 64 73 25 2c 52 65 63 25 2c 74 61 62 |Fields%,Rec%,tab| 00028bc0 66 69 65 6c 64 6c 65 6e 25 28 29 29 0d 17 0c 2e |fieldlen%())....| 00028bd0 e7 20 54 61 62 46 69 65 6c 64 73 25 3d 66 69 65 |. TabFields%=fie| 00028be0 6c 64 25 20 8c 20 f2 73 6f 66 74 65 72 72 6f 72 |ld% . .softerror| 00028bf0 28 22 22 2c 35 34 29 3a 3d 30 0d 17 0d 2c 70 6f |("",54):=0...,po| 00028c00 73 25 3d a4 74 61 62 6c 65 5f 66 69 65 6c 64 28 |s%=.table_field(| 00028c10 66 69 65 6c 64 25 2c 74 61 62 66 69 65 6c 64 6c |field%,tabfieldl| 00028c20 65 6e 25 28 29 29 0d 17 0e 31 76 61 6c 70 6f 73 |en%())...1valpos| 00028c30 25 3d a4 74 61 62 6c 65 5f 66 69 65 6c 64 28 66 |%=.table_field(f| 00028c40 69 65 6c 64 25 2b 31 2c 74 61 62 66 69 65 6c 64 |ield%+1,tabfield| 00028c50 6c 65 6e 25 28 29 29 0d 17 0f 27 73 74 61 72 74 |len%())...'start| 00028c60 25 3d 21 74 61 62 61 6e 63 68 6f 72 25 28 74 61 |%=!tabanchor%(ta| 00028c70 62 6c 65 25 29 2b 31 36 30 2d 52 65 63 25 0d 17 |ble%)+160-Rec%..| 00028c80 10 0d f5 20 72 6f 77 25 2b 3d 31 0d 17 11 20 20 |... row%+=1... | 00028c90 20 69 6e 64 25 3d 73 74 61 72 74 25 2b 72 6f 77 | ind%=start%+row| 00028ca0 25 2a 52 65 63 25 2b 70 6f 73 25 0d 17 12 1b fd |%*Rec%+pos%.....| 00028cb0 20 72 6f 77 25 3e 52 6f 77 73 25 20 84 20 53 24 | row%>Rows% . S$| 00028cc0 3d 24 69 6e 64 25 0d 17 13 13 e7 20 72 6f 77 25 |=$ind%..... row%| 00028cd0 3c 3d 52 6f 77 73 25 20 8c 0d 17 14 23 20 20 69 |<=Rows% ....# i| 00028ce0 6e 64 25 3d 73 74 61 72 74 25 2b 72 6f 77 25 2a |nd%=start%+row%*| 00028cf0 52 65 63 25 2b 76 61 6c 70 6f 73 25 0d 17 15 11 |Rec%+valpos%....| 00028d00 20 20 4e 25 3d bb 28 24 69 6e 64 25 29 0d 17 16 | N%=.($ind%)...| 00028d10 0c 20 20 cc 20 4e 25 3d 30 0d 17 17 05 cd 0d 17 |. . N%=0.......| 00028d20 18 07 3d 4e 25 0d 17 19 05 3a 0d 17 1a 11 dd 20 |..=N%....:..... | 00028d30 a4 70 61 64 28 73 24 2c 4c 25 29 0d 17 1b 0f c8 |.pad(s$,L%).....| 00028d40 95 20 a9 28 73 24 29 3c 4c 25 0d 17 1c 0d 20 20 |. .(s$)<L%.... | 00028d50 73 24 2b 3d 22 20 22 0d 17 1d 05 ce 0d 17 1e 07 |s$+=" ".........| 00028d60 3d 73 24 0d 17 1f 05 3a 0d 17 20 15 dd 20 a4 69 |=s$....:.. .. .i| 00028d70 6e 63 6c 75 64 65 5f 66 69 65 6c 64 73 0d 17 21 |nclude_fields..!| 00028d80 74 ea 20 48 64 6c 65 6e 25 2c 44 61 74 6c 65 6e |t. Hdlen%,Datlen| 00028d90 25 2c 68 6c 6d 25 2c 64 6c 6d 25 2c 49 25 2c 46 |%,hlm%,dlm%,I%,F| 00028da0 25 2c 66 24 2c 48 65 61 64 24 2c 6c 69 6d 69 74 |%,f$,Head$,limit| 00028db0 25 2c 70 61 64 25 2c 63 6f 6c 25 2c 66 61 69 6c |%,pad%,col%,fail| 00028dc0 25 2c 6e 24 2c 79 24 2c 53 46 24 2c 6d 65 6d 6f |%,n$,y$,SF$,memo| 00028dd0 25 2c 62 61 73 65 25 2c 70 6f 73 25 2c 62 6c 6f |%,base%,pos%,blo| 00028de0 63 6b 73 69 7a 65 25 2c 62 6c 6f 63 6b 69 6e 63 |cksize%,blockinc| 00028df0 25 0d 17 22 27 62 6c 6f 63 6b 73 69 7a 65 25 3d |%.."'blocksize%=| 00028e00 32 35 36 3a 62 6c 6f 63 6b 69 6e 63 25 3d 62 6c |256:blockinc%=bl| 00028e10 6f 63 6b 73 69 7a 65 25 0d 17 23 37 f2 65 78 74 |ocksize%..#7.ext| 00028e20 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e |end_named_slidin| 00028e30 67 5f 62 6c 6f 63 6b 28 68 65 61 64 61 6e 63 68 |g_block(headanch| 00028e40 6f 72 25 2c 62 6c 6f 63 6b 73 69 7a 65 25 29 0d |or%,blocksize%).| 00028e50 17 24 21 62 61 73 65 25 3d 21 68 65 61 64 61 6e |.$!base%=!headan| 00028e60 63 68 6f 72 25 3a 70 6f 73 25 3d 62 61 73 65 25 |chor%:pos%=base%| 00028e70 0d 17 25 40 f2 68 65 61 70 5f 73 74 6f 72 65 28 |..%@.heap_store(| 00028e80 68 65 61 64 61 6e 63 68 6f 72 25 2c 62 6c 6f 63 |headanchor%,bloc| 00028e90 6b 73 69 7a 65 25 2c 62 6c 6f 63 6b 69 6e 63 25 |ksize%,blockinc%| 00028ea0 2c 70 6f 73 25 2c 30 2c 6d 61 72 67 69 6e 24 29 |,pos%,0,margin$)| 00028eb0 0d 17 26 1b e3 20 49 25 3d 31 20 b8 20 a9 28 46 |..&.. I%=1 . .(F| 00028ec0 6f 72 6d 24 29 2d 31 20 88 20 32 0d 17 27 1c 20 |orm$)-1 . 2..'. | 00028ed0 20 46 25 3d a4 66 6e 75 6d 28 c1 46 6f 72 6d 24 | F%=.fnum(.Form$| 00028ee0 2c 49 25 2c 32 29 29 0d 17 28 18 20 20 c8 8e 20 |,I%,2))..(. .. | 00028ef0 63 68 61 72 74 79 70 65 25 28 46 25 29 20 ca 0d |chartype%(F%) ..| 00028f00 17 29 30 20 20 20 20 c9 20 33 36 2c 33 39 3a 64 |.)0 . 36,39:d| 00028f10 6c 6d 25 3d 54 65 78 74 4c 69 6e 65 25 3a 6d 65 |lm%=TextLine%:me| 00028f20 6d 6f 25 3d b9 3a f2 73 65 74 5f 76 65 72 74 0d |mo%=.:.set_vert.| 00028f30 17 2a 19 20 20 20 20 c9 20 34 31 2c 34 32 2c 34 |.*. . 41,42,4| 00028f40 33 2c 34 34 2c 34 35 3a 0d 17 2b 21 20 20 20 20 |3,44,45:..+! | 00028f50 44 61 74 6c 65 6e 25 3d a4 6e 6f 5f 79 65 73 28 |Datlen%=.no_yes(| 00028f60 46 25 2c 6e 24 2c 79 24 29 0d 17 2c 45 20 20 20 |F%,n$,y$)..,E | 00028f70 20 f4 20 23 23 23 20 47 65 74 20 64 61 74 61 20 | . ### Get data | 00028f80 6c 65 6e 67 74 68 20 66 6f 72 20 73 74 72 69 6e |length for strin| 00028f90 67 73 20 70 72 69 6e 74 65 64 20 66 6f 72 20 63 |gs printed for c| 00028fa0 68 65 63 6b 20 62 6f 78 65 73 20 23 23 23 0d 17 |heck boxes ###..| 00028fb0 2d 07 20 20 cb 0d 17 2e 1f 20 20 e7 20 a4 73 65 |-. ..... . .se| 00028fc0 6c 65 63 74 65 64 28 70 72 69 6e 74 57 25 2c 31 |lected(printW%,1| 00028fd0 31 29 20 8c 0d 17 2f 2f 20 20 20 20 66 24 3d a4 |1) ...// f$=.| 00028fe0 65 78 70 61 6e 64 28 22 40 23 2a 22 2c 6c 69 6e |expand("@#*",lin| 00028ff0 6b 24 28 46 25 29 2c 44 61 74 6c 65 6e 25 2c 53 |k$(F%),Datlen%,S| 00029000 46 24 29 0d 17 30 29 20 20 20 20 e7 20 44 61 74 |F$)..0) . Dat| 00029010 6c 65 6e 25 3d 30 20 8c 20 44 61 74 6c 65 6e 25 |len%=0 . Datlen%| 00029020 3d 6d 61 78 6c 65 6e 25 28 46 25 29 0d 17 31 09 |=maxlen%(F%)..1.| 00029030 20 20 20 20 cc 0d 17 32 1b 20 20 20 20 44 61 74 | ...2. Dat| 00029040 6c 65 6e 25 3d 6d 61 78 6c 65 6e 25 28 46 25 29 |len%=maxlen%(F%)| 00029050 0d 17 33 07 20 20 cd 0d 17 34 23 20 20 e7 20 44 |..3. ...4# . D| 00029060 61 74 6c 65 6e 25 3e 64 6c 6d 25 20 8c 20 64 6c |atlen%>dlm% . dl| 00029070 6d 25 3d 44 61 74 6c 65 6e 25 0d 17 35 50 20 20 |m%=Datlen%..5P | 00029080 e7 20 a4 73 65 6c 65 63 74 65 64 28 70 72 69 6e |. .selected(prin| 00029090 74 57 25 2c 32 29 20 8c 20 48 65 61 64 24 3d 24 |tW%,2) . Head$=$| 000290a0 a4 74 65 78 74 28 6d 61 69 6e 57 25 2c 28 64 65 |.text(mainW%,(de| 000290b0 73 63 25 28 46 25 29 29 29 20 8b 20 48 65 61 64 |sc%(F%))) . Head| 000290c0 24 3d 54 61 67 24 28 46 25 29 0d 17 36 15 20 20 |$=Tag$(F%)..6. | 000290d0 48 64 6c 65 6e 25 3d a9 28 48 65 61 64 24 29 0d |Hdlen%=.(Head$).| 000290e0 17 37 21 20 20 e7 20 48 64 6c 65 6e 25 3e 68 6c |.7! . Hdlen%>hl| 000290f0 6d 25 20 8c 20 68 6c 6d 25 3d 48 64 6c 65 6e 25 |m% . hlm%=Hdlen%| 00029100 0d 17 38 12 20 20 c8 8e 20 66 6f 72 6d 61 74 24 |..8. .. format$| 00029110 20 ca 0d 17 39 1a 20 20 20 20 c9 20 22 68 6f 72 | ...9. . "hor| 00029120 69 7a 22 2c 22 74 61 62 6c 65 22 3a 0d 17 3a 2d |iz","table":..:-| 00029130 20 20 20 20 70 61 64 25 3d 44 61 74 6c 65 6e 25 | pad%=Datlen%| 00029140 2d 48 64 6c 65 6e 25 3a e7 20 70 61 64 25 3c 30 |-Hdlen%:. pad%<0| 00029150 20 8c 20 70 61 64 25 3d 30 0d 17 3b 1a 20 20 20 | . pad%=0..;. | 00029160 20 c8 8e 20 63 68 61 72 74 79 70 65 25 28 46 25 | .. chartype%(F%| 00029170 29 20 ca 0d 17 3c 63 20 20 20 20 20 20 c9 20 33 |) ...<c . 3| 00029180 2c 36 2c 34 36 2c 34 37 2c 35 34 2c 35 36 2c 35 |,6,46,47,54,56,5| 00029190 37 3a e7 20 a4 73 65 6c 65 63 74 65 64 28 70 72 |7:. .selected(pr| 000291a0 69 6e 74 57 25 2c 31 31 29 20 8c 20 48 65 61 64 |intW%,11) . Head| 000291b0 24 2b 3d c4 70 61 64 25 2c 22 20 22 29 20 8b 20 |$+=.pad%," ") . | 000291c0 48 65 61 64 24 3d c4 70 61 64 25 2c 22 20 22 29 |Head$=.pad%," ")| 000291d0 2b 48 65 61 64 24 0d 17 3d 41 20 20 20 20 20 20 |+Head$..=A | 000291e0 f4 20 23 23 23 20 52 69 67 68 74 20 6a 75 73 74 |. ### Right just| 000291f0 69 66 79 20 6e 75 6d 62 65 72 73 20 75 6e 6c 65 |ify numbers unle| 00029200 73 73 20 45 78 70 61 6e 64 20 6f 70 74 69 6f 6e |ss Expand option| 00029210 20 6f 6e 20 23 23 23 0d 17 3e 1d 20 20 20 20 20 | on ###..>. | 00029220 20 7f 3a 48 65 61 64 24 2b 3d c4 70 61 64 25 2c | .:Head$+=.pad%,| 00029230 22 20 22 29 0d 17 3f 09 20 20 20 20 cb 0d 17 40 |" ")..?. ...@| 00029240 4a 20 20 20 20 f2 68 65 61 70 5f 73 74 6f 72 65 |J .heap_store| 00029250 28 68 65 61 64 61 6e 63 68 6f 72 25 2c 62 6c 6f |(headanchor%,blo| 00029260 63 6b 73 69 7a 65 25 2c 62 6c 6f 63 6b 69 6e 63 |cksize%,blockinc| 00029270 25 2c 70 6f 73 25 2c 30 2c 48 65 61 64 24 2b 73 |%,pos%,0,Head$+s| 00029280 70 61 63 65 72 24 29 0d 17 41 23 20 20 20 20 54 |pacer$)..A# T| 00029290 61 62 25 28 28 49 25 2b 31 29 20 81 20 32 29 3d |ab%((I%+1) . 2)=| 000292a0 70 6f 73 25 2d 62 61 73 65 25 0d 17 42 07 20 20 |pos%-base%..B. | 000292b0 cb 0d 17 43 08 ed 20 49 25 0d 17 44 10 c8 8e 20 |...C.. I%..D... | 000292c0 66 6f 72 6d 61 74 24 20 ca 0d 17 45 1f 20 20 c9 |format$ ...E. .| 000292d0 20 22 68 6f 72 69 7a 22 3a 4c 25 3d 70 6f 73 25 | "horiz":L%=pos%| 000292e0 2d 62 61 73 65 25 2b 32 0d 17 46 0f 20 20 c9 20 |-base%+2..F. . | 000292f0 22 76 65 72 74 22 3a 0d 17 47 0f 20 20 e7 20 6d |"vert":..G. . m| 00029300 65 6d 6f 25 20 8c 0d 17 48 16 20 20 20 20 4c 25 |emo% ...H. L%| 00029310 3d 54 65 78 74 4c 69 6e 65 25 2b 35 0d 17 49 21 |=TextLine%+5..I!| 00029320 20 20 20 20 cc 20 4c 25 3d 4c 6d 61 72 67 69 6e | . L%=Lmargin| 00029330 25 2b 68 6c 6d 25 2b 64 6c 6d 25 2b 36 0d 17 4a |%+hlm%+dlm%+6..J| 00029340 07 20 20 cd 0d 17 4b 12 20 20 54 61 62 25 28 31 |. ...K. Tab%(1| 00029350 29 3d 68 6c 6d 25 0d 17 4c 10 20 20 c9 20 22 74 |)=hlm%..L. . "t| 00029360 61 62 6c 65 22 3a 0d 17 4d 15 20 20 63 6f 6c 25 |able":..M. col%| 00029370 3d a9 28 63 6f 6c 75 6d 6e 24 29 0d 17 4e 46 20 |=.(column$)..NF | 00029380 20 f2 68 65 61 70 5f 73 74 6f 72 65 28 68 65 61 | .heap_store(hea| 00029390 64 61 6e 63 68 6f 72 25 2c 62 6c 6f 63 6b 73 69 |danchor%,blocksi| 000293a0 7a 65 25 2c 62 6c 6f 63 6b 69 6e 63 25 2c 70 6f |ze%,blockinc%,po| 000293b0 73 25 2c 30 2c 63 6f 6c 75 6d 6e 24 2b 22 20 22 |s%,0,column$+" "| 000293c0 29 0d 17 4f 1e 20 20 3f 70 6f 73 25 3d 31 30 3a |)..O. ?pos%=10:| 000293d0 4c 25 3d 70 6f 73 25 2d 62 61 73 65 25 2b 31 0d |L%=pos%-base%+1.| 000293e0 17 50 10 20 20 c9 20 22 6c 61 62 65 6c 22 3a 0d |.P. . "label":.| 000293f0 17 51 18 20 20 6c 6f 6e 67 65 73 74 66 69 65 6c |.Q. longestfiel| 00029400 64 25 3d 64 6c 6d 25 0d 17 52 29 20 20 4c 25 3d |d%=dlm%..R) L%=| 00029410 6c 61 62 75 70 25 2a 6c 61 62 77 69 64 74 68 25 |labup%*labwidth%| 00029420 2b 64 6c 6d 25 2b 4c 6d 61 72 67 69 6e 25 2b 31 |+dlm%+Lmargin%+1| 00029430 0d 17 53 05 cb 0d 17 54 31 f2 65 78 74 65 6e 64 |..S....T1.extend| 00029440 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 |_named_sliding_b| 00029450 6c 6f 63 6b 28 6c 69 6e 65 61 6e 63 68 6f 72 25 |lock(lineanchor%| 00029460 2c 4c 25 2b 38 29 0d 17 55 07 3d 4c 25 0d 17 56 |,L%+8)..U.=L%..V| 00029470 05 3a 0d 17 57 1e dd 20 a4 6e 6f 5f 79 65 73 28 |.:..W.. .no_yes(| 00029480 46 25 2c f8 20 6e 6f 24 2c f8 20 79 65 73 24 29 |F%,. no$,. yes$)| 00029490 0d 17 58 0e ea 20 50 25 2c 56 24 2c 4c 25 0d 17 |..X.. P%,V$,L%..| 000294a0 59 1f 56 24 3d 24 a4 76 61 6c 28 6d 61 69 6e 57 |Y.V$=$.val(mainW| 000294b0 25 2c 66 69 65 6c 64 25 28 46 25 29 29 0d 17 5a |%,field%(F%))..Z| 000294c0 0f 50 25 3d a7 56 24 2c 22 51 22 29 0d 17 5b 0c |.P%=.V$,"Q")..[.| 000294d0 e7 20 50 25 3e 30 20 8c 0d 17 5c 12 20 20 56 24 |. P%>0 ...\. V$| 000294e0 3d c1 56 24 2c 50 25 2b 31 29 0d 17 5d 11 20 20 |=.V$,P%+1)..]. | 000294f0 50 25 3d a7 56 24 2c 22 2c 22 29 0d 17 5e 13 20 |P%=.V$,",")..^. | 00029500 20 6e 6f 24 3d c0 56 24 2c 50 25 2d 31 29 0d 17 | no$=.V$,P%-1)..| 00029510 5f 14 20 20 79 65 73 24 3d c1 56 24 2c 50 25 2b |_. yes$=.V$,P%+| 00029520 31 29 0d 17 60 18 20 20 cc 20 6e 6f 24 3d 22 4e |1)..`. . no$="N| 00029530 22 3a 79 65 73 24 3d 22 59 22 0d 17 61 05 cd 0d |":yes$="Y"..a...| 00029540 17 62 0d 4c 25 3d a9 28 6e 6f 24 29 0d 17 63 1d |.b.L%=.(no$)..c.| 00029550 e7 20 a9 28 79 65 73 24 29 3e 4c 25 20 8c 20 4c |. .(yes$)>L% . L| 00029560 25 3d a9 28 79 65 73 24 29 0d 17 64 07 3d 4c 25 |%=.(yes$)..d.=L%| 00029570 0d 17 65 05 3a 0d 17 66 39 dd 20 f2 68 65 61 70 |..e.:..f9. .heap| 00029580 5f 73 74 6f 72 65 28 61 6e 63 68 6f 72 25 2c f8 |_store(anchor%,.| 00029590 20 73 69 7a 65 25 2c 69 6e 63 25 2c f8 20 70 74 | size%,inc%,. pt| 000295a0 72 25 2c 4c 25 2c 73 74 72 69 6e 67 24 29 0d 17 |r%,L%,string$)..| 000295b0 67 21 e7 20 73 74 72 69 6e 67 24 3c 3e 22 22 20 |g!. string$<>"" | 000295c0 8c 20 4c 25 3d a9 28 73 74 72 69 6e 67 24 29 0d |. L%=.(string$).| 000295d0 17 68 20 e7 20 70 74 72 25 2d 21 61 6e 63 68 6f |.h . ptr%-!ancho| 000295e0 72 25 2b 4c 25 2b 31 3e 73 69 7a 65 25 20 8c 0d |r%+L%+1>size% ..| 000295f0 17 69 11 20 20 73 69 7a 65 25 2b 3d 69 6e 63 25 |.i. size%+=inc%| 00029600 0d 17 6a 30 20 20 f2 65 78 74 65 6e 64 5f 6e 61 |..j0 .extend_na| 00029610 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |med_sliding_bloc| 00029620 6b 28 61 6e 63 68 6f 72 25 2c 73 69 7a 65 25 29 |k(anchor%,size%)| 00029630 0d 17 6b 05 cd 0d 17 6c 33 e7 20 73 74 72 69 6e |..k....l3. strin| 00029640 67 24 3c 3e 22 22 20 8c 20 24 70 74 72 25 3d 73 |g$<>"" . $ptr%=s| 00029650 74 72 69 6e 67 24 3a 70 74 72 25 2b 3d 4c 25 3a |tring$:ptr%+=L%:| 00029660 3f 70 74 72 25 3d 31 30 0d 17 6d 05 e1 0d 17 6e |?ptr%=10..m....n| 00029670 05 3a 0d 17 6f 0f dd 20 f2 73 65 74 5f 76 65 72 |.:..o.. .set_ver| 00029680 74 0d 17 70 19 f2 64 65 73 65 6c 65 63 74 28 70 |t..p..deselect(p| 00029690 72 69 6e 74 57 25 2c 32 33 29 0d 17 71 19 f2 64 |rintW%,23)..q..d| 000296a0 65 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 2c |eselect(printW%,| 000296b0 32 35 29 0d 17 72 19 f2 64 65 73 65 6c 65 63 74 |25)..r..deselect| 000296c0 28 70 72 69 6e 74 57 25 2c 32 36 29 0d 17 73 17 |(printW%,26)..s.| 000296d0 f2 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 2c |.select(printW%,| 000296e0 32 34 29 0d 17 74 12 66 6f 72 6d 61 74 24 3d 22 |24)..t.format$="| 000296f0 76 65 72 74 22 0d 17 75 3f 4c 69 6e 65 73 50 65 |vert"..u?LinesPe| 00029700 72 50 61 67 65 25 3d 28 70 61 67 65 6c 65 6e 67 |rPage%=(pageleng| 00029710 74 68 25 2d 31 30 29 20 81 20 28 6c 69 6e 65 66 |th%-10) . (linef| 00029720 65 65 64 25 2a 28 a9 28 46 6f 72 6d 24 29 20 81 |eed%*(.(Form$) .| 00029730 20 32 29 29 0d 17 76 27 e7 20 4c 69 6e 65 73 50 | 2))..v'. LinesP| 00029740 65 72 50 61 67 65 25 3d 30 20 8c 20 4c 69 6e 65 |erPage%=0 . Line| 00029750 73 50 65 72 50 61 67 65 25 3d 31 0d 17 77 05 e1 |sPerPage%=1..w..| 00029760 0d 17 78 05 3a 0d 17 79 19 dd 20 f2 64 72 61 67 |..x.:..y.. .drag| 00029770 5f 73 65 6c 65 63 74 69 6f 6e 28 66 24 29 0d 17 |_selection(f$)..| 00029780 7a 10 ea 20 46 25 2c 49 25 2c 54 25 2c 46 0d 17 |z.. F%,I%,T%,F..| 00029790 7b 0b 46 3d 8e 28 66 24 29 0d 17 7c 13 70 72 69 |{.F=.(f$)..|.pri| 000297a0 6e 74 6f 72 64 65 72 24 3d be 23 46 0d 17 7d 09 |ntorder$=.#F..}.| 000297b0 54 25 3d 2d 31 0d 17 7e 0c c8 95 20 ac 20 c5 23 |T%=-1..~... . .#| 000297c0 46 0d 17 7f 0b 20 20 54 25 2b 3d 31 0d 17 80 17 |F.... T%+=1....| 000297d0 20 20 70 72 69 6e 74 72 65 6c 24 28 54 25 29 3d | printrel$(T%)=| 000297e0 be 23 46 0d 17 81 05 ce 0d 17 82 12 f2 63 6c 6f |.#F..........clo| 000297f0 73 65 5f 66 69 6c 65 28 46 29 0d 17 83 14 e3 20 |se_file(F)..... | 00029800 46 25 3d 31 20 b8 20 66 69 65 6c 64 73 25 0d 17 |F%=1 . fields%..| 00029810 84 1a 20 20 e7 20 63 68 61 72 74 79 70 65 25 28 |.. . chartype%(| 00029820 46 25 29 3e 34 30 20 8c 0d 17 85 2e 20 20 20 20 |F%)>40 ..... | 00029830 63 6f 6c 25 3d a4 67 65 74 5f 69 63 6f 6e 5f 63 |col%=.get_icon_c| 00029840 6f 6c 73 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 |ols(mainW%,field| 00029850 25 28 46 25 29 29 0d 17 86 45 20 20 20 20 e7 20 |%(F%))...E . | 00029860 28 63 6f 6c 25 20 80 20 25 31 31 31 31 29 3c 32 |(col% . %1111)<2| 00029870 20 8c 20 63 6f 6c 25 3d 28 28 63 6f 6c 25 3e 3e | . col%=((col%>>| 00029880 34 29 20 84 20 28 63 6f 6c 25 3c 3c 34 29 29 20 |4) . (col%<<4)) | 00029890 80 20 25 31 31 31 31 31 31 31 31 0d 17 87 2e 20 |. %11111111.... | 000298a0 20 20 20 f2 73 65 74 5f 69 63 6f 6e 5f 63 6f 6c | .set_icon_col| 000298b0 73 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 |s(mainW%,field%(| 000298c0 46 25 29 2c 63 6f 6c 25 29 0d 17 88 26 20 20 20 |F%),col%)...& | 000298d0 20 cc 20 f2 64 65 73 65 6c 65 63 74 28 6d 61 69 | . .deselect(mai| 000298e0 6e 57 25 2c 66 69 65 6c 64 25 28 46 25 29 29 0d |nW%,field%(F%)).| 000298f0 17 89 07 20 20 cd 0d 17 8a 08 ed 20 46 25 0d 17 |... ...... F%..| 00029900 8b 21 e3 20 49 25 3d 31 20 b8 20 a9 28 70 72 69 |.!. I%=1 . .(pri| 00029910 6e 74 6f 72 64 65 72 24 29 2d 31 20 88 20 32 0d |ntorder$)-1 . 2.| 00029920 17 8c 22 20 20 46 25 3d a4 66 6e 75 6d 28 c1 70 |.." F%=.fnum(.p| 00029930 72 69 6e 74 6f 72 64 65 72 24 2c 49 25 2c 32 29 |rintorder$,I%,2)| 00029940 29 0d 17 8d 1a 20 20 e7 20 63 68 61 72 74 79 70 |).... . chartyp| 00029950 65 25 28 46 25 29 3e 34 30 20 8c 0d 17 8e 2e 20 |e%(F%)>40 ..... | 00029960 20 20 20 63 6f 6c 25 3d a4 67 65 74 5f 69 63 6f | col%=.get_ico| 00029970 6e 5f 63 6f 6c 73 28 6d 61 69 6e 57 25 2c 66 69 |n_cols(mainW%,fi| 00029980 65 6c 64 25 28 46 25 29 29 0d 17 8f 30 20 20 20 |eld%(F%))...0 | 00029990 20 63 6f 6c 25 3d 28 28 63 6f 6c 25 3e 3e 34 29 | col%=((col%>>4)| 000299a0 20 84 20 28 63 6f 6c 25 3c 3c 34 29 29 20 80 20 | . (col%<<4)) . | 000299b0 25 31 31 31 31 31 31 31 31 0d 17 90 2e 20 20 20 |%11111111.... | 000299c0 20 f2 73 65 74 5f 69 63 6f 6e 5f 63 6f 6c 73 28 | .set_icon_cols(| 000299d0 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 25 |mainW%,field%(F%| 000299e0 29 2c 63 6f 6c 25 29 0d 17 91 24 20 20 20 20 cc |),col%)...$ .| 000299f0 20 f2 73 65 6c 65 63 74 28 6d 61 69 6e 57 25 2c | .select(mainW%,| 00029a00 66 69 65 6c 64 25 28 46 25 29 29 0d 17 92 07 20 |field%(F%)).... | 00029a10 20 cd 0d 17 93 08 ed 20 49 25 0d 17 94 16 f2 6c | ...... I%.....l| 00029a20 69 74 28 6d 65 6e 75 25 28 36 29 2c 37 2c b9 29 |it(menu%(6),7,.)| 00029a30 0d 17 95 16 f2 6c 69 74 28 6d 65 6e 75 25 28 36 |.....lit(menu%(6| 00029a40 29 2c 38 2c b9 29 0d 17 96 05 e1 0d 17 97 05 3a |),8,.).........:| 00029a50 0d 17 98 11 dd 20 f2 73 65 6c 65 63 74 5f 61 6c |..... .select_al| 00029a60 6c 0d 17 99 0e ea 20 46 25 2c 54 25 2c 46 24 0d |l..... F%,T%,F$.| 00029a70 17 9a 12 70 72 69 6e 74 6f 72 64 65 72 24 3d 22 |...printorder$="| 00029a80 22 0d 17 9b 14 e3 20 46 25 3d 31 20 b8 20 66 69 |"..... F%=1 . fi| 00029a90 65 6c 64 73 25 0d 17 9c 18 20 20 c8 8e 20 63 68 |elds%.... .. ch| 00029aa0 61 72 74 79 70 65 25 28 46 25 29 20 ca 0d 17 9d |artype%(F%) ....| 00029ab0 19 20 20 20 20 c9 20 34 31 2c 34 32 2c 34 33 2c |. . 41,42,43,| 00029ac0 34 34 2c 34 35 3a 0d 17 9e 2e 20 20 20 20 63 6f |44,45:.... co| 00029ad0 6c 25 3d a4 67 65 74 5f 69 63 6f 6e 5f 63 6f 6c |l%=.get_icon_col| 00029ae0 73 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 |s(mainW%,field%(| 00029af0 46 25 29 29 0d 17 9f 46 20 20 20 20 e7 20 28 63 |F%))...F . (c| 00029b00 6f 6c 25 20 80 20 25 31 31 31 31 29 3e 3d 32 20 |ol% . %1111)>=2 | 00029b10 8c 20 63 6f 6c 25 3d 28 28 63 6f 6c 25 3e 3e 34 |. col%=((col%>>4| 00029b20 29 20 84 20 28 63 6f 6c 25 3c 3c 34 29 29 20 80 |) . (col%<<4)) .| 00029b30 20 25 31 31 31 31 31 31 31 31 0d 17 a0 2e 20 20 | %11111111.... | 00029b40 20 20 f2 73 65 74 5f 69 63 6f 6e 5f 63 6f 6c 73 | .set_icon_cols| 00029b50 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 |(mainW%,field%(F| 00029b60 25 29 2c 63 6f 6c 25 29 0d 17 a1 27 20 20 20 20 |%),col%)...' | 00029b70 46 24 3d c3 7e 28 46 25 29 3a e7 20 a9 28 46 24 |F$=.~(F%):. .(F$| 00029b80 29 3d 31 20 8c 20 46 24 3d 22 30 22 2b 46 24 0d |)=1 . F$="0"+F$.| 00029b90 17 a2 17 20 20 20 20 70 72 69 6e 74 6f 72 64 65 |... printorde| 00029ba0 72 24 2b 3d 46 24 0d 17 a3 18 20 20 20 20 c9 20 |r$+=F$.... . | 00029bb0 30 2c 31 2c 32 2c 34 2c 35 2c 37 2c 38 3a 0d 17 |0,1,2,4,5,7,8:..| 00029bc0 a4 16 20 20 20 20 e7 20 6c 65 6e 25 28 46 25 29 |.. . len%(F%)| 00029bd0 3e 30 20 8c 0d 17 a5 29 20 20 20 20 20 20 46 24 |>0 ....) F$| 00029be0 3d c3 7e 28 46 25 29 3a e7 20 a9 28 46 24 29 3d |=.~(F%):. .(F$)=| 00029bf0 31 20 8c 20 46 24 3d 22 30 22 2b 46 24 0d 17 a6 |1 . F$="0"+F$...| 00029c00 19 20 20 20 20 20 20 70 72 69 6e 74 6f 72 64 65 |. printorde| 00029c10 72 24 2b 3d 46 24 0d 17 a7 24 20 20 20 20 20 20 |r$+=F$...$ | 00029c20 f2 73 65 6c 65 63 74 28 6d 61 69 6e 57 25 2c 66 |.select(mainW%,f| 00029c30 69 65 6c 64 25 28 46 25 29 29 0d 17 a8 09 20 20 |ield%(F%)).... | 00029c40 20 20 cd 0d 17 a9 28 20 20 20 20 c9 20 33 36 2c | ....( . 36,| 00029c50 33 39 2c 34 38 2c 34 39 2c 35 30 2c 35 31 2c 35 |39,48,49,50,51,5| 00029c60 32 2c 35 33 2c 35 35 2c 35 38 3a 0d 17 aa 27 20 |2,53,55,58:...' | 00029c70 20 20 20 46 24 3d c3 7e 28 46 25 29 3a e7 20 a9 | F$=.~(F%):. .| 00029c80 28 46 24 29 3d 31 20 8c 20 46 24 3d 22 30 22 2b |(F$)=1 . F$="0"+| 00029c90 46 24 0d 17 ab 17 20 20 20 20 70 72 69 6e 74 6f |F$.... printo| 00029ca0 72 64 65 72 24 2b 3d 46 24 0d 17 ac 22 20 20 20 |rder$+=F$..." | 00029cb0 20 f2 73 65 6c 65 63 74 28 6d 61 69 6e 57 25 2c | .select(mainW%,| 00029cc0 66 69 65 6c 64 25 28 46 25 29 29 0d 17 ad 1d 20 |field%(F%)).... | 00029cd0 20 20 20 c9 20 33 2c 36 2c 34 36 2c 34 37 2c 35 | . 3,6,46,47,5| 00029ce0 34 2c 35 36 2c 35 37 3a 0d 17 ae 27 20 20 20 20 |4,56,57:...' | 00029cf0 46 24 3d c3 7e 28 46 25 29 3a e7 20 a9 28 46 24 |F$=.~(F%):. .(F$| 00029d00 29 3d 31 20 8c 20 46 24 3d 22 30 22 2b 46 24 0d |)=1 . F$="0"+F$.| 00029d10 17 af 17 20 20 20 20 70 72 69 6e 74 6f 72 64 65 |... printorde| 00029d20 72 24 2b 3d 46 24 0d 17 b0 22 20 20 20 20 f2 73 |r$+=F$..." .s| 00029d30 65 6c 65 63 74 28 6d 61 69 6e 57 25 2c 66 69 65 |elect(mainW%,fie| 00029d40 6c 64 25 28 46 25 29 29 0d 17 b1 22 20 20 20 20 |ld%(F%))..." | 00029d50 f2 65 6e 61 62 6c 65 5f 72 6f 77 28 63 61 6c 63 |.enable_row(calc| 00029d60 72 6f 77 25 3f 46 25 2c b9 29 0d 17 b2 07 20 20 |row%?F%,.).... | 00029d70 cb 0d 17 b3 08 ed 20 46 25 0d 17 b4 16 f2 6c 69 |...... F%.....li| 00029d80 74 28 6d 65 6e 75 25 28 36 29 2c 37 2c b9 29 0d |t(menu%(6),7,.).| 00029d90 17 b5 16 f2 6c 69 74 28 6d 65 6e 75 25 28 36 29 |....lit(menu%(6)| 00029da0 2c 38 2c b9 29 0d 17 b6 05 e1 0d 17 b7 05 3a 0d |,8,.).........:.| 00029db0 17 b8 16 dd 20 f2 63 6c 65 61 72 5f 73 65 6c 65 |.... .clear_sele| 00029dc0 63 74 69 6f 6e 0d 17 b9 0b ea 20 46 25 2c 54 25 |ction..... F%,T%| 00029dd0 0d 17 ba 14 e3 20 46 25 3d 31 20 b8 20 66 69 65 |..... F%=1 . fie| 00029de0 6c 64 73 25 0d 17 bb 18 20 20 c8 8e 20 63 68 61 |lds%.... .. cha| 00029df0 72 74 79 70 65 25 28 46 25 29 20 ca 0d 17 bc 19 |rtype%(F%) .....| 00029e00 20 20 20 20 c9 20 34 31 2c 34 32 2c 34 33 2c 34 | . 41,42,43,4| 00029e10 34 2c 34 35 3a 0d 17 bd 2e 20 20 20 20 63 6f 6c |4,45:.... col| 00029e20 25 3d a4 67 65 74 5f 69 63 6f 6e 5f 63 6f 6c 73 |%=.get_icon_cols| 00029e30 28 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 |(mainW%,field%(F| 00029e40 25 29 29 0d 17 be 45 20 20 20 20 e7 20 28 63 6f |%))...E . (co| 00029e50 6c 25 20 80 20 25 31 31 31 31 29 3c 32 20 8c 20 |l% . %1111)<2 . | 00029e60 63 6f 6c 25 3d 28 28 63 6f 6c 25 3e 3e 34 29 20 |col%=((col%>>4) | 00029e70 84 20 28 63 6f 6c 25 3c 3c 34 29 29 20 80 20 25 |. (col%<<4)) . %| 00029e80 31 31 31 31 31 31 31 31 0d 17 bf 2e 20 20 20 20 |11111111.... | 00029e90 f2 73 65 74 5f 69 63 6f 6e 5f 63 6f 6c 73 28 6d |.set_icon_cols(m| 00029ea0 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 25 29 |ainW%,field%(F%)| 00029eb0 2c 63 6f 6c 25 29 0d 17 c0 56 20 20 20 20 c9 20 |,col%)...V . | 00029ec0 33 2c 36 2c 38 2c 34 36 2c 34 37 2c 35 34 2c 35 |3,6,8,46,47,54,5| 00029ed0 36 2c 35 37 3a f2 65 6e 61 62 6c 65 5f 72 6f 77 |6,57:.enable_row| 00029ee0 28 63 61 6c 63 72 6f 77 25 3f 46 25 2c a3 29 3a |(calcrow%?F%,.):| 00029ef0 f2 64 65 73 65 6c 65 63 74 28 6d 61 69 6e 57 25 |.deselect(mainW%| 00029f00 2c 66 69 65 6c 64 25 28 46 25 29 29 0d 17 c1 26 |,field%(F%))...&| 00029f10 20 20 20 20 7f 3a f2 64 65 73 65 6c 65 63 74 28 | .:.deselect(| 00029f20 6d 61 69 6e 57 25 2c 66 69 65 6c 64 25 28 46 25 |mainW%,field%(F%| 00029f30 29 29 0d 17 c2 07 20 20 cb 0d 17 c3 08 ed 20 46 |)).... ...... F| 00029f40 25 0d 17 c4 12 70 72 69 6e 74 6f 72 64 65 72 24 |%....printorder$| 00029f50 3d 22 22 0d 17 c5 17 e3 20 54 25 3d 30 20 b8 20 |=""..... T%=0 . | 00029f60 4c 61 73 74 54 61 62 6c 65 25 0d 17 c6 16 20 20 |LastTable%.... | 00029f70 70 72 69 6e 74 72 65 6c 24 28 54 25 29 3d 22 22 |printrel$(T%)=""| 00029f80 0d 17 c7 08 ed 20 54 25 0d 17 c8 16 f2 6c 69 74 |..... T%.....lit| 00029f90 28 6d 65 6e 75 25 28 36 29 2c 37 2c a3 29 0d 17 |(menu%(6),7,.)..| 00029fa0 c9 16 f2 6c 69 74 28 6d 65 6e 75 25 28 36 29 2c |...lit(menu%(6),| 00029fb0 38 2c a3 29 0d 17 ca 05 e1 0d 17 cb 05 3a 0d 17 |8,.).........:..| 00029fc0 cc 15 dd 20 f2 64 72 61 67 5f 71 75 65 72 79 28 |... .drag_query(| 00029fd0 66 24 29 0d 17 cd 0e ea 20 46 25 2c 49 25 2c 51 |f$)..... F%,I%,Q| 00029fe0 24 0d 17 ce 1e e7 20 a4 73 65 6c 65 63 74 65 64 |$..... .selected| 00029ff0 28 6b 65 79 70 61 64 57 25 2c 32 32 29 20 8c 0d |(keypadW%,22) ..| 0002a000 17 cf 2c 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 |.., .. "OS_File| 0002a010 22 2c 32 35 35 2c 66 24 2c a4 74 65 78 74 28 6b |",255,f$,.text(k| 0002a020 65 79 70 61 64 57 25 2c 32 39 29 0d 17 d0 1d 20 |eypadW%,29).... | 0002a030 20 f2 73 65 74 5f 63 61 72 65 74 28 6b 65 79 70 | .set_caret(keyp| 0002a040 61 64 57 25 2c 32 39 29 0d 17 d1 1f 20 20 f2 72 |adW%,29).... .r| 0002a050 65 64 72 61 77 5f 69 63 6f 6e 28 6b 65 79 70 61 |edraw_icon(keypa| 0002a060 64 57 25 2c 32 39 29 0d 17 d2 07 20 20 cc 0d 17 |dW%,29).... ...| 0002a070 d3 2a 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 |.* .. "OS_File"| 0002a080 2c 32 35 35 2c 66 24 2c a4 74 65 78 74 28 6d 61 |,255,f$,.text(ma| 0002a090 74 63 68 57 25 2c 30 29 0d 17 d4 1b 20 20 f2 6f |tchW%,0).... .o| 0002a0a0 70 65 6e 5f 77 69 6e 64 6f 77 28 6d 61 74 63 68 |pen_window(match| 0002a0b0 57 25 29 0d 17 d5 1b 20 20 f2 73 65 74 5f 63 61 |W%).... .set_ca| 0002a0c0 72 65 74 28 6d 61 74 63 68 57 25 2c 30 29 0d 17 |ret(matchW%,0)..| 0002a0d0 d6 1d 20 20 f2 72 65 64 72 61 77 5f 69 63 6f 6e |.. .redraw_icon| 0002a0e0 28 6d 61 74 63 68 57 25 2c 30 29 0d 17 d7 05 cd |(matchW%,0).....| 0002a0f0 0d 17 d8 05 e1 0d 17 d9 05 3a 0d 17 da 17 dd 20 |.........:..... | 0002a100 f2 64 72 61 67 5f 6f 70 74 69 6f 6e 73 28 66 24 |.drag_options(f$| 0002a110 29 0d 17 db 13 ea 20 46 2c 49 25 2c 73 65 74 25 |)..... F,I%,set%| 0002a120 2c 69 63 25 0d 17 dc 0b 46 3d 8e 28 66 24 29 0d |,ic%....F=.(f$).| 0002a130 17 dd 07 ea 20 85 0d 17 de 19 ee 20 85 20 ea 3a |.... ...... . .:| 0002a140 f7 20 85 3a f2 65 6e 64 5f 6c 6f 61 64 3a e1 0d |. .:.end_load:..| 0002a150 17 df 08 f7 20 2b 30 0d 17 e0 0f e3 20 49 25 3d |.... +0..... I%=| 0002a160 31 20 b8 20 31 33 0d 17 e1 0b 20 20 f3 20 69 63 |1 . 13.... . ic| 0002a170 25 0d 17 e2 2a 20 20 e8 23 46 2c 73 65 74 25 3a |%...* .#F,set%:| 0002a180 f2 73 65 74 5f 69 63 6f 6e 28 70 72 69 6e 74 57 |.set_icon(printW| 0002a190 25 2c 69 63 25 2c 73 65 74 25 29 0d 17 e3 08 ed |%,ic%,set%).....| 0002a1a0 20 49 25 0d 17 e4 0e e3 20 49 25 3d 31 20 b8 20 | I%..... I%=1 . | 0002a1b0 39 0d 17 e5 0b 20 20 f3 20 69 63 25 0d 17 e6 1d |9.... . ic%....| 0002a1c0 20 20 e8 23 46 2c 24 a4 74 65 78 74 28 70 72 69 | .#F,$.text(pri| 0002a1d0 6e 74 57 25 2c 69 63 25 29 0d 17 e7 1f 20 20 f2 |ntW%,ic%).... .| 0002a1e0 72 65 64 72 61 77 5f 69 63 6f 6e 28 70 72 69 6e |redraw_icon(prin| 0002a1f0 74 57 25 2c 69 63 25 29 0d 17 e8 08 ed 20 49 25 |tW%,ic%)..... I%| 0002a200 0d 17 e9 0e e3 20 49 25 3d 31 20 b8 20 37 0d 17 |..... I%=1 . 7..| 0002a210 ea 0b 20 20 f3 20 69 63 25 0d 17 eb 2a 20 20 e8 |.. . ic%...* .| 0002a220 23 46 2c 73 65 74 25 3a f2 73 65 74 5f 69 63 6f |#F,set%:.set_ico| 0002a230 6e 28 70 72 69 6e 74 57 25 2c 69 63 25 2c 73 65 |n(printW%,ic%,se| 0002a240 74 25 29 0d 17 ec 08 ed 20 49 25 0d 17 ed 0e e3 |t%)..... I%.....| 0002a250 20 49 25 3d 31 20 b8 20 33 0d 17 ee 0b 20 20 f3 | I%=1 . 3.... .| 0002a260 20 69 63 25 0d 17 ef 2a 20 20 e8 23 46 2c 73 65 | ic%...* .#F,se| 0002a270 74 25 3a f2 73 65 74 5f 69 63 6f 6e 28 6c 61 62 |t%:.set_icon(lab| 0002a280 65 6c 57 25 2c 69 63 25 2c 73 65 74 25 29 0d 17 |elW%,ic%,set%)..| 0002a290 f0 08 ed 20 49 25 0d 17 f1 0e e3 20 49 25 3d 31 |... I%..... I%=1| 0002a2a0 20 b8 20 34 0d 17 f2 0b 20 20 f3 20 69 63 25 0d | . 4.... . ic%.| 0002a2b0 17 f3 1d 20 20 e8 23 46 2c 24 a4 74 65 78 74 28 |... .#F,$.text(| 0002a2c0 6c 61 62 65 6c 57 25 2c 69 63 25 29 0d 17 f4 08 |labelW%,ic%)....| 0002a2d0 ed 20 49 25 0d 17 f5 0e e3 20 49 25 3d 31 20 b8 |. I%..... I%=1 .| 0002a2e0 20 33 0d 17 f6 0b 20 20 f3 20 69 63 25 0d 17 f7 | 3.... . ic%...| 0002a2f0 2a 20 20 e8 23 46 2c 73 65 74 25 3a f2 73 65 74 |* .#F,set%:.set| 0002a300 5f 69 63 6f 6e 28 6c 61 62 65 6c 57 25 2c 69 63 |_icon(labelW%,ic| 0002a310 25 2c 73 65 74 25 29 0d 17 f8 08 ed 20 49 25 0d |%,set%)..... I%.| 0002a320 17 f9 12 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 46 |....close_file(F| 0002a330 29 0d 17 fa 32 f2 69 63 6f 6e 5f 62 69 74 28 32 |)...2.icon_bit(2| 0002a340 32 2c 70 72 69 6e 74 57 25 2c 31 35 2c a4 73 65 |2,printW%,15,.se| 0002a350 6c 65 63 74 65 64 28 70 72 69 6e 74 57 25 2c 32 |lected(printW%,2| 0002a360 35 29 29 0d 17 fb 32 f2 69 63 6f 6e 5f 62 69 74 |5))...2.icon_bit| 0002a370 28 32 32 2c 70 72 69 6e 74 57 25 2c 34 35 2c a4 |(22,printW%,45,.| 0002a380 73 65 6c 65 63 74 65 64 28 70 72 69 6e 74 57 25 |selected(printW%| 0002a390 2c 32 35 29 29 0d 17 fc 32 f2 69 63 6f 6e 5f 62 |,25))...2.icon_b| 0002a3a0 69 74 28 32 32 2c 6c 61 62 65 6c 57 25 2c 31 32 |it(22,labelW%,12| 0002a3b0 2c a4 73 65 6c 65 63 74 65 64 28 6c 61 62 65 6c |,.selected(label| 0002a3c0 57 25 2c 31 31 29 29 0d 17 fd 05 3a 0d 17 fe 38 |W%,11))....:...8| 0002a3d0 dc 20 31 2c 32 2c 34 2c 36 2c 37 2c 38 2c 32 33 |. 1,2,4,6,7,8,23| 0002a3e0 2c 32 34 2c 32 35 2c 32 36 2c 33 38 2c 33 39 2c |,24,25,26,38,39,| 0002a3f0 34 31 3a 52 45 4d 20 52 61 64 69 6f 20 62 75 74 |41:REM Radio but| 0002a400 74 6f 6e 73 0d 17 ff 34 dc 20 31 35 2c 31 36 2c |tons...4. 15,16,| 0002a410 31 37 2c 31 38 2c 33 30 2c 33 32 2c 33 34 2c 34 |17,18,30,32,34,4| 0002a420 33 2c 34 35 3a 52 45 4d 20 57 72 69 74 61 62 6c |3,45:REM Writabl| 0002a430 65 20 66 69 65 6c 64 73 0d 18 00 2e dc 20 31 30 |e fields..... 10| 0002a440 2c 31 31 2c 31 32 2c 31 39 2c 32 39 2c 34 30 2c |,11,12,19,29,40,| 0002a450 34 32 3a 52 45 4d 20 4f 70 74 69 6f 6e 20 73 77 |42:REM Option sw| 0002a460 69 74 63 68 65 73 0d 18 01 20 f4 20 49 6e 20 4c |itches... . In L| 0002a470 61 62 65 6c 20 44 65 66 69 6e 69 74 69 6f 6e 20 |abel Definition | 0002a480 77 69 6e 64 6f 77 0d 18 02 1d dc 20 30 2c 31 2c |window..... 0,1,| 0002a490 32 3a 52 45 4d 20 52 61 64 69 6f 20 62 75 74 74 |2:REM Radio butt| 0002a4a0 6f 6e 73 0d 18 03 24 dc 20 34 2c 36 2c 31 30 2c |ons...$. 4,6,10,| 0002a4b0 31 32 3a 52 45 4d 20 57 72 69 74 65 61 62 6c 65 |12:REM Writeable| 0002a4c0 20 66 69 65 6c 64 73 0d 18 04 22 dc 20 31 31 2c | fields...". 11,| 0002a4d0 31 33 2c 31 36 3a 52 45 4d 20 4f 70 74 69 6f 6e |13,16:REM Option| 0002a4e0 20 73 77 69 74 63 68 65 73 0d 18 05 05 3a 0d 18 | switches....:..| 0002a4f0 06 05 e1 0d 18 07 05 3a 0d 18 08 0f dd 20 f2 65 |.......:..... .e| 0002a500 6e 64 5f 6c 6f 61 64 0d 18 09 12 f2 63 6c 6f 73 |nd_load.....clos| 0002a510 65 5f 66 69 6c 65 28 46 29 0d 18 0a 0a c8 8e 20 |e_file(F)...... | 0002a520 9f 20 ca 0d 18 0b 37 20 20 c9 20 32 32 32 3a f2 |. ....7 . 222:.| 0002a530 77 69 6d 70 5f 65 72 72 6f 72 28 b9 2c 66 61 74 |wimp_error(.,fat| 0002a540 61 6c 5f 65 72 72 25 2c 9e 2c 66 24 2b 22 20 6e |al_err%,.,f$+" n| 0002a550 6f 74 20 66 6f 75 6e 64 22 29 0d 18 0c 0a 20 20 |ot found").... | 0002a560 c9 20 36 3a 0d 18 0d 46 20 20 f2 77 69 6d 70 5f |. 6:...F .wimp_| 0002a570 65 72 72 6f 72 28 b9 2c 6d 6f 61 6e 5f 65 72 72 |error(.,moan_err| 0002a580 25 2c 9e 2c 66 24 2b 22 20 69 73 20 74 6f 6f 20 |%,.,f$+" is too | 0002a590 6f 6c 64 20 61 6e 64 20 69 73 20 62 65 69 6e 67 |old and is being| 0002a5a0 20 64 65 6c 65 74 65 64 22 29 0d 18 0e 1e 20 20 | deleted").... | 0002a5b0 c8 99 20 22 4f 53 5f 43 4c 49 22 2c 22 44 65 6c |.. "OS_CLI","Del| 0002a5c0 65 74 65 20 22 2b 66 24 0d 18 0f 50 20 20 e7 20 |ete "+f$...P . | 0002a5d0 a4 6c 65 61 66 28 66 24 29 3d 22 50 72 69 6e 74 |.leaf(f$)="Print| 0002a5e0 4f 70 74 73 22 20 8c 20 f2 64 72 61 67 5f 6f 70 |Opts" . .drag_op| 0002a5f0 74 69 6f 6e 73 28 22 3c 50 62 61 73 65 24 44 69 |tions("<Pbase$Di| 0002a600 72 3e 2e 52 65 73 6f 75 72 63 65 73 2e 50 72 69 |r>.Resources.Pri| 0002a610 6e 74 4f 70 74 73 22 29 0d 18 10 25 20 20 7f 3a |ntOpts")...% .:| 0002a620 f2 77 69 6d 70 5f 65 72 72 6f 72 28 b9 2c 6d 6f |.wimp_error(.,mo| 0002a630 61 6e 5f 65 72 72 25 2c 9e 2c f6 24 29 0d 18 11 |an_err%,.,.$)...| 0002a640 05 cb 0d 18 12 05 e1 0d 18 13 05 3a 0d 18 14 13 |...........:....| 0002a650 dd 20 f2 64 65 73 69 67 6e 5f 66 69 65 6c 64 0d |. .design_field.| 0002a660 18 15 0b ea 20 77 25 2c 68 25 0d 18 16 15 70 6f |.... w%,h%....po| 0002a670 73 78 25 3d 78 25 3a 70 6f 73 79 25 3d 79 25 0d |sx%=x%:posy%=y%.| 0002a680 18 17 33 21 62 6c 6f 63 6b 25 3d 6d 61 69 6e 57 |..3!block%=mainW| 0002a690 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 57 69 |%:.. "Wimp_GetWi| 0002a6a0 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 |ndowState",,bloc| 0002a6b0 6b 25 0d 18 18 1a 78 25 2b 3d 62 6c 6f 63 6b 25 |k%....x%+=block%| 0002a6c0 21 32 30 2d 62 6c 6f 63 6b 25 21 34 0d 18 19 1b |!20-block%!4....| 0002a6d0 79 25 2b 3d 62 6c 6f 63 6b 25 21 32 34 2d 62 6c |y%+=block%!24-bl| 0002a6e0 6f 63 6b 25 21 31 36 0d 18 1a 16 c8 8e 20 62 25 |ock%!16...... b%| 0002a6f0 20 80 20 25 31 31 31 31 31 31 31 20 ca 0d 18 1b | . %1111111 ....| 0002a700 0b 20 20 c9 20 31 36 3a 0d 18 1c 41 20 20 e7 20 |. . 16:...A . | 0002a710 28 69 63 25 20 83 20 32 29 3d 31 20 8c 20 64 72 |(ic% . 2)=1 . dr| 0002a720 61 67 25 3d 36 3a 64 72 61 67 62 75 74 74 25 3d |ag%=6:dragbutt%=| 0002a730 31 36 20 8b 20 64 72 61 67 25 3d 35 3a 64 72 61 |16 . drag%=5:dra| 0002a740 67 62 75 74 74 25 3d 36 34 0d 18 1d 22 20 20 f2 |gbutt%=64..." .| 0002a750 69 6e 69 74 5f 64 72 61 67 28 6d 61 69 6e 57 25 |init_drag(mainW%| 0002a760 2c 69 63 25 2c 64 72 61 67 25 29 0d 18 1e 0a 20 |,ic%,drag%).... | 0002a770 20 c9 20 32 3a 0d 18 1f 12 20 20 24 49 6e 73 54 | . 2:.... $InsT| 0002a780 65 78 74 25 3d 22 22 0d 18 20 33 20 20 f2 64 65 |ext%="".. 3 .de| 0002a790 73 65 6c 65 63 74 28 63 72 65 61 74 65 57 25 2c |select(createW%,| 0002a7a0 a4 73 65 6c 65 63 74 65 64 5f 65 73 67 28 63 72 |.selected_esg(cr| 0002a7b0 65 61 74 65 57 25 2c 31 29 29 0d 18 21 10 20 20 |eateW%,1))..!. | 0002a7c0 e7 20 69 63 25 3e 3d 30 20 8c 0d 18 22 1a 20 20 |. ic%>=0 ...". | 0002a7d0 20 20 f2 6c 69 74 28 6d 65 6e 75 25 28 39 29 2c | .lit(menu%(9),| 0002a7e0 30 2c b9 29 0d 18 23 42 20 20 20 20 21 62 6c 6f |0,.)..#B !blo| 0002a7f0 63 6b 25 3d 6d 61 69 6e 57 25 3a 62 6c 6f 63 6b |ck%=mainW%:block| 0002a800 25 21 34 3d 69 63 25 3a c8 99 20 22 57 69 6d 70 |%!4=ic%:.. "Wimp| 0002a810 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_GetIconState",,| 0002a820 62 6c 6f 63 6b 25 0d 18 24 4d 20 20 20 20 78 25 |block%..$M x%| 0002a830 3d 62 6c 6f 63 6b 25 21 38 3a 79 25 3d 62 6c 6f |=block%!8:y%=blo| 0002a840 63 6b 25 21 31 32 3a 77 25 3d 62 6c 6f 63 6b 25 |ck%!12:w%=block%| 0002a850 21 31 36 2d 62 6c 6f 63 6b 25 21 38 3a 68 25 3d |!16-block%!8:h%=| 0002a860 62 6c 6f 63 6b 25 21 32 30 2d 62 6c 6f 63 6b 25 |block%!20-block%| 0002a870 21 31 32 0d 18 25 24 20 20 20 20 46 69 65 6c 64 |!12..%$ Field| 0002a880 6e 75 6d 62 65 72 25 3d a4 67 65 74 5f 66 69 65 |number%=.get_fie| 0002a890 6c 64 28 69 63 25 29 0d 18 26 25 20 20 20 20 74 |ld(ic%)..&% t| 0002a8a0 79 70 65 25 3d 63 68 61 72 74 79 70 65 25 28 46 |ype%=chartype%(F| 0002a8b0 69 65 6c 64 6e 75 6d 62 65 72 25 29 0d 18 27 12 |ieldnumber%)..'.| 0002a8c0 20 20 20 20 c8 8e 20 74 79 70 65 25 20 ca 0d 18 | .. type% ...| 0002a8d0 28 1e 20 20 20 20 20 20 c9 20 30 2c 31 2c 32 2c |(. . 0,1,2,| 0002a8e0 33 2c 34 2c 35 2c 36 2c 37 2c 38 3a 0d 18 29 1e |3,4,5,6,7,8:..).| 0002a8f0 20 20 20 20 20 20 f2 73 65 6c 65 63 74 28 63 72 | .select(cr| 0002a900 65 61 74 65 57 25 2c 32 31 29 0d 18 2a 1e 20 20 |eateW%,21)..*. | 0002a910 20 20 20 20 f2 73 65 74 5f 6c 69 6d 69 74 73 28 | .set_limits(| 0002a920 31 2c 30 2c 38 2c 38 29 0d 18 2b 1b 20 20 20 20 |1,0,8,8)..+. | 0002a930 20 20 c9 20 33 36 2c 33 37 2c 33 38 2c 33 39 2c | . 36,37,38,39,| 0002a940 34 30 3a 0d 18 2c 1e 20 20 20 20 20 20 f2 73 65 |40:..,. .se| 0002a950 6c 65 63 74 28 63 72 65 61 74 65 57 25 2c 32 32 |lect(createW%,22| 0002a960 29 0d 18 2d 22 20 20 20 20 20 20 f2 73 65 74 5f |)..-" .set_| 0002a970 6c 69 6d 69 74 73 28 33 36 2c 33 36 2c 34 30 2c |limits(36,36,40,| 0002a980 31 31 29 0d 18 2e 1b 20 20 20 20 20 20 c9 20 34 |11).... . 4| 0002a990 31 2c 34 32 2c 34 33 2c 34 34 2c 34 35 3a 0d 18 |1,42,43,44,45:..| 0002a9a0 2f 1e 20 20 20 20 20 20 f2 73 65 6c 65 63 74 28 |/. .select(| 0002a9b0 63 72 65 61 74 65 57 25 2c 32 34 29 0d 18 30 22 |createW%,24)..0"| 0002a9c0 20 20 20 20 20 20 f2 73 65 74 5f 6c 69 6d 69 74 | .set_limit| 0002a9d0 73 28 34 31 2c 34 31 2c 34 35 2c 31 34 29 0d 18 |s(41,41,45,14)..| 0002a9e0 31 36 20 20 20 20 20 20 c9 20 34 36 2c 34 37 2c |16 . 46,47,| 0002a9f0 34 38 2c 34 39 2c 35 30 2c 35 31 2c 35 32 2c 35 |48,49,50,51,52,5| 0002aa00 33 2c 35 34 2c 35 35 2c 35 36 2c 35 37 2c 35 38 |3,54,55,56,57,58| 0002aa10 2c 35 39 3a 0d 18 32 1e 20 20 20 20 20 20 f2 73 |,59:..2. .s| 0002aa20 65 6c 65 63 74 28 63 72 65 61 74 65 57 25 2c 33 |elect(createW%,3| 0002aa30 35 29 0d 18 33 22 20 20 20 20 20 20 f2 73 65 74 |5)..3" .set| 0002aa40 5f 6c 69 6d 69 74 73 28 34 36 2c 34 36 2c 35 39 |_limits(46,46,59| 0002aa50 2c 31 36 29 0d 18 34 0c 20 20 20 20 20 20 7f 3a |,16)..4. .:| 0002aa60 0d 18 35 1e 20 20 20 20 20 20 f2 73 65 6c 65 63 |..5. .selec| 0002aa70 74 28 63 72 65 61 74 65 57 25 2c 32 33 29 0d 18 |t(createW%,23)..| 0002aa80 36 20 20 20 20 20 20 20 f2 73 65 74 5f 6c 69 6d |6 .set_lim| 0002aa90 69 74 73 28 39 2c 39 2c 33 35 2c 31 39 29 0d 18 |its(9,9,35,19)..| 0002aaa0 37 09 20 20 20 20 cb 0d 18 38 18 20 20 20 20 66 |7. ...8. f| 0002aab0 69 65 6c 64 74 79 70 65 25 3d 74 79 70 65 25 0d |ieldtype%=type%.| 0002aac0 18 39 52 20 20 20 20 f2 74 69 63 6b 5f 6f 6e 65 |.9R .tick_one| 0002aad0 28 6d 65 6e 75 25 28 6d 65 6e 75 6e 75 6d 62 65 |(menu%(menunumbe| 0002aae0 72 25 29 2c 30 2c 6c 61 73 74 74 79 70 65 25 2d |r%),0,lasttype%-| 0002aaf0 66 69 72 73 74 74 79 70 65 25 2c 66 69 65 6c 64 |firsttype%,field| 0002ab00 74 79 70 65 25 2d 66 69 72 73 74 74 79 70 65 25 |type%-firsttype%| 0002ab10 29 0d 18 3a 34 20 20 20 20 24 46 74 69 74 6c 65 |)..:4 $Ftitle| 0002ab20 54 65 78 74 25 3d 22 4d 6f 64 69 66 79 20 66 69 |Text%="Modify fi| 0002ab30 65 6c 64 20 22 2b c3 28 46 69 65 6c 64 6e 75 6d |eld "+.(Fieldnum| 0002ab40 62 65 72 25 29 0d 18 3b 35 20 20 20 20 24 44 65 |ber%)..;5 $De| 0002ab50 73 63 54 65 78 74 25 3d 24 a4 74 65 78 74 28 6d |scText%=$.text(m| 0002ab60 61 69 6e 57 25 2c 64 65 73 63 25 28 46 69 65 6c |ainW%,desc%(Fiel| 0002ab70 64 6e 75 6d 62 65 72 25 29 29 0d 18 3c 24 20 20 |dnumber%))..<$ | 0002ab80 20 20 24 54 61 67 54 65 78 74 25 3d 54 61 67 24 | $TagText%=Tag$| 0002ab90 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 0d 18 |(Fieldnumber%)..| 0002aba0 3d 27 20 20 20 20 24 4c 65 6e 54 65 78 74 25 3d |=' $LenText%=| 0002abb0 c3 28 6c 65 6e 25 28 46 69 65 6c 64 6e 75 6d 62 |.(len%(Fieldnumb| 0002abc0 65 72 25 29 29 0d 18 3e 24 20 20 20 20 24 56 61 |er%))..>$ $Va| 0002abd0 6c 54 65 78 74 25 3d 76 6e 61 6d 65 24 28 66 69 |lText%=vname$(fi| 0002abe0 65 6c 64 74 79 70 65 25 29 0d 18 3f 6c 20 20 20 |eldtype%)..?l | 0002abf0 20 e7 20 66 69 78 25 28 46 69 65 6c 64 6e 75 6d | . fix%(Fieldnum| 0002ac00 62 65 72 25 29 3e 30 20 8c 20 24 46 69 78 70 74 |ber%)>0 . $Fixpt| 0002ac10 25 3d c3 28 66 69 78 25 28 46 69 65 6c 64 6e 75 |%=.(fix%(Fieldnu| 0002ac20 6d 62 65 72 25 29 29 3a f2 73 65 6c 65 63 74 28 |mber%)):.select(| 0002ac30 63 72 65 61 74 65 57 25 2c 31 34 29 20 8b 20 f2 |createW%,14) . .| 0002ac40 64 65 73 65 6c 65 63 74 28 63 72 65 61 74 65 57 |deselect(createW| 0002ac50 25 2c 31 34 29 0d 18 40 3a 20 20 20 20 f2 69 63 |%,14)..@: .ic| 0002ac60 6f 6e 5f 62 69 74 28 32 32 2c 63 72 65 61 74 65 |on_bit(22,create| 0002ac70 57 25 2c 31 33 2c 28 a4 73 65 6c 65 63 74 65 64 |W%,13,(.selected| 0002ac80 28 63 72 65 61 74 65 57 25 2c 31 34 29 29 29 0d |(createW%,14))).| 0002ac90 18 41 3f 20 20 20 20 f2 69 63 6f 6e 5f 62 69 74 |.A? .icon_bit| 0002aca0 28 32 32 2c 63 72 65 61 74 65 57 25 2c 31 34 2c |(22,createW%,14,| 0002acb0 28 66 69 65 6c 64 74 79 70 65 25 3d 33 20 84 20 |(fieldtype%=3 . | 0002acc0 66 69 65 6c 64 74 79 70 65 25 3d 36 29 29 0d 18 |fieldtype%=6))..| 0002acd0 42 23 20 20 20 20 f2 69 63 6f 6e 5f 62 69 74 28 |B# .icon_bit(| 0002ace0 32 32 2c 63 72 65 61 74 65 57 25 2c 31 38 2c a3 |22,createW%,18,.| 0002acf0 29 0d 18 43 5b 20 20 20 20 f2 69 63 6f 6e 5f 62 |)..C[ .icon_b| 0002ad00 69 74 28 32 32 2c 63 72 65 61 74 65 57 25 2c 36 |it(22,createW%,6| 0002ad10 2c 28 66 69 65 6c 64 74 79 70 65 25 3c 39 20 84 |,(fieldtype%<9 .| 0002ad20 20 66 69 65 6c 64 74 79 70 65 25 3d 34 36 20 84 | fieldtype%=46 .| 0002ad30 20 66 69 65 6c 64 74 79 70 65 25 3d 34 37 29 20 | fieldtype%=47) | 0002ad40 80 20 ac 20 61 64 6a 75 73 74 25 29 0d 18 44 2b |. . adjust%)..D+| 0002ad50 20 20 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 | .icon_bit(22| 0002ad60 2c 63 72 65 61 74 65 57 25 2c 33 30 2c ac 20 61 |,createW%,30,. a| 0002ad70 64 6a 75 73 74 25 29 0d 18 45 23 20 20 20 20 f2 |djust%)..E# .| 0002ad80 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 72 65 61 |icon_bit(22,crea| 0002ad90 74 65 57 25 2c 32 39 2c b9 29 0d 18 46 40 20 20 |teW%,29,.)..F@ | 0002ada0 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 | .icon_bit(22,c| 0002adb0 72 65 61 74 65 57 25 2c 31 35 2c 28 66 69 65 6c |reateW%,15,(fiel| 0002adc0 64 74 79 70 65 25 3d 33 20 84 20 66 69 65 6c 64 |dtype%=3 . field| 0002add0 74 79 70 65 25 3d 34 37 29 29 0d 18 47 30 20 20 |type%=47))..G0 | 0002ade0 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 | .icon_bit(22,c| 0002adf0 72 65 61 74 65 57 25 2c 32 35 2c 28 66 69 65 6c |reateW%,25,(fiel| 0002ae00 64 74 79 70 65 25 3d 33 29 29 0d 18 48 2a 20 20 |dtype%=3))..H* | 0002ae10 20 20 43 24 3d 63 61 6c 63 24 28 46 69 65 6c 64 | C$=calc$(Field| 0002ae20 6e 75 6d 62 65 72 25 29 3a 50 25 3d a7 43 24 2c |number%):P%=.C$,| 0002ae30 22 7c 22 29 0d 18 49 38 20 20 20 20 e7 20 50 25 |"|")..I8 . P%| 0002ae40 3e 30 20 8c 20 24 6d 69 6e 74 65 78 74 25 3d c0 |>0 . $mintext%=.| 0002ae50 43 24 2c 50 25 2d 31 29 3a 24 6d 61 78 74 65 78 |C$,P%-1):$maxtex| 0002ae60 74 25 3d c1 43 24 2c 50 25 2b 31 29 0d 18 4a 14 |t%=.C$,P%+1)..J.| 0002ae70 20 20 20 20 e3 20 49 25 3d 32 31 20 b8 20 32 34 | . I%=21 . 24| 0002ae80 0d 18 4b 2d 20 20 20 20 20 20 f2 69 63 6f 6e 5f |..K- .icon_| 0002ae90 62 69 74 28 32 32 2c 63 72 65 61 74 65 57 25 2c |bit(22,createW%,| 0002aea0 49 25 2c ac 20 61 64 6a 75 73 74 25 29 0d 18 4c |I%,. adjust%)..L| 0002aeb0 0c 20 20 20 20 ed 20 49 25 0d 18 4d 2b 20 20 20 |. . I%..M+ | 0002aec0 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 72 | .icon_bit(22,cr| 0002aed0 65 61 74 65 57 25 2c 33 35 2c ac 20 61 64 6a 75 |eateW%,35,. adju| 0002aee0 73 74 25 29 0d 18 4e 2b 20 20 20 20 f2 69 63 6f |st%)..N+ .ico| 0002aef0 6e 5f 62 69 74 28 32 32 2c 63 72 65 61 74 65 57 |n_bit(22,createW| 0002af00 25 2c 33 39 2c ac 20 61 64 6a 75 73 74 25 29 0d |%,39,. adjust%).| 0002af10 18 4f 2b 20 20 20 20 f2 69 63 6f 6e 5f 62 69 74 |.O+ .icon_bit| 0002af20 28 32 32 2c 63 72 65 61 74 65 57 25 2c 34 30 2c |(22,createW%,40,| 0002af30 ac 20 61 64 6a 75 73 74 25 29 0d 18 50 09 20 20 |. adjust%)..P. | 0002af40 20 20 cc 0d 18 51 22 20 20 20 20 f2 6c 69 74 28 | ...Q" .lit(| 0002af50 6d 65 6e 75 25 28 39 29 2c 30 2c ac 20 61 64 6a |menu%(9),0,. adj| 0002af60 75 73 74 25 29 0d 18 52 1c 20 20 20 20 f2 73 65 |ust%)..R. .se| 0002af70 6c 65 63 74 28 63 72 65 61 74 65 57 25 2c 32 31 |lect(createW%,21| 0002af80 29 0d 18 53 1c 20 20 20 20 f2 73 65 74 5f 6c 69 |)..S. .set_li| 0002af90 6d 69 74 73 28 31 2c 30 2c 38 2c 38 29 0d 18 54 |mits(1,0,8,8)..T| 0002afa0 2e 20 20 20 20 24 46 74 69 74 6c 65 54 65 78 74 |. $FtitleText| 0002afb0 25 3d 22 4e 65 77 20 66 69 65 6c 64 20 22 2b c3 |%="New field "+.| 0002afc0 28 66 69 65 6c 64 73 25 2b 31 29 0d 18 55 2f 20 |(fields%+1)..U/ | 0002afd0 20 20 20 24 44 65 73 63 54 65 78 74 25 3d 22 22 | $DescText%=""| 0002afe0 3a 24 54 61 67 54 65 78 74 25 3d 22 22 3a 24 4c |:$TagText%="":$L| 0002aff0 65 6e 54 65 78 74 25 3d 22 22 0d 18 56 2d 20 20 |enText%=""..V- | 0002b000 20 20 24 46 69 78 70 74 25 3d 22 32 22 3a 24 6d | $Fixpt%="2":$m| 0002b010 69 6e 74 65 78 74 25 3d 22 22 3a 24 6d 61 78 74 |intext%="":$maxt| 0002b020 65 78 74 25 3d 22 22 0d 18 57 1e 20 20 20 20 f2 |ext%=""..W. .| 0002b030 64 65 73 65 6c 65 63 74 28 63 72 65 61 74 65 57 |deselect(createW| 0002b040 25 2c 31 34 29 0d 18 58 23 20 20 20 20 f2 69 63 |%,14)..X# .ic| 0002b050 6f 6e 5f 62 69 74 28 32 32 2c 63 72 65 61 74 65 |on_bit(22,create| 0002b060 57 25 2c 31 33 2c a3 29 0d 18 59 23 20 20 20 20 |W%,13,.)..Y# | 0002b070 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 72 65 |.icon_bit(22,cre| 0002b080 61 74 65 57 25 2c 31 34 2c a3 29 0d 18 5a 23 20 |ateW%,14,.)..Z# | 0002b090 20 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c | .icon_bit(22,| 0002b0a0 63 72 65 61 74 65 57 25 2c 31 35 2c a3 29 0d 18 |createW%,15,.)..| 0002b0b0 5b 23 20 20 20 20 f2 69 63 6f 6e 5f 62 69 74 28 |[# .icon_bit(| 0002b0c0 32 32 2c 63 72 65 61 74 65 57 25 2c 32 35 2c a3 |22,createW%,25,.| 0002b0d0 29 0d 18 5c 23 20 20 20 20 f2 69 63 6f 6e 5f 62 |)..\# .icon_b| 0002b0e0 69 74 28 32 32 2c 63 72 65 61 74 65 57 25 2c 32 |it(22,createW%,2| 0002b0f0 39 2c a3 29 0d 18 5d 23 20 20 20 20 f2 69 63 6f |9,.)..]# .ico| 0002b100 6e 5f 62 69 74 28 32 32 2c 63 72 65 61 74 65 57 |n_bit(22,createW| 0002b110 25 2c 33 30 2c a3 29 0d 18 5e 23 20 20 20 20 f2 |%,30,.)..^# .| 0002b120 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 72 65 61 |icon_bit(22,crea| 0002b130 74 65 57 25 2c 33 39 2c a3 29 0d 18 5f 23 20 20 |teW%,39,.).._# | 0002b140 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 63 | .icon_bit(22,c| 0002b150 72 65 61 74 65 57 25 2c 34 30 2c a3 29 0d 18 60 |reateW%,40,.)..`| 0002b160 2b 20 20 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 |+ .icon_bit(2| 0002b170 32 2c 63 72 65 61 74 65 57 25 2c 31 38 2c ac 20 |2,createW%,18,. | 0002b180 61 64 6a 75 73 74 25 29 0d 18 61 07 20 20 cd 0d |adjust%)..a. ..| 0002b190 18 62 39 20 20 24 62 6f 78 58 25 3d c3 28 78 25 |.b9 $boxX%=.(x%| 0002b1a0 29 3a 24 62 6f 78 59 25 3d c3 28 79 25 29 3a 24 |):$boxY%=.(y%):$| 0002b1b0 62 6f 78 57 25 3d c3 28 77 25 29 3a 24 62 6f 78 |boxW%=.(w%):$box| 0002b1c0 48 25 3d c3 28 68 25 29 0d 18 63 1d 20 20 f2 63 |H%=.(h%)..c. .c| 0002b1d0 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 63 72 65 61 |lose_window(crea| 0002b1e0 74 65 57 25 29 0d 18 64 2c 20 20 f2 73 68 6f 77 |teW%)..d, .show| 0002b1f0 5f 6d 65 6e 75 28 6d 65 6e 75 25 28 39 29 2c 70 |_menu(menu%(9),p| 0002b200 6f 73 78 25 2d 36 34 2c 70 6f 73 79 25 2d 32 30 |osx%-64,posy%-20| 0002b210 29 0d 18 65 30 20 20 c9 20 36 34 3a f2 69 6e 69 |)..e0 . 64:.ini| 0002b220 74 5f 64 72 61 67 28 6d 61 69 6e 57 25 2c 69 63 |t_drag(mainW%,ic| 0002b230 25 2c 35 29 3a 64 72 61 67 62 75 74 74 25 3d 36 |%,5):dragbutt%=6| 0002b240 34 0d 18 66 05 cb 0d 18 67 05 e1 0d 18 68 05 3a |4..f....g....h.:| 0002b250 0d 18 69 28 dd 20 f2 72 65 6d 6f 76 65 5f 66 69 |..i(. .remove_fi| 0002b260 65 6c 64 28 46 69 65 6c 64 25 2c 63 6f 6e 25 2c |eld(Field%,con%,| 0002b270 f8 20 43 61 6c 63 24 29 0d 18 6a 08 ea 20 46 25 |. Calc$)..j.. F%| 0002b280 0d 18 6b 27 e7 20 63 6f 6e 25 20 8c 20 e7 20 a4 |..k'. con% . . .| 0002b290 63 6f 6e 66 69 72 6d 28 a4 6d 73 67 28 35 33 29 |confirm(.msg(53)| 0002b2a0 29 3d a3 20 8c 20 e1 0d 18 6c 29 21 62 6c 6f 63 |)=. . ...l)!bloc| 0002b2b0 6b 25 3d 6d 61 69 6e 57 25 3a 62 6c 6f 63 6b 25 |k%=mainW%:block%| 0002b2c0 21 34 3d 64 65 73 63 25 28 46 69 65 6c 64 25 29 |!4=desc%(Field%)| 0002b2d0 0d 18 6d 22 c8 99 20 22 57 69 6d 70 5f 47 65 74 |..m".. "Wimp_Get| 0002b2e0 49 63 6f 6e 53 74 61 74 65 22 2c 2c 62 6c 6f 63 |IconState",,bloc| 0002b2f0 6b 25 0d 18 6e 22 70 6f 73 78 25 3d 62 6c 6f 63 |k%..n"posx%=bloc| 0002b300 6b 25 21 38 3a 70 6f 73 79 25 3d 62 6c 6f 63 6b |k%!8:posy%=block| 0002b310 25 21 31 32 0d 18 6f 20 c8 99 20 22 57 69 6d 70 |%!12..o .. "Wimp| 0002b320 5f 44 65 6c 65 74 65 49 63 6f 6e 22 2c 2c 62 6c |_DeleteIcon",,bl| 0002b330 6f 63 6b 25 0d 18 70 38 62 6c 6f 63 6b 25 21 34 |ock%..p8block%!4| 0002b340 3d 66 69 65 6c 64 25 28 46 69 65 6c 64 25 29 3a |=field%(Field%):| 0002b350 c8 99 20 22 57 69 6d 70 5f 44 65 6c 65 74 65 49 |.. "Wimp_DeleteI| 0002b360 63 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 18 71 0e |con",,block%..q.| 0002b370 66 69 65 6c 64 73 25 2d 3d 31 0d 18 72 17 43 61 |fields%-=1..r.Ca| 0002b380 6c 63 24 3d 63 61 6c 63 24 28 46 69 65 6c 64 25 |lc$=calc$(Field%| 0002b390 29 0d 18 73 19 e3 20 46 25 3d 46 69 65 6c 64 25 |)..s.. F%=Field%| 0002b3a0 20 b8 20 66 69 65 6c 64 73 25 0d 18 74 a3 20 20 | . fields%..t. | 0002b3b0 64 65 73 63 25 28 46 25 29 3d 64 65 73 63 25 28 |desc%(F%)=desc%(| 0002b3c0 46 25 2b 31 29 3a 66 69 65 6c 64 25 28 46 25 29 |F%+1):field%(F%)| 0002b3d0 3d 66 69 65 6c 64 25 28 46 25 2b 31 29 3a 54 61 |=field%(F%+1):Ta| 0002b3e0 67 24 28 46 25 29 3d 54 61 67 24 28 46 25 2b 31 |g$(F%)=Tag$(F%+1| 0002b3f0 29 3a 6c 65 6e 25 28 46 25 29 3d 6c 65 6e 25 28 |):len%(F%)=len%(| 0002b400 46 25 2b 31 29 3a 63 68 61 72 74 79 70 65 25 28 |F%+1):chartype%(| 0002b410 46 25 29 3d 63 68 61 72 74 79 70 65 25 28 46 25 |F%)=chartype%(F%| 0002b420 2b 31 29 3a 66 69 78 25 28 46 25 29 3d 66 69 78 |+1):fix%(F%)=fix| 0002b430 25 28 46 25 2b 31 29 3a 63 61 6c 63 24 28 46 25 |%(F%+1):calc$(F%| 0002b440 29 3d 63 61 6c 63 24 28 46 25 2b 31 29 0d 18 75 |)=calc$(F%+1)..u| 0002b450 08 ed 20 46 25 0d 18 76 12 21 62 6c 6f 63 6b 25 |.. F%..v.!block%| 0002b460 3d 6d 61 69 6e 57 25 0d 18 77 24 c8 99 20 22 57 |=mainW%..w$.. "W| 0002b470 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 |imp_GetWindowSta| 0002b480 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 18 78 3b 70 |te",,block%..x;p| 0002b490 6f 73 78 25 2d 3d 62 6c 6f 63 6b 25 21 32 30 2d |osx%-=block%!20-| 0002b4a0 62 6c 6f 63 6b 25 21 34 3a 70 6f 73 79 25 2d 3d |block%!4:posy%-=| 0002b4b0 62 6c 6f 63 6b 25 21 32 34 2d 62 6c 6f 63 6b 25 |block%!24-block%| 0002b4c0 21 31 36 2d 34 38 0d 18 79 42 c8 99 20 22 57 69 |!16-48..yB.. "Wi| 0002b4d0 6d 70 5f 46 6f 72 63 65 52 65 64 72 61 77 22 2c |mp_ForceRedraw",| 0002b4e0 2d 31 2c 62 6c 6f 63 6b 25 21 34 2c 62 6c 6f 63 |-1,block%!4,bloc| 0002b4f0 6b 25 21 38 2c 62 6c 6f 63 6b 25 21 31 32 2c 62 |k%!8,block%!12,b| 0002b500 6c 6f 63 6b 25 21 31 36 0d 18 7a 05 e1 0d 18 7b |lock%!16..z....{| 0002b510 05 3a 0d 18 7c 28 dd 20 f2 63 72 65 61 74 65 5f |.:..|(. .create_| 0002b520 66 69 65 6c 64 28 42 65 66 6f 72 65 25 2c 78 25 |field(Before%,x%| 0002b530 2c 79 25 2c 43 61 6c 63 24 29 0d 18 7d 44 ea 20 |,y%,Calc$)..}D. | 0002b540 44 65 73 63 25 2c 46 69 65 6c 64 25 2c 46 25 2c |Desc%,Field%,F%,| 0002b550 74 61 67 24 2c 4c 65 6e 25 2c 43 68 61 72 25 2c |tag$,Len%,Char%,| 0002b560 46 25 2c 4c 25 2c 4c 46 25 2c 78 25 2c 79 25 2c |F%,L%,LF%,x%,y%,| 0002b570 77 69 64 74 68 25 2c 68 65 69 67 68 74 25 0d 18 |width%,height%..| 0002b580 7e 39 e7 20 66 69 65 6c 64 73 25 3d 4d 61 78 46 |~9. fields%=MaxF| 0002b590 69 65 6c 64 73 25 20 8c 20 f2 73 6f 66 74 65 72 |ields% . .softer| 0002b5a0 72 6f 72 28 c3 28 4d 61 78 46 69 65 6c 64 73 25 |ror(.(MaxFields%| 0002b5b0 29 2c 32 33 29 3a e1 0d 18 7f 36 e7 20 24 44 65 |),23):....6. $De| 0002b5c0 73 63 54 65 78 74 25 3d 22 22 20 80 20 24 54 61 |scText%="" . $Ta| 0002b5d0 67 54 65 78 74 25 3d 22 22 20 80 20 66 69 65 6c |gText%="" . fiel| 0002b5e0 64 74 79 70 65 25 3c 3d 38 20 8c 20 e1 0d 18 80 |dtype%<=8 . ....| 0002b5f0 25 4c 25 3d a9 28 24 44 65 73 63 54 65 78 74 25 |%L%=.($DescText%| 0002b600 29 3a 4c 46 25 3d bb 28 24 4c 65 6e 54 65 78 74 |):LF%=.($LenText| 0002b610 25 29 0d 18 81 23 e7 20 4c 46 25 3e 32 34 36 20 |%)...#. LF%>246 | 0002b620 8c 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 2c |. .softerror("",| 0002b630 36 34 29 3a e1 0d 18 82 40 78 25 3d bb 28 24 62 |64):....@x%=.($b| 0002b640 6f 78 58 25 29 3a 79 25 3d bb 28 24 62 6f 78 59 |oxX%):y%=.($boxY| 0002b650 25 29 3a 77 69 64 74 68 25 3d bb 28 24 62 6f 78 |%):width%=.($box| 0002b660 57 25 29 3a 68 65 69 67 68 74 25 3d bb 28 24 62 |W%):height%=.($b| 0002b670 6f 78 48 25 29 0d 18 83 13 c8 8e 20 66 69 65 6c |oxH%)...... fiel| 0002b680 64 74 79 70 65 25 20 ca 0d 18 84 11 20 20 c9 20 |dtype% ..... . | 0002b690 33 39 2c 34 30 2c 35 39 3a 0d 18 85 0b 20 20 4c |39,40,59:.... L| 0002b6a0 46 25 3d 30 0d 18 86 1c 20 20 e7 20 77 69 64 74 |F%=0.... . widt| 0002b6b0 68 25 3d 30 20 8c 20 77 69 64 74 68 25 3d 34 38 |h%=0 . width%=48| 0002b6c0 0d 18 87 1e 20 20 e7 20 68 65 69 67 68 74 25 3d |.... . height%=| 0002b6d0 30 20 8c 20 68 65 69 67 68 74 25 3d 34 38 0d 18 |0 . height%=48..| 0002b6e0 88 1c 20 20 c9 20 34 31 2c 34 32 2c 34 33 2c 34 |.. . 41,42,43,4| 0002b6f0 34 2c 34 35 3a 4c 46 25 3d 31 0d 18 89 15 20 20 |4,45:LF%=1.... | 0002b700 c9 20 38 2c 34 38 2c 35 30 3a 4c 46 25 3d 38 0d |. 8,48,50:LF%=8.| 0002b710 18 8a 11 20 20 c9 20 34 39 3a 4c 46 25 3d 31 35 |... . 49:LF%=15| 0002b720 0d 18 8b 11 20 20 c9 20 35 31 3a 4c 46 25 3d 31 |.... . 51:LF%=1| 0002b730 30 0d 18 8c 14 20 20 c9 20 35 32 2c 35 38 3a 4c |0.... . 52,58:L| 0002b740 46 25 3d 32 34 0d 18 8d 13 20 20 c9 20 35 33 2c |F%=24.... . 53,| 0002b750 35 35 3a 4c 46 25 3d 33 0d 18 8e 13 20 20 c9 20 |55:LF%=3.... . | 0002b760 35 34 2c 35 36 3a 4c 46 25 3d 32 0d 18 8f 10 20 |54,56:LF%=2.... | 0002b770 20 c9 20 35 37 3a 4c 46 25 3d 34 0d 18 90 05 cb | . 57:LF%=4.....| 0002b780 0d 18 91 30 e7 20 4c 46 25 3e 30 20 80 20 24 54 |...0. LF%>0 . $T| 0002b790 61 67 54 65 78 74 25 3d 22 22 20 8c 20 f2 73 6f |agText%="" . .so| 0002b7a0 66 74 65 72 72 6f 72 28 22 22 2c 31 36 29 3a e1 |fterror("",16):.| 0002b7b0 0d 18 92 0b f5 20 46 25 2b 3d 31 0d 18 93 25 fd |..... F%+=1...%.| 0002b7c0 20 24 54 61 67 54 65 78 74 25 3d 54 61 67 24 28 | $TagText%=Tag$(| 0002b7d0 46 25 29 20 84 20 46 25 3e 66 69 65 6c 64 73 25 |F%) . F%>fields%| 0002b7e0 0d 18 94 37 e7 20 46 25 3c 3d 66 69 65 6c 64 73 |...7. F%<=fields| 0002b7f0 25 20 80 20 24 54 61 67 54 65 78 74 25 3c 3e 22 |% . $TagText%<>"| 0002b800 22 20 8c 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 |" . .softerror("| 0002b810 22 2c 32 30 29 3a e1 0d 18 95 38 66 69 65 6c 64 |",20):....8field| 0002b820 73 25 2b 3d 31 3a 54 61 67 24 28 66 69 65 6c 64 |s%+=1:Tag$(field| 0002b830 73 25 29 3d 24 54 61 67 54 65 78 74 25 3a 6c 65 |s%)=$TagText%:le| 0002b840 6e 25 28 66 69 65 6c 64 73 25 29 3d 4c 46 25 0d |n%(fields%)=LF%.| 0002b850 18 96 20 e7 20 77 69 64 74 68 25 3d 30 20 80 20 |.. . width%=0 . | 0002b860 24 54 61 67 54 65 78 74 25 3c 3e 22 22 20 8c 0d |$TagText%<>"" ..| 0002b870 18 97 47 20 20 e7 20 6c 65 6e 25 28 66 69 65 6c |..G . len%(fiel| 0002b880 64 73 25 29 3c 37 30 20 8c 20 77 69 64 74 68 25 |ds%)<70 . width%| 0002b890 3d 6c 65 6e 25 28 66 69 65 6c 64 73 25 29 2a 31 |=len%(fields%)*1| 0002b8a0 36 2b 31 36 20 8b 20 77 69 64 74 68 25 3d 37 30 |6+16 . width%=70| 0002b8b0 2a 31 36 2b 31 36 0d 18 98 05 cd 0d 18 99 27 e7 |*16+16........'.| 0002b8c0 20 68 65 69 67 68 74 25 3d 30 20 80 20 77 69 64 | height%=0 . wid| 0002b8d0 74 68 25 3e 30 20 8c 20 68 65 69 67 68 74 25 3d |th%>0 . height%=| 0002b8e0 34 38 0d 18 9a 21 63 68 61 72 74 79 70 65 25 28 |48...!chartype%(| 0002b8f0 66 69 65 6c 64 73 25 29 3d 66 69 65 6c 64 74 79 |fields%)=fieldty| 0002b900 70 65 25 0d 18 9b 49 e7 20 a4 73 65 6c 65 63 74 |pe%...I. .select| 0002b910 65 64 28 63 72 65 61 74 65 57 25 2c 31 34 29 20 |ed(createW%,14) | 0002b920 8c 20 66 69 78 25 28 66 69 65 6c 64 73 25 29 3d |. fix%(fields%)=| 0002b930 bb 28 24 46 69 78 70 74 25 29 20 8b 20 66 69 78 |.($Fixpt%) . fix| 0002b940 25 28 66 69 65 6c 64 73 25 29 3d 30 0d 18 9c 44 |%(fields%)=0...D| 0002b950 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c |.extend_named_sl| 0002b960 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 66 6f 72 6d |iding_block(form| 0002b970 61 6e 63 68 6f 72 25 2c 46 70 74 72 25 2d 21 66 |anchor%,Fptr%-!f| 0002b980 6f 72 6d 61 6e 63 68 6f 72 25 2b 4c 25 2b 36 29 |ormanchor%+L%+6)| 0002b990 0d 18 9d 6b 64 65 73 63 25 28 66 69 65 6c 64 73 |...kdesc%(fields| 0002b9a0 25 29 3d a4 63 72 65 61 74 65 5f 69 63 6f 6e 28 |%)=.create_icon(| 0002b9b0 6d 61 69 6e 57 25 2c 78 25 2d 4c 25 2a 31 36 2d |mainW%,x%-L%*16-| 0002b9c0 31 36 2c 79 25 2c 4c 25 2a 31 36 2b 38 2c 34 38 |16,y%,L%*16+8,48| 0002b9d0 2c 28 77 69 6e 62 61 63 6b 25 3c 3c 32 38 29 2b |,(winback%<<28)+| 0002b9e0 26 37 30 31 36 37 33 31 2c 22 22 2c 46 70 74 72 |&7016731,"",Fptr| 0002b9f0 25 2c 68 61 6e 64 25 2c 4c 25 29 0d 18 9e 21 24 |%,hand%,L%)...!$| 0002ba00 46 70 74 72 25 3d 24 44 65 73 63 54 65 78 74 25 |Fptr%=$DescText%| 0002ba10 3a 46 70 74 72 25 2b 3d 4c 25 2b 31 0d 18 9f 0d |:Fptr%+=L%+1....| 0002ba20 24 46 70 74 72 25 3d 22 22 0d 18 a0 13 c8 8e 20 |$Fptr%=""...... | 0002ba30 66 69 65 6c 64 74 79 70 65 25 20 ca 0d 18 a1 0a |fieldtype% .....| 0002ba40 20 20 c9 20 33 3a 0d 18 a2 1e 20 20 6d 69 6e 24 | . 3:.... min$| 0002ba50 3d 24 a4 74 65 78 74 28 63 72 65 61 74 65 57 25 |=$.text(createW%| 0002ba60 2c 31 35 29 0d 18 a3 1e 20 20 6d 61 78 24 3d 24 |,15).... max$=$| 0002ba70 a4 74 65 78 74 28 63 72 65 61 74 65 57 25 2c 32 |.text(createW%,2| 0002ba80 35 29 0d 18 a4 4c 20 20 e7 20 6d 69 6e 24 3c 3e |5)...L . min$<>| 0002ba90 22 22 20 84 20 6d 61 78 24 3c 3e 22 22 20 8c 20 |"" . max$<>"" . | 0002baa0 63 61 6c 63 24 28 66 69 65 6c 64 73 25 29 3d 6d |calc$(fields%)=m| 0002bab0 69 6e 24 2b 22 7c 22 2b 6d 61 78 24 3a 63 61 6c |in$+"|"+max$:cal| 0002bac0 63 24 28 30 29 3d 22 4c 4f 41 44 45 44 22 0d 18 |c$(0)="LOADED"..| 0002bad0 a5 0b 20 20 c9 20 34 37 3a 0d 18 a6 33 20 20 6d |.. . 47:...3 m| 0002bae0 69 6e 24 3d 24 a4 74 65 78 74 28 63 72 65 61 74 |in$=$.text(creat| 0002baf0 65 57 25 2c 31 35 29 3a e7 20 6d 69 6e 24 3d 22 |eW%,15):. min$="| 0002bb00 22 20 8c 20 6d 69 6e 24 3d 22 30 22 0d 18 a7 34 |" . min$="0"...4| 0002bb10 20 20 63 61 6c 63 24 28 66 69 65 6c 64 73 25 29 | calc$(fields%)| 0002bb20 3d 6d 69 6e 24 2b 22 7c 22 2b 6d 69 6e 24 3a 63 |=min$+"|"+min$:c| 0002bb30 61 6c 63 24 28 30 29 3d 22 4c 4f 41 44 45 44 22 |alc$(0)="LOADED"| 0002bb40 0d 18 a8 05 cb 0d 18 a9 13 c8 8e 20 66 69 65 6c |........... fiel| 0002bb50 64 74 79 70 65 25 20 ca 0d 18 aa 51 20 20 c9 20 |dtype% ....Q . | 0002bb60 30 2c 31 2c 32 2c 33 2c 34 2c 35 2c 36 2c 37 2c |0,1,2,3,4,5,6,7,| 0002bb70 38 2c 33 39 2c 34 30 2c 34 36 2c 34 37 2c 34 38 |8,39,40,46,47,48| 0002bb80 2c 34 39 2c 35 30 2c 35 31 2c 35 32 2c 35 33 2c |,49,50,51,52,53,| 0002bb90 35 34 2c 35 35 2c 35 36 2c 35 37 3a 76 61 6c 70 |54,55,56,57:valp| 0002bba0 74 72 25 3d 68 61 6e 64 25 0d 18 ab 23 20 20 7f |tr%=hand%...# .| 0002bbb0 3a 76 61 6c 70 74 72 25 3d 68 76 61 6c 69 64 25 |:valptr%=hvalid%| 0002bbc0 28 66 69 65 6c 64 74 79 70 65 25 29 0d 18 ac 05 |(fieldtype%)....| 0002bbd0 cb 0d 18 ad 2d f2 69 63 6f 6e 5f 64 65 73 69 67 |....-.icon_desig| 0002bbe0 6e 28 66 69 65 6c 64 74 79 70 65 25 2c 31 2c 77 |n(fieldtype%,1,w| 0002bbf0 69 64 74 68 25 2c 68 65 69 67 68 74 25 29 0d 18 |idth%,height%)..| 0002bc00 ae 58 66 69 65 6c 64 25 28 66 69 65 6c 64 73 25 |.Xfield%(fields%| 0002bc10 29 3d a4 63 72 65 61 74 65 5f 69 63 6f 6e 28 6d |)=.create_icon(m| 0002bc20 61 69 6e 57 25 2c 78 25 2c 79 25 2c 77 69 64 74 |ainW%,x%,y%,widt| 0002bc30 68 25 2c 68 65 69 67 68 74 25 2c 69 66 6c 61 67 |h%,height%,iflag| 0002bc40 73 25 2c 22 22 2c 46 70 74 72 25 2c 76 61 6c 70 |s%,"",Fptr%,valp| 0002bc50 74 72 25 2c 34 29 0d 18 af 47 e7 20 66 69 65 6c |tr%,4)...G. fiel| 0002bc60 64 74 79 70 65 25 3d 34 30 20 8c 20 52 66 25 28 |dtype%=40 . Rf%(| 0002bc70 66 69 65 6c 64 73 25 29 3d a4 63 72 65 61 74 65 |fields%)=.create| 0002bc80 5f 61 6e 63 68 6f 72 28 22 50 69 63 74 75 72 65 |_anchor("Picture| 0002bc90 22 2b c3 28 66 69 65 6c 64 73 25 29 29 0d 18 b0 |"+.(fields%))...| 0002bca0 0c 46 70 74 72 25 2b 3d 35 0d 18 b1 4c f2 72 65 |.Fptr%+=5...L.re| 0002bcb0 64 72 61 77 5f 69 63 6f 6e 28 6d 61 69 6e 57 25 |draw_icon(mainW%| 0002bcc0 2c 64 65 73 63 25 28 66 69 65 6c 64 73 25 29 29 |,desc%(fields%))| 0002bcd0 3a f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 6d 61 |:.redraw_icon(ma| 0002bce0 69 6e 57 25 2c 66 69 65 6c 64 25 28 66 69 65 6c |inW%,field%(fiel| 0002bcf0 64 73 25 29 29 0d 18 b2 44 e7 20 42 65 66 6f 72 |ds%))...D. Befor| 0002bd00 65 25 3c 66 69 65 6c 64 73 25 20 80 20 42 65 66 |e%<fields% . Bef| 0002bd10 6f 72 65 25 3e 30 20 8c 20 f2 72 65 5f 73 65 71 |ore%>0 . .re_seq| 0002bd20 75 65 6e 63 65 28 66 69 65 6c 64 73 25 2c 42 65 |uence(fields%,Be| 0002bd30 66 6f 72 65 25 2c 2d 31 29 0d 18 b3 05 e1 0d 18 |fore%,-1).......| 0002bd40 b4 05 3a 0d 18 b5 17 dd 20 f2 61 64 6a 75 73 74 |..:..... .adjust| 0002bd50 5f 66 69 65 6c 64 28 62 25 29 0d 18 b6 11 ea 20 |_field(b%)..... | 0002bd60 44 70 74 72 25 2c 46 70 74 72 25 0d 18 b7 24 c8 |Dptr%,Fptr%...$.| 0002bd70 99 20 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 |. "Wimp_GetPoint| 0002bd80 65 72 49 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 25 0d |erInfo",,block%.| 0002bd90 18 b8 20 6e 65 77 78 25 3d 21 62 6c 6f 63 6b 25 |.. newx%=!block%| 0002bda0 3a 6e 65 77 79 25 3d 62 6c 6f 63 6b 25 21 34 0d |:newy%=block%!4.| 0002bdb0 18 b9 23 46 69 65 6c 64 6e 75 6d 62 65 72 25 3d |..#Fieldnumber%=| 0002bdc0 a4 67 65 74 5f 66 69 65 6c 64 28 66 69 63 6f 6e |.get_field(ficon| 0002bdd0 25 29 0d 18 ba 16 e7 20 28 66 69 63 6f 6e 25 20 |%)..... (ficon% | 0002bde0 83 20 32 29 3d 30 20 8c 0d 18 bb 43 20 20 21 62 |. 2)=0 ....C !b| 0002bdf0 6c 6f 63 6b 25 3d 6d 61 69 6e 57 25 3a 62 6c 6f |lock%=mainW%:blo| 0002be00 63 6b 25 21 34 3d 66 69 63 6f 6e 25 3a c8 99 20 |ck%!4=ficon%:.. | 0002be10 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 |"Wimp_GetIconSta| 0002be20 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 18 bc 2e 20 |te",,block%.... | 0002be30 20 44 70 74 72 25 3d 62 6c 6f 63 6b 25 21 32 38 | Dptr%=block%!28| 0002be40 3a 44 65 73 63 24 3d 24 44 70 74 72 25 3a 4c 25 |:Desc$=$Dptr%:L%| 0002be50 3d a9 28 44 65 73 63 24 29 0d 18 bd 22 20 20 c8 |=.(Desc$)..." .| 0002be60 99 20 22 57 69 6d 70 5f 44 65 6c 65 74 65 49 63 |. "Wimp_DeleteIc| 0002be70 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 18 be 26 20 |on",,block%...& | 0002be80 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e | .. "Wimp_GetWin| 0002be90 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b |dowState",,block| 0002bea0 25 0d 18 bf 2d 20 20 78 25 3d 62 6c 6f 63 6b 25 |%...- x%=block%| 0002beb0 21 32 30 2d 62 6c 6f 63 6b 25 21 34 2b 6e 65 77 |!20-block%!4+new| 0002bec0 78 25 2d 6f 6c 64 78 25 2b 6d 69 6e 78 25 0d 18 |x%-oldx%+minx%..| 0002bed0 c0 2e 20 20 79 25 3d 62 6c 6f 63 6b 25 21 32 34 |.. y%=block%!24| 0002bee0 2d 62 6c 6f 63 6b 25 21 31 36 2b 6d 69 6e 79 25 |-block%!16+miny%| 0002bef0 2b 6e 65 77 79 25 2d 6f 6c 64 79 25 0d 18 c1 5b |+newy%-oldy%...[| 0002bf00 20 20 64 65 73 63 25 28 46 69 65 6c 64 6e 75 6d | desc%(Fieldnum| 0002bf10 62 65 72 25 29 3d a4 63 72 65 61 74 65 5f 69 63 |ber%)=.create_ic| 0002bf20 6f 6e 28 6d 61 69 6e 57 25 2c 78 25 2c 79 25 2c |on(mainW%,x%,y%,| 0002bf30 4c 25 2a 31 36 2b 38 2c 34 38 2c 26 31 37 30 31 |L%*16+8,48,&1701| 0002bf40 36 37 33 31 2c 22 22 2c 44 70 74 72 25 2c 68 61 |6731,"",Dptr%,ha| 0002bf50 6e 64 25 2c 4c 25 29 0d 18 c2 07 20 20 cc 0d 18 |nd%,L%).... ...| 0002bf60 c3 43 20 20 21 62 6c 6f 63 6b 25 3d 6d 61 69 6e |.C !block%=main| 0002bf70 57 25 3a 62 6c 6f 63 6b 25 21 34 3d 66 69 63 6f |W%:block%!4=fico| 0002bf80 6e 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 |n%:.. "Wimp_GetI| 0002bf90 63 6f 6e 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b |conState",,block| 0002bfa0 25 0d 18 c4 15 20 20 46 70 74 72 25 3d 62 6c 6f |%.... Fptr%=blo| 0002bfb0 63 6b 25 21 32 38 0d 18 c5 0d 20 20 c8 8e 20 62 |ck%!28.... .. b| 0002bfc0 25 20 ca 0d 18 c6 0d 20 20 20 20 c9 20 31 36 3a |% ..... . 16:| 0002bfd0 0d 18 c7 24 20 20 20 20 c8 99 20 22 57 69 6d 70 |...$ .. "Wimp| 0002bfe0 5f 44 65 6c 65 74 65 49 63 6f 6e 22 2c 2c 62 6c |_DeleteIcon",,bl| 0002bff0 6f 63 6b 25 0d 18 c8 28 20 20 20 20 c8 99 20 22 |ock%...( .. "| 0002c000 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 |Wimp_GetWindowSt| 0002c010 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 18 c9 23 |ate",,block%...#| 0002c020 20 20 20 20 78 25 3d 62 6c 6f 63 6b 25 21 32 30 | x%=block%!20| 0002c030 2d 62 6c 6f 63 6b 25 21 34 2b 6d 69 6e 78 25 0d |-block%!4+minx%.| 0002c040 18 ca 30 20 20 20 20 79 25 3d 62 6c 6f 63 6b 25 |..0 y%=block%| 0002c050 21 32 34 2d 62 6c 6f 63 6b 25 21 31 36 2b 6d 69 |!24-block%!16+mi| 0002c060 6e 79 25 2b 6e 65 77 79 25 2d 6f 6c 64 79 25 0d |ny%+newy%-oldy%.| 0002c070 18 cb 46 20 20 20 20 77 69 64 74 68 25 3d 6d 61 |..F width%=ma| 0002c080 78 78 25 2d 6d 69 6e 78 25 2b 6e 65 77 78 25 2d |xx%-minx%+newx%-| 0002c090 6f 6c 64 78 25 3a 68 65 69 67 68 74 25 3d 6d 61 |oldx%:height%=ma| 0002c0a0 78 79 25 2d 6d 69 6e 79 25 2b 6f 6c 64 79 25 2d |xy%-miny%+oldy%-| 0002c0b0 6e 65 77 79 25 0d 18 cc 0d 20 20 20 20 c9 20 36 |newy%.... . 6| 0002c0c0 34 3a 0d 18 cd 47 20 20 20 20 21 62 6c 6f 63 6b |4:...G !block| 0002c0d0 25 3d 6d 61 69 6e 57 25 3a 62 6c 6f 63 6b 25 21 |%=mainW%:block%!| 0002c0e0 34 3d 66 69 63 6f 6e 25 2d 31 3a c8 99 20 22 57 |4=ficon%-1:.. "W| 0002c0f0 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 |imp_GetIconState| 0002c100 22 2c 2c 62 6c 6f 63 6b 25 0d 18 ce 30 20 20 20 |",,block%...0 | 0002c110 20 44 70 74 72 25 3d 62 6c 6f 63 6b 25 21 32 38 | Dptr%=block%!28| 0002c120 3a 44 65 73 63 24 3d 24 44 70 74 72 25 3a 4c 25 |:Desc$=$Dptr%:L%| 0002c130 3d a9 28 44 65 73 63 24 29 0d 18 cf 24 20 20 20 |=.(Desc$)...$ | 0002c140 20 c8 99 20 22 57 69 6d 70 5f 44 65 6c 65 74 65 | .. "Wimp_Delete| 0002c150 49 63 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 18 d0 |Icon",,block%...| 0002c160 43 20 20 20 20 21 62 6c 6f 63 6b 25 3d 6d 61 69 |C !block%=mai| 0002c170 6e 57 25 3a 62 6c 6f 63 6b 25 21 34 3d 66 69 63 |nW%:block%!4=fic| 0002c180 6f 6e 25 3a c8 99 20 22 57 69 6d 70 5f 44 65 6c |on%:.. "Wimp_Del| 0002c190 65 74 65 49 63 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 |eteIcon",,block%| 0002c1a0 0d 18 d1 28 20 20 20 20 c8 99 20 22 57 69 6d 70 |...( .. "Wimp| 0002c1b0 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 |_GetWindowState"| 0002c1c0 2c 2c 62 6c 6f 63 6b 25 0d 18 d2 38 20 20 20 20 |,,block%...8 | 0002c1d0 78 25 3d 62 6c 6f 63 6b 25 21 32 30 2d 62 6c 6f |x%=block%!20-blo| 0002c1e0 63 6b 25 21 34 2b 6e 65 77 78 25 2d 6f 6c 64 78 |ck%!4+newx%-oldx| 0002c1f0 25 2b 6d 69 6e 78 25 2d 4c 25 2a 31 36 2d 31 36 |%+minx%-L%*16-16| 0002c200 0d 18 d3 30 20 20 20 20 79 25 3d 62 6c 6f 63 6b |...0 y%=block| 0002c210 25 21 32 34 2d 62 6c 6f 63 6b 25 21 31 36 2b 6d |%!24-block%!16+m| 0002c220 69 6e 79 25 2b 6e 65 77 79 25 2d 6f 6c 64 79 25 |iny%+newy%-oldy%| 0002c230 0d 18 d4 6b 20 20 20 20 64 65 73 63 25 28 46 69 |...k desc%(Fi| 0002c240 65 6c 64 6e 75 6d 62 65 72 25 29 3d a4 63 72 65 |eldnumber%)=.cre| 0002c250 61 74 65 5f 69 63 6f 6e 28 6d 61 69 6e 57 25 2c |ate_icon(mainW%,| 0002c260 78 25 2c 79 25 2c 4c 25 2a 31 36 2b 38 2c 34 38 |x%,y%,L%*16+8,48| 0002c270 2c 28 77 69 6e 62 61 63 6b 25 3c 3c 32 38 29 2b |,(winback%<<28)+| 0002c280 26 37 30 31 36 37 33 31 2c 22 22 2c 44 70 74 72 |&7016731,"",Dptr| 0002c290 25 2c 68 61 6e 64 25 2c 4c 25 29 0d 18 d5 28 20 |%,hand%,L%)...( | 0002c2a0 20 20 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 57 | .. "Wimp_GetW| 0002c2b0 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c 6f |indowState",,blo| 0002c2c0 63 6b 25 0d 18 d6 2f 20 20 20 20 78 25 3d 62 6c |ck%.../ x%=bl| 0002c2d0 6f 63 6b 25 21 32 30 2d 62 6c 6f 63 6b 25 21 34 |ock%!20-block%!4| 0002c2e0 2b 6e 65 77 78 25 2d 6f 6c 64 78 25 2b 6d 69 6e |+newx%-oldx%+min| 0002c2f0 78 25 0d 18 d7 30 20 20 20 20 79 25 3d 62 6c 6f |x%...0 y%=blo| 0002c300 63 6b 25 21 32 34 2d 62 6c 6f 63 6b 25 21 31 36 |ck%!24-block%!16| 0002c310 2b 6d 69 6e 79 25 2b 6e 65 77 79 25 2d 6f 6c 64 |+miny%+newy%-old| 0002c320 79 25 0d 18 d8 2e 20 20 20 20 77 69 64 74 68 25 |y%.... width%| 0002c330 3d 6d 61 78 78 25 2d 6d 69 6e 78 25 3a 68 65 69 |=maxx%-minx%:hei| 0002c340 67 68 74 25 3d 6d 61 78 79 25 2d 6d 69 6e 79 25 |ght%=maxy%-miny%| 0002c350 0d 18 d9 07 20 20 cb 0d 18 da 28 20 20 66 69 65 |.... ....( fie| 0002c360 6c 64 74 79 70 65 25 3d 63 68 61 72 74 79 70 65 |ldtype%=chartype| 0002c370 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 0d |%(Fieldnumber%).| 0002c380 18 db 15 20 20 c8 8e 20 66 69 65 6c 64 74 79 70 |... .. fieldtyp| 0002c390 65 25 20 ca 0d 18 dc 56 20 20 20 20 c9 20 30 2c |e% ....V . 0,| 0002c3a0 31 2c 32 2c 33 2c 34 2c 35 2c 36 2c 37 2c 38 2c |1,2,3,4,5,6,7,8,| 0002c3b0 33 39 2c 34 30 2c 34 36 2c 34 37 2c 34 38 2c 34 |39,40,46,47,48,4| 0002c3c0 39 2c 35 30 2c 35 31 2c 35 32 2c 35 33 2c 35 34 |9,50,51,52,53,54| 0002c3d0 2c 35 35 2c 35 36 2c 35 37 2c 35 38 3a 76 61 6c |,55,56,57,58:val| 0002c3e0 70 74 72 25 3d 68 61 6e 64 25 0d 18 dd 21 20 20 |ptr%=hand%...! | 0002c3f0 20 20 c9 20 35 39 3a 76 61 6c 70 74 72 25 3d 21 | . 59:valptr%=!| 0002c400 6c 6f 67 6f 61 6e 63 68 6f 72 25 0d 18 de 25 20 |logoanchor%...% | 0002c410 20 20 20 7f 3a 76 61 6c 70 74 72 25 3d 68 76 61 | .:valptr%=hva| 0002c420 6c 69 64 25 28 66 69 65 6c 64 74 79 70 65 25 29 |lid%(fieldtype%)| 0002c430 0d 18 df 07 20 20 cb 0d 18 e0 2f 20 20 f2 69 63 |.... ..../ .ic| 0002c440 6f 6e 5f 64 65 73 69 67 6e 28 66 69 65 6c 64 74 |on_design(fieldt| 0002c450 79 70 65 25 2c 31 2c 77 69 64 74 68 25 2c 68 65 |ype%,1,width%,he| 0002c460 69 67 68 74 25 29 0d 18 e1 5f 20 20 66 69 65 6c |ight%)..._ fiel| 0002c470 64 25 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 |d%(Fieldnumber%)| 0002c480 3d a4 63 72 65 61 74 65 5f 69 63 6f 6e 28 6d 61 |=.create_icon(ma| 0002c490 69 6e 57 25 2c 78 25 2c 79 25 2c 77 69 64 74 68 |inW%,x%,y%,width| 0002c4a0 25 2c 68 65 69 67 68 74 25 2c 69 66 6c 61 67 73 |%,height%,iflags| 0002c4b0 25 2c 22 22 2c 46 70 74 72 25 2c 76 61 6c 70 74 |%,"",Fptr%,valpt| 0002c4c0 72 25 2c 34 29 0d 18 e2 53 20 20 e7 20 66 69 65 |r%,4)...S . fie| 0002c4d0 6c 64 74 79 70 65 25 3d 34 30 20 8c 20 52 66 25 |ldtype%=40 . Rf%| 0002c4e0 28 46 69 65 6c 64 6e 75 6d 62 65 72 25 29 3d a4 |(Fieldnumber%)=.| 0002c4f0 63 72 65 61 74 65 5f 61 6e 63 68 6f 72 28 22 50 |create_anchor("P| 0002c500 69 63 74 75 72 65 22 2b c3 28 46 69 65 6c 64 6e |icture"+.(Fieldn| 0002c510 75 6d 62 65 72 25 29 29 0d 18 e3 05 cd 0d 18 e4 |umber%))........| 0002c520 40 24 62 6f 78 58 25 3d c3 28 78 25 29 3a 24 62 |@$boxX%=.(x%):$b| 0002c530 6f 78 59 25 3d c3 28 79 25 29 3a 24 62 6f 78 57 |oxY%=.(y%):$boxW| 0002c540 25 3d c3 28 77 69 64 74 68 25 29 3a 24 62 6f 78 |%=.(width%):$box| 0002c550 48 25 3d c3 28 68 65 69 67 68 74 25 29 0d 18 e5 |H%=.(height%)...| 0002c560 12 21 62 6c 6f 63 6b 25 3d 6d 61 69 6e 57 25 0d |.!block%=mainW%.| 0002c570 18 e6 24 c8 99 20 22 57 69 6d 70 5f 47 65 74 57 |..$.. "Wimp_GetW| 0002c580 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c 6f |indowState",,blo| 0002c590 63 6b 25 0d 18 e7 42 c8 99 20 22 57 69 6d 70 5f |ck%...B.. "Wimp_| 0002c5a0 46 6f 72 63 65 52 65 64 72 61 77 22 2c 2d 31 2c |ForceRedraw",-1,| 0002c5b0 62 6c 6f 63 6b 25 21 34 2c 62 6c 6f 63 6b 25 21 |block%!4,block%!| 0002c5c0 38 2c 62 6c 6f 63 6b 25 21 31 32 2c 62 6c 6f 63 |8,block%!12,bloc| 0002c5d0 6b 25 21 31 36 0d 18 e8 05 e1 0d 18 e9 05 3a 0d |k%!16.........:.| 0002c5e0 18 ea 1b dd 20 f2 73 77 61 70 5f 66 69 65 6c 64 |.... .swap_field| 0002c5f0 73 28 46 31 25 2c 46 32 25 29 0d 18 eb 1c e7 20 |s(F1%,F2%)..... | 0002c600 46 32 25 3e 30 20 80 20 46 32 25 3c 3d 66 69 65 |F2%>0 . F2%<=fie| 0002c610 6c 64 73 25 20 8c 0d 18 ec 1e 20 20 c8 94 20 64 |lds% ..... .. d| 0002c620 65 73 63 25 28 46 31 25 29 2c 64 65 73 63 25 28 |esc%(F1%),desc%(| 0002c630 46 32 25 29 0d 18 ed 1c 20 20 c8 94 20 54 61 67 |F2%).... .. Tag| 0002c640 24 28 46 31 25 29 2c 54 61 67 24 28 46 32 25 29 |$(F1%),Tag$(F2%)| 0002c650 0d 18 ee 20 20 20 c8 94 20 66 69 65 6c 64 25 28 |... .. field%(| 0002c660 46 31 25 29 2c 66 69 65 6c 64 25 28 46 32 25 29 |F1%),field%(F2%)| 0002c670 0d 18 ef 1c 20 20 c8 94 20 6c 65 6e 25 28 46 31 |.... .. len%(F1| 0002c680 25 29 2c 6c 65 6e 25 28 46 32 25 29 0d 18 f0 26 |%),len%(F2%)...&| 0002c690 20 20 c8 94 20 63 68 61 72 74 79 70 65 25 28 46 | .. chartype%(F| 0002c6a0 31 25 29 2c 63 68 61 72 74 79 70 65 25 28 46 32 |1%),chartype%(F2| 0002c6b0 25 29 0d 18 f1 1c 20 20 c8 94 20 66 69 78 25 28 |%).... .. fix%(| 0002c6c0 46 31 25 29 2c 66 69 78 25 28 46 32 25 29 0d 18 |F1%),fix%(F2%)..| 0002c6d0 f2 1e 20 20 c8 94 20 63 61 6c 63 24 28 46 31 25 |.. .. calc$(F1%| 0002c6e0 29 2c 63 61 6c 63 24 28 46 32 25 29 0d 18 f3 1d |),calc$(F2%)....| 0002c6f0 20 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 | .close_window(| 0002c700 63 72 65 61 74 65 57 25 29 0d 18 f4 05 cd 0d 18 |createW%).......| 0002c710 f5 05 e1 0d 18 f6 05 3a 0d 18 f7 1e dd 20 f2 72 |.......:..... .r| 0002c720 65 5f 73 65 71 75 65 6e 63 65 28 46 31 25 2c 46 |e_sequence(F1%,F| 0002c730 32 25 2c 5a 25 29 0d 18 f8 77 44 25 3d 64 65 73 |2%,Z%)...wD%=des| 0002c740 63 25 28 46 31 25 29 3a 54 24 3d 54 61 67 24 28 |c%(F1%):T$=Tag$(| 0002c750 46 31 25 29 3a 46 25 3d 66 69 65 6c 64 25 28 46 |F1%):F%=field%(F| 0002c760 31 25 29 3a 4c 25 3d 6c 65 6e 25 28 46 31 25 29 |1%):L%=len%(F1%)| 0002c770 3a 43 25 3d 63 68 61 72 74 79 70 65 25 28 46 31 |:C%=chartype%(F1| 0002c780 25 29 3a 66 25 3d 66 69 78 25 28 46 31 25 29 3a |%):f%=fix%(F1%):| 0002c790 e7 20 43 61 6c 63 24 3d 22 22 20 8c 20 43 61 6c |. Calc$="" . Cal| 0002c7a0 63 24 3d 63 61 6c 63 24 28 46 31 25 29 0d 18 f9 |c$=calc$(F1%)...| 0002c7b0 1a e3 20 49 25 3d 46 31 25 2b 5a 25 20 b8 20 46 |.. I%=F1%+Z% . F| 0002c7c0 32 25 20 88 20 5a 25 0d 18 fa aa 20 20 64 65 73 |2% . Z%.... des| 0002c7d0 63 25 28 49 25 2d 5a 25 29 3d 64 65 73 63 25 28 |c%(I%-Z%)=desc%(| 0002c7e0 49 25 29 3a 54 61 67 24 28 49 25 2d 5a 25 29 3d |I%):Tag$(I%-Z%)=| 0002c7f0 54 61 67 24 28 49 25 29 3a 66 69 65 6c 64 25 28 |Tag$(I%):field%(| 0002c800 49 25 2d 5a 25 29 3d 66 69 65 6c 64 25 28 49 25 |I%-Z%)=field%(I%| 0002c810 29 3a 6c 65 6e 25 28 49 25 2d 5a 25 29 3d 6c 65 |):len%(I%-Z%)=le| 0002c820 6e 25 28 49 25 29 3a 63 68 61 72 74 79 70 65 25 |n%(I%):chartype%| 0002c830 28 49 25 2d 5a 25 29 3d 63 68 61 72 74 79 70 65 |(I%-Z%)=chartype| 0002c840 25 28 49 25 29 3a 66 69 78 25 28 49 25 2d 5a 25 |%(I%):fix%(I%-Z%| 0002c850 29 3d 66 69 78 25 28 49 25 29 3a 63 61 6c 63 24 |)=fix%(I%):calc$| 0002c860 28 49 25 2d 5a 25 29 3d 63 61 6c 63 24 28 49 25 |(I%-Z%)=calc$(I%| 0002c870 29 0d 18 fb 08 ed 20 49 25 0d 18 fc 6a 64 65 73 |)..... I%...jdes| 0002c880 63 25 28 46 32 25 29 3d 44 25 3a 54 61 67 24 28 |c%(F2%)=D%:Tag$(| 0002c890 46 32 25 29 3d 54 24 3a 66 69 65 6c 64 25 28 46 |F2%)=T$:field%(F| 0002c8a0 32 25 29 3d 46 25 3a 6c 65 6e 25 28 46 32 25 29 |2%)=F%:len%(F2%)| 0002c8b0 3d 4c 25 3a 63 68 61 72 74 79 70 65 25 28 46 32 |=L%:chartype%(F2| 0002c8c0 25 29 3d 43 25 3a 66 69 78 25 28 46 32 25 29 3d |%)=C%:fix%(F2%)=| 0002c8d0 66 25 3a 63 61 6c 63 24 28 46 32 25 29 3d 43 61 |f%:calc$(F2%)=Ca| 0002c8e0 6c 63 24 0d 18 fd 05 e1 0d 18 fe 05 3a 0d 18 ff |lc$.........:...| 0002c8f0 29 dd 20 f2 69 63 6f 6e 5f 64 65 73 69 67 6e 28 |). .icon_design(| 0002c900 63 68 61 72 25 2c 66 75 6e 63 25 2c f8 20 77 25 |char%,func%,. w%| 0002c910 2c f8 20 68 25 29 0d 19 00 0e c8 8e 20 66 75 6e |,. h%)...... fun| 0002c920 63 25 20 ca 0d 19 01 53 20 20 c9 20 30 3a 62 66 |c% ....S . 0:bf| 0002c930 67 25 3d 26 31 37 30 30 41 35 33 42 3a 66 66 67 |g%=&1700A53B:ffg| 0002c940 25 3d 26 30 37 30 30 41 35 33 35 3a e7 20 6c 6f |%=&0700A535:. lo| 0002c950 67 6f 73 6c 6f 61 64 65 64 25 20 8c 20 6c 66 67 |gosloaded% . lfg| 0002c960 25 3d 26 30 30 30 30 30 31 31 41 20 8b 20 6c 66 |%=&0000011A . lf| 0002c970 67 25 3d 66 66 67 25 0d 19 02 53 20 20 c9 20 31 |g%=ffg%...S . 1| 0002c980 3a 62 66 67 25 3d 26 31 37 30 30 36 35 33 42 3a |:bfg%=&1700653B:| 0002c990 66 66 67 25 3d 26 30 37 30 30 36 35 33 35 3a e7 |ffg%=&07006535:.| 0002c9a0 20 6c 6f 67 6f 73 6c 6f 61 64 65 64 25 20 8c 20 | logosloaded% . | 0002c9b0 6c 66 67 25 3d 26 30 30 30 30 36 31 31 45 20 8b |lfg%=&0000611E .| 0002c9c0 20 6c 66 67 25 3d 66 66 67 25 0d 19 03 05 cb 0d | lfg%=ffg%......| 0002c9d0 19 04 0e c8 8e 20 63 68 61 72 25 20 ca 0d 19 05 |..... char% ....| 0002c9e0 49 20 20 c9 20 39 2c 31 30 2c 31 31 2c 31 32 2c |I . 9,10,11,12,| 0002c9f0 31 33 2c 31 34 2c 31 35 2c 31 36 2c 31 37 2c 31 |13,14,15,16,17,1| 0002ca00 38 2c 31 39 2c 32 30 2c 32 31 2c 32 32 2c 32 33 |8,19,20,21,22,23| 0002ca10 2c 32 34 2c 32 35 2c 32 36 2c 32 37 2c 32 38 2c |,24,25,26,27,28,| 0002ca20 32 39 2c 33 30 3a 0d 19 06 46 20 20 21 62 6c 6f |29,30:...F !blo| 0002ca30 63 6b 25 3d 6b 65 79 70 61 64 57 25 3a 62 6c 6f |ck%=keypadW%:blo| 0002ca40 63 6b 25 21 34 3d 63 68 61 72 25 2d 39 3a c8 99 |ck%!4=char%-9:..| 0002ca50 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 | "Wimp_GetIconSt| 0002ca60 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 19 07 3f |ate",,block%...?| 0002ca70 20 20 77 25 3d 62 6c 6f 63 6b 25 21 31 36 2d 62 | w%=block%!16-b| 0002ca80 6c 6f 63 6b 25 21 38 3a 68 25 3d 62 6c 6f 63 6b |lock%!8:h%=block| 0002ca90 25 21 32 30 2d 62 6c 6f 63 6b 25 21 31 32 3a 69 |%!20-block%!12:i| 0002caa0 66 6c 61 67 73 25 3d 62 66 67 25 0d 19 08 2a 20 |flags%=bfg%...* | 0002cab0 20 c9 20 33 32 2c 33 33 2c 33 34 3a 77 25 3d 31 | . 32,33,34:w%=1| 0002cac0 31 32 3a 68 25 3d 34 34 3a 69 66 6c 61 67 73 25 |12:h%=44:iflags%| 0002cad0 3d 62 66 67 25 0d 19 09 23 20 20 c9 20 33 35 3a |=bfg%...# . 35:| 0002cae0 77 25 3d 38 30 3a 68 25 3d 36 34 3a 69 66 6c 61 |w%=80:h%=64:ifla| 0002caf0 67 73 25 3d 62 66 67 25 0d 19 0a 28 20 20 c9 20 |gs%=bfg%...( . | 0002cb00 33 31 3a 77 25 3d 34 34 3a 68 25 3d 34 34 3a 69 |31:w%=44:h%=44:i| 0002cb10 66 6c 61 67 73 25 3d 26 31 37 30 30 42 35 33 42 |flags%=&1700B53B| 0002cb20 0d 19 0b 29 20 20 c9 20 33 36 2c 33 37 2c 33 38 |...) . 36,37,38| 0002cb30 3a 77 25 3d 34 38 3a 68 25 3d 34 34 3a 69 66 6c |:w%=48:h%=44:ifl| 0002cb40 61 67 73 25 3d 62 66 67 25 0d 19 0c 17 20 20 c9 |ags%=bfg%.... .| 0002cb50 20 33 39 3a 69 66 6c 61 67 73 25 3d 66 66 67 25 | 39:iflags%=ffg%| 0002cb60 0d 19 0d 37 20 20 c9 20 34 30 3a e7 20 66 75 6e |...7 . 40:. fun| 0002cb70 63 25 3d 30 20 8c 20 69 66 6c 61 67 73 25 3d 26 |c%=0 . iflags%=&| 0002cb80 30 37 30 30 41 35 33 45 20 8b 20 69 66 6c 61 67 |0700A53E . iflag| 0002cb90 73 25 3d 66 66 67 25 0d 19 0e 34 20 20 c9 20 34 |s%=ffg%...4 . 4| 0002cba0 31 2c 34 32 2c 34 33 2c 34 34 2c 34 35 3a 77 25 |1,42,43,44,45:w%| 0002cbb0 3d 35 32 3a 68 25 3d 35 32 3a 69 66 6c 61 67 73 |=52:h%=52:iflags| 0002cbc0 25 3d 26 31 37 30 30 42 35 33 42 0d 19 0f 17 20 |%=&1700B53B.... | 0002cbd0 20 c9 20 35 39 3a 69 66 6c 61 67 73 25 3d 6c 66 | . 59:iflags%=lf| 0002cbe0 67 25 0d 19 10 14 20 20 7f 3a 69 66 6c 61 67 73 |g%.... .:iflags| 0002cbf0 25 3d 66 66 67 25 0d 19 11 05 cb 0d 19 12 25 e7 |%=ffg%........%.| 0002cc00 20 77 25 3d 30 20 80 20 68 25 3d 30 20 8c 20 69 | w%=0 . h%=0 . i| 0002cc10 66 6c 61 67 73 25 3d 26 30 30 30 30 30 30 30 30 |flags%=&00000000| 0002cc20 0d 19 13 05 e1 0d 19 14 05 3a 0d 19 15 15 dd 20 |.........:..... | 0002cc30 a4 67 65 74 5f 66 69 65 6c 64 28 69 63 25 29 0d |.get_field(ic%).| 0002cc40 19 16 08 ea 20 46 25 0d 19 17 0b f5 20 46 25 2b |.... F%..... F%+| 0002cc50 3d 31 0d 19 18 24 fd 20 66 69 65 6c 64 25 28 46 |=1...$. field%(F| 0002cc60 25 29 3d 69 63 25 20 84 20 64 65 73 63 25 28 46 |%)=ic% . desc%(F| 0002cc70 25 29 3d 69 63 25 0d 19 19 07 3d 46 25 0d 19 1a |%)=ic%....=F%...| 0002cc80 05 3a 0d 19 1b 15 dd 20 f2 61 64 6a 75 73 74 5f |.:..... .adjust_| 0002cc90 6f 6e 28 6f 6e 25 29 0d 19 1c 1b 64 65 73 69 67 |on(on%)....desig| 0002cca0 6e 25 3d 6f 6e 25 3a 61 64 6a 75 73 74 25 3d 6f |n%=on%:adjust%=o| 0002ccb0 6e 25 0d 19 1d 18 f2 6c 69 74 28 6d 65 6e 75 25 |n%.....lit(menu%| 0002ccc0 28 39 29 2c 35 2c 6f 6e 25 29 0d 19 1e 1a f2 6c |(9),5,on%).....l| 0002ccd0 69 74 28 6d 65 6e 75 25 28 39 29 2c 31 2c ac 20 |it(menu%(9),1,. | 0002cce0 6f 6e 25 29 0d 19 1f 1a f2 6c 69 74 28 6d 65 6e |on%).....lit(men| 0002ccf0 75 25 28 39 29 2c 32 2c ac 20 6f 6e 25 29 0d 19 |u%(9),2,. on%)..| 0002cd00 20 1a f2 6c 69 74 28 6d 65 6e 75 25 28 39 29 2c | ..lit(menu%(9),| 0002cd10 33 2c ac 20 6f 6e 25 29 0d 19 21 1a f2 6c 69 74 |3,. on%)..!..lit| 0002cd20 28 6d 65 6e 75 25 28 39 29 2c 34 2c ac 20 6f 6e |(menu%(9),4,. on| 0002cd30 25 29 0d 19 22 22 f2 69 63 6f 6e 5f 62 69 74 28 |%).."".icon_bit(| 0002cd40 32 32 2c 63 72 65 61 74 65 57 25 2c 36 2c ac 20 |22,createW%,6,. | 0002cd50 6f 6e 25 29 0d 19 23 05 e1 0d 19 24 05 3a 0d 19 |on%)..#....$.:..| 0002cd60 25 1e dd 20 f2 63 68 61 6e 67 65 5f 6c 65 6e 67 |%.. .change_leng| 0002cd70 74 68 28 4e 4c 25 2c 6d 73 67 25 29 0d 19 26 14 |th(NL%,msg%)..&.| 0002cd80 ea 20 45 58 25 2c 6b 6c 6d 25 2c 53 24 2c 4e 25 |. EX%,klm%,S$,N%| 0002cd90 0d 19 27 0f 45 58 25 3d 4e 4c 25 2d 52 41 25 0d |..'.EX%=NL%-RA%.| 0002cda0 19 28 0f e7 20 45 58 25 3d 30 20 8c 20 e1 0d 19 |.(.. EX%=0 . ...| 0002cdb0 29 2a 64 62 61 73 65 68 61 6e 64 6c 65 25 3d ad |)*dbasehandle%=.| 0002cdc0 28 24 64 61 74 61 62 61 73 65 25 2b 22 2e 44 61 |($database%+".Da| 0002cdd0 74 61 62 61 73 65 22 29 0d 19 2a 22 f2 72 65 61 |tabase")..*".rea| 0002cde0 64 73 6d 61 72 72 61 79 28 64 62 61 73 65 68 61 |dsmarray(dbaseha| 0002cdf0 6e 64 6c 65 25 2c 52 41 25 29 0d 19 2b 0a c8 8e |ndle%,RA%)..+...| 0002ce00 20 b9 20 ca 0d 19 2c 1c 20 20 c9 20 ac 20 6d 73 | . ...,. . . ms| 0002ce10 67 25 3a f2 65 78 74 65 6e 64 5f 64 62 61 73 65 |g%:.extend_dbase| 0002ce20 0d 19 2d 10 20 20 c9 20 28 45 58 25 3e 30 29 3a |..-. . (EX%>0):| 0002ce30 0d 19 2e 57 20 20 e7 20 a4 63 6f 6e 66 69 72 6d |...W . .confirm| 0002ce40 28 22 45 78 74 65 6e 64 20 66 69 6c 65 20 66 72 |("Extend file fr| 0002ce50 6f 6d 20 22 2b c3 28 52 41 25 29 2b 22 20 74 6f |om "+.(RA%)+" to| 0002ce60 20 22 2b c3 28 4e 4c 25 29 2b 22 20 72 65 63 6f | "+.(NL%)+" reco| 0002ce70 72 64 73 22 29 3d b9 20 8c 20 f2 65 78 74 65 6e |rds")=. . .exten| 0002ce80 64 5f 64 62 61 73 65 0d 19 2f 10 20 20 c9 20 28 |d_dbase../. . (| 0002ce90 45 58 25 3c 30 29 3a 0d 19 30 59 20 20 e7 20 a4 |EX%<0):..0Y . .| 0002cea0 63 6f 6e 66 69 72 6d 28 22 53 68 6f 72 74 65 6e |confirm("Shorten| 0002ceb0 20 66 69 6c 65 20 66 72 6f 6d 20 22 2b c3 28 52 | file from "+.(R| 0002cec0 41 25 29 2b 22 20 74 6f 20 22 2b c3 28 4e 4c 25 |A%)+" to "+.(NL%| 0002ced0 29 2b 22 20 72 65 63 6f 72 64 73 22 29 3d b9 20 |)+" records")=. | 0002cee0 8c 20 f2 73 68 6f 72 74 65 6e 5f 64 62 61 73 65 |. .shorten_dbase| 0002cef0 0d 19 31 05 cb 0d 19 32 1b 24 52 65 63 6f 72 64 |..1....2.$Record| 0002cf00 73 25 3d c3 28 52 41 25 29 3a 4e 25 3d 52 41 25 |s%=.(RA%):N%=RA%| 0002cf10 0d 19 33 22 f2 77 72 69 74 65 73 6d 61 72 72 61 |..3".writesmarra| 0002cf20 79 28 64 62 61 73 65 68 61 6e 64 6c 65 25 2c 4e |y(dbasehandle%,N| 0002cf30 25 29 0d 19 34 1d f2 63 6c 6f 73 65 5f 66 69 6c |%)..4..close_fil| 0002cf40 65 28 64 62 61 73 65 68 61 6e 64 6c 65 25 29 0d |e(dbasehandle%).| 0002cf50 19 35 25 e7 20 6d 73 67 25 20 8c 20 61 64 64 72 |.5%. msg% . addr| 0002cf60 3d a4 6d 6f 76 65 74 6f 28 6b 65 79 25 2c 74 6f |=.moveto(key%,to| 0002cf70 70 2c 31 29 0d 19 36 05 e1 0d 19 37 05 3a 0d 19 |p,1)..6....7.:..| 0002cf80 38 13 dd 20 f2 65 78 74 65 6e 64 5f 64 62 61 73 |8.. .extend_dbas| 0002cf90 65 0d 19 39 26 ea 20 65 6e 64 25 2c 50 25 2c 49 |e..9&. end%,P%,I| 0002cfa0 25 2c 6b 65 79 25 2c 6b 65 79 62 61 73 65 25 2c |%,key%,keybase%,| 0002cfb0 4b 4c 4d 25 2c 53 24 0d 19 3a 14 e3 20 6b 65 79 |KLM%,S$..:.. key| 0002cfc0 25 3d 30 20 b8 20 4b 65 79 73 25 0d 19 3b 18 20 |%=0 . Keys%..;. | 0002cfd0 20 53 24 3d c4 4b 4c 25 28 6b 65 79 25 29 2c 22 | S$=.KL%(key%),"| 0002cfe0 2e 22 29 0d 19 3c 17 20 20 4b 4c 4d 25 3d 4b 4c |.")..<. KLM%=KL| 0002cff0 25 28 6b 65 79 25 29 2b 31 33 0d 19 3d 1c 20 20 |%(key%)+13..=. | 0002d000 50 25 3d 4c 48 25 2b 34 38 2b 28 4e 4c 25 2b 31 |P%=LH%+48+(NL%+1| 0002d010 29 2a 4b 4c 4d 25 0d 19 3e 36 20 20 f2 65 78 74 |)*KLM%..>6 .ext| 0002d020 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e |end_named_slidin| 0002d030 67 5f 62 6c 6f 63 6b 28 6b 65 79 61 6e 63 68 6f |g_block(keyancho| 0002d040 72 25 28 6b 65 79 25 29 2c 50 25 29 0d 19 3f 20 |r%(key%),P%)..? | 0002d050 20 20 6b 65 79 62 61 73 65 25 3d 21 6b 65 79 61 | keybase%=!keya| 0002d060 6e 63 68 6f 72 25 28 6b 65 79 25 29 0d 19 40 18 |nchor%(key%)..@.| 0002d070 20 20 50 25 3d 4c 48 25 2b 34 38 2b 52 41 25 2a | P%=LH%+48+RA%*| 0002d080 4b 4c 4d 25 0d 19 41 1a 20 20 e3 20 49 25 3d 52 |KLM%..A. . I%=R| 0002d090 41 25 20 b8 20 45 58 25 2b 52 41 25 2d 31 0d 19 |A% . EX%+RA%-1..| 0002d0a0 42 1e 20 20 20 20 21 28 6b 65 79 62 61 73 65 25 |B. !(keybase%| 0002d0b0 2b 50 25 29 3d 50 25 2b 4b 4c 4d 25 0d 19 43 1a |+P%)=P%+KLM%..C.| 0002d0c0 20 20 20 20 21 28 6b 65 79 62 61 73 65 25 2b 50 | !(keybase%+P| 0002d0d0 25 2b 34 29 3d 30 0d 19 44 1b 20 20 20 20 24 28 |%+4)=0..D. $(| 0002d0e0 6b 65 79 62 61 73 65 25 2b 50 25 2b 38 29 3d 53 |keybase%+P%+8)=S| 0002d0f0 24 0d 19 45 25 20 20 20 20 21 28 6b 65 79 62 61 |$..E% !(keyba| 0002d100 73 65 25 2b 50 25 2b 4b 4c 25 28 6b 65 79 25 29 |se%+P%+KL%(key%)| 0002d110 2b 39 29 3d 49 25 0d 19 46 10 20 20 20 20 50 25 |+9)=I%..F. P%| 0002d120 2b 3d 4b 4c 4d 25 0d 19 47 0a 20 20 ed 20 49 25 |+=KLM%..G. . I%| 0002d130 0d 19 48 16 20 20 21 28 6b 65 79 62 61 73 65 25 |..H. !(keybase%| 0002d140 2b 50 25 29 3d 30 0d 19 49 18 20 20 21 28 6b 65 |+P%)=0..I. !(ke| 0002d150 79 62 61 73 65 25 2b 50 25 2b 34 29 3d 30 0d 19 |ybase%+P%+4)=0..| 0002d160 4a 19 20 20 24 28 6b 65 79 62 61 73 65 25 2b 50 |J. $(keybase%+P| 0002d170 25 2b 38 29 3d 53 24 0d 19 4b 22 20 20 21 28 6b |%+8)=S$..K" !(k| 0002d180 65 79 62 61 73 65 25 2b 50 25 2b 4b 4c 25 28 6b |eybase%+P%+KL%(k| 0002d190 65 79 25 29 2b 39 29 3d 30 0d 19 4c 0a ed 20 6b |ey%)+9)=0..L.. k| 0002d1a0 65 79 25 0d 19 4d 17 65 6e 64 25 3d a2 23 64 62 |ey%..M.end%=.#db| 0002d1b0 61 73 65 68 61 6e 64 6c 65 25 0d 19 4e 12 e3 20 |asehandle%..N.. | 0002d1c0 49 25 3d 30 20 b8 20 45 58 25 2d 31 0d 19 4f 24 |I%=0 . EX%-1..O$| 0002d1d0 20 20 cf 23 64 62 61 73 65 68 61 6e 64 6c 65 25 | .#dbasehandle%| 0002d1e0 3d 65 6e 64 25 2b 49 25 2a 4c 65 6e 67 74 68 25 |=end%+I%*Length%| 0002d1f0 0d 19 50 16 20 20 e3 20 4a 25 3d 31 20 b8 20 66 |..P. . J%=1 . f| 0002d200 69 65 6c 64 73 25 0d 19 51 19 20 20 20 20 d5 23 |ields%..Q. .#| 0002d210 64 62 61 73 65 68 61 6e 64 6c 65 25 2c 22 22 0d |dbasehandle%,"".| 0002d220 19 52 0a 20 20 ed 20 4a 25 0d 19 53 08 ed 20 49 |.R. . J%..S.. I| 0002d230 25 0d 19 54 23 cf 23 64 62 61 73 65 68 61 6e 64 |%..T#.#dbasehand| 0002d240 6c 65 25 3d 65 6e 64 25 2b 45 58 25 2a 4c 65 6e |le%=end%+EX%*Len| 0002d250 67 74 68 25 0d 19 55 0b 52 41 25 3d 4e 4c 25 0d |gth%..U.RA%=NL%.| 0002d260 19 56 05 e1 0d 19 57 05 3a 0d 19 58 14 dd 20 f2 |.V....W.:..X.. .| 0002d270 73 68 6f 72 74 65 6e 5f 64 62 61 73 65 0d 19 59 |shorten_dbase..Y| 0002d280 22 ea 20 50 25 2c 4c 25 2c 52 25 2c 73 24 2c 6b |". P%,L%,R%,s$,k| 0002d290 65 79 25 2c 6b 65 79 62 61 73 65 25 2c 53 24 0d |ey%,keybase%,S$.| 0002d2a0 19 5a 14 e3 20 6b 65 79 25 3d 30 20 b8 20 4b 65 |.Z.. key%=0 . Ke| 0002d2b0 79 73 25 0d 19 5b 18 20 20 53 24 3d c4 4b 4c 25 |ys%..[. S$=.KL%| 0002d2c0 28 6b 65 79 25 29 2c 22 2e 22 29 0d 19 5c 17 20 |(key%),".")..\. | 0002d2d0 20 4b 4c 4d 25 3d 4b 4c 25 28 6b 65 79 25 29 2b | KLM%=KL%(key%)+| 0002d2e0 31 33 0d 19 5d 20 20 20 6b 65 79 62 61 73 65 25 |13..] keybase%| 0002d2f0 3d 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 79 |=!keyanchor%(key| 0002d300 25 29 0d 19 5e 24 20 20 73 24 3d 24 28 6b 65 79 |%)..^$ s$=$(key| 0002d310 62 61 73 65 25 2b 4c 48 25 2b 35 36 2b 4e 4c 25 |base%+LH%+56+NL%| 0002d320 2a 4b 4c 4d 25 29 0d 19 5f 2b 20 20 e7 20 73 24 |*KLM%).._+ . s$| 0002d330 3c 3e 53 24 20 8c 20 e7 20 a4 63 6f 6e 66 69 72 |<>S$ . . .confir| 0002d340 6d 28 a4 6d 73 67 28 35 32 29 29 3d a3 20 8c 20 |m(.msg(52))=. . | 0002d350 e1 0d 19 60 18 20 20 50 25 3d 4c 48 25 2b 34 38 |...`. P%=LH%+48| 0002d360 2b 4e 4c 25 2a 4b 4c 4d 25 0d 19 61 16 20 20 21 |+NL%*KLM%..a. !| 0002d370 28 6b 65 79 62 61 73 65 25 2b 50 25 29 3d 30 0d |(keybase%+P%)=0.| 0002d380 19 62 18 20 20 21 28 6b 65 79 62 61 73 65 25 2b |.b. !(keybase%+| 0002d390 50 25 2b 34 29 3d 30 0d 19 63 19 20 20 24 28 6b |P%+4)=0..c. $(k| 0002d3a0 65 79 62 61 73 65 25 2b 50 25 2b 38 29 3d 53 24 |eybase%+P%+8)=S$| 0002d3b0 0d 19 64 22 20 20 21 28 6b 65 79 62 61 73 65 25 |..d" !(keybase%| 0002d3c0 2b 50 25 2b 4b 4c 25 28 6b 65 79 25 29 2b 39 29 |+P%+KL%(key%)+9)| 0002d3d0 3d 30 0d 19 65 0a ed 20 6b 65 79 25 0d 19 66 22 |=0..e.. key%..f"| 0002d3e0 a2 23 64 62 61 73 65 68 61 6e 64 6c 65 25 3d 4c |.#dbasehandle%=L| 0002d3f0 65 6e 67 74 68 25 2a 28 4e 4c 25 2b 31 29 0d 19 |ength%*(NL%+1)..| 0002d400 67 0b 52 41 25 3d 4e 4c 25 0d 19 68 05 e1 0d 19 |g.RA%=NL%..h....| 0002d410 69 05 3a 0d 19 6a 2c dd 20 f2 63 6f 70 79 5f 64 |i.:..j,. .copy_d| 0002d420 61 74 61 62 61 73 65 5f 73 70 72 69 74 65 66 69 |atabase_spritefi| 0002d430 6c 65 28 70 61 74 68 24 2c 6c 65 61 66 24 29 0d |le(path$,leaf$).| 0002d440 19 6b 0e ea 20 73 70 72 69 74 65 73 25 0d 19 6c |.k.. sprites%..l| 0002d450 31 f2 63 72 65 61 74 65 5f 6e 61 6d 65 64 5f 73 |1.create_named_s| 0002d460 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 73 70 72 |liding_block(spr| 0002d470 73 61 6e 63 68 6f 72 25 2c 31 30 32 34 29 0d 19 |sanchor%,1024)..| 0002d480 6d 41 f4 20 23 23 23 20 54 68 69 73 20 69 73 20 |mA. ### This is | 0002d490 61 20 74 65 6d 70 6f 72 61 72 79 20 73 70 72 69 |a temporary spri| 0002d4a0 74 65 20 61 72 65 61 20 75 73 65 64 20 73 69 6d |te area used sim| 0002d4b0 70 6c 79 20 74 6f 20 68 6f 6c 64 20 23 23 23 0d |ply to hold ###.| 0002d4c0 19 6e 42 f4 20 23 23 23 20 74 68 65 20 73 70 72 |.nB. ### the spr| 0002d4d0 69 74 65 20 27 6e 65 77 5f 61 70 70 6c 27 20 77 |ite 'new_appl' w| 0002d4e0 68 69 6c 73 74 20 69 74 20 69 73 20 72 65 6e 61 |hilst it is rena| 0002d4f0 6d 65 64 20 61 6e 64 20 73 61 76 65 64 20 23 23 |med and saved ##| 0002d500 23 0d 19 6f 19 73 70 72 69 74 65 73 25 3d 21 73 |#..o.sprites%=!s| 0002d510 70 72 73 61 6e 63 68 6f 72 25 0d 19 70 12 21 73 |prsanchor%..p.!s| 0002d520 70 72 69 74 65 73 25 3d 31 30 32 34 0d 19 71 11 |prites%=1024..q.| 0002d530 73 70 72 69 74 65 73 25 21 38 3d 31 36 0d 19 72 |sprites%!8=16..r| 0002d540 24 f4 20 23 23 23 20 49 6e 69 74 69 61 6c 69 73 |$. ### Initialis| 0002d550 65 20 73 70 72 69 74 65 20 61 72 65 61 20 23 23 |e sprite area ##| 0002d560 23 0d 19 73 22 c8 99 20 22 4f 53 5f 53 70 72 69 |#..s".. "OS_Spri| 0002d570 74 65 4f 70 22 2c 26 31 30 39 2c 73 70 72 69 74 |teOp",&109,sprit| 0002d580 65 73 25 0d 19 74 2f f4 20 23 23 23 20 4c 6f 61 |es%..t/. ### Loa| 0002d590 64 20 21 53 70 72 69 74 65 73 20 66 69 6c 65 20 |d !Sprites file | 0002d5a0 66 72 6f 6d 20 52 65 73 6f 75 72 63 65 73 20 23 |from Resources #| 0002d5b0 23 23 0d 19 75 48 c8 99 20 22 4f 53 5f 53 70 72 |##..uH.. "OS_Spr| 0002d5c0 69 74 65 4f 70 22 2c 26 31 30 41 2c 73 70 72 69 |iteOp",&10A,spri| 0002d5d0 74 65 73 25 2c 22 3c 50 42 61 73 65 24 44 69 72 |tes%,"<PBase$Dir| 0002d5e0 3e 2e 52 65 73 6f 75 72 63 65 73 2e 54 65 6d 70 |>.Resources.Temp| 0002d5f0 2e 21 53 70 72 69 74 65 73 22 0d 19 76 3b f4 20 |.!Sprites"..v;. | 0002d600 23 23 23 20 52 65 6e 61 6d 65 20 73 70 72 69 74 |### Rename sprit| 0002d610 65 20 27 6e 65 77 5f 61 70 70 6c 27 20 74 6f 20 |e 'new_appl' to | 0002d620 6e 65 77 20 64 61 74 61 62 61 73 65 20 6e 61 6d |new database nam| 0002d630 65 20 23 23 23 0d 19 77 33 c8 99 20 22 4f 53 5f |e ###..w3.. "OS_| 0002d640 53 70 72 69 74 65 4f 70 22 2c 26 31 31 41 2c 73 |SpriteOp",&11A,s| 0002d650 70 72 69 74 65 73 25 2c 22 6e 65 77 5f 61 70 70 |prites%,"new_app| 0002d660 6c 22 2c 6c 65 61 66 24 0d 19 78 41 f4 20 23 23 |l",leaf$..xA. ##| 0002d670 23 20 53 61 76 65 20 73 70 72 69 74 65 66 69 6c |# Save spritefil| 0002d680 65 20 28 77 69 74 68 20 72 65 6e 61 6d 65 64 20 |e (with renamed | 0002d690 6e 65 77 5f 61 70 70 6c 29 20 61 73 20 21 53 70 |new_appl) as !Sp| 0002d6a0 72 69 74 65 73 20 23 23 23 0d 19 79 34 c8 99 20 |rites ###..y4.. | 0002d6b0 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 |"OS_SpriteOp",&1| 0002d6c0 30 43 2c 73 70 72 69 74 65 73 25 2c 70 61 74 68 |0C,sprites%,path| 0002d6d0 24 2b 22 2e 21 53 70 72 69 74 65 73 22 0d 19 7a |$+".!Sprites"..z| 0002d6e0 27 f4 20 23 23 23 20 44 6f 20 73 61 6d 65 20 66 |'. ### Do same f| 0002d6f0 6f 72 20 68 69 2d 72 65 73 20 73 70 72 69 74 65 |or hi-res sprite| 0002d700 20 23 23 23 0d 19 7b 22 c8 99 20 22 4f 53 5f 53 | ###..{".. "OS_S| 0002d710 70 72 69 74 65 4f 70 22 2c 26 31 30 39 2c 73 70 |priteOp",&109,sp| 0002d720 72 69 74 65 73 25 0d 19 7c 4a c8 99 20 22 4f 53 |rites%..|J.. "OS| 0002d730 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 30 41 2c |_SpriteOp",&10A,| 0002d740 73 70 72 69 74 65 73 25 2c 22 3c 50 42 61 73 65 |sprites%,"<PBase| 0002d750 24 44 69 72 3e 2e 52 65 73 6f 75 72 63 65 73 2e |$Dir>.Resources.| 0002d760 54 65 6d 70 2e 21 53 70 72 69 74 65 73 32 32 22 |Temp.!Sprites22"| 0002d770 0d 19 7d 33 c8 99 20 22 4f 53 5f 53 70 72 69 74 |..}3.. "OS_Sprit| 0002d780 65 4f 70 22 2c 26 31 31 41 2c 73 70 72 69 74 65 |eOp",&11A,sprite| 0002d790 73 25 2c 22 6e 65 77 5f 61 70 70 6c 22 2c 6c 65 |s%,"new_appl",le| 0002d7a0 61 66 24 0d 19 7e 36 c8 99 20 22 4f 53 5f 53 70 |af$..~6.. "OS_Sp| 0002d7b0 72 69 74 65 4f 70 22 2c 26 31 30 43 2c 73 70 72 |riteOp",&10C,spr| 0002d7c0 69 74 65 73 25 2c 70 61 74 68 24 2b 22 2e 21 53 |ites%,path$+".!S| 0002d7d0 70 72 69 74 65 73 32 32 22 0d 19 7f 25 f2 73 63 |prites22"...%.sc| 0002d7e0 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |rap_sliding_bloc| 0002d7f0 6b 28 73 70 72 73 61 6e 63 68 6f 72 25 29 0d 19 |k(sprsanchor%)..| 0002d800 80 05 e1 0d 19 81 05 3a 0d 19 82 1b dd 20 f2 64 |.......:..... .d| 0002d810 65 66 61 75 6c 74 73 28 66 24 2c 4e 25 2c 6b 65 |efaults(f$,N%,ke| 0002d820 79 25 29 0d 19 83 13 24 52 65 63 6f 72 64 73 25 |y%)....$Records%| 0002d830 3d c3 28 4e 25 29 0d 19 84 20 f2 6d 61 6b 65 5f |=.(N%)... .make_| 0002d840 65 6d 70 74 79 5f 69 6e 64 65 78 28 4e 25 2c 6b |empty_index(N%,k| 0002d850 65 79 25 2c b9 29 0d 19 85 21 f2 73 61 76 65 5f |ey%,.)...!.save_| 0002d860 72 65 63 73 28 66 24 2b 22 2e 44 61 74 61 62 61 |recs(f$+".Databa| 0002d870 73 65 22 2c 4e 25 29 0d 19 86 19 70 72 65 73 65 |se",N%)....prese| 0002d880 6e 74 25 3d 37 3a f2 73 61 76 65 5f 6b 65 79 73 |nt%=7:.save_keys| 0002d890 0d 19 87 0d 64 65 73 69 67 6e 25 3d a3 0d 19 88 |....design%=....| 0002d8a0 12 f2 67 65 74 5f 69 74 5f 69 6e 28 66 24 29 0d |..get_it_in(f$).| 0002d8b0 19 89 16 f2 6c 69 74 28 6d 65 6e 75 25 28 30 29 |....lit(menu%(0)| 0002d8c0 2c 32 2c b9 29 0d 19 8a 05 e1 0d 19 8b 05 3a 0d |,2,.).........:.| 0002d8d0 19 8c 12 dd 20 f2 64 65 66 61 75 6c 74 5f 6b 65 |.... .default_ke| 0002d8e0 79 0d 19 8d 08 ea 20 46 25 0d 19 8e 13 46 25 3d |y..... F%....F%=| 0002d8f0 a4 66 69 72 73 74 5f 66 69 65 6c 64 0d 19 8f 0a |.first_field....| 0002d900 c8 8e 20 b9 20 ca 0d 19 90 27 20 20 c9 20 63 68 |.. . ....' . ch| 0002d910 61 72 74 79 70 65 25 28 46 25 29 3d 33 3a 4b 4c |artype%(F%)=3:KL| 0002d920 25 28 30 29 3d 6c 65 6e 25 28 46 25 29 0d 19 91 |%(0)=len%(F%)...| 0002d930 1b 20 20 c9 20 6c 65 6e 25 28 46 25 29 3e 33 3a |. . len%(F%)>3:| 0002d940 4b 4c 25 28 30 29 3d 34 0d 19 92 17 20 20 7f 3a |KL%(0)=4.... .:| 0002d950 4b 4c 25 28 30 29 3d 6c 65 6e 25 28 46 25 29 0d |KL%(0)=len%(F%).| 0002d960 19 93 05 cb 0d 19 94 1a 49 6e 64 65 78 24 28 30 |........Index$(0| 0002d970 29 3d 22 50 72 69 6d 61 72 79 4b 65 79 22 0d 19 |)="PrimaryKey"..| 0002d980 95 0a 6b 65 79 25 3d 30 0d 19 96 21 4b 57 25 28 |..key%=0...!KW%(| 0002d990 29 3d 30 3a 4b 57 25 28 6b 65 79 25 2c 30 29 3d |)=0:KW%(key%,0)=| 0002d9a0 4b 4c 25 28 6b 65 79 25 29 0d 19 97 20 4b 46 25 |KL%(key%)... KF%| 0002d9b0 28 6b 65 79 25 2c 30 29 3d 46 25 3a 4b 46 25 28 |(key%,0)=F%:KF%(| 0002d9c0 6b 65 79 25 2c 31 29 3d 30 0d 19 98 16 f2 73 65 |key%,1)=0.....se| 0002d9d0 74 5f 6b 65 79 64 61 74 61 28 6b 65 79 25 29 0d |t_keydata(key%).| 0002d9e0 19 99 05 e1 0d 19 9a 05 3a 0d 19 9b 13 dd 20 f2 |........:..... .| 0002d9f0 6e 65 77 5f 74 72 65 65 28 66 25 29 0d 19 9c 1d |new_tree(f%)....| 0002da00 ea 20 52 45 43 25 2c 49 25 2c 70 74 72 25 2c 66 |. REC%,I%,ptr%,f| 0002da10 69 6c 65 25 2c 6f 6c 64 24 0d 19 9d 96 6f 6c 64 |ile%,old$....old| 0002da20 24 3d 22 4c 65 6e 67 74 68 3a 20 22 2b c3 28 4b |$="Length: "+.(K| 0002da30 4c 25 28 30 29 29 2b 22 2c 20 46 69 65 6c 64 28 |L%(0))+", Field(| 0002da40 73 29 3a 20 22 2b 54 61 67 24 28 4b 46 25 28 30 |s): "+Tag$(KF%(0| 0002da50 2c 30 29 29 2b 22 20 22 2b 54 61 67 24 28 4b 46 |,0))+" "+Tag$(KF| 0002da60 25 28 30 2c 31 29 29 2b 22 2c 20 43 68 61 72 73 |%(0,1))+", Chars| 0002da70 3a 20 22 2b c3 28 4b 57 25 28 30 2c 30 29 29 2b |: "+.(KW%(0,0))+| 0002da80 22 2c 22 2b c3 28 4b 57 25 28 30 2c 31 29 29 2b |","+.(KW%(0,1))+| 0002da90 22 2c 22 2b c3 28 4b 57 25 28 30 2c 32 29 29 2b |","+.(KW%(0,2))+| 0002daa0 22 2c 22 2b c3 28 4b 57 25 28 30 2c 33 29 29 0d |","+.(KW%(0,3)).| 0002dab0 19 9e 2f 64 25 3d a4 73 65 6c 65 63 74 65 64 28 |../d%=.selected(| 0002dac0 6b 65 79 57 25 2c 39 29 3a 73 25 3d a4 73 65 6c |keyW%,9):s%=.sel| 0002dad0 65 63 74 65 64 28 6b 65 79 57 25 2c 38 29 0d 19 |ected(keyW%,8)..| 0002dae0 9f 0f e7 20 64 25 20 8c 20 66 25 3d 30 0d 19 a0 |... d% . f%=0...| 0002daf0 1a 4d 24 3d 22 42 75 69 6c 64 20 69 6e 64 65 78 |.M$="Build index| 0002db00 20 77 69 74 68 20 22 0d 19 a1 4f e7 20 73 25 20 | with "...O. s% | 0002db10 8c 20 4d 24 2b 3d 22 72 65 63 6f 72 64 73 20 69 |. M$+="records i| 0002db20 6e 20 73 61 6d 65 20 73 75 62 66 69 6c 65 73 22 |n same subfiles"| 0002db30 20 8b 20 4d 24 2b 3d 22 61 6c 6c 20 72 65 63 6f | . M$+="all reco| 0002db40 72 64 73 20 69 6e 20 73 75 62 66 69 6c 65 20 22 |rds in subfile "| 0002db50 2b c3 28 66 25 29 0d 19 a2 1e 4d 24 2b 3d 22 20 |+.(f%)....M$+=" | 0002db60 6f 66 20 63 75 72 72 65 6e 74 20 64 61 74 61 62 |of current datab| 0002db70 61 73 65 22 0d 19 a3 34 e7 20 64 25 20 8c 20 4d |ase"...4. d% . M| 0002db80 24 2b 3d 22 2c 20 61 6c 73 6f 20 72 65 73 74 6f |$+=", also resto| 0002db90 72 69 6e 67 20 27 64 65 6c 65 74 65 64 27 20 72 |ring 'deleted' r| 0002dba0 65 63 6f 72 64 73 2e 22 0d 19 a4 45 e7 20 64 25 |ecords."...E. d%| 0002dbb0 20 84 20 ac 20 73 25 20 8c 20 4d 24 2b 3d 22 20 | . . s% . M$+=" | 0002dbc0 57 41 52 4e 49 4e 47 21 20 4f 74 68 65 72 20 69 |WARNING! Other i| 0002dbd0 6e 64 69 63 65 73 20 77 69 6c 6c 20 6e 65 65 64 |ndices will need| 0002dbe0 20 72 65 62 75 69 6c 64 69 6e 67 21 22 0d 19 a5 | rebuilding!"...| 0002dbf0 1a e7 20 ac 20 a4 63 6f 6e 66 69 72 6d 28 4d 24 |.. . .confirm(M$| 0002dc00 29 3d b9 20 8c 20 e1 0d 19 a6 21 f2 6d 61 72 6b |)=. . ....!.mark| 0002dc10 5f 66 69 6c 65 73 28 30 2c 52 41 25 2c ac 20 64 |_files(0,RA%,. d| 0002dc20 25 2c 73 25 2c 66 25 29 0d 19 a7 14 f2 63 6f 70 |%,s%,f%).....cop| 0002dc30 79 5f 6b 65 79 64 61 74 61 28 30 29 0d 19 a8 22 |y_keydata(0)..."| 0002dc40 52 41 25 3d bb 28 24 52 65 63 6f 72 64 73 25 29 |RA%=.($Records%)| 0002dc50 3a 66 24 3d 24 64 61 74 61 62 61 73 65 25 0d 19 |:f$=$database%..| 0002dc60 a9 27 f2 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 |.'.scrap_sliding| 0002dc70 5f 62 6c 6f 63 6b 28 6b 65 79 61 6e 63 68 6f 72 |_block(keyanchor| 0002dc80 25 28 30 29 29 0d 19 aa 1e f2 6d 61 6b 65 5f 65 |%(0)).....make_e| 0002dc90 6d 70 74 79 5f 69 6e 64 65 78 28 52 41 25 2c 30 |mpty_index(RA%,0| 0002dca0 2c b9 29 0d 19 ab 18 f2 63 6c 6f 73 65 5f 77 69 |,.).....close_wi| 0002dcb0 6e 64 6f 77 28 6b 65 79 57 25 29 0d 19 ac 15 f2 |ndow(keyW%).....| 0002dcc0 72 65 64 72 61 77 28 6b 65 79 70 61 64 57 25 29 |redraw(keypadW%)| 0002dcd0 0d 19 ad 15 70 74 72 25 3d 21 74 65 6d 70 61 6e |....ptr%=!tempan| 0002dce0 63 68 6f 72 25 0d 19 ae 0f f2 70 6f 6c 6c 3a f2 |chor%.....poll:.| 0002dcf0 70 6f 6c 6c 0d 19 af 15 c8 99 20 22 48 6f 75 72 |poll...... "Hour| 0002dd00 67 6c 61 73 73 5f 4f 6e 22 0d 19 b0 2a 64 62 61 |glass_On"...*dba| 0002dd10 73 65 68 61 6e 64 6c 65 25 3d 8e 28 24 64 61 74 |sehandle%=.($dat| 0002dd20 61 62 61 73 65 25 2b 22 2e 44 61 74 61 62 61 73 |abase%+".Databas| 0002dd30 65 22 29 0d 19 b1 14 e3 20 52 45 43 25 3d 30 20 |e")..... REC%=0 | 0002dd40 b8 20 52 41 25 2d 31 0d 19 b2 15 20 20 66 69 6c |. RA%-1.... fil| 0002dd50 65 25 3d 70 74 72 25 3f 52 45 43 25 0d 19 b3 14 |e%=ptr%?REC%....| 0002dd60 20 20 e7 20 66 69 6c 65 25 3c 3e 32 35 35 20 8c | . file%<>255 .| 0002dd70 0d 19 b4 17 20 20 20 20 74 6f 70 3d 38 2a 66 69 |.... top=8*fi| 0002dd80 6c 65 25 2b 4c 48 25 0d 19 b5 27 20 20 20 20 f2 |le%+LH%...' .| 0002dd90 72 65 61 64 73 6d 61 72 72 61 79 28 64 62 61 73 |readsmarray(dbas| 0002dda0 65 68 61 6e 64 6c 65 25 2c 52 45 43 25 29 0d 19 |ehandle%,REC%)..| 0002ddb0 b6 17 20 20 20 20 4b 45 59 24 3d a4 6b 65 79 32 |.. KEY$=.key2| 0002ddc0 28 30 2c 31 29 0d 19 b7 20 20 20 20 20 6b 6c 25 |(0,1)... kl%| 0002ddd0 3d 4b 4c 25 28 30 29 3a 76 61 6c 24 3d a4 74 79 |=KL%(0):val$=.ty| 0002dde0 70 65 28 30 29 0d 19 b8 26 20 20 20 20 e7 20 4b |pe(0)...& . K| 0002ddf0 45 59 24 3c 3e 22 22 20 8c 20 f2 69 6e 73 65 72 |EY$<>"" . .inser| 0002de00 74 28 a3 2c 4b 45 59 24 2c 30 29 0d 19 b9 07 20 |t(.,KEY$,0).... | 0002de10 20 cd 0d 19 ba 30 20 20 c8 99 20 22 48 6f 75 72 | ....0 .. "Hour| 0002de20 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 |glass_Percentage| 0002de30 22 2c 28 52 45 43 25 2a 31 30 30 29 20 81 20 52 |",(REC%*100) . R| 0002de40 41 25 0d 19 bb 0a ed 20 52 45 43 25 0d 19 bc 1d |A%..... REC%....| 0002de50 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 64 62 61 73 |.close_file(dbas| 0002de60 65 68 61 6e 64 6c 65 25 29 0d 19 bd 22 6e 65 77 |ehandle%)..."new| 0002de70 74 72 65 65 25 3d a3 3a 64 65 73 69 67 6e 25 3d |tree%=.:design%=| 0002de80 a3 3a 61 64 6a 75 73 74 25 3d a3 0d 19 be 25 f2 |.:adjust%=....%.| 0002de90 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c |scrap_sliding_bl| 0002dea0 6f 63 6b 28 74 65 6d 70 61 6e 63 68 6f 72 25 29 |ock(tempanchor%)| 0002deb0 0d 19 bf 16 c8 99 20 22 48 6f 75 72 67 6c 61 73 |...... "Hourglas| 0002dec0 73 5f 4f 66 66 22 0d 19 c0 0e 70 72 65 73 65 6e |s_Off"....presen| 0002ded0 74 25 3d 37 0d 19 c1 1c e7 20 a4 73 65 6c 65 63 |t%=7..... .selec| 0002dee0 74 65 64 28 70 61 73 73 57 25 2c 31 36 29 20 8c |ted(passW%,16) .| 0002def0 0d 19 c2 41 20 20 d5 23 6c 6f 67 68 61 6e 64 6c |...A .#loghandl| 0002df00 65 25 2c 22 50 72 69 6d 61 72 79 20 6b 65 79 20 |e%,"Primary key | 0002df10 61 6c 74 65 72 65 64 2e 20 50 72 65 76 69 6f 75 |altered. Previou| 0002df20 73 20 73 74 72 75 63 74 75 72 65 20 77 61 73 3a |s structure was:| 0002df30 22 0d 19 c3 17 20 20 d5 23 6c 6f 67 68 61 6e 64 |".... .#loghand| 0002df40 6c 65 25 2c 6f 6c 64 24 0d 19 c4 05 cd 0d 19 c5 |le%,old$........| 0002df50 1c c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 |... "Wimp_Create| 0002df60 4d 65 6e 75 22 2c 2c 2d 31 0d 19 c6 2a 62 6c 6f |Menu",,-1...*blo| 0002df70 63 6b 25 21 38 3d 30 3a 62 6c 6f 63 6b 25 21 31 |ck%!8=0:block%!1| 0002df80 32 3d 77 69 25 3a 62 6c 6f 63 6b 25 21 31 36 3d |2=wi%:block%!16=| 0002df90 69 63 25 0d 19 c7 25 c8 99 20 22 49 6e 74 65 72 |ic%...%.. "Inter| 0002dfa0 66 61 63 65 5f 53 6c 61 62 42 75 74 74 6f 6e 22 |face_SlabButton"| 0002dfb0 2c 2c 62 6c 6f 63 6b 25 0d 19 c8 1a f2 67 65 74 |,,block%.....get| 0002dfc0 5f 69 74 5f 69 6e 28 24 64 61 74 61 62 61 73 65 |_it_in($database| 0002dfd0 25 29 0d 19 c9 05 e1 0d 19 ca 05 3a 0d 19 cb 13 |%).........:....| 0002dfe0 dd 20 f2 72 65 66 6f 72 6d 61 74 28 66 24 29 0d |. .reformat(f$).| 0002dff0 19 cc 34 ea 20 49 25 2c 46 2c 52 45 43 25 2c 64 |..4. I%,F,REC%,d| 0002e000 66 69 65 6c 64 73 25 2c 44 4c 65 6e 67 74 68 25 |fields%,DLength%| 0002e010 2c 63 68 64 64 2c 7a 25 2c 62 6c 6f 62 73 25 2c |,chdd,z%,blobs%,| 0002e020 65 78 25 0d 19 cd 27 ea 20 44 54 61 67 24 28 29 |ex%...'. DTag$()| 0002e030 2c 46 25 28 29 2c 46 31 25 28 29 2c 4c 25 28 29 |,F%(),F1%(),L%()| 0002e040 2c 6c 24 28 29 2c 63 24 28 29 0d 19 ce 0c 46 24 |,l$(),c$()....F$| 0002e050 28 30 29 3d 22 22 0d 19 cf 22 c8 99 20 22 4f 53 |(0)=""...".. "OS| 0002e060 5f 46 69 6c 65 22 2c 35 2c 66 24 2b 22 2e 46 6f |_File",5,f$+".Fo| 0002e070 72 6d 22 20 b8 20 7a 25 0d 19 d0 0a c8 8e 20 b9 |rm" . z%...... .| 0002e080 20 ca 0d 19 d1 1f 20 20 c9 20 7a 25 3c 3e 31 3a | ..... . z%<>1:| 0002e090 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 2c 31 39 |.softerror("",19| 0002e0a0 29 0d 19 d2 27 20 20 c9 20 66 24 3d 24 64 61 74 |)...' . f$=$dat| 0002e0b0 61 62 61 73 65 25 3a f2 73 6f 66 74 65 72 72 6f |abase%:.softerro| 0002e0c0 72 28 22 22 2c 33 36 29 0d 19 d3 07 20 20 7f 0d |r("",36).... ..| 0002e0d0 19 d4 24 20 20 62 6c 6f 62 73 25 3d a4 66 69 6e |..$ blobs%=.fin| 0002e0e0 64 5f 62 6c 6f 62 73 28 24 64 61 74 61 62 61 73 |d_blobs($databas| 0002e0f0 65 25 29 0d 19 d5 15 20 20 46 3d 8e 28 66 24 2b |e%).... F=.(f$+| 0002e100 22 2e 46 6f 72 6d 22 29 0d 19 d6 12 20 20 e8 23 |".Form").... .#| 0002e110 46 2c 64 66 69 65 6c 64 73 25 0d 19 d7 58 20 20 |F,dfields%...X | 0002e120 de 20 44 54 61 67 24 28 64 66 69 65 6c 64 73 25 |. DTag$(dfields%| 0002e130 29 2c 46 25 28 64 66 69 65 6c 64 73 25 29 2c 46 |),F%(dfields%),F| 0002e140 31 25 28 66 69 65 6c 64 73 25 29 2c 4c 25 28 64 |1%(fields%),L%(d| 0002e150 66 69 65 6c 64 73 25 29 2c 6c 24 28 64 66 69 65 |fields%),l$(dfie| 0002e160 6c 64 73 25 29 2c 63 24 28 64 66 69 65 6c 64 73 |lds%),c$(dfields| 0002e170 25 29 0d 19 d8 17 20 20 e3 20 49 25 3d 31 20 b8 |%).... . I%=1 .| 0002e180 20 64 66 69 65 6c 64 73 25 0d 19 d9 46 20 20 20 | dfields%...F | 0002e190 20 e8 23 46 2c 44 65 73 63 24 2c 44 54 61 67 24 | .#F,Desc$,DTag$| 0002e1a0 28 49 25 29 2c 78 64 25 2c 79 64 25 2c 78 66 25 |(I%),xd%,yd%,xf%| 0002e1b0 2c 79 66 25 2c 4c 25 28 49 25 29 2c 63 68 61 72 |,yf%,L%(I%),char| 0002e1c0 25 2c 65 78 74 72 61 25 2c 65 78 74 72 61 25 0d |%,extra%,extra%.| 0002e1d0 19 da 1a 20 20 20 20 44 4c 65 6e 67 74 68 25 2b |... DLength%+| 0002e1e0 3d 4c 25 28 49 25 29 2b 31 0d 19 db 0a 20 20 ed |=L%(I%)+1.... .| 0002e1f0 20 49 25 0d 19 dc 09 20 20 d9 23 46 0d 19 dd 1c | I%.... .#F....| 0002e200 20 20 63 68 64 64 3d ae 28 66 24 2b 22 2e 44 61 | chdd=.(f$+".Da| 0002e210 74 61 62 61 73 65 22 29 0d 19 de 0e 20 20 f2 63 |tabase").... .c| 0002e220 6f 6d 70 61 72 65 0d 19 df 17 20 20 c8 99 20 22 |ompare.... .. "| 0002e230 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 19 e0 |Hourglass_On"...| 0002e240 14 20 20 e3 20 52 45 43 25 3d 30 20 b8 20 52 41 |. . REC%=0 . RA| 0002e250 25 0d 19 e1 1c 20 20 20 20 cf 23 63 68 64 64 3d |%.... .#chdd=| 0002e260 52 45 43 25 2a 44 4c 65 6e 67 74 68 25 0d 19 e2 |REC%*DLength%...| 0002e270 28 20 20 20 20 f2 72 65 61 64 28 66 69 65 6c 64 |( .read(field| 0002e280 73 25 2c a3 2c 52 45 43 25 2c 24 64 61 74 61 62 |s%,.,REC%,$datab| 0002e290 61 73 65 25 29 0d 19 e3 19 20 20 20 20 e3 20 49 |ase%).... . I| 0002e2a0 25 3d 31 20 b8 20 64 66 69 65 6c 64 73 25 0d 19 |%=1 . dfields%..| 0002e2b0 e4 1b 20 20 20 20 20 20 53 24 3d 66 69 65 6c 64 |.. S$=field| 0002e2c0 24 28 46 25 28 49 25 29 29 0d 19 e5 29 20 20 20 |$(F%(I%))...) | 0002e2d0 20 20 20 e7 20 a9 28 53 24 29 3e 4c 25 28 49 25 | . .(S$)>L%(I%| 0002e2e0 29 20 8c 20 53 24 3d c0 53 24 2c 4c 25 28 49 25 |) . S$=.S$,L%(I%| 0002e2f0 29 29 0d 19 e6 13 20 20 20 20 20 20 d5 23 63 68 |)).... .#ch| 0002e300 64 64 2c 53 24 0d 19 e7 0c 20 20 20 20 ed 20 49 |dd,S$.... . I| 0002e310 25 0d 19 e8 0e 20 20 20 20 65 78 25 3d 2d 31 0d |%.... ex%=-1.| 0002e320 19 e9 15 20 20 20 20 c8 95 20 65 78 25 3c 62 6c |... .. ex%<bl| 0002e330 6f 62 73 25 0d 19 ea 1d 20 20 20 20 20 20 65 78 |obs%.... ex| 0002e340 25 2b 3d 31 3a 46 25 3d 45 78 74 25 28 65 78 25 |%+=1:F%=Ext%(ex%| 0002e350 29 0d 19 eb 46 20 20 20 20 20 20 f2 63 6f 70 79 |)...F .copy| 0002e360 5f 62 6c 6f 62 28 24 64 61 74 61 62 61 73 65 25 |_blob($database%| 0002e370 2c 66 24 2c 52 45 43 25 2c 52 45 43 25 2c 46 25 |,f$,REC%,REC%,F%| 0002e380 2c 46 31 25 28 46 25 29 2c 63 68 61 72 74 79 70 |,F1%(F%),chartyp| 0002e390 65 25 28 46 25 29 29 0d 19 ec 09 20 20 20 20 ce |e%(F%)).... .| 0002e3a0 0d 19 ed 32 20 20 20 20 c8 99 20 22 48 6f 75 72 |...2 .. "Hour| 0002e3b0 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 |glass_Percentage| 0002e3c0 22 2c 28 52 45 43 25 2a 31 30 30 29 20 81 20 52 |",(REC%*100) . R| 0002e3d0 41 25 0d 19 ee 0c 20 20 ed 20 52 45 43 25 0d 19 |A%.... . REC%..| 0002e3e0 ef 18 20 20 c8 99 20 22 48 6f 75 72 67 6c 61 73 |.. .. "Hourglas| 0002e3f0 73 5f 4f 66 66 22 0d 19 f0 17 20 20 f2 63 6c 6f |s_Off".... .clo| 0002e400 73 65 5f 66 69 6c 65 28 63 68 64 64 29 0d 19 f1 |se_file(chdd)...| 0002e410 29 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c |) .. "OS_File",| 0002e420 31 38 2c 66 24 2b 22 2e 44 61 74 61 62 61 73 65 |18,f$+".Database| 0002e430 22 2c 26 37 66 32 0d 19 f2 49 20 20 c8 99 20 22 |",&7f2...I .. "| 0002e440 4f 53 5f 43 4c 49 22 2c 22 43 6f 70 79 20 22 2b |OS_CLI","Copy "+| 0002e450 24 64 61 74 61 62 61 73 65 25 2b 22 2e 50 72 69 |$database%+".Pri| 0002e460 6d 61 72 79 4b 65 79 20 22 2b 66 24 2b 22 2e 50 |maryKey "+f$+".P| 0002e470 72 69 6d 61 72 79 4b 65 79 20 7e 43 7e 56 22 0d |rimaryKey ~C~V".| 0002e480 19 f3 43 20 20 c8 99 20 22 4f 53 5f 43 4c 49 22 |..C .. "OS_CLI"| 0002e490 2c 22 43 6f 70 79 20 22 2b 24 64 61 74 61 62 61 |,"Copy "+$databa| 0002e4a0 73 65 25 2b 22 2e 43 6f 6c 6f 75 72 73 20 22 2b |se%+".Colours "+| 0002e4b0 66 24 2b 22 2e 43 6f 6c 6f 75 72 73 20 7e 43 7e |f$+".Colours ~C~| 0002e4c0 56 22 0d 19 f4 48 20 20 c8 99 20 22 4f 53 5f 43 |V"...H .. "OS_C| 0002e4d0 4c 49 22 2c 22 43 6f 70 79 20 22 2b 24 64 61 74 |LI","Copy "+$dat| 0002e4e0 61 62 61 73 65 25 2b 22 2e 56 61 6c 54 61 62 6c |abase%+".ValTabl| 0002e4f0 65 73 20 22 2b 66 24 2b 22 2e 56 61 6c 54 61 62 |es "+f$+".ValTab| 0002e500 6c 65 73 20 7e 43 52 7e 56 22 0d 19 f5 44 20 20 |les ~CR~V"...D | 0002e510 c8 99 20 22 4f 53 5f 43 4c 49 22 2c 22 43 6f 70 |.. "OS_CLI","Cop| 0002e520 79 20 22 2b 24 64 61 74 61 62 61 73 65 25 2b 22 |y "+$database%+"| 0002e530 2e 49 6e 64 69 63 65 73 20 22 2b 66 24 2b 22 2e |.Indices "+f$+".| 0002e540 49 6e 64 69 63 65 73 20 7e 43 52 7e 56 22 0d 19 |Indices ~CR~V"..| 0002e550 f6 46 20 20 c8 99 20 22 4f 53 5f 43 4c 49 22 2c |.F .. "OS_CLI",| 0002e560 22 43 6f 70 79 20 22 2b 24 64 61 74 61 62 61 73 |"Copy "+$databas| 0002e570 65 25 2b 22 2e 50 72 69 6e 74 52 65 73 20 22 2b |e%+".PrintRes "+| 0002e580 66 24 2b 22 2e 50 72 69 6e 74 52 65 73 20 7e 43 |f$+".PrintRes ~C| 0002e590 52 7e 56 22 0d 19 f7 1b 20 20 e7 20 6c 69 6e 6b |R~V".... . link| 0002e5a0 24 28 30 29 3d 22 4c 4f 41 44 45 44 22 20 8c 0d |$(0)="LOADED" ..| 0002e5b0 19 f8 18 20 20 20 20 6c 6b 3d ae 28 66 24 2b 22 |... lk=.(f$+"| 0002e5c0 2e 4c 69 6e 6b 22 29 0d 19 f9 19 20 20 20 20 e3 |.Link").... .| 0002e5d0 20 46 25 3d 31 20 b8 20 64 66 69 65 6c 64 73 25 | F%=1 . dfields%| 0002e5e0 0d 19 fa 15 20 20 20 20 20 20 f1 23 6c 6b 2c 6c |.... .#lk,l| 0002e5f0 24 28 46 25 29 0d 19 fb 0c 20 20 20 20 ed 20 46 |$(F%).... . F| 0002e600 25 0d 19 fc 17 20 20 20 20 f2 63 6c 6f 73 65 5f |%.... .close_| 0002e610 66 69 6c 65 28 6c 6b 29 0d 19 fd 07 20 20 cd 0d |file(lk).... ..| 0002e620 19 fe 1b 20 20 e7 20 63 61 6c 63 24 28 30 29 3d |... . calc$(0)=| 0002e630 22 4c 4f 41 44 45 44 22 20 8c 0d 19 ff 18 20 20 |"LOADED" ..... | 0002e640 20 20 63 6c 3d ae 28 66 24 2b 22 2e 43 61 6c 63 | cl=.(f$+".Calc| 0002e650 22 29 0d 1a 00 19 20 20 20 20 e3 20 46 25 3d 31 |").... . F%=1| 0002e660 20 b8 20 64 66 69 65 6c 64 73 25 0d 1a 01 15 20 | . dfields%.... | 0002e670 20 20 20 20 20 f1 23 63 6c 2c 63 24 28 46 25 29 | .#cl,c$(F%)| 0002e680 0d 1a 02 0c 20 20 20 20 ed 20 46 25 0d 1a 03 17 |.... . F%....| 0002e690 20 20 20 20 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 | .close_file(| 0002e6a0 63 6c 29 0d 1a 04 07 20 20 cd 0d 1a 05 1d 20 20 |cl).... ..... | 0002e6b0 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 72 65 |.close_window(re| 0002e6c0 66 6f 72 6d 57 25 29 0d 1a 06 05 cb 0d 1a 07 0e |formW%).........| 0002e6d0 72 65 66 6f 72 6d 24 3d 22 22 0d 1a 08 44 e7 20 |reform$=""...D. | 0002e6e0 a4 73 65 6c 65 63 74 65 64 28 70 61 73 73 57 25 |.selected(passW%| 0002e6f0 2c 31 36 29 20 8c 20 d5 23 6c 6f 67 68 61 6e 64 |,16) . .#loghand| 0002e700 6c 65 25 2c 22 52 65 63 6f 72 64 20 73 74 72 75 |le%,"Record stru| 0002e710 63 74 75 72 65 20 63 68 61 6e 67 65 64 22 0d 1a |cture changed"..| 0002e720 09 05 e1 0d 1a 0a 05 3a 0d 1a 0b 0e dd 20 f2 63 |.......:..... .c| 0002e730 6f 6d 70 61 72 65 0d 1a 0c 13 ea 20 73 6f 75 72 |ompare..... sour| 0002e740 63 65 25 2c 64 65 73 74 25 0d 1a 0d 18 e3 20 64 |ce%,dest%..... d| 0002e750 65 73 74 25 3d 31 20 b8 20 64 66 69 65 6c 64 73 |est%=1 . dfields| 0002e760 25 0d 1a 0e 17 20 20 73 6f 75 72 63 65 25 3d 66 |%.... source%=f| 0002e770 69 65 6c 64 73 25 2b 31 0d 1a 0f 07 20 20 f5 0d |ields%+1.... ..| 0002e780 1a 10 12 20 20 20 20 73 6f 75 72 63 65 25 2d 3d |... source%-=| 0002e790 31 0d 1a 11 2e 20 20 fd 20 73 6f 75 72 63 65 25 |1.... . source%| 0002e7a0 3d 30 20 84 20 54 61 67 24 28 73 6f 75 72 63 65 |=0 . Tag$(source| 0002e7b0 25 29 3d 44 54 61 67 24 28 64 65 73 74 25 29 0d |%)=DTag$(dest%).| 0002e7c0 1a 12 2a 20 20 46 25 28 64 65 73 74 25 29 3d 73 |..* F%(dest%)=s| 0002e7d0 6f 75 72 63 65 25 3a 46 31 25 28 73 6f 75 72 63 |ource%:F1%(sourc| 0002e7e0 65 25 29 3d 64 65 73 74 25 0d 1a 13 13 20 20 e7 |e%)=dest%.... .| 0002e7f0 20 73 6f 75 72 63 65 25 3e 30 20 8c 0d 1a 14 20 | source%>0 .... | 0002e800 20 20 20 20 6c 24 28 64 65 73 74 25 29 3d 6c 69 | l$(dest%)=li| 0002e810 6e 6b 24 28 73 6f 75 72 63 65 25 29 0d 1a 15 20 |nk$(source%)... | 0002e820 20 20 20 20 63 24 28 64 65 73 74 25 29 3d 63 61 | c$(dest%)=ca| 0002e830 6c 63 24 28 73 6f 75 72 63 65 25 29 0d 1a 16 07 |lc$(source%)....| 0002e840 20 20 cd 0d 1a 17 0b ed 20 64 65 73 74 25 0d 1a | ...... dest%..| 0002e850 18 05 e1 0d 1a 19 05 3a 0d 1a 1a 1a dd 20 f2 6d |.......:..... .m| 0002e860 65 72 67 65 5f 66 69 6c 65 73 28 66 24 2c 66 69 |erge_files(f$,fi| 0002e870 25 29 0d 1a 1b 37 ea 20 52 65 63 25 2c 70 74 72 |%)...7. Rec%,ptr| 0002e880 25 2c 66 69 6c 65 25 2c 64 25 2c 73 25 2c 7a 25 |%,file%,d%,s%,z%| 0002e890 2c 52 55 4d 25 2c 52 41 4d 25 2c 4e 4c 25 2c 65 |,RUM%,RAM%,NL%,e| 0002e8a0 78 25 2c 62 6c 6f 62 73 25 0d 1a 1c 26 c8 99 20 |x%,blobs%...&.. | 0002e8b0 22 4f 53 5f 46 69 6c 65 22 2c 35 2c 66 24 2b 22 |"OS_File",5,f$+"| 0002e8c0 2e 44 61 74 61 62 61 73 65 22 20 b8 20 7a 25 0d |.Database" . z%.| 0002e8d0 1a 1d 0a c8 8e 20 b9 20 ca 0d 1a 1e 1f 20 20 c9 |..... . ..... .| 0002e8e0 20 7a 25 3c 3e 31 3a f2 73 6f 66 74 65 72 72 6f | z%<>1:.softerro| 0002e8f0 72 28 22 22 2c 32 39 29 0d 1a 1f 27 20 20 c9 20 |r("",29)...' . | 0002e900 66 24 3d 24 64 61 74 61 62 61 73 65 25 3a f2 73 |f$=$database%:.s| 0002e910 6f 66 74 65 72 72 6f 72 28 22 22 2c 31 35 29 0d |ofterror("",15).| 0002e920 1a 20 26 20 20 c9 20 ac 20 a4 69 64 65 6e 74 69 |. & . . .identi| 0002e930 63 61 6c 3a f2 73 6f 66 74 65 72 72 6f 72 28 22 |cal:.softerror("| 0002e940 22 2c 32 31 29 0d 1a 21 07 20 20 7f 0d 1a 22 37 |",21)..!. ..."7| 0002e950 20 20 73 25 3d a4 73 65 6c 65 63 74 65 64 28 72 | s%=.selected(r| 0002e960 65 66 6f 72 6d 57 25 2c 32 29 3a 64 25 3d a4 73 |eformW%,2):d%=.s| 0002e970 65 6c 65 63 74 65 64 28 72 65 66 6f 72 6d 57 25 |elected(reformW%| 0002e980 2c 33 29 0d 1a 23 12 20 20 e7 20 64 25 20 8c 20 |,3)..#. . d% . | 0002e990 66 69 25 3d 30 0d 1a 24 1d 20 20 4d 24 3d 22 4d |fi%=0..$. M$="M| 0002e9a0 65 72 67 65 20 22 2b 66 24 2b 22 20 77 69 74 68 |erge "+f$+" with| 0002e9b0 20 22 0d 1a 25 41 20 20 e7 20 73 25 20 8c 20 4d | "..%A . s% . M| 0002e9c0 24 2b 3d 22 63 6f 72 72 65 73 70 6f 6e 64 69 6e |$+="correspondin| 0002e9d0 67 20 73 75 62 66 69 6c 65 73 22 20 8b 20 4d 24 |g subfiles" . M$| 0002e9e0 2b 3d 22 73 75 62 66 69 6c 65 20 22 2b c3 28 66 |+="subfile "+.(f| 0002e9f0 69 25 29 0d 1a 26 20 20 20 4d 24 2b 3d 22 20 6f |i%)..& M$+=" o| 0002ea00 66 20 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 |f current databa| 0002ea10 73 65 22 0d 1a 27 33 20 20 e7 20 64 25 20 8c 20 |se"..'3 . d% . | 0002ea20 4d 24 2b 3d 22 2c 20 61 6c 73 6f 20 72 65 73 74 |M$+=", also rest| 0002ea30 6f 72 69 6e 67 20 64 65 6c 65 74 65 64 20 72 65 |oring deleted re| 0002ea40 63 6f 72 64 73 22 0d 1a 28 42 20 20 e7 20 64 25 |cords"..(B . d%| 0002ea50 20 84 20 ac 20 73 25 20 8c 20 4d 24 2b 3d 22 2e | . . s% . M$+=".| 0002ea60 20 57 41 52 4e 49 4e 47 21 20 49 6e 64 69 63 65 | WARNING! Indice| 0002ea70 73 20 77 69 6c 6c 20 6e 65 65 64 20 72 65 62 75 |s will need rebu| 0002ea80 69 6c 64 69 6e 67 21 22 0d 1a 29 18 20 20 e7 20 |ilding!"..). . | 0002ea90 a4 63 6f 6e 66 69 72 6d 28 4d 24 29 3d b9 20 8c |.confirm(M$)=. .| 0002eaa0 0d 1a 2a 30 20 20 20 20 c8 99 20 22 4f 53 5f 46 |..*0 .. "OS_F| 0002eab0 69 6c 65 22 2c 35 2c 66 24 2b 22 2e 44 61 74 61 |ile",5,f$+".Data| 0002eac0 62 61 73 65 22 20 b8 20 2c 2c 2c 2c 6c 65 6e 25 |base" . ,,,,len%| 0002ead0 0d 1a 2b 1f 20 20 20 20 52 41 4d 25 3d 28 6c 65 |..+. RAM%=(le| 0002eae0 6e 25 20 81 20 4c 65 6e 67 74 68 25 29 2d 31 0d |n% . Length%)-1.| 0002eaf0 1a 2c 30 20 20 20 20 f2 6f 70 65 6e 5f 69 6e 64 |.,0 .open_ind| 0002eb00 65 78 28 66 24 2b 22 2e 50 72 69 6d 61 72 79 4b |ex(f$+".PrimaryK| 0002eb10 65 79 22 2c 4d 61 78 4b 65 79 73 25 2b 31 29 0d |ey",MaxKeys%+1).| 0002eb20 1a 2d 30 20 20 20 20 f2 6d 61 72 6b 5f 66 69 6c |.-0 .mark_fil| 0002eb30 65 73 28 4d 61 78 4b 65 79 73 25 2b 31 2c 52 41 |es(MaxKeys%+1,RA| 0002eb40 4d 25 2c ac 20 64 25 2c 73 25 2c 66 69 25 29 0d |M%,. d%,s%,fi%).| 0002eb50 1a 2e 28 20 20 20 20 6b 65 79 62 61 73 65 25 3d |..( keybase%=| 0002eb60 21 6b 65 79 61 6e 63 68 6f 72 25 28 4d 61 78 4b |!keyanchor%(MaxK| 0002eb70 65 79 73 25 2b 31 29 0d 1a 2f 2d 20 20 20 20 f2 |eys%+1)../- .| 0002eb80 63 6f 75 6e 74 28 4d 61 78 4b 65 79 73 25 2b 31 |count(MaxKeys%+1| 0002eb90 2c 52 55 4d 25 29 3a f2 63 6f 75 6e 74 28 30 2c |,RUM%):.count(0,| 0002eba0 52 55 25 29 0d 1a 30 14 20 20 20 20 4e 4c 25 3d |RU%)..0. NL%=| 0002ebb0 52 55 25 2b 52 55 4d 25 0d 1a 31 19 20 20 20 20 |RU%+RUM%..1. | 0002ebc0 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e |.. "Hourglass_On| 0002ebd0 22 0d 1a 32 29 20 20 20 20 e7 20 4e 4c 25 3e 52 |"..2) . NL%>R| 0002ebe0 41 25 20 8c 20 f2 63 68 61 6e 67 65 5f 6c 65 6e |A% . .change_len| 0002ebf0 67 74 68 28 4e 4c 25 2c a3 29 0d 1a 33 26 20 20 |gth(NL%,.)..3& | 0002ec00 20 20 62 6c 6f 62 73 25 3d a4 66 69 6e 64 5f 62 | blobs%=.find_b| 0002ec10 6c 6f 62 73 28 24 64 61 74 61 62 61 73 65 25 29 |lobs($database%)| 0002ec20 0d 1a 34 19 20 20 20 20 70 74 72 25 3d 21 74 65 |..4. ptr%=!te| 0002ec30 6d 70 61 6e 63 68 6f 72 25 0d 1a 35 19 20 20 20 |mpanchor%..5. | 0002ec40 20 e3 20 52 65 63 25 3d 30 20 b8 20 52 41 4d 25 | . Rec%=0 . RAM%| 0002ec50 2d 31 0d 1a 36 19 20 20 20 20 20 20 66 69 6c 65 |-1..6. file| 0002ec60 25 3d 70 74 72 25 3f 52 65 63 25 0d 1a 37 18 20 |%=ptr%?Rec%..7. | 0002ec70 20 20 20 20 20 e7 20 66 69 6c 65 25 3c 3e 32 35 | . file%<>25| 0002ec80 35 20 8c 0d 1a 38 1b 20 20 20 20 20 20 20 20 74 |5 ...8. t| 0002ec90 6f 70 3d 38 2a 66 69 6c 65 25 2b 4c 48 25 0d 1a |op=8*file%+LH%..| 0002eca0 39 24 20 20 20 20 20 20 20 20 f2 72 65 61 64 28 |9$ .read(| 0002ecb0 66 69 65 6c 64 73 25 2c a3 2c 52 65 63 25 2c 66 |fields%,.,Rec%,f| 0002ecc0 24 29 0d 1a 3a 20 20 20 20 20 20 20 20 20 f2 77 |$)..: .w| 0002ecd0 72 69 74 65 28 66 69 65 6c 64 73 25 2c 6b 65 79 |rite(fields%,key| 0002ece0 25 29 0d 1a 3b 12 20 20 20 20 20 20 20 20 65 78 |%)..;. ex| 0002ecf0 25 3d 2d 31 0d 1a 3c 19 20 20 20 20 20 20 20 20 |%=-1..<. | 0002ed00 c8 95 20 65 78 25 3c 62 6c 6f 62 73 25 0d 1a 3d |.. ex%<blobs%..=| 0002ed10 21 20 20 20 20 20 20 20 20 20 20 65 78 25 2b 3d |! ex%+=| 0002ed20 31 3a 46 25 3d 45 78 74 25 28 65 78 25 29 0d 1a |1:F%=Ext%(ex%)..| 0002ed30 3e 45 20 20 20 20 20 20 20 20 20 20 f2 63 6f 70 |>E .cop| 0002ed40 79 5f 62 6c 6f 62 28 66 24 2c 24 64 61 74 61 62 |y_blob(f$,$datab| 0002ed50 61 73 65 25 2c 52 65 63 25 2c 52 45 43 25 2c 46 |ase%,Rec%,REC%,F| 0002ed60 25 2c 46 25 2c 63 68 61 72 74 79 70 65 25 28 46 |%,F%,chartype%(F| 0002ed70 25 29 29 0d 1a 3f 0d 20 20 20 20 20 20 20 20 ce |%))..?. .| 0002ed80 0d 1a 40 37 20 20 20 20 20 20 20 20 c8 99 20 22 |..@7 .. "| 0002ed90 48 6f 75 72 67 6c 61 73 73 5f 50 65 72 63 65 6e |Hourglass_Percen| 0002eda0 74 61 67 65 22 2c 28 52 65 63 25 2a 31 30 30 29 |tage",(Rec%*100)| 0002edb0 20 81 20 52 55 4d 25 0d 1a 41 0b 20 20 20 20 20 | . RUM%..A. | 0002edc0 20 cd 0d 1a 42 0e 20 20 20 20 ed 20 52 65 63 25 | ...B. . Rec%| 0002edd0 0d 1a 43 1a 20 20 20 20 c8 99 20 22 48 6f 75 72 |..C. .. "Hour| 0002ede0 67 6c 61 73 73 5f 4f 66 66 22 0d 1a 44 1f 20 20 |glass_Off"..D. | 0002edf0 20 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 | .close_window(| 0002ee00 72 65 66 6f 72 6d 57 25 29 0d 1a 45 29 20 20 20 |reformW%)..E) | 0002ee10 20 f2 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f | .scrap_sliding_| 0002ee20 62 6c 6f 63 6b 28 74 65 6d 70 61 6e 63 68 6f 72 |block(tempanchor| 0002ee30 25 29 0d 1a 46 34 20 20 20 20 f2 73 63 72 61 70 |%)..F4 .scrap| 0002ee40 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 6b |_sliding_block(k| 0002ee50 65 79 61 6e 63 68 6f 72 25 28 4d 61 78 4b 65 79 |eyanchor%(MaxKey| 0002ee60 73 25 2b 31 29 29 0d 1a 47 21 20 20 20 20 66 69 |s%+1))..G! fi| 0002ee70 6c 65 25 3d 66 69 25 3a 74 6f 70 3d 38 2a 66 69 |le%=fi%:top=8*fi| 0002ee80 6c 65 25 2b 4c 48 25 0d 1a 48 20 20 20 20 20 61 |le%+LH%..H a| 0002ee90 64 64 72 3d a4 6d 6f 76 65 74 6f 28 6b 65 79 25 |ddr=.moveto(key%| 0002eea0 2c 74 6f 70 2c 31 29 0d 1a 49 07 20 20 cd 0d 1a |,top,1)..I. ...| 0002eeb0 4a 05 cb 0d 1a 4b 0e 72 65 66 6f 72 6d 24 3d 22 |J....K.reform$="| 0002eec0 22 0d 1a 4c 43 e7 20 a4 73 65 6c 65 63 74 65 64 |"..LC. .selected| 0002eed0 28 70 61 73 73 57 25 2c 31 36 29 20 8c 20 d5 23 |(passW%,16) . .#| 0002eee0 6c 6f 67 68 61 6e 64 6c 65 25 2c 22 52 65 63 6f |loghandle%,"Reco| 0002eef0 72 64 73 20 6d 65 72 67 65 64 20 66 72 6f 6d 20 |rds merged from | 0002ef00 22 2b 66 24 0d 1a 4d 05 e1 0d 1a 4e 05 3a 0d 1a |"+f$..M....N.:..| 0002ef10 4f 10 dd 20 a4 69 64 65 6e 74 69 63 61 6c 0d 1a |O.. .identical..| 0002ef20 50 1e ea 20 49 25 2c 46 2c 64 66 69 65 6c 64 73 |P.. I%,F,dfields| 0002ef30 25 2c 64 69 66 66 65 72 65 6e 74 25 0d 1a 51 13 |%,different%..Q.| 0002ef40 46 3d 8e 28 66 24 2b 22 2e 46 6f 72 6d 22 29 0d |F=.(f$+".Form").| 0002ef50 1a 52 10 e8 23 46 2c 64 66 69 65 6c 64 73 25 0d |.R..#F,dfields%.| 0002ef60 1a 53 26 e7 20 64 66 69 65 6c 64 73 25 3c 3e 66 |.S&. dfields%<>f| 0002ef70 69 65 6c 64 73 25 20 8c 20 64 69 66 66 65 72 65 |ields% . differe| 0002ef80 6e 74 25 3d b9 0d 1a 54 20 c8 95 20 49 25 3c 66 |nt%=...T .. I%<f| 0002ef90 69 65 6c 64 73 25 20 80 20 ac 20 64 69 66 66 65 |ields% . . diffe| 0002efa0 72 65 6e 74 25 0d 1a 55 0b 20 20 49 25 2b 3d 31 |rent%..U. I%+=1| 0002efb0 0d 1a 56 3d 20 20 e8 23 46 2c 44 65 73 63 24 2c |..V= .#F,Desc$,| 0002efc0 54 61 67 24 2c 78 64 25 2c 79 64 25 2c 78 66 25 |Tag$,xd%,yd%,xf%| 0002efd0 2c 79 66 25 2c 6c 65 6e 25 2c 63 68 61 72 25 2c |,yf%,len%,char%,| 0002efe0 65 78 74 72 61 25 2c 65 78 74 72 61 25 0d 1a 57 |extra%,extra%..W| 0002eff0 25 20 20 e7 20 6c 65 6e 25 3c 3e 6c 65 6e 25 28 |% . len%<>len%(| 0002f000 49 25 29 20 8c 20 64 69 66 66 65 72 65 6e 74 25 |I%) . different%| 0002f010 3d b9 0d 1a 58 05 ce 0d 1a 59 07 d9 23 46 0d 1a |=...X....Y..#F..| 0002f020 5a 11 3d ac 20 64 69 66 66 65 72 65 6e 74 25 0d |Z.=. different%.| 0002f030 1a 5b 05 3a 0d 1a 5c 24 dd 20 f2 6d 61 72 6b 5f |.[.:..\$. .mark_| 0002f040 66 69 6c 65 73 28 6b 65 79 25 2c 52 41 25 2c 64 |files(key%,RA%,d| 0002f050 25 2c 73 25 2c 66 25 29 0d 1a 5d 1c ea 20 50 25 |%,s%,f%)..].. P%| 0002f060 2c 49 25 2c 4d 2c 66 69 6c 65 25 2c 74 6f 70 2c |,I%,M,file%,top,| 0002f070 70 74 72 25 0d 1a 5e 32 f2 63 72 65 61 74 65 5f |ptr%..^2.create_| 0002f080 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c |named_sliding_bl| 0002f090 6f 63 6b 28 74 65 6d 70 61 6e 63 68 6f 72 25 2c |ock(tempanchor%,| 0002f0a0 52 41 25 2b 31 29 0d 1a 5f 15 c8 99 20 22 48 6f |RA%+1).._... "Ho| 0002f0b0 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 1a 60 15 70 |urglass_On"..`.p| 0002f0c0 74 72 25 3d 21 74 65 6d 70 61 6e 63 68 6f 72 25 |tr%=!tempanchor%| 0002f0d0 0d 1a 61 12 e3 20 49 25 3d 30 20 b8 20 52 41 25 |..a.. I%=0 . RA%| 0002f0e0 2d 31 0d 1a 62 10 20 20 70 74 72 25 3f 49 25 3d |-1..b. ptr%?I%=| 0002f0f0 64 25 0d 1a 63 08 ed 20 49 25 0d 1a 64 0a e7 20 |d%..c.. I%..d.. | 0002f100 64 25 20 8c 0d 1a 65 13 20 20 e3 20 66 69 6c 65 |d% ...e. . file| 0002f110 25 3d 30 20 b8 20 35 0d 1a 66 17 20 20 20 20 74 |%=0 . 5..f. t| 0002f120 6f 70 3d 38 2a 66 69 6c 65 25 2b 4c 48 25 0d 1a |op=8*file%+LH%..| 0002f130 67 21 20 20 20 20 50 25 3d a4 6e 65 69 67 68 62 |g! P%=.neighb| 0002f140 6f 75 72 28 6b 65 79 25 2c 74 6f 70 2c 31 29 0d |our(key%,top,1).| 0002f150 1a 68 12 20 20 20 20 c8 95 20 50 25 3c 3e 74 6f |.h. .. P%<>to| 0002f160 70 0d 1a 69 20 20 20 20 20 20 20 53 25 3d a4 72 |p..i S%=.r| 0002f170 65 63 5f 6e 6f 28 6b 24 2c 6b 65 79 25 2c 50 25 |ec_no(k$,key%,P%| 0002f180 29 0d 1a 6a 2b 20 20 20 20 20 20 e7 20 73 25 20 |)..j+ . s% | 0002f190 8c 20 70 74 72 25 3f 53 25 3d 66 69 6c 65 25 20 |. ptr%?S%=file% | 0002f1a0 8b 20 70 74 72 25 3f 53 25 3d 66 25 0d 1a 6b 22 |. ptr%?S%=f%..k"| 0002f1b0 20 20 20 20 20 20 50 25 3d a4 6e 65 69 67 68 62 | P%=.neighb| 0002f1c0 6f 75 72 28 6b 65 79 25 2c 50 25 2c 31 29 0d 1a |our(key%,P%,1)..| 0002f1d0 6c 09 20 20 20 20 ce 0d 1a 6d 0d 20 20 ed 20 66 |l. ...m. . f| 0002f1e0 69 6c 65 25 0d 1a 6e 05 cd 0d 1a 6f 16 c8 99 20 |ile%..n....o... | 0002f1f0 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d |"Hourglass_Off".| 0002f200 1a 70 05 e1 0d 1a 71 05 3a 0d 1a 72 21 dd 20 f2 |.p....q.:..r!. .| 0002f210 70 72 69 6e 74 5f 74 72 65 65 28 6b 65 79 25 2c |print_tree(key%,| 0002f220 66 69 6c 65 25 2c 50 52 24 29 0d 1a 73 1e ea 20 |file%,PR$)..s.. | 0002f230 4c 25 28 29 2c 43 4f 4c 25 2c 6c 65 76 65 6c 73 |L%(),COL%,levels| 0002f240 25 2c 64 65 70 74 68 25 0d 1a 74 17 f2 72 65 61 |%,depth%..t..rea| 0002f250 64 5f 70 72 69 6e 74 5f 6f 70 74 69 6f 6e 73 0d |d_print_options.| 0002f260 1a 75 18 72 65 70 6f 72 74 64 65 73 74 24 3d 22 |.u.reportdest$="| 0002f270 57 69 6e 64 6f 77 22 0d 1a 76 1e 6b 65 79 62 61 |Window"..v.keyba| 0002f280 73 65 25 3d 21 6b 65 79 61 6e 63 68 6f 72 25 28 |se%=!keyanchor%(| 0002f290 6b 65 79 25 29 0d 1a 77 16 50 25 3d 21 28 6b 65 |key%)..w.P%=!(ke| 0002f2a0 79 62 61 73 65 25 2b 74 6f 70 29 0d 1a 78 15 c8 |ybase%+top)..x..| 0002f2b0 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 |. "Hourglass_On"| 0002f2c0 0d 1a 79 13 f2 74 72 61 76 65 72 73 65 28 50 25 |..y..traverse(P%| 0002f2d0 2c a3 29 0d 1a 7a 1b 6c 65 76 65 6c 73 25 3d 64 |,.)..z.levels%=d| 0002f2e0 65 70 74 68 25 2d 32 3a 43 4f 4c 25 3d 30 0d 1a |epth%-2:COL%=0..| 0002f2f0 7b 11 de 20 4c 25 28 6c 65 76 65 6c 73 25 29 0d |{.. L%(levels%).| 0002f300 1a 7c 11 f2 74 72 65 65 5f 68 65 61 64 69 6e 67 |.|..tree_heading| 0002f310 0d 1a 7d 16 50 25 3d 21 28 6b 65 79 62 61 73 65 |..}.P%=!(keybase| 0002f320 25 2b 74 6f 70 29 0d 1a 7e 13 f2 74 72 61 76 65 |%+top)..~..trave| 0002f330 72 73 65 28 50 25 2c b9 29 0d 1a 7f 19 48 24 3d |rse(P%,.)....H$=| 0002f340 22 20 4e 6f 2e 20 6e 6f 64 65 73 20 20 20 20 20 |" No. nodes | 0002f350 31 22 0d 1a 80 1a 48 31 24 3d 22 20 4d 61 78 20 |1"....H1$=" Max | 0002f360 6e 6f 64 65 73 20 20 20 20 20 31 22 0d 1a 81 14 |nodes 1"....| 0002f370 e3 20 4c 25 3d 31 20 b8 20 6c 65 76 65 6c 73 25 |. L%=1 . levels%| 0002f380 0d 1a 82 0f 20 20 e7 20 4c 25 3c 34 30 20 8c 0d |.... . L%<40 ..| 0002f390 1a 83 14 20 20 20 20 4c 24 3d c3 28 4c 25 28 4c |... L$=.(L%(L| 0002f3a0 25 29 29 0d 1a 84 1b 20 20 20 20 4c 24 3d c4 36 |%)).... L$=.6| 0002f3b0 2d a9 28 4c 24 29 2c 22 20 22 29 2b 4c 24 0d 1a |-.(L$)," ")+L$..| 0002f3c0 85 12 20 20 20 20 4d 24 3d c3 28 32 5e 4c 25 29 |.. M$=.(2^L%)| 0002f3d0 0d 1a 86 30 20 20 20 20 e7 20 a9 28 4d 24 29 3e |...0 . .(M$)>| 0002f3e0 35 20 8c 20 4d 24 3d 42 4c 24 20 8b 20 4d 24 3d |5 . M$=BL$ . M$=| 0002f3f0 c4 36 2d a9 28 4d 24 29 2c 22 20 22 29 2b 4d 24 |.6-.(M$)," ")+M$| 0002f400 0d 1a 87 16 20 20 20 20 48 24 2b 3d 4c 24 3a 48 |.... H$+=L$:H| 0002f410 31 24 2b 3d 4d 24 0d 1a 88 07 20 20 cd 0d 1a 89 |1$+=M$.... ....| 0002f420 08 ed 20 4c 25 0d 1a 8a 11 f2 72 75 6c 65 5f 6f |.. L%.....rule_o| 0002f430 66 66 28 34 35 29 0d 1a 8b 3a 24 28 21 6c 69 6e |ff(45)...:$(!lin| 0002f440 65 61 6e 63 68 6f 72 25 29 3d 48 24 3a f2 6c 69 |eanchor%)=H$:.li| 0002f450 73 74 5f 6c 69 6e 65 28 2d 31 2c 6c 69 6e 65 61 |st_line(-1,linea| 0002f460 6e 63 68 6f 72 25 2c a9 28 48 24 29 2c 33 32 29 |nchor%,.(H$),32)| 0002f470 0d 1a 8c 3c 24 28 21 6c 69 6e 65 61 6e 63 68 6f |...<$(!lineancho| 0002f480 72 25 29 3d 48 31 24 3a f2 6c 69 73 74 5f 6c 69 |r%)=H1$:.list_li| 0002f490 6e 65 28 2d 31 2c 6c 69 6e 65 61 6e 63 68 6f 72 |ne(-1,lineanchor| 0002f4a0 25 2c a9 28 48 31 24 29 2c 33 32 29 0d 1a 8d 3c |%,.(H1$),32)...<| 0002f4b0 24 28 21 6c 69 6e 65 61 6e 63 68 6f 72 25 29 3d |$(!lineanchor%)=| 0002f4c0 4c 48 24 3a f2 6c 69 73 74 5f 6c 69 6e 65 28 2d |LH$:.list_line(-| 0002f4d0 31 2c 6c 69 6e 65 61 6e 63 68 6f 72 25 2c a9 28 |1,lineanchor%,.(| 0002f4e0 4c 48 24 29 2c 33 32 29 0d 1a 8e 11 f2 72 75 6c |LH$),32).....rul| 0002f4f0 65 5f 6f 66 66 28 34 35 29 0d 1a 8f 16 c8 99 20 |e_off(45)...... | 0002f500 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d |"Hourglass_Off".| 0002f510 1a 90 1d 66 6f 72 6d 61 74 24 3d 22 74 72 65 65 |...format$="tree| 0002f520 22 3a 74 6b 65 79 25 3d 6b 65 79 25 0d 1a 91 10 |":tkey%=key%....| 0002f530 f2 73 63 72 65 65 6e 5f 6c 69 73 74 0d 1a 92 16 |.screen_list....| 0002f540 70 69 74 63 68 24 3d a4 70 69 74 63 68 28 22 32 |pitch$=.pitch("2| 0002f550 22 29 0d 1a 93 17 f2 6c 69 74 28 6d 65 6e 75 25 |").....lit(menu%| 0002f560 28 31 38 29 2c 31 2c a3 29 0d 1a 94 05 e1 0d 1a |(18),1,.).......| 0002f570 95 05 3a 0d 1a 96 13 dd 20 f2 74 72 65 65 5f 68 |..:..... .tree_h| 0002f580 65 61 64 69 6e 67 0d 1a 97 10 ea 20 7a 65 72 6f |eading..... zero| 0002f590 25 2c 6c 65 6e 25 0d 1a 98 0f 42 4c 24 3d c4 36 |%,len%....BL$=.6| 0002f5a0 2c 22 20 22 29 0d 1a 99 1a 4c 48 24 3d 22 20 4c |," ")....LH$=" L| 0002f5b0 65 76 65 6c 20 4e 6f 2e 20 20 52 6f 6f 74 22 0d |evel No. Root".| 0002f5c0 1a 9a 14 e3 20 4c 25 3d 31 20 b8 20 6c 65 76 65 |.... L%=1 . leve| 0002f5d0 6c 73 25 0d 1a 9b 0e 20 20 4c 24 3d c3 28 4c 25 |ls%.... L$=.(L%| 0002f5e0 29 0d 1a 9c 19 20 20 e7 20 4c 25 3c 31 30 20 8c |).... . L%<10 .| 0002f5f0 20 4c 24 3d 22 30 22 2b 4c 24 0d 1a 9d 0f 20 20 | L$="0"+L$.... | 0002f600 e7 20 4c 25 3c 34 30 20 8c 0d 1a 9e 16 20 20 20 |. L%<40 ..... | 0002f610 20 4c 48 24 2b 3d 22 20 20 20 20 22 2b 4c 24 0d | LH$+=" "+L$.| 0002f620 1a 9f 13 20 20 20 20 6c 65 6e 25 3d a9 28 4c 48 |... len%=.(LH| 0002f630 24 29 0d 1a a0 07 20 20 cd 0d 1a a1 08 ed 20 4c |$).... ...... L| 0002f640 25 0d 1a a2 17 55 24 3d 22 20 22 2b c4 6c 65 6e |%....U$=" "+.len| 0002f650 25 2d 31 2c 22 2d 22 29 0d 1a a3 13 4c 65 6e 4c |%-1,"-")....LenL| 0002f660 69 6e 65 25 3d 6c 65 6e 25 2b 34 0d 1a a4 0c 43 |ine%=len%+4....C| 0002f670 6f 75 6e 74 25 3d 30 0d 1a a5 22 63 6f 75 6e 74 |ount%=0..."count| 0002f680 25 3d a4 63 6f 75 6e 74 5f 72 65 63 73 28 6b 65 |%=.count_recs(ke| 0002f690 79 25 2c 7a 65 72 6f 25 29 0d 1a a6 44 74 65 78 |y%,zero%)...Dtex| 0002f6a0 74 62 6c 6f 63 6b 73 69 7a 65 25 3d 28 63 6f 75 |tblocksize%=(cou| 0002f6b0 6e 74 25 2b 31 31 29 2a 4c 65 6e 4c 69 6e 65 25 |nt%+11)*LenLine%| 0002f6c0 3a 74 65 78 74 62 6c 6f 63 6b 69 6e 63 25 3d 74 |:textblockinc%=t| 0002f6d0 65 78 74 62 6c 6f 63 6b 73 69 7a 65 25 0d 1a a7 |extblocksize%...| 0002f6e0 3b f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 |;.extend_named_s| 0002f6f0 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 74 65 78 |liding_block(tex| 0002f700 74 61 6e 63 68 6f 72 25 2c 74 65 78 74 62 6c 6f |tanchor%,textblo| 0002f710 63 6b 73 69 7a 65 25 29 0d 1a a8 37 f2 65 78 74 |cksize%)...7.ext| 0002f720 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e |end_named_slidin| 0002f730 67 5f 62 6c 6f 63 6b 28 6c 69 6e 65 61 6e 63 68 |g_block(lineanch| 0002f740 6f 72 25 2c 4c 65 6e 4c 69 6e 65 25 2b 34 29 0d |or%,LenLine%+4).| 0002f750 1a a9 19 54 65 78 74 50 74 72 25 3d 21 74 65 78 |...TextPtr%=!tex| 0002f760 74 61 6e 63 68 6f 72 25 0d 1a aa 15 72 65 63 62 |tanchor%....recb| 0002f770 6c 6f 63 6b 73 69 7a 65 25 3d 34 30 30 0d 1a ab |locksize%=400...| 0002f780 39 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 |9.extend_named_s| 0002f790 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 72 65 63 |liding_block(rec| 0002f7a0 61 6e 63 68 6f 72 25 2c 72 65 63 62 6c 6f 63 6b |anchor%,recblock| 0002f7b0 73 69 7a 65 25 29 0d 1a ac 11 f2 72 75 6c 65 5f |size%).....rule_| 0002f7c0 6f 66 66 28 33 32 29 0d 1a ad 11 f2 72 75 6c 65 |off(32).....rule| 0002f7d0 5f 6f 66 66 28 34 35 29 0d 1a ae 5a f2 73 65 6e |_off(45)...Z.sen| 0002f7e0 64 5f 74 69 74 6c 65 28 22 54 72 65 65 20 41 6e |d_title("Tree An| 0002f7f0 61 6c 79 73 69 73 20 28 73 75 62 66 69 6c 65 3a |alysis (subfile:| 0002f800 22 2b c3 28 66 69 6c 65 25 29 2b 22 2c 20 6b 65 |"+.(file%)+", ke| 0002f810 79 3a 22 2b c3 28 6b 65 79 25 29 2b 22 2c 20 22 |y:"+.(key%)+", "| 0002f820 2b 49 6e 64 65 78 24 28 6b 65 79 25 29 2b 22 29 |+Index$(key%)+")| 0002f830 22 29 0d 1a af 11 f2 72 75 6c 65 5f 6f 66 66 28 |").....rule_off(| 0002f840 33 32 29 0d 1a b0 3c 24 28 21 6c 69 6e 65 61 6e |32)...<$(!linean| 0002f850 63 68 6f 72 25 29 3d 4c 48 24 3a f2 6c 69 73 74 |chor%)=LH$:.list| 0002f860 5f 6c 69 6e 65 28 2d 31 2c 6c 69 6e 65 61 6e 63 |_line(-1,lineanc| 0002f870 68 6f 72 25 2c a9 28 4c 48 24 29 2c 33 32 29 0d |hor%,.(LH$),32).| 0002f880 1a b1 11 f2 72 75 6c 65 5f 6f 66 66 28 34 35 29 |....rule_off(45)| 0002f890 0d 1a b2 05 e1 0d 1a b3 05 3a 0d 1a b4 16 dd 20 |.........:..... | 0002f8a0 f2 74 72 61 76 65 72 73 65 28 50 25 2c 5a 25 29 |.traverse(P%,Z%)| 0002f8b0 0d 1a b5 0d ea 20 73 74 72 69 6e 67 24 0d 1a b6 |..... string$...| 0002f8c0 0f 43 4f 4c 25 3d 43 4f 4c 25 2b 31 0d 1a b7 1f |.COL%=COL%+1....| 0002f8d0 e7 20 43 4f 4c 25 3e 64 65 70 74 68 25 20 8c 20 |. COL%>depth% . | 0002f8e0 64 65 70 74 68 25 3d 43 4f 4c 25 0d 1a b8 0e e7 |depth%=COL%.....| 0002f8f0 20 50 25 3c 30 20 8c 20 e1 0d 1a b9 15 4c 25 3d | P%<0 . .....L%=| 0002f900 21 28 6b 65 79 62 61 73 65 25 2b 50 25 29 0d 1a |!(keybase%+P%)..| 0002f910 ba 17 52 25 3d 21 28 6b 65 79 62 61 73 65 25 2b |..R%=!(keybase%+| 0002f920 50 25 2b 34 29 0d 1a bb 17 53 24 3d 24 28 6b 65 |P%+4)....S$=$(ke| 0002f930 79 62 61 73 65 25 2b 50 25 2b 38 29 0d 1a bc 19 |ybase%+P%+8)....| 0002f940 e7 20 53 24 3d 22 22 20 8c 20 53 24 3d 22 3c 6e |. S$="" . S$="<n| 0002f950 75 6c 6c 3e 22 0d 1a bd 25 72 65 63 25 3d 21 28 |ull>"...%rec%=!(| 0002f960 6b 65 79 62 61 73 65 25 2b 50 25 2b 38 2b 4b 4c |keybase%+P%+8+KL| 0002f970 25 28 6b 65 79 25 29 2b 31 29 0d 1a be 0a e7 20 |%(key%)+1)..... | 0002f980 5a 25 20 8c 0d 1a bf 1d 20 20 4c 25 28 43 4f 4c |Z% ..... L%(COL| 0002f990 25 2d 31 29 3d 4c 25 28 43 4f 4c 25 2d 31 29 2b |%-1)=L%(COL%-1)+| 0002f9a0 31 0d 1a c0 13 20 20 e7 20 50 52 24 3d 22 41 4c |1.... . PR$="AL| 0002f9b0 4c 22 20 8c 0d 1a c1 14 20 20 20 20 e7 20 43 4f |L" ..... . CO| 0002f9c0 4c 25 3c 3d 34 30 20 8c 0d 1a c2 2a 20 20 20 20 |L%<=40 ....* | 0002f9d0 20 20 73 74 72 69 6e 67 24 3d c4 43 4f 4c 25 2a | string$=.COL%*| 0002f9e0 36 2b 31 30 2d a9 28 53 24 29 2c 22 20 22 29 2b |6+10-.(S$)," ")+| 0002f9f0 53 24 0d 1a c3 4c 20 20 20 20 20 20 24 28 21 6c |S$...L $(!l| 0002fa00 69 6e 65 61 6e 63 68 6f 72 25 29 3d 73 74 72 69 |ineanchor%)=stri| 0002fa10 6e 67 24 3a f2 6c 69 73 74 5f 6c 69 6e 65 28 72 |ng$:.list_line(r| 0002fa20 65 63 25 2c 6c 69 6e 65 61 6e 63 68 6f 72 25 2c |ec%,lineanchor%,| 0002fa30 a9 28 73 74 72 69 6e 67 24 29 2c 33 32 29 0d 1a |.(string$),32)..| 0002fa40 c4 0b 20 20 20 20 20 20 cc 0d 1a c5 31 20 20 20 |.. ....1 | 0002fa50 20 20 20 73 74 72 69 6e 67 24 3d 22 20 22 2b 53 | string$=" "+S| 0002fa60 24 2b 22 20 28 6c 65 76 65 6c 20 22 2b c3 28 43 |$+" (level "+.(C| 0002fa70 4f 4c 25 2d 31 29 2b 22 29 22 0d 1a c6 4c 20 20 |OL%-1)+")"...L | 0002fa80 20 20 20 20 24 28 21 6c 69 6e 65 61 6e 63 68 6f | $(!lineancho| 0002fa90 72 25 29 3d 73 74 72 69 6e 67 24 3a f2 6c 69 73 |r%)=string$:.lis| 0002faa0 74 5f 6c 69 6e 65 28 72 65 63 25 2c 6c 69 6e 65 |t_line(rec%,line| 0002fab0 61 6e 63 68 6f 72 25 2c a9 28 73 74 72 69 6e 67 |anchor%,.(string| 0002fac0 24 29 2c 33 32 29 0d 1a c7 09 20 20 20 20 cd 0d |$),32).... ..| 0002fad0 1a c8 07 20 20 cd 0d 1a c9 05 cd 0d 1a ca 14 f2 |... ...........| 0002fae0 74 72 61 76 65 72 73 65 28 4c 25 2c 5a 25 29 0d |traverse(L%,Z%).| 0002faf0 1a cb 0f 43 4f 4c 25 3d 43 4f 4c 25 2d 31 0d 1a |...COL%=COL%-1..| 0002fb00 cc 15 4c 25 3d 21 28 6b 65 79 62 61 73 65 25 2b |..L%=!(keybase%+| 0002fb10 50 25 29 0d 1a cd 17 52 25 3d 21 28 6b 65 79 62 |P%)....R%=!(keyb| 0002fb20 61 73 65 25 2b 50 25 2b 34 29 0d 1a ce 17 53 24 |ase%+P%+4)....S$| 0002fb30 3d 24 28 6b 65 79 62 61 73 65 25 2b 50 25 2b 38 |=$(keybase%+P%+8| 0002fb40 29 0d 1a cf 25 72 65 63 25 3d 21 28 6b 65 79 62 |)...%rec%=!(keyb| 0002fb50 61 73 65 25 2b 50 25 2b 38 2b 4b 4c 25 28 6b 65 |ase%+P%+8+KL%(ke| 0002fb60 79 25 29 2b 31 29 0d 1a d0 14 f2 74 72 61 76 65 |y%)+1).....trave| 0002fb70 72 73 65 28 52 25 2c 5a 25 29 0d 1a d1 0f 43 4f |rse(R%,Z%)....CO| 0002fb80 4c 25 3d 43 4f 4c 25 2d 31 0d 1a d2 05 e1 0d 1a |L%=COL%-1.......| 0002fb90 d3 05 3a 0d 1a d4 14 dd 20 f2 62 61 6c 61 6e 63 |..:..... .balanc| 0002fba0 65 28 6b 65 79 25 29 0d 1a d5 54 ea 20 72 65 63 |e(key%)...T. rec| 0002fbb0 70 74 72 25 2c 74 6f 70 2c 66 69 6c 65 25 2c 66 |ptr%,top,file%,f| 0002fbc0 6c 61 67 70 74 72 25 2c 62 61 6c 70 74 72 25 2c |lagptr%,balptr%,| 0002fbd0 49 25 2c 4e 25 2c 41 25 2c 6d 61 78 25 2c 64 6f |I%,N%,A%,max%,do| 0002fbe0 6e 65 25 2c 68 69 67 68 65 73 74 25 2c 61 76 61 |ne%,highest%,ava| 0002fbf0 69 6c 25 2c 73 65 67 6c 65 6e 25 0d 1a d6 14 ea |il%,seglen%.....| 0002fc00 20 72 65 63 73 25 28 29 2c 70 74 72 25 28 29 0d | recs%(),ptr%().| 0002fc10 1a d7 16 de 20 72 65 63 73 25 28 35 29 2c 70 74 |.... recs%(5),pt| 0002fc20 72 25 28 35 29 0d 1a d8 0e 6e 65 77 74 72 65 65 |r%(5)....newtree| 0002fc30 25 3d b9 0d 1a d9 17 73 65 67 6c 65 6e 25 3d 4b |%=.....seglen%=K| 0002fc40 4c 25 28 6b 65 79 25 29 2b 35 0d 1a da 37 f2 65 |L%(key%)+5...7.e| 0002fc50 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 |xtend_named_slid| 0002fc60 69 6e 67 5f 62 6c 6f 63 6b 28 72 65 63 61 6e 63 |ing_block(recanc| 0002fc70 68 6f 72 25 2c 73 65 67 6c 65 6e 25 2a 52 41 25 |hor%,seglen%*RA%| 0002fc80 29 0d 1a db 37 f2 63 72 65 61 74 65 5f 6e 61 6d |)...7.create_nam| 0002fc90 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b |ed_sliding_block| 0002fca0 28 62 61 6c 61 6e 63 68 6f 72 25 2c 73 65 67 6c |(balanchor%,segl| 0002fcb0 65 6e 25 2a 52 41 25 29 0d 1a dc 30 f2 63 72 65 |en%*RA%)...0.cre| 0002fcc0 61 74 65 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e |ate_named_slidin| 0002fcd0 67 5f 62 6c 6f 63 6b 28 66 6c 61 67 61 6e 63 68 |g_block(flaganch| 0002fce0 6f 72 25 2c 52 41 25 29 0d 1a dd 41 72 65 63 70 |or%,RA%)...Arecp| 0002fcf0 74 72 25 3d 21 72 65 63 61 6e 63 68 6f 72 25 3a |tr%=!recanchor%:| 0002fd00 66 6c 61 67 70 74 72 25 3d 21 66 6c 61 67 61 6e |flagptr%=!flagan| 0002fd10 63 68 6f 72 25 3a 62 61 6c 70 74 72 25 3d 21 62 |chor%:balptr%=!b| 0002fd20 61 6c 61 6e 63 68 6f 72 25 0d 1a de 12 e3 20 49 |alanchor%..... I| 0002fd30 25 3d 30 20 b8 20 52 41 25 2d 31 0d 1a df 15 20 |%=0 . RA%-1.... | 0002fd40 20 66 6c 61 67 70 74 72 25 3f 49 25 3d 32 35 35 | flagptr%?I%=255| 0002fd50 0d 1a e0 08 ed 20 49 25 0d 1a e1 3e f4 20 42 79 |..... I%...>. By| 0002fd60 74 65 73 20 61 72 65 20 63 68 61 6e 67 65 64 20 |tes are changed | 0002fd70 66 72 6f 6d 20 32 35 35 20 74 6f 20 30 20 77 68 |from 255 to 0 wh| 0002fd80 65 72 65 20 72 65 63 6f 72 64 73 20 61 72 65 20 |ere records are | 0002fd90 69 6e 20 75 73 65 0d 1a e2 15 c8 99 20 22 48 6f |in use...... "Ho| 0002fda0 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 1a e3 11 e3 |urglass_On".....| 0002fdb0 20 66 69 6c 65 25 3d 30 20 b8 20 35 0d 1a e4 19 | file%=0 . 5....| 0002fdc0 20 20 70 74 72 25 28 66 69 6c 65 25 29 3d 72 65 | ptr%(file%)=re| 0002fdd0 63 70 74 72 25 0d 1a e5 15 20 20 74 6f 70 3d 38 |cptr%.... top=8| 0002fde0 2a 66 69 6c 65 25 2b 4c 48 25 0d 1a e6 2e 20 20 |*file%+LH%.... | 0002fdf0 72 65 63 73 25 28 66 69 6c 65 25 29 3d a4 63 6f |recs%(file%)=.co| 0002fe00 75 6e 74 5f 72 65 63 73 28 6b 65 79 25 2c 72 65 |unt_recs(key%,re| 0002fe10 63 70 74 72 25 29 2d 31 0d 1a e7 1a 20 20 6d 61 |cptr%)-1.... ma| 0002fe20 78 25 2b 3d 72 65 63 73 25 28 66 69 6c 65 25 29 |x%+=recs%(file%)| 0002fe30 2b 31 0d 1a e8 0b ed 20 66 69 6c 65 25 0d 1a e9 |+1..... file%...| 0002fe40 21 f2 6d 61 6b 65 5f 65 6d 70 74 79 5f 69 6e 64 |!.make_empty_ind| 0002fe50 65 78 28 52 41 25 2c 6b 65 79 25 2c a3 29 0d 1a |ex(RA%,key%,.)..| 0002fe60 ea 1b c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f |.... "Hourglass_| 0002fe70 4c 45 44 73 22 2c 25 31 31 0d 1a eb 11 e3 20 66 |LEDs",%11..... f| 0002fe80 69 6c 65 25 3d 30 20 b8 20 35 0d 1a ec 15 20 20 |ile%=0 . 5.... | 0002fe90 74 6f 70 3d 38 2a 66 69 6c 65 25 2b 4c 48 25 0d |top=8*file%+LH%.| 0002fea0 1a ed 19 20 20 e7 20 72 65 63 73 25 28 66 69 6c |... . recs%(fil| 0002feb0 65 25 29 3e 3d 30 20 8c 0d 1a ee 1b 20 20 20 20 |e%)>=0 ..... | 0002fec0 72 65 63 70 74 72 25 3d 70 74 72 25 28 66 69 6c |recptr%=ptr%(fil| 0002fed0 65 25 29 0d 1a ef 0c 20 20 20 20 4e 25 3d 31 0d |e%).... N%=1.| 0002fee0 1a f0 09 20 20 20 20 f5 0d 1a f1 12 20 20 20 20 |... ..... | 0002fef0 20 20 4e 25 3d 4e 25 2b 4e 25 0d 1a f2 1b 20 20 | N%=N%+N%.... | 0002ff00 20 20 fd 20 4e 25 3e 72 65 63 73 25 28 66 69 6c | . N%>recs%(fil| 0002ff10 65 25 29 2b 32 0d 1a f3 10 20 20 20 20 73 74 65 |e%)+2.... ste| 0002ff20 70 25 3d 4e 25 0d 1a f4 15 20 20 20 20 4e 25 3d |p%=N%.... N%=| 0002ff30 28 4e 25 20 81 20 32 29 2d 31 0d 1a f5 11 20 20 |(N% . 2)-1.... | 0002ff40 20 20 73 74 61 72 74 25 3d 4e 25 0d 1a f6 0c 20 | start%=N%.... | 0002ff50 20 20 20 43 25 3d 30 0d 1a f7 09 20 20 20 20 f5 | C%=0.... .| 0002ff60 0d 1a f8 1b 20 20 20 20 20 20 73 74 61 72 74 25 |.... start%| 0002ff70 3d 73 74 61 72 74 25 20 81 20 32 0d 1a f9 1a 20 |=start% . 2.... | 0002ff80 20 20 20 20 20 65 6e 64 25 3d 4e 25 2d 73 74 61 | end%=N%-sta| 0002ff90 72 74 25 2d 31 0d 1a fa 19 20 20 20 20 20 20 73 |rt%-1.... s| 0002ffa0 74 65 70 25 3d 73 74 65 70 25 20 81 20 32 0d 1a |tep%=step% . 2..| 0002ffb0 fb 24 20 20 20 20 20 20 e3 20 49 25 3d 73 74 61 |.$ . I%=sta| 0002ffc0 72 74 25 20 b8 20 65 6e 64 25 20 88 20 73 74 65 |rt% . end% . ste| 0002ffd0 70 25 0d 1a fc 39 20 20 20 20 20 20 20 20 41 25 |p%...9 A%| 0002ffe0 3d 72 65 63 70 74 72 25 2b 73 65 67 6c 65 6e 25 |=recptr%+seglen%| 0002fff0 2a 28 49 25 2a 28 72 65 63 73 25 28 66 69 6c 65 |*(I%*(recs%(file| 00030000 25 29 2b 31 29 20 81 20 4e 25 29 0d 1a fd 3d 20 |%)+1) . N%)...= | 00030010 20 20 20 20 20 20 20 62 61 6c 70 74 72 25 21 43 | balptr%!C| 00030020 25 3d 21 41 25 3a 24 28 62 61 6c 70 74 72 25 2b |%=!A%:$(balptr%+| 00030030 43 25 2b 34 29 3d 24 28 41 25 2b 34 29 3a 21 41 |C%+4)=$(A%+4):!A| 00030040 25 3d 2d 21 41 25 2d 31 0d 1a fe 17 20 20 20 20 |%=-!A%-1.... | 00030050 20 20 20 20 43 25 2b 3d 73 65 67 6c 65 6e 25 0d | C%+=seglen%.| 00030060 1a ff 0e 20 20 20 20 20 20 ed 20 49 25 0d 1b 00 |... . I%...| 00030070 11 20 20 20 20 fd 20 73 74 65 70 25 3d 32 0d 1b |. . step%=2..| 00030080 01 26 20 20 20 20 6b 6c 25 3d 4b 4c 25 28 6b 65 |.& kl%=KL%(ke| 00030090 79 25 29 3a 76 61 6c 24 3d a4 74 79 70 65 28 6b |y%):val$=.type(k| 000300a0 65 79 25 29 0d 1b 02 25 20 20 20 20 e3 20 49 25 |ey%)...% . I%| 000300b0 3d 30 20 b8 20 43 25 2d 73 65 67 6c 65 6e 25 20 |=0 . C%-seglen% | 000300c0 88 20 73 65 67 6c 65 6e 25 0d 1b 03 2e 20 20 20 |. seglen%.... | 000300d0 20 20 20 52 45 43 25 3d 62 61 6c 70 74 72 25 21 | REC%=balptr%!| 000300e0 49 25 3a 4b 45 59 24 3d 24 28 62 61 6c 70 74 72 |I%:KEY$=$(balptr| 000300f0 25 2b 49 25 2b 34 29 0d 1b 04 1e 20 20 20 20 20 |%+I%+4).... | 00030100 20 f2 69 6e 73 65 72 74 28 a3 2c 4b 45 59 24 2c | .insert(.,KEY$,| 00030110 6b 65 79 25 29 0d 1b 05 12 20 20 20 20 20 20 64 |key%).... d| 00030120 6f 6e 65 25 2b 3d 31 0d 1b 06 36 20 20 20 20 20 |one%+=1...6 | 00030130 20 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 50 | .. "Hourglass_P| 00030140 65 72 63 65 6e 74 61 67 65 22 2c 28 64 6f 6e 65 |ercentage",(done| 00030150 25 2a 31 30 30 29 20 81 20 6d 61 78 25 0d 1b 07 |%*100) . max%...| 00030160 0c 20 20 20 20 ed 20 49 25 0d 1b 08 1d 20 20 20 |. . I%.... | 00030170 20 e3 20 49 25 3d 30 20 b8 20 72 65 63 73 25 28 | . I%=0 . recs%(| 00030180 66 69 6c 65 25 29 0d 1b 09 23 20 20 20 20 20 20 |file%)...# | 00030190 52 45 43 25 3d 72 65 63 70 74 72 25 21 28 73 65 |REC%=recptr%!(se| 000301a0 67 6c 65 6e 25 2a 49 25 29 0d 1b 0a 15 20 20 20 |glen%*I%).... | 000301b0 20 20 20 e7 20 52 45 43 25 3e 3d 30 20 8c 0d 1b | . REC%>=0 ...| 000301c0 0b 28 20 20 20 20 20 20 20 20 4b 45 59 24 3d 24 |.( KEY$=$| 000301d0 28 72 65 63 70 74 72 25 2b 73 65 67 6c 65 6e 25 |(recptr%+seglen%| 000301e0 2a 49 25 2b 34 29 0d 1b 0c 20 20 20 20 20 20 20 |*I%+4)... | 000301f0 20 20 f2 69 6e 73 65 72 74 28 a3 2c 4b 45 59 24 | .insert(.,KEY$| 00030200 2c 6b 65 79 25 29 0d 1b 0d 14 20 20 20 20 20 20 |,key%).... | 00030210 20 20 64 6f 6e 65 25 2b 3d 31 0d 1b 0e 38 20 20 | done%+=1...8 | 00030220 20 20 20 20 20 20 c8 99 20 22 48 6f 75 72 67 6c | .. "Hourgl| 00030230 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 22 2c |ass_Percentage",| 00030240 28 64 6f 6e 65 25 2a 31 30 30 29 20 81 20 6d 61 |(done%*100) . ma| 00030250 78 25 0d 1b 0f 0b 20 20 20 20 20 20 cd 0d 1b 10 |x%.... ....| 00030260 0c 20 20 20 20 ed 20 49 25 0d 1b 11 07 20 20 cd |. . I%.... .| 00030270 0d 1b 12 0b ed 20 66 69 6c 65 25 0d 1b 13 1b c8 |..... file%.....| 00030280 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4c 45 44 |. "Hourglass_LED| 00030290 73 22 2c 25 30 30 0d 1b 14 1e 6b 65 79 62 61 73 |s",%00....keybas| 000302a0 65 25 3d 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b |e%=!keyanchor%(k| 000302b0 65 79 25 29 0d 1b 15 1d 6e 6f 64 65 73 69 7a 65 |ey%)....nodesize| 000302c0 25 3d 38 2b 4b 4c 25 28 6b 65 79 25 29 2b 31 2b |%=8+KL%(key%)+1+| 000302d0 34 0d 1b 16 14 61 76 61 69 6c 25 3d 21 6b 65 79 |4....avail%=!key| 000302e0 62 61 73 65 25 0d 1b 17 15 e3 20 49 25 3d 30 20 |base%..... I%=0 | 000302f0 b8 20 68 69 67 68 65 73 74 25 0d 1b 18 19 20 20 |. highest%.... | 00030300 e7 20 66 6c 61 67 70 74 72 25 3f 49 25 3d 32 35 |. flagptr%?I%=25| 00030310 35 20 8c 0d 1b 19 2b 20 20 20 20 21 28 6b 65 79 |5 ....+ !(key| 00030320 62 61 73 65 25 2b 61 76 61 69 6c 25 2b 38 2b 4b |base%+avail%+8+K| 00030330 4c 25 28 6b 65 79 25 29 2b 31 29 3d 49 25 0d 1b |L%(key%)+1)=I%..| 00030340 1a 19 20 20 20 20 61 76 61 69 6c 25 2b 3d 6e 6f |.. avail%+=no| 00030350 64 65 73 69 7a 65 25 0d 1b 1b 07 20 20 cd 0d 1b |desize%.... ...| 00030360 1c 08 ed 20 49 25 0d 1b 1d 16 c8 99 20 22 48 6f |... I%...... "Ho| 00030370 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d 1b 1e 24 |urglass_Off"...$| 00030380 f2 73 63 72 61 70 5f 73 6c 69 64 69 6e 67 5f 62 |.scrap_sliding_b| 00030390 6c 6f 63 6b 28 62 61 6c 61 6e 63 68 6f 72 25 29 |lock(balanchor%)| 000303a0 0d 1b 1f 24 f2 73 63 72 61 70 5f 73 6c 69 64 69 |...$.scrap_slidi| 000303b0 6e 67 5f 62 6c 6f 63 6b 28 72 65 63 61 6e 63 68 |ng_block(recanch| 000303c0 6f 72 25 29 0d 1b 20 25 f2 73 63 72 61 70 5f 73 |or%).. %.scrap_s| 000303d0 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 66 6c 61 |liding_block(fla| 000303e0 67 61 6e 63 68 6f 72 25 29 0d 1b 21 0e f2 73 61 |ganchor%)..!..sa| 000303f0 76 65 5f 6b 65 79 73 0d 1b 22 0e 6e 65 77 74 72 |ve_keys..".newtr| 00030400 65 65 25 3d a3 0d 1b 23 4b e7 20 a4 73 65 6c 65 |ee%=...#K. .sele| 00030410 63 74 65 64 28 70 61 73 73 57 25 2c 31 36 29 20 |cted(passW%,16) | 00030420 8c 20 d5 23 6c 6f 67 68 61 6e 64 6c 65 25 2c 22 |. .#loghandle%,"| 00030430 49 6e 64 65 78 20 22 2b 49 6e 64 65 78 24 28 6b |Index "+Index$(k| 00030440 65 79 25 29 2b 22 20 62 61 6c 61 6e 63 65 64 22 |ey%)+" balanced"| 00030450 0d 1b 24 05 e1 0d 1b 25 05 3a 0d 1b 26 1f dd 20 |..$....%.:..&.. | 00030460 f2 64 75 70 6c 69 63 61 74 65 73 28 64 6b 65 79 |.duplicates(dkey| 00030470 25 2c 64 66 69 6c 65 25 29 0d 1b 27 37 ea 20 50 |%,dfile%)..'7. P| 00030480 24 2c 53 24 2c 52 50 24 2c 52 53 24 2c 64 61 64 |$,S$,RP$,RS$,dad| 00030490 64 72 2c 64 74 6f 70 2c 52 50 25 2c 52 53 25 2c |dr,dtop,RP%,RS%,| 000304a0 63 6f 75 6e 74 25 2c 65 78 61 6d 69 6e 65 64 25 |count%,examined%| 000304b0 0d 1b 28 07 ea 20 85 0d 1b 29 1a ee 20 85 20 ea |..(.. ...).. . .| 000304c0 3a f7 20 85 3a f2 61 62 6f 72 74 5f 64 75 70 3a |:. .:.abort_dup:| 000304d0 e1 0d 1b 2a 22 63 6f 75 6e 74 25 3d a4 63 6f 75 |...*"count%=.cou| 000304e0 6e 74 5f 72 65 63 73 28 6b 65 79 25 2c 7a 65 72 |nt_recs(key%,zer| 000304f0 6f 25 29 0d 1b 2b 17 f2 72 65 61 64 5f 70 72 69 |o%)..+..read_pri| 00030500 6e 74 5f 6f 70 74 69 6f 6e 73 0d 1b 2c 42 72 65 |nt_options..,Bre| 00030510 70 6f 72 74 64 65 73 74 24 3d 22 57 69 6e 64 6f |portdest$="Windo| 00030520 77 22 3a 66 6f 72 6d 61 74 24 3d 22 64 75 70 22 |w":format$="dup"| 00030530 3a 43 6f 75 6e 74 25 3d 30 3a 4c 65 6e 4c 69 6e |:Count%=0:LenLin| 00030540 65 25 3d 4b 4c 25 28 30 29 2b 32 33 0d 1b 2d 3c |e%=KL%(0)+23..-<| 00030550 74 65 78 74 62 6c 6f 63 6b 73 69 7a 65 25 3d 31 |textblocksize%=1| 00030560 30 30 2a 4c 65 6e 4c 69 6e 65 25 3a 74 65 78 74 |00*LenLine%:text| 00030570 62 6c 6f 63 6b 69 6e 63 25 3d 74 65 78 74 62 6c |blockinc%=textbl| 00030580 6f 63 6b 73 69 7a 65 25 0d 1b 2e 3b f2 65 78 74 |ocksize%...;.ext| 00030590 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e |end_named_slidin| 000305a0 67 5f 62 6c 6f 63 6b 28 74 65 78 74 61 6e 63 68 |g_block(textanch| 000305b0 6f 72 25 2c 74 65 78 74 62 6c 6f 63 6b 73 69 7a |or%,textblocksiz| 000305c0 65 25 29 0d 1b 2f 37 f2 65 78 74 65 6e 64 5f 6e |e%)../7.extend_n| 000305d0 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f |amed_sliding_blo| 000305e0 63 6b 28 6c 69 6e 65 61 6e 63 68 6f 72 25 2c 4c |ck(lineanchor%,L| 000305f0 65 6e 4c 69 6e 65 25 2b 34 29 0d 1b 30 19 54 65 |enLine%+4)..0.Te| 00030600 78 74 50 74 72 25 3d 21 74 65 78 74 61 6e 63 68 |xtPtr%=!textanch| 00030610 6f 72 25 0d 1b 31 15 72 65 63 62 6c 6f 63 6b 73 |or%..1.recblocks| 00030620 69 7a 65 25 3d 34 30 30 0d 1b 32 39 f2 65 78 74 |ize%=400..29.ext| 00030630 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e |end_named_slidin| 00030640 67 5f 62 6c 6f 63 6b 28 72 65 63 61 6e 63 68 6f |g_block(recancho| 00030650 72 25 2c 72 65 63 62 6c 6f 63 6b 73 69 7a 65 25 |r%,recblocksize%| 00030660 29 0d 1b 33 1c f2 63 6c 6f 73 65 5f 77 69 6e 64 |)..3..close_wind| 00030670 6f 77 28 64 61 74 61 64 69 63 57 25 29 0d 1b 34 |ow(datadicW%)..4| 00030680 11 f2 72 75 6c 65 5f 6f 66 66 28 33 32 29 0d 1b |..rule_off(32)..| 00030690 35 61 6c 69 6e 65 24 3d 22 20 44 75 70 6c 69 63 |5aline$=" Duplic| 000306a0 61 74 65 64 20 70 72 69 6d 61 72 79 20 6b 65 79 |ated primary key| 000306b0 73 22 3a 24 28 21 6c 69 6e 65 61 6e 63 68 6f 72 |s":$(!lineanchor| 000306c0 25 29 3d 6c 69 6e 65 24 3a f2 6c 69 73 74 5f 6c |%)=line$:.list_l| 000306d0 69 6e 65 28 2d 31 2c 6c 69 6e 65 61 6e 63 68 6f |ine(-1,lineancho| 000306e0 72 25 2c a9 28 6c 69 6e 65 24 29 2c 33 32 29 0d |r%,.(line$),32).| 000306f0 1b 36 11 f2 72 75 6c 65 5f 6f 66 66 28 34 35 29 |.6..rule_off(45)| 00030700 0d 1b 37 15 64 74 6f 70 3d 38 2a 64 66 69 6c 65 |..7.dtop=8*dfile| 00030710 25 2b 4c 48 25 0d 1b 38 22 64 61 64 64 72 3d a4 |%+LH%..8"daddr=.| 00030720 6e 65 69 67 68 62 6f 75 72 28 64 6b 65 79 25 2c |neighbour(dkey%,| 00030730 64 74 6f 70 2c 31 29 0d 1b 39 15 c8 99 20 22 48 |dtop,1)..9... "H| 00030740 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 1b 3a 12 |ourglass_On"..:.| 00030750 c8 95 20 64 61 64 64 72 3c 3e 64 74 6f 70 0d 1b |.. daddr<>dtop..| 00030760 3b 18 20 20 c8 99 20 22 4f 53 5f 42 79 74 65 22 |;. .. "OS_Byte"| 00030770 2c 32 32 39 2c 30 0d 1b 3c 53 20 20 53 24 3d 24 |,229,0..<S S$=$| 00030780 28 21 6b 65 79 61 6e 63 68 6f 72 25 28 64 6b 65 |(!keyanchor%(dke| 00030790 79 25 29 2b 64 61 64 64 72 2b 38 29 3a 52 53 25 |y%)+daddr+8):RS%| 000307a0 3d 21 28 21 6b 65 79 61 6e 63 68 6f 72 25 28 64 |=!(!keyanchor%(d| 000307b0 6b 65 79 25 29 2b 64 61 64 64 72 2b 39 2b 4b 4c |key%)+daddr+9+KL| 000307c0 25 28 64 6b 65 79 25 29 29 0d 1b 3d 3b 20 20 52 |%(dkey%))..=; R| 000307d0 53 24 3d c3 28 52 53 25 29 3a 52 53 24 3d 22 20 |S$=.(RS%):RS$=" | 000307e0 52 65 63 6f 72 64 20 4e 6f 2e 22 2b c4 37 2d a9 |Record No."+.7-.| 000307f0 28 52 53 24 29 2c 22 20 22 29 2b 52 53 24 2b 22 |(RS$)," ")+RS$+"| 00030800 20 20 20 22 0d 1b 3e 0f 20 20 e7 20 53 24 3d 50 | "..>. . S$=P| 00030810 24 20 8c 0d 1b 3f 14 20 20 20 20 6c 69 6e 65 24 |$ ...?. line$| 00030820 3d 52 50 24 2b 50 24 0d 1b 40 45 20 20 20 20 24 |=RP$+P$..@E $| 00030830 28 21 6c 69 6e 65 61 6e 63 68 6f 72 25 29 3d 6c |(!lineanchor%)=l| 00030840 69 6e 65 24 3a f2 6c 69 73 74 5f 6c 69 6e 65 28 |ine$:.list_line(| 00030850 52 50 25 2c 6c 69 6e 65 61 6e 63 68 6f 72 25 2c |RP%,lineanchor%,| 00030860 a9 28 6c 69 6e 65 24 29 2c 33 32 29 0d 1b 41 14 |.(line$),32)..A.| 00030870 20 20 20 20 6c 69 6e 65 24 3d 52 53 24 2b 53 24 | line$=RS$+S$| 00030880 0d 1b 42 45 20 20 20 20 24 28 21 6c 69 6e 65 61 |..BE $(!linea| 00030890 6e 63 68 6f 72 25 29 3d 6c 69 6e 65 24 3a f2 6c |nchor%)=line$:.l| 000308a0 69 73 74 5f 6c 69 6e 65 28 52 53 25 2c 6c 69 6e |ist_line(RS%,lin| 000308b0 65 61 6e 63 68 6f 72 25 2c a9 28 6c 69 6e 65 24 |eanchor%,.(line$| 000308c0 29 2c 33 32 29 0d 1b 43 07 20 20 cd 0d 1b 44 1b |),32)..C. ...D.| 000308d0 20 20 50 24 3d 53 24 3a 52 50 25 3d 52 53 25 3a | P$=S$:RP%=RS%:| 000308e0 52 50 24 3d 52 53 24 0d 1b 45 12 20 20 65 78 61 |RP$=RS$..E. exa| 000308f0 6d 69 6e 65 64 25 2b 3d 31 0d 1b 46 36 20 20 c8 |mined%+=1..F6 .| 00030900 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 50 65 72 |. "Hourglass_Per| 00030910 63 65 6e 74 61 67 65 22 2c 65 78 61 6d 69 6e 65 |centage",examine| 00030920 64 25 2a 31 30 30 20 81 20 63 6f 75 6e 74 25 0d |d%*100 . count%.| 00030930 1b 47 25 20 20 64 61 64 64 72 3d a4 6e 65 69 67 |.G% daddr=.neig| 00030940 68 62 6f 75 72 28 64 6b 65 79 25 2c 64 61 64 64 |hbour(dkey%,dadd| 00030950 72 2c 31 29 0d 1b 48 0b 20 20 f2 70 6f 6c 6c 0d |r,1)..H. .poll.| 00030960 1b 49 05 ce 0d 1b 4a 11 f2 72 75 6c 65 5f 6f 66 |.I....J..rule_of| 00030970 66 28 33 32 29 0d 1b 4b 16 c8 99 20 22 48 6f 75 |f(32)..K... "Hou| 00030980 72 67 6c 61 73 73 5f 4f 66 66 22 0d 1b 4c 10 f2 |rglass_Off"..L..| 00030990 73 63 72 65 65 6e 5f 6c 69 73 74 0d 1b 4d 05 e1 |screen_list..M..| 000309a0 0d 1b 4e 05 3a 0d 1b 4f 10 dd 20 f2 61 62 6f 72 |..N.:..O.. .abor| 000309b0 74 5f 64 75 70 0d 1b 50 16 c8 99 20 22 48 6f 75 |t_dup..P... "Hou| 000309c0 72 67 6c 61 73 73 5f 4f 66 66 22 0d 1b 51 10 f2 |rglass_Off"..Q..| 000309d0 73 63 72 65 65 6e 5f 6c 69 73 74 0d 1b 52 0c e7 |screen_list..R..| 000309e0 20 9f 3d 31 37 20 8c 0d 1b 53 17 20 20 f2 73 6f | .=17 ...S. .so| 000309f0 66 74 65 72 72 6f 72 28 22 22 2c 36 37 29 0d 1b |fterror("",67)..| 00030a00 54 1d 20 20 cc 20 f2 77 69 6d 70 5f 65 72 72 6f |T. . .wimp_erro| 00030a10 72 28 b9 2c 9f 2c 9e 2c f6 24 29 0d 1b 55 05 cd |r(.,.,.,.$)..U..| 00030a20 0d 1b 56 05 e1 0d 1b 57 05 3a 0d 1b 58 16 dd 20 |..V....W.:..X.. | 00030a30 a4 73 74 72 69 70 73 70 61 63 65 73 28 73 24 29 |.stripspaces(s$)| 00030a40 0d 1b 59 0f c8 95 20 c2 73 24 29 3d 22 20 22 0d |..Y... .s$)=" ".| 00030a50 1b 5a 0d 20 20 73 24 3d c0 73 24 29 0d 1b 5b 05 |.Z. s$=.s$)..[.| 00030a60 ce 0d 1b 5c 07 3d 73 24 0d 1b 5d 05 3a 0d 1b 5e |...\.=s$..].:..^| 00030a70 0e f4 20 3e 52 41 4d 74 72 65 65 0d 1b 5f 05 3a |.. >RAMtree.._.:| 00030a80 0d 1b 60 4b f4 20 49 6e 64 65 78 20 68 61 6e 64 |..`K. Index hand| 00030a90 6c 69 6e 67 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |ling -----------| 00030aa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00030ac0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 1b 61 05 3a |-----------..a.:| 00030ad0 0d 1b 62 1f dd 20 a4 6e 65 69 67 68 62 6f 75 72 |..b.. .neighbour| 00030ae0 28 6b 65 79 25 2c 61 64 64 72 25 2c 64 25 29 0d |(key%,addr%,d%).| 00030af0 1b 63 17 ea 20 52 25 2c 53 25 2c 70 25 2c 6b 65 |.c.. R%,S%,p%,ke| 00030b00 79 62 61 73 65 25 0d 1b 64 1e 6b 65 79 62 61 73 |ybase%..d.keybas| 00030b10 65 25 3d 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b |e%=!keyanchor%(k| 00030b20 65 79 25 29 0d 1b 65 0b 70 25 3d 64 25 2a 34 0d |ey%)..e.p%=d%*4.| 00030b30 1b 66 1b 52 25 3d 21 28 6b 65 79 62 61 73 65 25 |.f.R%=!(keybase%| 00030b40 2b 61 64 64 72 25 2b 70 25 29 0d 1b 67 11 e7 20 |+addr%+p%)..g.. | 00030b50 52 25 3c 30 20 8c 20 3d 2d 52 25 0d 1b 68 0b 70 |R%<0 . =-R%..h.p| 00030b60 25 3d 34 2d 70 25 0d 1b 69 05 f5 0d 1b 6a 0e 20 |%=4-p%..i....j. | 00030b70 20 61 64 64 72 25 3d 52 25 0d 1b 6b 1d 20 20 53 | addr%=R%..k. S| 00030b80 25 3d 21 28 6b 65 79 62 61 73 65 25 2b 61 64 64 |%=!(keybase%+add| 00030b90 72 25 2b 70 25 29 0d 1b 6c 14 20 20 e7 20 53 25 |r%+p%)..l. . S%| 00030ba0 3e 30 20 8c 20 52 25 3d 53 25 0d 1b 6d 0b fd 20 |>0 . R%=S%..m.. | 00030bb0 53 25 3c 3d 30 0d 1b 6e 07 3d 52 25 0d 1b 6f 05 |S%<=0..n.=R%..o.| 00030bc0 3a 0d 1b 70 1e dd 20 a4 72 65 63 5f 6e 6f 28 f8 |:..p.. .rec_no(.| 00030bd0 20 6b 24 2c 6b 65 79 25 2c 61 64 64 72 25 29 0d | k$,key%,addr%).| 00030be0 1b 71 23 6b 24 3d 24 28 21 6b 65 79 61 6e 63 68 |.q#k$=$(!keyanch| 00030bf0 6f 72 25 28 6b 65 79 25 29 2b 61 64 64 72 25 2b |or%(key%)+addr%+| 00030c00 38 29 0d 1b 72 2d 3d 21 28 21 6b 65 79 61 6e 63 |8)..r-=!(!keyanc| 00030c10 68 6f 72 25 28 6b 65 79 25 29 2b 61 64 64 72 25 |hor%(key%)+addr%| 00030c20 2b 38 2b 4b 4c 25 28 6b 65 79 25 29 2b 31 29 0d |+8+KL%(key%)+1).| 00030c30 1b 73 05 3a 0d 1b 74 21 dd 20 f2 73 63 61 6e 5f |.s.:..t!. .scan_| 00030c40 66 69 6c 65 28 63 24 2c 6b 65 79 25 2c 61 63 74 |file(c$,key%,act| 00030c50 69 6f 6e 25 29 0d 1b 75 27 ea 20 52 45 43 25 2c |ion%)..u'. REC%,| 00030c60 65 78 61 6d 69 6e 65 64 25 2c 73 75 62 74 6f 74 |examined%,subtot| 00030c70 61 6c 25 2c 58 25 2c 59 25 2c 6e 24 0d 1b 76 14 |al%,X%,Y%,n$..v.| 00030c80 6e 24 3d 22 30 31 32 33 34 35 36 37 38 39 2e 22 |n$="0123456789."| 00030c90 0d 1b 77 25 73 75 62 74 6f 74 61 6c 25 3d a4 63 |..w%subtotal%=.c| 00030ca0 6f 75 6e 74 5f 72 65 63 73 28 6b 65 79 25 2c 7a |ount_recs(key%,z| 00030cb0 65 72 6f 25 29 0d 1b 78 0e c8 95 20 a0 28 63 24 |ero%)..x... .(c$| 00030cc0 29 3d b9 0d 1b 79 18 20 20 c8 99 20 22 4f 53 5f |)=...y. .. "OS_| 00030cd0 42 79 74 65 22 2c 32 32 39 2c 30 0d 1b 7a 1e 20 |Byte",229,0..z. | 00030ce0 20 52 45 43 25 3d a4 72 65 63 5f 6e 6f 28 6b 24 | REC%=.rec_no(k$| 00030cf0 2c 6b 65 79 25 2c 50 25 29 0d 1b 7b 25 20 20 f2 |,key%,P%)..{% .| 00030d00 72 65 61 64 73 6d 61 72 72 61 79 28 64 62 61 73 |readsmarray(dbas| 00030d10 65 68 61 6e 64 6c 65 25 2c 52 45 43 25 29 0d 1b |ehandle%,REC%)..| 00030d20 7c 12 20 20 65 78 61 6d 69 6e 65 64 25 2b 3d 31 ||. examined%+=1| 00030d30 0d 1b 7d 16 20 20 e7 20 a0 28 53 65 61 72 63 68 |..}. . .(Search| 00030d40 24 29 3d b9 20 8c 0d 1b 7e 14 20 20 20 20 c8 8e |$)=. ...~. ..| 00030d50 20 61 63 74 69 6f 6e 25 20 ca 0d 1b 7f 1a 20 20 | action% ..... | 00030d60 20 20 20 20 c9 20 30 3a f2 67 65 74 5f 6c 65 6e | . 0:.get_len| 00030d70 67 74 68 73 0d 1b 80 21 20 20 20 20 20 20 c9 20 |gths...! . | 00030d80 31 3a f2 70 72 69 6e 74 5f 72 65 63 6f 72 64 28 |1:.print_record(| 00030d90 52 45 43 25 29 0d 1b 81 2d 20 20 20 20 20 20 c9 |REC%)...- .| 00030da0 20 32 3a 70 74 72 25 3f 52 45 43 25 3d 32 35 35 | 2:ptr%?REC%=255| 00030db0 3a f4 20 23 23 23 20 65 61 72 6d 61 72 6b 20 23 |:. ### earmark #| 00030dc0 23 23 0d 1b 82 22 20 20 20 20 20 20 c9 20 33 3a |##..." . 3:| 00030dd0 f2 77 72 69 74 65 5f 63 73 76 5f 72 65 63 28 52 |.write_csv_rec(R| 00030de0 45 43 25 29 0d 1b 83 3b 20 20 20 20 20 20 c9 20 |EC%)...; . | 00030df0 34 3a 4b 45 59 24 3d a4 6b 65 79 32 28 6e 65 77 |4:KEY$=.key2(new| 00030e00 6b 65 79 25 2c 31 29 3a f2 69 6e 73 65 72 74 28 |key%,1):.insert(| 00030e10 a3 2c 4b 45 59 24 2c 6e 65 77 6b 65 79 25 29 0d |.,KEY$,newkey%).| 00030e20 1b 84 20 20 20 20 20 20 20 f4 20 23 23 23 20 63 |.. . ### c| 00030e30 72 65 61 74 65 20 69 6e 64 65 78 20 23 23 23 0d |reate index ###.| 00030e40 1b 85 0e 20 20 20 20 20 20 c9 20 35 3a 0d 1b 86 |... . 5:...| 00030e50 1d 20 20 20 20 20 20 53 24 3d 46 24 28 46 69 65 |. S$=F$(Fie| 00030e60 6c 64 6e 75 6d 62 65 72 25 29 0d 1b 87 16 20 20 |ldnumber%).... | 00030e70 20 20 20 20 e7 20 6e 75 6d 65 72 69 63 25 20 8c | . numeric% .| 00030e80 0d 1b 88 15 20 20 20 20 20 20 20 20 58 25 3d 30 |.... X%=0| 00030e90 3a 59 25 3d 30 0d 1b 89 13 20 20 20 20 20 20 20 |:Y%=0.... | 00030ea0 20 f5 20 58 25 2b 3d 31 0d 1b 8a 29 20 20 20 20 | . X%+=1...) | 00030eb0 20 20 20 20 fd 20 58 25 3e a9 28 53 24 29 20 84 | . X%>.(S$) .| 00030ec0 20 a7 6e 24 2c c1 53 24 2c 58 25 2c 31 29 29 3e | .n$,.S$,X%,1))>| 00030ed0 30 0d 1b 8b 19 20 20 20 20 20 20 20 20 e7 20 58 |0.... . X| 00030ee0 25 3c 3d a9 28 53 24 29 20 8c 0d 1b 8c 13 20 20 |%<=.(S$) ..... | 00030ef0 20 20 20 20 20 20 20 20 59 25 3d 58 25 0d 1b 8d | Y%=X%...| 00030f00 15 20 20 20 20 20 20 20 20 20 20 f5 20 59 25 2b |. . Y%+| 00030f10 3d 31 0d 1b 8e 2b 20 20 20 20 20 20 20 20 20 20 |=1...+ | 00030f20 fd 20 59 25 3e a9 28 53 24 29 20 84 20 a7 6e 24 |. Y%>.(S$) . .n$| 00030f30 2c c1 53 24 2c 59 25 2c 31 29 29 3d 30 0d 1b 8f |,.S$,Y%,1))=0...| 00030f40 0d 20 20 20 20 20 20 20 20 cd 0d 1b 90 3b 20 20 |. ....; | 00030f50 20 20 20 20 20 20 53 24 3d c0 53 24 2c 58 25 2d | S$=.S$,X%-| 00030f60 31 29 2b c3 28 a0 28 c1 53 24 2c 58 25 2c 59 25 |1)+.(.(.S$,X%,Y%| 00030f70 2d 58 25 29 2b 4e 65 77 24 29 29 2b c1 53 24 2c |-X%)+New$))+.S$,| 00030f80 59 25 29 20 20 0d 1b 91 15 20 20 20 20 20 20 20 |Y%) .... | 00030f90 20 cc 20 53 24 3d 4e 65 77 24 0d 1b 92 0b 20 20 | . S$=New$.... | 00030fa0 20 20 20 20 cd 0d 1b 93 1f 20 20 20 20 20 20 e7 | ..... .| 00030fb0 20 a9 28 53 24 29 3e 54 65 78 74 4c 65 6e 67 74 | .(S$)>TextLengt| 00030fc0 68 25 20 8c 0d 1b 94 1d 20 20 20 20 20 20 20 20 |h% ..... | 00030fd0 f2 73 6f 66 74 65 72 72 6f 72 28 22 22 2c 31 30 |.softerror("",10| 00030fe0 29 0d 1b 95 0d 20 20 20 20 20 20 20 20 cc 0d 1b |).... ...| 00030ff0 96 1f 20 20 20 20 20 20 20 20 46 24 28 46 69 65 |.. F$(Fie| 00031000 6c 64 6e 75 6d 62 65 72 25 29 3d 53 24 0d 1b 97 |ldnumber%)=S$...| 00031010 2c 20 20 20 20 20 20 20 20 f2 77 72 69 74 65 73 |, .writes| 00031020 6d 61 72 72 61 79 28 64 62 61 73 65 68 61 6e 64 |marray(dbasehand| 00031030 6c 65 25 2c 52 45 43 25 29 0d 1b 98 0b 20 20 20 |le%,REC%).... | 00031040 20 20 20 cd 0d 1b 99 21 20 20 20 20 20 20 f4 20 | ....! . | 00031050 23 23 23 20 67 6c 6f 62 61 6c 20 63 68 61 6e 67 |### global chang| 00031060 65 20 23 23 23 0d 1b 9a 09 20 20 20 20 cb 0d 1b |e ###.... ...| 00031070 9b 07 20 20 cd 0d 1b 9c 1e 20 20 50 25 3d a4 6e |.. ..... P%=.n| 00031080 65 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 50 25 |eighbour(key%,P%| 00031090 2c 31 29 0d 1b 9d 3b 20 20 c8 99 20 22 48 6f 75 |,1)...; .. "Hou| 000310a0 72 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 |rglass_Percentag| 000310b0 65 22 2c 28 65 78 61 6d 69 6e 65 64 25 2a 31 30 |e",(examined%*10| 000310c0 30 29 20 81 20 73 75 62 74 6f 74 61 6c 25 0d 1b |0) . subtotal%..| 000310d0 9e 05 ce 0d 1b 9f 05 e1 0d 1b a0 05 3a 0d 1b a1 |............:...| 000310e0 19 dd 20 a4 73 65 61 72 63 68 28 53 24 2c 6b 65 |.. .search(S$,ke| 000310f0 79 25 2c 4d 25 29 0d 1b a2 1e ea 20 50 25 2c 66 |y%,M%)..... P%,f| 00031100 6f 75 6e 64 25 2c 69 6e 66 6f 24 2c 6b 65 79 62 |ound%,info$,keyb| 00031110 61 73 65 25 0d 1b a3 1e 6b 65 79 62 61 73 65 25 |ase%....keybase%| 00031120 3d 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 79 |=!keyanchor%(key| 00031130 25 29 0d 1b a4 18 5a 25 3d 30 3a 50 25 3d 74 6f |%)....Z%=0:P%=to| 00031140 70 3a 69 64 65 6e 74 25 3d a3 0d 1b a5 05 f5 0d |p:ident%=.......| 00031150 1b a6 0b 20 20 4c 25 3d 50 25 0d 1b a7 1a 20 20 |... L%=P%.... | 00031160 50 25 3d 21 28 6b 65 79 62 61 73 65 25 2b 4c 25 |P%=!(keybase%+L%| 00031170 2b 5a 25 29 0d 1b a8 1f 20 20 e7 20 50 25 3c 3d |+Z%).... . P%<=| 00031180 30 20 8c 20 50 25 3d 2d 4c 25 3a 66 6f 75 6e 64 |0 . P%=-L%:found| 00031190 25 3d b9 0d 1b a9 1c 20 20 69 6e 66 6f 24 3d 24 |%=..... info$=$| 000311a0 28 6b 65 79 62 61 73 65 25 2b 50 25 2b 38 29 0d |(keybase%+P%+8).| 000311b0 1b aa 1e 20 20 72 65 63 25 3d a4 72 65 63 5f 6e |... rec%=.rec_n| 000311c0 6f 28 6b 24 2c 6b 65 79 25 2c 50 25 29 0d 1b ab |o(k$,key%,P%)...| 000311d0 31 20 20 e7 20 a0 28 76 61 6c 24 2b 22 28 53 24 |1 . .(val$+"(S$| 000311e0 29 3d 22 2b 76 61 6c 24 2b 22 4c 45 46 54 24 28 |)="+val$+"LEFT$(| 000311f0 69 6e 66 6f 24 2c 6b 6c 25 29 22 29 20 8c 0d 1b |info$,kl%)") ...| 00031200 ac 0f 20 20 20 20 c8 8e 20 4d 25 20 ca 0d 1b ad |.. .. M% ....| 00031210 1d 20 20 20 20 20 20 c9 20 30 3a 69 64 65 6e 74 |. . 0:ident| 00031220 25 3d 28 6b 65 79 25 3d 30 29 0d 1b ae 16 20 20 |%=(key%=0).... | 00031230 20 20 20 20 c9 20 31 3a 66 6f 75 6e 64 25 3d b9 | . 1:found%=.| 00031240 0d 1b af 24 20 20 20 20 20 20 c9 20 32 3a e7 20 |...$ . 2:. | 00031250 72 65 63 25 3d 52 45 43 25 20 8c 20 66 6f 75 6e |rec%=REC% . foun| 00031260 64 25 3d b9 0d 1b b0 09 20 20 20 20 cb 0d 1b b1 |d%=..... ....| 00031270 07 20 20 cd 0d 1b b2 38 20 20 e7 20 ac 20 66 6f |. ....8 . . fo| 00031280 75 6e 64 25 20 8c 20 5a 25 3d 2d a0 28 76 61 6c |und% . Z%=-.(val| 00031290 24 2b 22 28 53 24 29 3e 3d 22 2b 76 61 6c 24 2b |$+"(S$)>="+val$+| 000312a0 22 28 69 6e 66 6f 24 29 22 29 2a 34 0d 1b b3 0c |"(info$)")*4....| 000312b0 fd 20 66 6f 75 6e 64 25 0d 1b b4 07 3d 50 25 0d |. found%....=P%.| 000312c0 1b b5 05 3a 0d 1b b6 3a f4 20 23 23 23 20 4d 25 |...:...:. ### M%| 000312d0 3d 30 20 2d 20 46 69 6e 64 20 6c 65 61 66 20 70 |=0 - Find leaf p| 000312e0 6f 73 69 74 69 6f 6e 20 61 74 20 77 68 69 63 68 |osition at which| 000312f0 20 74 6f 20 69 6e 73 65 72 74 20 23 23 23 0d 1b | to insert ###..| 00031300 b7 3f f4 20 23 23 23 20 4d 25 3d 31 20 2d 20 46 |.?. ### M%=1 - F| 00031310 69 6e 64 20 66 69 72 73 74 20 6d 61 74 63 68 20 |ind first match | 00031320 69 6e 20 74 72 65 65 20 28 69 66 20 74 68 65 72 |in tree (if ther| 00031330 65 20 69 73 20 6f 6e 65 29 20 23 23 23 0d 1b b8 |e is one) ###...| 00031340 48 f4 20 23 23 23 20 4d 25 3d 32 20 2d 20 46 69 |H. ### M%=2 - Fi| 00031350 6e 64 20 65 78 61 63 74 20 6d 61 74 63 68 69 6e |nd exact matchin| 00031360 67 20 72 65 63 6f 72 64 2c 20 63 68 65 63 6b 69 |g record, checki| 00031370 6e 67 20 66 6f 72 20 72 65 63 6f 72 64 20 6e 6f |ng for record no| 00031380 2e 20 23 23 23 0d 1b b9 05 3a 0d 1b ba 1b dd 20 |. ###....:..... | 00031390 f2 69 6e 73 65 72 74 28 52 25 2c f8 20 53 24 2c |.insert(R%,. S$,| 000313a0 6b 65 79 25 29 0d 1b bb 1f ea 20 50 25 2c 41 25 |key%)..... P%,A%| 000313b0 2c 6b 6c 25 2c 6b 65 79 62 61 73 65 25 2c 61 62 |,kl%,keybase%,ab| 000313c0 6f 72 74 25 0d 1b bc 1e 6b 65 79 62 61 73 65 25 |ort%....keybase%| 000313d0 3d 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 79 |=!keyanchor%(key| 000313e0 25 29 0d 1b bd 11 6b 6c 25 3d 4b 4c 25 28 6b 65 |%)....kl%=KL%(ke| 000313f0 79 25 29 0d 1b be 16 41 25 3d 21 6b 65 79 62 61 |y%)....A%=!keyba| 00031400 73 65 25 3a 46 25 3d 41 25 0d 1b bf 1a 50 25 3d |se%:F%=A%....P%=| 00031410 2d a4 73 65 61 72 63 68 28 53 24 2c 6b 65 79 25 |-.search(S$,key%| 00031420 2c 30 29 0d 1b c0 0e e7 20 69 64 65 6e 74 25 20 |,0)..... ident% | 00031430 8c 0d 1b c1 0c 20 20 c8 8e 20 b9 20 ca 0d 1b c2 |..... .. . ....| 00031440 21 20 20 20 20 c9 20 ac 20 a4 73 65 6c 65 63 74 |! . . .select| 00031450 65 64 28 70 61 73 73 57 25 2c 31 35 29 3a 0d 1b |ed(passW%,15):..| 00031460 c3 2b 20 20 20 20 f2 73 6f 66 74 65 72 72 6f 72 |.+ .softerror| 00031470 28 22 20 28 22 2b 53 24 2b 22 29 22 2c 33 37 29 |(" ("+S$+")",37)| 00031480 3a 61 62 6f 72 74 25 3d b9 0d 1b c4 0a 20 20 20 |:abort%=..... | 00031490 20 7f 3a 0d 1b c5 3e 20 20 20 20 e7 20 64 75 70 | .:...> . dup| 000314a0 25 20 8c 20 e7 20 ac 20 a4 63 6f 6e 66 69 72 6d |% . . . .confirm| 000314b0 28 a4 6d 73 67 28 34 35 29 2b 22 20 28 22 2b 53 |(.msg(45)+" ("+S| 000314c0 24 2b 22 29 22 29 20 8c 20 61 62 6f 72 74 25 3d |$+")") . abort%=| 000314d0 b9 0d 1b c6 07 20 20 cb 0d 1b c7 05 cd 0d 1b c8 |..... .........| 000314e0 1e e7 20 61 62 6f 72 74 25 20 8c 20 53 24 3d 22 |.. abort% . S$="| 000314f0 2a 46 61 69 6c 65 64 2a 22 3a e1 0d 1b c9 18 e7 |*Failed*":......| 00031500 20 21 28 6b 65 79 62 61 73 65 25 2b 46 25 29 3e | !(keybase%+F%)>| 00031510 30 20 8c 0d 1b ca 17 20 20 41 25 3d 21 28 6b 65 |0 ..... A%=!(ke| 00031520 79 62 61 73 65 25 2b 46 25 29 0d 1b cb 07 20 20 |ybase%+F%).... | 00031530 cc 0d 1b cc 1a 20 20 69 6e 63 72 25 3d bb 28 24 |..... incr%=.($| 00031540 49 6e 63 72 65 6d 65 6e 74 25 29 0d 1b cd 11 20 |Increment%).... | 00031550 20 e7 20 69 6e 63 72 25 3e 30 20 8c 0d 1b ce 23 | . incr%>0 ....#| 00031560 20 20 20 20 f2 63 68 61 6e 67 65 5f 6c 65 6e 67 | .change_leng| 00031570 74 68 28 52 41 25 2b 69 6e 63 72 25 2c a3 29 0d |th(RA%+incr%,.).| 00031580 1b cf 22 20 20 20 20 6b 65 79 62 61 73 65 25 3d |.." keybase%=| 00031590 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 79 25 |!keyanchor%(key%| 000315a0 29 0d 1b d0 1a 20 20 20 20 41 25 3d 21 6b 65 79 |).... A%=!key| 000315b0 62 61 73 65 25 3a 46 25 3d 41 25 0d 1b d1 17 20 |base%:F%=A%.... | 000315c0 20 20 20 cc 20 53 24 3d 22 2a 46 61 69 6c 65 64 | . S$="*Failed| 000315d0 2a 22 0d 1b d2 07 20 20 cd 0d 1b d3 05 cd 0d 1b |*".... ........| 000315e0 d4 28 e7 20 53 24 3d 22 2a 46 61 69 6c 65 64 2a |.(. S$="*Failed*| 000315f0 22 20 8c 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 |" . .softerror("| 00031600 22 2c 32 29 3a e1 0d 1b d5 26 e7 20 52 25 20 8c |",2):....&. R% .| 00031610 20 52 45 43 25 3d 21 28 6b 65 79 62 61 73 65 25 | REC%=!(keybase%| 00031620 2b 46 25 2b 38 2b 6b 6c 25 2b 31 29 0d 1b d6 27 |+F%+8+kl%+1)...'| 00031630 21 28 6b 65 79 62 61 73 65 25 2b 46 25 2b 5a 25 |!(keybase%+F%+Z%| 00031640 29 3d 21 28 6b 65 79 62 61 73 65 25 2b 50 25 2b |)=!(keybase%+P%+| 00031650 5a 25 29 0d 1b d7 1d 21 28 6b 65 79 62 61 73 65 |Z%)....!(keybase| 00031660 25 2b 46 25 2b 28 34 2d 5a 25 29 29 3d 2d 50 25 |%+F%+(4-Z%))=-P%| 00031670 0d 1b d8 17 24 28 6b 65 79 62 61 73 65 25 2b 46 |....$(keybase%+F| 00031680 25 2b 38 29 3d 53 24 0d 1b d9 25 21 28 6b 65 79 |%+8)=S$...%!(key| 00031690 62 61 73 65 25 2b 46 25 2b 38 2b 4b 4c 25 28 6b |base%+F%+8+KL%(k| 000316a0 65 79 25 29 2b 31 29 3d 52 45 43 25 0d 1b da 18 |ey%)+1)=REC%....| 000316b0 21 28 6b 65 79 62 61 73 65 25 2b 50 25 2b 5a 25 |!(keybase%+P%+Z%| 000316c0 29 3d 46 25 0d 1b db 10 21 6b 65 79 62 61 73 65 |)=F%....!keybase| 000316d0 25 3d 41 25 0d 1b dc 15 e7 20 6b 65 79 25 3d 30 |%=A%..... key%=0| 000316e0 20 8c 20 52 55 25 2b 3d 31 0d 1b dd 05 e1 0d 1b | . RU%+=1.......| 000316f0 de 05 3a 0d 1b df 18 dd 20 f2 64 65 6c 65 74 65 |..:..... .delete| 00031700 28 f8 20 53 24 2c 6b 65 79 25 29 0d 1b e0 18 ea |(. S$,key%).....| 00031710 20 50 25 2c 41 25 2c 6b 6c 25 2c 6b 65 79 62 61 | P%,A%,kl%,keyba| 00031720 73 65 25 0d 1b e1 1e 6b 65 79 62 61 73 65 25 3d |se%....keybase%=| 00031730 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 79 25 |!keyanchor%(key%| 00031740 29 0d 1b e2 10 41 25 3d 21 6b 65 79 62 61 73 65 |)....A%=!keybase| 00031750 25 0d 1b e3 11 6b 6c 25 3d 4b 4c 25 28 6b 65 79 |%....kl%=KL%(key| 00031760 25 29 0d 1b e4 19 50 25 3d a4 73 65 61 72 63 68 |%)....P%=.search| 00031770 28 53 24 2c 6b 65 79 25 2c 32 29 0d 1b e5 4e e7 |(S$,key%,2)...N.| 00031780 20 50 25 3c 30 20 8c 20 f2 73 6f 66 74 65 72 72 | P%<0 . .softerr| 00031790 6f 72 28 22 20 28 22 2b 53 24 2b 22 3a 20 22 2b |or(" ("+S$+": "+| 000317a0 49 6e 64 65 78 24 28 6b 65 79 25 29 2b 22 20 69 |Index$(key%)+" i| 000317b0 6e 64 65 78 29 22 2c 31 29 3a 53 24 3d 22 2a 46 |ndex)",1):S$="*F| 000317c0 61 69 6c 65 64 2a 22 3a e1 0d 1b e6 1d 50 52 25 |ailed*":.....PR%| 000317d0 3d a4 6e 65 69 67 68 62 6f 75 72 28 6b 65 79 25 |=.neighbour(key%| 000317e0 2c 50 25 2c 30 29 0d 1b e7 1d 53 55 25 3d a4 6e |,P%,0)....SU%=.n| 000317f0 65 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 50 25 |eighbour(key%,P%| 00031800 2c 31 29 0d 1b e8 27 21 28 6b 65 79 62 61 73 65 |,1)...'!(keybase| 00031810 25 2b 4c 25 2b 5a 25 29 3d 21 28 6b 65 79 62 61 |%+L%+Z%)=!(keyba| 00031820 73 65 25 2b 50 25 2b 5a 25 29 0d 1b e9 09 51 25 |se%+P%+Z%)....Q%| 00031830 3d 50 25 0d 1b ea 0c 5a 4c 25 3d 34 2d 5a 25 0d |=P%....ZL%=4-Z%.| 00031840 1b eb 1a 50 31 25 3d 21 28 6b 65 79 62 61 73 65 |...P1%=!(keybase| 00031850 25 2b 50 25 2b 5a 4c 25 29 0d 1b ec 0d e7 20 50 |%+P%+ZL%)..... P| 00031860 31 25 3e 30 20 8c 0d 1b ed 1d 20 20 69 6e 66 6f |1%>0 ..... info| 00031870 24 3d 24 28 6b 65 79 62 61 73 65 25 2b 50 31 25 |$=$(keybase%+P1%| 00031880 2b 38 29 0d 1b ee 1f 20 20 50 25 3d 2d a4 73 65 |+8).... P%=-.se| 00031890 61 72 63 68 28 69 6e 66 6f 24 2c 6b 65 79 25 2c |arch(info$,key%,| 000318a0 30 29 0d 1b ef 1b 20 20 21 28 6b 65 79 62 61 73 |0).... !(keybas| 000318b0 65 25 2b 50 25 2b 5a 25 29 3d 50 31 25 0d 1b f0 |e%+P%+Z%)=P1%...| 000318c0 05 cd 0d 1b f1 33 e7 20 21 28 6b 65 79 62 61 73 |.....3. !(keybas| 000318d0 65 25 2b 50 52 25 2b 34 29 3c 3d 30 20 8c 20 21 |e%+PR%+4)<=0 . !| 000318e0 28 6b 65 79 62 61 73 65 25 2b 50 52 25 2b 34 29 |(keybase%+PR%+4)| 000318f0 3d 2d 53 55 25 0d 1b f2 33 e7 20 21 28 6b 65 79 |=-SU%...3. !(key| 00031900 62 61 73 65 25 2b 53 55 25 2b 30 29 3c 3d 30 20 |base%+SU%+0)<=0 | 00031910 8c 20 21 28 6b 65 79 62 61 73 65 25 2b 53 55 25 |. !(keybase%+SU%| 00031920 2b 30 29 3d 2d 50 52 25 0d 1b f3 15 21 28 6b 65 |+0)=-PR%....!(ke| 00031930 79 62 61 73 65 25 2b 51 25 29 3d 41 25 0d 1b f4 |ybase%+Q%)=A%...| 00031940 10 21 6b 65 79 62 61 73 65 25 3d 51 25 0d 1b f5 |.!keybase%=Q%...| 00031950 15 e7 20 6b 65 79 25 3d 30 20 8c 20 52 55 25 2d |.. key%=0 . RU%-| 00031960 3d 31 0d 1b f6 05 e1 0d 1b f7 05 3a 0d 1b f8 10 |=1.........:....| 00031970 dd 20 f2 73 61 76 65 5f 6b 65 79 73 0d 1b f9 0b |. .save_keys....| 00031980 ea 20 6b 65 79 4e 25 0d 1b fa 15 e7 20 70 72 65 |. keyN%..... pre| 00031990 73 65 6e 74 25 3c 3e 37 20 8c 20 e1 0d 1b fb 15 |sent%<>7 . .....| 000319a0 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e |.. "Hourglass_On| 000319b0 22 0d 1b fc 35 6b 65 79 62 61 73 65 25 3d 21 6b |"...5keybase%=!k| 000319c0 65 79 61 6e 63 68 6f 72 25 28 30 29 3a 6b 65 79 |eyanchor%(0):key| 000319d0 62 61 73 65 25 21 34 3d bb 28 24 49 6e 63 72 65 |base%!4=.($Incre| 000319e0 6d 65 6e 74 25 29 0d 1b fd 1b c8 95 20 21 6b 65 |ment%)...... !ke| 000319f0 79 61 6e 63 68 6f 72 25 28 6b 65 79 4e 25 29 3e |yanchor%(keyN%)>| 00031a00 30 0d 1b fe 21 20 20 6b 65 79 62 61 73 65 25 3d |0...! keybase%=| 00031a10 21 6b 65 79 61 6e 63 68 6f 72 25 28 6b 65 79 4e |!keyanchor%(keyN| 00031a20 25 29 0d 1b ff 21 20 20 6b 65 79 62 61 73 65 25 |%)...! keybase%| 00031a30 3f 37 32 3d 30 3a 6b 65 79 62 61 73 65 25 3f 37 |?72=0:keybase%?7| 00031a40 33 3d 30 0d 1c 00 57 20 20 c8 99 20 22 53 6c 69 |3=0...W .. "Sli| 00031a50 64 69 6e 67 48 65 61 70 5f 44 65 73 63 72 69 62 |dingHeap_Describ| 00031a60 65 42 6c 6f 63 6b 22 2c 73 6c 69 64 69 6e 67 68 |eBlock",slidingh| 00031a70 65 61 70 62 61 73 65 25 2c 6b 65 79 61 6e 63 68 |eapbase%,keyanch| 00031a80 6f 72 25 28 6b 65 79 4e 25 29 20 b8 20 2c 2c 66 |or%(keyN%) . ,,f| 00031a90 69 6c 65 6c 65 6e 67 74 68 25 0d 1c 01 2d 20 20 |ilelength%...- | 00031aa0 e7 20 6b 65 79 4e 25 20 8c 20 69 6e 64 65 78 24 |. keyN% . index$| 00031ab0 3d 22 49 6e 64 69 63 65 73 2e 22 20 8b 20 69 6e |="Indices." . in| 00031ac0 64 65 78 24 3d 22 22 0d 1c 02 5d 20 20 c8 99 20 |dex$=""...] .. | 00031ad0 22 4f 53 5f 46 69 6c 65 22 2c 31 30 2c 24 64 61 |"OS_File",10,$da| 00031ae0 74 61 62 61 73 65 25 2b 22 2e 22 2b 69 6e 64 65 |tabase%+"."+inde| 00031af0 78 24 2b 49 6e 64 65 78 24 28 6b 65 79 4e 25 29 |x$+Index$(keyN%)| 00031b00 2c 26 37 46 30 2c 2c 6b 65 79 62 61 73 65 25 2c |,&7F0,,keybase%,| 00031b10 6b 65 79 62 61 73 65 25 2b 66 69 6c 65 6c 65 6e |keybase%+filelen| 00031b20 67 74 68 25 0d 1c 03 0e 20 20 6b 65 79 4e 25 2b |gth%.... keyN%+| 00031b30 3d 31 0d 1c 04 35 20 20 c8 99 20 22 48 6f 75 72 |=1...5 .. "Hour| 00031b40 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 |glass_Percentage| 00031b50 22 2c 6b 65 79 4e 25 2a 31 30 30 20 81 20 28 4b |",keyN%*100 . (K| 00031b60 65 79 73 25 2b 31 29 0d 1c 05 05 ce 0d 1c 06 16 |eys%+1).........| 00031b70 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 |.. "Hourglass_Of| 00031b80 66 22 0d 1c 07 05 e1 0d 1c 08 05 3a 0d 1c 09 24 |f".........:...$| 00031b90 dd 20 f2 72 65 61 64 73 6d 61 72 72 61 79 28 66 |. .readsmarray(f| 00031ba0 69 6c 65 68 61 6e 64 6c 65 25 2c 52 45 43 25 29 |ilehandle%,REC%)| 00031bb0 0d 1c 0a 0b ea 20 6c 6f 6f 70 25 0d 1c 0b 1e cf |..... loop%.....| 00031bc0 23 66 69 6c 65 68 61 6e 64 6c 65 25 3d 52 45 43 |#filehandle%=REC| 00031bd0 25 2a 4c 65 6e 67 74 68 25 0d 1c 0c 17 e3 20 6c |%*Length%..... l| 00031be0 6f 6f 70 25 3d 31 20 b8 20 66 69 65 6c 64 73 25 |oop%=1 . fields%| 00031bf0 0d 1c 0d 1d 20 20 46 24 28 6c 6f 6f 70 25 29 3d |.... F$(loop%)=| 00031c00 be 23 66 69 6c 65 68 61 6e 64 6c 65 25 0d 1c 0e |.#filehandle%...| 00031c10 0b ed 20 6c 6f 6f 70 25 0d 1c 0f 05 e1 0d 1c 10 |.. loop%........| 00031c20 05 3a 0d 1c 11 1b dd 20 f2 77 72 69 74 65 73 6d |.:..... .writesm| 00031c30 61 72 72 61 79 28 46 2c f8 20 52 25 29 0d 1c 12 |array(F,. R%)...| 00031c40 0b ea 20 6c 6f 6f 70 25 0d 1c 13 12 cf 23 46 3d |.. loop%.....#F=| 00031c50 52 25 2a 4c 65 6e 67 74 68 25 0d 1c 14 17 e3 20 |R%*Length%..... | 00031c60 6c 6f 6f 70 25 3d 31 20 b8 20 66 69 65 6c 64 73 |loop%=1 . fields| 00031c70 25 0d 1c 15 13 20 20 d5 23 46 2c 46 24 28 6c 6f |%.... .#F,F$(lo| 00031c80 6f 70 25 29 0d 1c 16 0b ed 20 6c 6f 6f 70 25 0d |op%)..... loop%.| 00031c90 1c 17 09 52 25 2b 3d 31 0d 1c 18 05 e1 0d 1c 19 |...R%+=1........| 00031ca0 05 3a 0d 1c 1a 15 dd 20 f2 63 68 65 63 6b 5f 73 |.:..... .check_s| 00031cb0 61 76 65 28 54 25 29 0d 1c 1b 0b ea 20 74 69 6d |ave(T%)..... tim| 00031cc0 65 25 0d 1c 1c 25 c8 99 20 22 4f 53 5f 52 65 61 |e%...%.. "OS_Rea| 00031cd0 64 4d 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 22 20 |dMonotonicTime" | 00031ce0 b8 20 74 69 6d 65 25 0d 1c 1d 17 e7 20 28 74 69 |. time%..... (ti| 00031cf0 6d 65 25 20 83 20 54 25 29 3c 31 30 20 8c 0d 1c |me% . T%)<10 ...| 00031d00 1e 50 e7 20 62 75 74 74 6f 6e 66 69 65 6c 64 25 |.P. buttonfield%| 00031d10 28 31 39 29 3e 30 20 8c 20 77 69 25 3d 6d 61 69 |(19)>0 . wi%=mai| 00031d20 6e 57 25 3a 69 63 25 3d 62 75 74 74 6f 6e 66 69 |nW%:ic%=buttonfi| 00031d30 65 6c 64 25 28 31 39 29 20 8b 20 77 69 25 3d 6b |eld%(19) . wi%=k| 00031d40 65 79 70 61 64 57 25 3a 69 63 25 3d 31 39 0d 1c |eypadW%:ic%=19..| 00031d50 1f 14 20 20 c8 8e 20 61 75 74 6f 73 61 76 65 25 |.. .. autosave%| 00031d60 20 ca 0d 1c 20 0c 20 20 20 20 c9 20 31 3a 0d 1c | ... . . 1:..| 00031d70 21 10 20 20 20 20 64 65 6c 61 79 25 3d 91 0d 1c |!. delay%=...| 00031d80 22 15 20 20 20 20 e3 20 6c 6f 6f 70 25 3d 30 20 |". . loop%=0 | 00031d90 b8 20 32 0d 1c 23 14 20 20 20 20 20 20 64 65 6c |. 2..#. del| 00031da0 61 79 25 2b 3d 35 30 0d 1c 24 30 20 20 20 20 20 |ay%+=50..$0 | 00031db0 20 62 6c 6f 63 6b 25 21 38 3d 31 3a 62 6c 6f 63 | block%!8=1:bloc| 00031dc0 6b 25 21 31 32 3d 77 69 25 3a 62 6c 6f 63 6b 25 |k%!12=wi%:block%| 00031dd0 21 31 36 3d 69 63 25 0d 1c 25 2b 20 20 20 20 20 |!16=ic%..%+ | 00031de0 20 c8 99 20 22 49 6e 74 65 72 66 61 63 65 5f 53 | .. "Interface_S| 00031df0 6c 61 62 42 75 74 74 6f 6e 22 2c 2c 62 6c 6f 63 |labButton",,bloc| 00031e00 6b 25 0d 1c 26 16 20 20 20 20 20 20 f5 20 fd 20 |k%..&. . . | 00031e10 91 3e 64 65 6c 61 79 25 0d 1c 27 17 20 20 20 20 |.>delay%..'. | 00031e20 20 20 d4 20 31 2c 2d 31 35 2c 31 38 30 2c 35 0d | . 1,-15,180,5.| 00031e30 1c 28 14 20 20 20 20 20 20 62 6c 6f 63 6b 25 21 |.(. block%!| 00031e40 38 3d 30 0d 1c 29 2b 20 20 20 20 20 20 c8 99 20 |8=0..)+ .. | 00031e50 22 49 6e 74 65 72 66 61 63 65 5f 53 6c 61 62 42 |"Interface_SlabB| 00031e60 75 74 74 6f 6e 22 2c 2c 62 6c 6f 63 6b 25 0d 1c |utton",,block%..| 00031e70 2a 14 20 20 20 20 20 20 64 65 6c 61 79 25 2b 3d |*. delay%+=| 00031e80 35 30 0d 1c 2b 16 20 20 20 20 20 20 f5 20 fd 20 |50..+. . . | 00031e90 91 3e 64 65 6c 61 79 25 0d 1c 2c 0f 20 20 20 20 |.>delay%..,. | 00031ea0 ed 20 6c 6f 6f 70 25 0d 1c 2d 21 20 20 20 20 c9 |. loop%..-! .| 00031eb0 20 32 3a f2 6d 6f 75 73 65 28 30 2c 30 2c 34 2c | 2:.mouse(0,0,4,| 00031ec0 77 69 25 2c 69 63 25 29 0d 1c 2e 07 20 20 cb 0d |wi%,ic%).... ..| 00031ed0 1c 2f 05 cd 0d 1c 30 05 e1 0d 1c 31 05 3a 0d 1c |./....0....1.:..| 00031ee0 32 16 dd 20 f2 73 65 74 5f 61 75 74 6f 28 6d 6f |2.. .set_auto(mo| 00031ef0 64 65 25 29 0d 1c 33 24 f2 74 69 63 6b 5f 6f 6e |de%)..3$.tick_on| 00031f00 65 28 6d 65 6e 75 25 28 31 32 29 2c 30 2c 32 2c |e(menu%(12),0,2,| 00031f10 32 2d 6d 6f 64 65 25 29 0d 1c 34 13 61 75 74 6f |2-mode%)..4.auto| 00031f20 73 61 76 65 25 3d 6d 6f 64 65 25 0d 1c 35 38 73 |save%=mode%..58s| 00031f30 61 76 65 69 6e 74 25 3d bb 28 24 49 6e 74 65 72 |aveint%=.($Inter| 00031f40 76 61 6c 25 29 3a 24 49 6e 74 65 72 76 61 6c 25 |val%):$Interval%| 00031f50 3d c3 28 73 61 76 65 69 6e 74 25 29 2b 22 20 6d |=.(saveint%)+" m| 00031f60 69 6e 22 0d 1c 36 05 e1 0d 1c 37 05 3a 0d 1c 38 |in"..6....7.:..8| 00031f70 1f dd 20 f2 73 65 74 5f 61 75 74 6f 62 61 6c 61 |.. .set_autobala| 00031f80 6e 63 65 28 73 74 61 74 75 73 25 29 0d 1c 39 1e |nce(status%)..9.| 00031f90 f2 74 69 63 6b 28 6d 65 6e 75 25 28 32 31 29 2c |.tick(menu%(21),| 00031fa0 30 2c 73 74 61 74 75 73 25 29 0d 1c 3a 18 61 75 |0,status%)..:.au| 00031fb0 74 6f 62 61 6c 61 6e 63 65 25 3d 73 74 61 74 75 |tobalance%=statu| 00031fc0 73 25 0d 1c 3b 28 e7 20 ac 20 61 75 74 6f 62 61 |s%..;(. . autoba| 00031fd0 6c 61 6e 63 65 25 20 8c 20 24 45 76 65 72 79 25 |lance% . $Every%| 00031fe0 3d 22 32 35 20 72 65 63 73 22 0d 1c 3c 3a 62 61 |="25 recs"..<:ba| 00031ff0 6c 69 6e 74 25 3d bb 28 24 45 76 65 72 79 25 29 |lint%=.($Every%)| 00032000 3a 24 45 76 65 72 79 25 3d c3 28 62 61 6c 69 6e |:$Every%=.(balin| 00032010 74 25 29 2b 22 20 72 65 63 73 22 3a 61 64 64 65 |t%)+" recs":adde| 00032020 64 25 3d 30 0d 1c 3d 05 e1 0d 1c 3e 05 3a 0d 1c |d%=0..=....>.:..| 00032030 3f 4c f4 20 43 61 6c 63 75 6c 61 74 69 6f 6e 73 |?L. Calculations| 00032040 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------| 00032050 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00032070 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 1c 40 05 3a 0d |----------..@.:.| 00032080 1c 41 1a dd 20 f2 63 61 6c 63 5f 6c 69 6e 6b 28 |.A.. .calc_link(| 00032090 54 24 2c 74 79 70 65 25 29 0d 1c 42 3d f4 20 23 |T$,type%)..B=. #| 000320a0 23 23 20 53 65 74 73 20 75 70 20 63 61 6c 63 75 |## Sets up calcu| 000320b0 6c 61 74 69 6f 6e 20 66 6f 72 6d 75 6c 61 20 77 |lation formula w| 000320c0 69 6e 64 6f 77 20 26 20 6d 65 6e 75 20 65 6e 74 |indow & menu ent| 000320d0 72 79 20 23 23 23 0d 1c 43 11 24 43 61 6c 63 46 |ry ###..C.$CalcF| 000320e0 75 6e 63 25 3d 54 24 0d 1c 44 29 24 43 61 6c 63 |unc%=T$..D)$Calc| 000320f0 54 69 74 6c 65 25 3d 54 24 3a 63 61 6c 63 6c 69 |Title%=T$:calcli| 00032100 6e 6b 25 3d 46 69 65 6c 64 6e 75 6d 62 65 72 25 |nk%=Fieldnumber%| 00032110 0d 1c 45 29 f2 73 70 6c 69 74 5f 6c 69 6e 6b 28 |..E).split_link(| 00032120 63 61 6c 63 6c 69 6e 6b 25 2c 72 65 61 6c 24 2c |calclink%,real$,| 00032130 76 69 73 69 62 6c 65 24 29 0d 1c 46 0e c8 8e 20 |visible$)..F... | 00032140 74 79 70 65 25 20 ca 0d 1c 47 33 20 20 c9 20 36 |type% ...G3 . 6| 00032150 2c 37 3a 24 43 61 6c 63 46 6f 72 6d 25 3d 54 61 |,7:$CalcForm%=Ta| 00032160 67 24 28 63 61 6c 63 6c 69 6e 6b 25 29 2b 22 3d |g$(calclink%)+"=| 00032170 22 2b 76 69 73 69 62 6c 65 24 0d 1c 48 0b 20 20 |"+visible$..H. | 00032180 c9 20 34 37 3a 0d 1c 49 19 20 20 24 43 61 6c 63 |. 47:..I. $Calc| 00032190 46 6f 72 6d 25 3d 76 69 73 69 62 6c 65 24 0d 1c |Form%=visible$..| 000321a0 4a 21 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 |J! .icon_bit(22| 000321b0 2c 63 61 6c 63 57 25 2c 32 2c 6f 66 66 25 29 0d |,calcW%,2,off%).| 000321c0 1c 4b 19 20 20 f2 64 65 73 65 6c 65 63 74 28 63 |.K. .deselect(c| 000321d0 61 6c 63 57 25 2c 32 29 0d 1c 4c 05 cb 0d 1c 4d |alcW%,2)..L....M| 000321e0 05 e1 0d 1c 4e 05 3a 0d 1c 4f 17 dd 20 f2 63 61 |....N.:..O.. .ca| 000321f0 6c 63 5f 66 6f 72 6d 75 6c 61 28 53 24 29 0d 1c |lc_formula(S$)..| 00032200 50 40 f4 20 23 23 23 20 50 61 72 73 65 73 20 63 |P@. ### Parses c| 00032210 61 6c 63 75 6c 61 74 69 6f 6e 20 66 6f 72 6d 75 |alculation formu| 00032220 6c 61 20 28 53 24 29 20 26 20 62 75 69 6c 64 73 |la (S$) & builds| 00032230 20 63 61 6c 63 24 28 49 25 29 20 23 23 23 0d 1c | calc$(I%) ###..| 00032240 51 1a ea 20 49 25 2c 50 25 2c 74 24 2c 73 24 2c |Q.. I%,P%,t$,s$,| 00032250 43 24 2c 74 69 6d 65 25 0d 1c 52 2f 43 24 3d c3 |C$,time%..R/C$=.| 00032260 7e 28 63 61 6c 63 6c 69 6e 6b 25 29 3a e7 20 63 |~(calclink%):. c| 00032270 61 6c 63 6c 69 6e 6b 25 3c 31 36 20 8c 20 43 24 |alclink%<16 . C$| 00032280 3d 22 30 22 2b 43 24 0d 1c 53 23 e7 20 24 43 61 |="0"+C$..S#. $Ca| 00032290 6c 63 46 75 6e 63 25 3d 22 53 65 74 20 62 61 73 |lcFunc%="Set bas| 000322a0 65 20 76 61 6c 75 65 22 20 8c 0d 1c 54 16 20 20 |e value" ...T. | 000322b0 e7 20 53 24 3d 22 22 20 8c 20 53 24 3d 22 30 22 |. S$="" . S$="0"| 000322c0 0d 1c 55 20 20 20 63 61 6c 63 24 28 63 61 6c 63 |..U calc$(calc| 000322d0 6c 69 6e 6b 25 29 3d 53 24 2b 22 7c 22 2b 53 24 |link%)=S$+"|"+S$| 000322e0 0d 1c 56 17 20 20 63 61 6c 63 24 28 30 29 3d 22 |..V. calc$(0)="| 000322f0 4c 4f 41 44 45 44 22 0d 1c 57 07 20 20 cc 0d 1c |LOADED"..W. ...| 00032300 58 2a 20 20 50 25 3d a7 53 24 2c 22 3d 22 29 3a |X* P%=.S$,"="):| 00032310 53 24 3d c1 53 24 2c 50 25 2b 31 29 3a 76 69 73 |S$=.S$,P%+1):vis| 00032320 69 62 6c 65 24 3d 53 24 0d 1c 59 16 20 20 e3 20 |ible$=S$..Y. . | 00032330 49 25 3d 31 20 b8 20 66 69 65 6c 64 73 25 0d 1c |I%=1 . fields%..| 00032340 5a 13 20 20 20 20 74 24 3d 54 61 67 24 28 49 25 |Z. t$=Tag$(I%| 00032350 29 0d 1c 5b 12 20 20 20 20 e7 20 74 24 3c 3e 22 |)..[. . t$<>"| 00032360 22 20 8c 0d 1c 5c 0e 20 20 20 20 20 20 50 25 3d |" ...\. P%=| 00032370 30 0d 1c 5d 0b 20 20 20 20 20 20 f5 0d 1c 5e 1b |0..]. ...^.| 00032380 20 20 20 20 20 20 20 20 50 25 3d a7 53 24 2c 74 | P%=.S$,t| 00032390 24 2c 50 25 2b 31 29 0d 1c 5f 14 20 20 20 20 20 |$,P%+1).._. | 000323a0 20 20 20 e7 20 50 25 3e 30 20 8c 0d 1c 60 20 20 | . P%>0 ...` | 000323b0 20 20 20 20 20 20 20 20 20 c8 8e 20 63 68 61 72 | .. char| 000323c0 74 79 70 65 25 28 49 25 29 20 ca 0d 1c 61 3e 20 |type%(I%) ...a> | 000323d0 20 20 20 20 20 20 20 20 20 20 20 c9 20 33 2c 36 | . 3,6| 000323e0 2c 34 36 2c 34 37 2c 35 34 2c 35 36 2c 35 37 3a |,46,47,54,56,57:| 000323f0 73 24 3d 22 56 41 4c 28 24 52 66 25 28 22 2b c3 |s$="VAL($Rf%("+.| 00032400 28 49 25 29 2b 22 29 29 22 0d 1c 62 3d 20 20 20 |(I%)+"))"..b= | 00032410 20 20 20 20 20 20 20 20 20 c9 20 38 3a 73 24 3d | . 8:s$=| 00032420 22 46 4e 73 65 63 6f 6e 64 73 28 24 52 66 25 28 |"FNseconds($Rf%(| 00032430 22 2b c3 28 49 25 29 2b 22 29 2c 31 29 22 3a 74 |"+.(I%)+"),1)":t| 00032440 69 6d 65 25 3d b9 0d 1c 63 12 20 20 20 20 20 20 |ime%=...c. | 00032450 20 20 20 20 20 20 7f 3a 0d 1c 64 29 20 20 20 20 | .:..d) | 00032460 20 20 20 20 20 20 20 20 c8 8e 20 63 68 61 72 74 | .. chart| 00032470 79 70 65 25 28 63 61 6c 63 6c 69 6e 6b 25 29 20 |ype%(calclink%) | 00032480 ca 0d 1c 65 29 20 20 20 20 20 20 20 20 20 20 20 |...e) | 00032490 20 20 20 c9 20 36 3a 73 24 3d 22 46 4e 6e 28 22 | . 6:s$="FNn("| 000324a0 2b c3 28 49 25 29 2b 22 29 22 0d 1c 66 2a 20 20 |+.(I%)+")"..f* | 000324b0 20 20 20 20 20 20 20 20 20 20 20 20 c9 20 37 3a | . 7:| 000324c0 73 24 3d 22 24 52 66 25 28 22 2b c3 28 49 25 29 |s$="$Rf%("+.(I%)| 000324d0 2b 22 29 22 0d 1c 67 11 20 20 20 20 20 20 20 20 |+")"..g. | 000324e0 20 20 20 20 cb 0d 1c 68 0f 20 20 20 20 20 20 20 | ...h. | 000324f0 20 20 20 cb 0d 1c 69 2b 20 20 20 20 20 20 20 20 | ...i+ | 00032500 20 20 53 24 3d c0 53 24 2c 50 25 2d 31 29 2b 73 | S$=.S$,P%-1)+s| 00032510 24 2b c1 53 24 2c 50 25 2b a9 28 74 24 29 29 0d |$+.S$,P%+.(t$)).| 00032520 1c 6a 1d 20 20 20 20 20 20 20 20 20 20 75 70 64 |.j. upd| 00032530 61 74 65 24 28 49 25 29 2b 3d 43 24 0d 1c 6b 0d |ate$(I%)+=C$..k.| 00032540 20 20 20 20 20 20 20 20 cd 0d 1c 6c 10 20 20 20 | ...l. | 00032550 20 20 20 fd 20 50 25 3d 30 0d 1c 6d 09 20 20 20 | . P%=0..m. | 00032560 20 cd 0d 1c 6e 0a 20 20 ed 20 49 25 0d 1c 6f 2d | ...n. . I%..o-| 00032570 20 20 e7 20 a7 76 69 73 69 62 6c 65 24 2c 22 54 | . .visible$,"T| 00032580 49 4d 45 24 22 29 3e 30 20 8c 20 75 70 64 61 74 |IME$")>0 . updat| 00032590 65 24 28 30 29 2b 3d 43 24 0d 1c 70 3e 20 20 e7 |e$(0)+=C$..p> .| 000325a0 20 74 69 6d 65 25 3d b9 20 80 20 63 68 61 72 74 | time%=. . chart| 000325b0 79 70 65 25 28 63 61 6c 63 6c 69 6e 6b 25 29 3d |ype%(calclink%)=| 000325c0 37 20 8c 20 53 24 3d 22 46 4e 74 69 6d 65 28 22 |7 . S$="FNtime("| 000325d0 2b 53 24 2b 22 29 22 0d 1c 71 21 20 20 e7 20 a9 |+S$+")"..q! . .| 000325e0 28 53 24 29 2b a9 28 76 69 73 69 62 6c 65 24 29 |(S$)+.(visible$)| 000325f0 2b 32 3c 32 35 36 20 8c 0d 1c 72 2c 20 20 20 20 |+2<256 ...r, | 00032600 63 61 6c 63 24 28 63 61 6c 63 6c 69 6e 6b 25 29 |calc$(calclink%)| 00032610 3d 22 23 22 2b 53 24 2b 22 23 22 2b 76 69 73 69 |="#"+S$+"#"+visi| 00032620 62 6c 65 24 0d 1c 73 19 20 20 20 20 63 61 6c 63 |ble$..s. calc| 00032630 24 28 30 29 3d 22 4c 4f 41 44 45 44 22 0d 1c 74 |$(0)="LOADED"..t| 00032640 37 20 20 20 20 e7 20 a4 73 65 6c 65 63 74 65 64 |7 . .selected| 00032650 28 63 61 6c 63 57 25 2c 32 29 20 8c 20 f2 72 65 |(calcW%,2) . .re| 00032660 63 61 6c 63 75 6c 61 74 65 28 63 61 6c 63 6c 69 |calculate(calcli| 00032670 6e 6b 25 29 0d 1c 75 1b 20 20 20 20 cc 20 f2 73 |nk%)..u. . .s| 00032680 6f 66 74 65 72 72 6f 72 28 22 22 2c 34 34 29 0d |ofterror("",44).| 00032690 1c 76 07 20 20 cd 0d 1c 77 05 cd 0d 1c 78 0f 63 |.v. ...w....x.c| 000326a0 61 6c 63 6c 69 6e 6b 25 3d 30 0d 1c 79 2e e7 20 |alclink%=0..y.. | 000326b0 28 62 25 20 80 20 25 31 31 31 29 3d 34 20 8c 20 |(b% . %111)=4 . | 000326c0 c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 4d |.. "Wimp_CreateM| 000326d0 65 6e 75 22 2c 2c 2d 31 0d 1c 7a 05 e1 0d 1c 7b |enu",,-1..z....{| 000326e0 05 3a 0d 1c 7c 16 dd 20 f2 72 65 63 61 6c 63 75 |.:..|.. .recalcu| 000326f0 6c 61 74 65 28 46 25 29 0d 1c 7d 3c ea 20 46 2c |late(F%)..}<. F,| 00032700 49 25 2c 52 25 2c 6b 24 2c 50 25 2c 72 65 61 6c |I%,R%,k$,P%,real| 00032710 24 2c 76 69 73 69 62 6c 65 24 2c 73 75 62 74 6f |$,visible$,subto| 00032720 74 61 6c 25 2c 7a 65 72 6f 25 2c 65 78 61 6d 69 |tal%,zero%,exami| 00032730 6e 65 64 25 0d 1c 7e 22 f2 73 70 6c 69 74 5f 6c |ned%..~".split_l| 00032740 69 6e 6b 28 46 25 2c 72 65 61 6c 24 2c 76 69 73 |ink(F%,real$,vis| 00032750 69 62 6c 65 24 29 0d 1c 7f 53 e7 20 a4 63 6f 6e |ible$)...S. .con| 00032760 66 69 72 6d 28 22 52 65 63 61 6c 63 75 6c 61 74 |firm("Recalculat| 00032770 65 20 22 2b 54 61 67 24 28 46 25 29 2b 22 3d 22 |e "+Tag$(F%)+"="| 00032780 2b 76 69 73 69 62 6c 65 24 2b 22 20 66 6f 72 20 |+visible$+" for | 00032790 65 78 69 73 74 69 6e 67 20 72 65 63 6f 72 64 73 |existing records| 000327a0 3f 22 29 3d a3 20 8c 20 e1 0d 1c 80 25 73 75 62 |?")=. . ....%sub| 000327b0 74 6f 74 61 6c 25 3d a4 63 6f 75 6e 74 5f 72 65 |total%=.count_re| 000327c0 63 73 28 6b 65 79 25 2c 7a 65 72 6f 25 29 0d 1c |cs(key%,zero%)..| 000327d0 81 15 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f |.... "Hourglass_| 000327e0 4f 6e 22 0d 1c 82 2a 64 62 61 73 65 68 61 6e 64 |On"...*dbasehand| 000327f0 6c 65 25 3d ad 28 24 64 61 74 61 62 61 73 65 25 |le%=.($database%| 00032800 2b 22 2e 44 61 74 61 62 61 73 65 22 29 0d 1c 83 |+".Database")...| 00032810 1d 50 25 3d a4 6e 65 69 67 68 62 6f 75 72 28 6b |.P%=.neighbour(k| 00032820 65 79 25 2c 74 6f 70 2c 31 29 0d 1c 84 0e c8 95 |ey%,top,1)......| 00032830 20 50 25 3c 3e 74 6f 70 0d 1c 85 1c 20 20 52 25 | P%<>top.... R%| 00032840 3d a4 72 65 63 5f 6e 6f 28 6b 24 2c 6b 65 79 25 |=.rec_no(k$,key%| 00032850 2c 50 25 29 0d 1c 86 23 20 20 f2 72 65 61 64 73 |,P%)...# .reads| 00032860 6d 61 72 72 61 79 28 64 62 61 73 65 68 61 6e 64 |marray(dbasehand| 00032870 6c 65 25 2c 52 25 29 0d 1c 87 16 20 20 e3 20 49 |le%,R%).... . I| 00032880 25 3d 31 20 b8 20 66 69 65 6c 64 73 25 0d 1c 88 |%=1 . fields%...| 00032890 17 20 20 20 20 24 52 66 25 28 49 25 29 3d 46 24 |. $Rf%(I%)=F$| 000328a0 28 49 25 29 0d 1c 89 0a 20 20 ed 20 49 25 0d 1c |(I%).... . I%..| 000328b0 8a 18 20 20 c8 8e 20 63 68 61 72 74 79 70 65 25 |.. .. chartype%| 000328c0 28 46 25 29 20 ca 0d 1c 8b 0c 20 20 20 20 c9 20 |(F%) ..... . | 000328d0 36 3a 0d 1c 8c 1a 20 20 20 20 46 3d a0 28 72 65 |6:.... F=.(re| 000328e0 61 6c 24 29 3a 46 24 3d c3 28 46 29 0d 1c 8d 2b |al$):F$=.(F)...+| 000328f0 20 20 20 20 e7 20 66 69 78 25 28 46 25 29 3e 30 | . fix%(F%)>0| 00032900 20 8c 20 46 24 3d a4 66 69 78 5f 70 6f 69 6e 74 | . F$=.fix_point| 00032910 28 46 24 2c 46 25 29 0d 1c 8e 0c 20 20 20 20 c9 |(F$,F%).... .| 00032920 20 37 3a 0d 1c 8f 0b 20 20 20 20 ea 20 85 0d 1c | 7:.... . ...| 00032930 90 28 20 20 20 20 ee 20 85 20 ea 3a f7 20 85 3a |.( . . .:. .:| 00032940 f2 73 6f 66 74 65 72 72 6f 72 28 72 65 61 6c 24 |.softerror(real$| 00032950 2c 37 33 29 3a e1 0d 1c 91 13 20 20 20 20 46 24 |,73):..... F$| 00032960 3d a0 28 72 65 61 6c 24 29 0d 1c 92 0b 20 20 20 |=.(real$).... | 00032970 20 f7 20 85 0d 1c 93 07 20 20 cb 0d 1c 94 23 20 | . ..... ....# | 00032980 20 e7 20 a9 28 46 24 29 3c 3d 6c 65 6e 25 28 46 | . .(F$)<=len%(F| 00032990 25 29 20 8c 20 46 24 28 46 25 29 3d 46 24 0d 1c |%) . F$(F%)=F$..| 000329a0 95 24 20 20 f2 77 72 69 74 65 73 6d 61 72 72 61 |.$ .writesmarra| 000329b0 79 28 64 62 61 73 65 68 61 6e 64 6c 65 25 2c 52 |y(dbasehandle%,R| 000329c0 25 29 0d 1c 96 1e 20 20 50 25 3d a4 6e 65 69 67 |%).... P%=.neig| 000329d0 68 62 6f 75 72 28 6b 65 79 25 2c 50 25 2c 31 29 |hbour(key%,P%,1)| 000329e0 0d 1c 97 12 20 20 65 78 61 6d 69 6e 65 64 25 2b |.... examined%+| 000329f0 3d 31 0d 1c 98 39 20 20 c8 99 20 22 48 6f 75 72 |=1...9 .. "Hour| 00032a00 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 |glass_Percentage| 00032a10 22 2c 65 78 61 6d 69 6e 65 64 25 2a 31 30 30 20 |",examined%*100 | 00032a20 81 20 73 75 62 74 6f 74 61 6c 25 0d 1c 99 05 ce |. subtotal%.....| 00032a30 0d 1c 9a 16 c8 99 20 22 48 6f 75 72 67 6c 61 73 |...... "Hourglas| 00032a40 73 5f 4f 66 66 22 0d 1c 9b 1d f2 63 6c 6f 73 65 |s_Off".....close| 00032a50 5f 66 69 6c 65 28 64 62 61 73 65 68 61 6e 64 6c |_file(dbasehandl| 00032a60 65 25 29 0d 1c 9c 14 e3 20 49 25 3d 31 20 b8 20 |e%)..... I%=1 . | 00032a70 66 69 65 6c 64 73 25 0d 1c 9d 19 20 20 24 52 66 |fields%.... $Rf| 00032a80 25 28 49 25 29 3d 66 69 65 6c 64 24 28 49 25 29 |%(I%)=field$(I%)| 00032a90 0d 1c 9e 08 ed 20 49 25 0d 1c 9f 17 f2 64 69 73 |..... I%.....dis| 00032aa0 70 6c 61 79 28 6b 65 79 25 2c 61 64 64 72 29 0d |play(key%,addr).| 00032ab0 1c a0 05 e1 0d 1c a1 05 3a 0d 1c a2 1a dd 20 f2 |........:..... .| 00032ac0 73 75 6d 73 28 f8 20 46 24 2c 52 25 2c 74 79 70 |sums(. F$,R%,typ| 00032ad0 65 25 29 0d 1c a3 07 ea 20 56 0d 1c a4 0e e7 20 |e%)..... V..... | 00032ae0 46 24 3c 3e 22 22 20 8c 0d 1c a5 10 20 20 c8 8e |F$<>"" ..... ..| 00032af0 20 74 79 70 65 25 20 ca 0d 1c a6 1c 20 20 20 20 | type% ..... | 00032b00 c9 20 38 3a 56 3d a4 73 65 63 6f 6e 64 73 28 46 |. 8:V=.seconds(F| 00032b10 24 2c 31 29 0d 1c a7 11 20 20 20 20 7f 3a 56 3d |$,1).... .:V=| 00032b20 bb 28 46 24 29 0d 1c a8 07 20 20 cb 0d 1c a9 12 |.(F$).... .....| 00032b30 20 20 53 75 6d 28 52 25 2c 30 29 2b 3d 31 0d 1c | Sum(R%,0)+=1..| 00032b40 aa 12 20 20 53 75 6d 28 52 25 2c 31 29 2b 3d 56 |.. Sum(R%,1)+=V| 00032b50 0d 1c ab 14 20 20 53 75 6d 28 52 25 2c 33 29 2b |.... Sum(R%,3)+| 00032b60 3d 56 2a 56 0d 1c ac 05 cd 0d 1c ad 05 e1 0d 1c |=V*V............| 00032b70 ae 05 3a 0d 1c af 15 dd 20 f2 63 74 6f 74 61 6c |..:..... .ctotal| 00032b80 73 28 66 6c 61 67 25 29 0d 1c b0 25 ea 20 46 25 |s(flag%)...%. F%| 00032b90 2c 49 25 2c 4a 25 2c 4e 25 2c 52 25 2c 53 25 2c |,I%,J%,N%,R%,S%,| 00032ba0 62 61 73 65 25 2c 70 6f 73 25 2c 46 24 0d 1c b1 |base%,pos%,F$...| 00032bb0 0f ea 20 53 24 28 29 2c 66 25 28 29 0d 1c b2 11 |.. S$(),f%()....| 00032bc0 de 20 53 24 28 33 29 2c 66 25 28 33 29 0d 1c b3 |. S$(3),f%(3)...| 00032bd0 16 62 61 73 65 25 3d 21 6c 69 6e 65 61 6e 63 68 |.base%=!lineanch| 00032be0 6f 72 25 0d 1c b4 27 53 24 28 29 3d 22 49 74 65 |or%...'S$()="Ite| 00032bf0 6d 73 22 2c 22 53 75 6d 22 2c 22 4d 65 61 6e 22 |ms","Sum","Mean"| 00032c00 2c 22 53 74 2e 44 65 76 2e 22 0d 1c b5 1b e3 20 |,"St.Dev."..... | 00032c10 49 25 3d 31 20 b8 20 a9 28 46 6f 72 6d 24 29 2d |I%=1 . .(Form$)-| 00032c20 31 20 88 20 32 0d 1c b6 1c 20 20 46 25 3d a4 66 |1 . 2.... F%=.f| 00032c30 6e 75 6d 28 c1 46 6f 72 6d 24 2c 49 25 2c 32 29 |num(.Form$,I%,2)| 00032c40 29 0d 1c b7 14 20 20 52 25 3d 63 61 6c 63 72 6f |).... R%=calcro| 00032c50 77 25 3f 46 25 0d 1c b8 18 20 20 c8 8e 20 63 68 |w%?F%.... .. ch| 00032c60 61 72 74 79 70 65 25 28 46 25 29 20 ca 0d 1c b9 |artype%(F%) ....| 00032c70 1f 20 20 20 20 c9 20 33 2c 36 2c 38 2c 34 36 2c |. . 3,6,8,46,| 00032c80 34 37 2c 35 34 2c 35 36 2c 35 37 3a 0d 1c ba 17 |47,54,56,57:....| 00032c90 20 20 20 20 e7 20 53 75 6d 28 52 25 2c 30 29 3e | . Sum(R%,0)>| 00032ca0 30 20 8c 0d 1c bb 27 20 20 20 20 20 20 53 75 6d |0 ....' Sum| 00032cb0 28 52 25 2c 32 29 3d 53 75 6d 28 52 25 2c 31 29 |(R%,2)=Sum(R%,1)| 00032cc0 2f 53 75 6d 28 52 25 2c 30 29 0d 1c bc 36 20 20 |/Sum(R%,0)...6 | 00032cd0 20 20 20 20 53 75 6d 28 52 25 2c 33 29 3d b6 28 | Sum(R%,3)=.(| 00032ce0 53 75 6d 28 52 25 2c 33 29 2f 53 75 6d 28 52 25 |Sum(R%,3)/Sum(R%| 00032cf0 2c 30 29 2d 53 75 6d 28 52 25 2c 32 29 5e 32 29 |,0)-Sum(R%,2)^2)| 00032d00 0d 1c bd 09 20 20 20 20 cd 0d 1c be 07 20 20 cb |.... ..... .| 00032d10 0d 1c bf 08 ed 20 49 25 0d 1c c0 0e e3 20 4a 25 |..... I%..... J%| 00032d20 3d 30 20 b8 20 33 0d 1c c1 10 20 20 70 6f 73 25 |=0 . 3.... pos%| 00032d30 3d 62 61 73 65 25 0d 1c c2 11 20 20 e7 20 66 6c |=base%.... . fl| 00032d40 61 67 25 3e 30 20 8c 0d 1c c3 3e 20 20 20 20 4e |ag%>0 ....> N| 00032d50 25 3d 30 3a 73 74 61 72 74 25 3d 31 3a 46 24 3d |%=0:start%=1:F$=| 00032d60 c4 4c 6d 61 72 67 69 6e 25 2d a9 28 53 24 28 4a |.Lmargin%-.(S$(J| 00032d70 25 29 29 2d 31 2c 22 20 22 29 2b 53 24 28 4a 25 |%))-1," ")+S$(J%| 00032d80 29 2b 22 20 22 0d 1c c4 17 20 20 20 20 cc 20 4e |)+" ".... . N| 00032d90 25 3d 31 3a 73 74 61 72 74 25 3d 33 0d 1c c5 26 |%=1:start%=3...&| 00032da0 20 20 20 20 4c 25 3d 54 61 62 25 28 31 29 2d 4c | L%=Tab%(1)-L| 00032db0 6d 61 72 67 69 6e 25 2d a9 28 73 70 61 63 65 72 |margin%-.(spacer| 00032dc0 24 29 0d 1c c6 4e 20 20 20 20 e7 20 4c 25 3e 3d |$)...N . L%>=| 00032dd0 37 20 8c 20 46 24 3d 6d 61 72 67 69 6e 24 2b a4 |7 . F$=margin$+.| 00032de0 74 61 62 28 53 24 28 4a 25 29 2c 4e 25 29 20 8b |tab(S$(J%),N%) .| 00032df0 20 46 24 3d 6d 61 72 67 69 6e 24 2b a4 74 61 62 | F$=margin$+.tab| 00032e00 28 c0 53 24 28 4a 25 29 2c 4c 25 29 2c 4e 25 29 |(.S$(J%),L%),N%)| 00032e10 0d 1c c7 07 20 20 cd 0d 1c c8 33 20 20 f2 68 65 |.... ....3 .he| 00032e20 61 70 5f 73 74 6f 72 65 28 6c 69 6e 65 61 6e 63 |ap_store(lineanc| 00032e30 68 6f 72 25 2c 4c 65 6e 4c 69 6e 65 25 2c 30 2c |hor%,LenLine%,0,| 00032e40 70 6f 73 25 2c 30 2c 46 24 29 0d 1c c9 1f 20 20 |pos%,0,F$).... | 00032e50 e7 20 a9 28 46 6f 72 6d 24 29 3e 32 20 84 20 73 |. .(Form$)>2 . s| 00032e60 74 61 72 74 25 3d 31 20 8c 0d 1c ca 24 20 20 20 |tart%=1 ....$ | 00032e70 20 e3 20 49 25 3d 73 74 61 72 74 25 20 b8 20 a9 | . I%=start% . .| 00032e80 28 46 6f 72 6d 24 29 2d 31 20 88 20 32 0d 1c cb |(Form$)-1 . 2...| 00032e90 26 20 20 20 20 20 20 46 25 3d a4 66 6e 75 6d 28 |& F%=.fnum(| 00032ea0 c1 46 6f 72 6d 24 2c 49 25 2c 32 29 29 3a 46 24 |.Form$,I%,2)):F$| 00032eb0 3d 22 22 0d 1c cc 0f 20 20 20 20 20 20 4e 25 2b |="".... N%+| 00032ec0 3d 31 0d 1c cd 1c 20 20 20 20 20 20 c8 8e 20 63 |=1.... .. c| 00032ed0 68 61 72 74 79 70 65 25 28 46 25 29 20 ca 0d 1c |hartype%(F%) ...| 00032ee0 ce 23 20 20 20 20 20 20 20 20 c9 20 33 2c 36 2c |.# . 3,6,| 00032ef0 38 2c 34 36 2c 34 37 2c 35 34 2c 35 36 2c 35 37 |8,46,47,54,56,57| 00032f00 3a 0d 1c cf 1a 20 20 20 20 20 20 20 20 52 25 3d |:.... R%=| 00032f10 63 61 6c 63 72 6f 77 25 3f 46 25 0d 1c d0 51 20 |calcrow%?F%...Q | 00032f20 20 20 20 20 20 20 20 e7 20 63 68 61 72 74 79 70 | . chartyp| 00032f30 65 25 28 46 25 29 3d 38 20 8c 20 72 65 73 75 6c |e%(F%)=8 . resul| 00032f40 74 24 3d a4 74 69 6d 65 28 53 75 6d 28 52 25 2c |t$=.time(Sum(R%,| 00032f50 4a 25 29 29 20 8b 20 72 65 73 75 6c 74 24 3d c3 |J%)) . result$=.| 00032f60 28 53 75 6d 28 52 25 2c 4a 25 29 29 0d 1c d1 54 |(Sum(R%,J%))...T| 00032f70 20 20 20 20 20 20 20 20 e7 20 a4 73 65 6c 65 63 | . .selec| 00032f80 74 65 64 28 70 73 65 6c 65 63 74 57 25 2c 52 25 |ted(pselectW%,R%| 00032f90 2a 35 2d 33 2b 4a 25 29 20 8c 3a 46 24 3d a4 6a |*5-3+J%) .:F$=.j| 00032fa0 75 73 74 69 66 79 28 72 65 73 75 6c 74 24 2c 4e |ustify(result$,N| 00032fb0 25 2c 4e 25 2d 31 29 3a 66 25 28 4a 25 29 3d 31 |%,N%-1):f%(J%)=1| 00032fc0 0d 1c d2 0b 20 20 20 20 20 20 cb 0d 1c d3 40 20 |.... ....@ | 00032fd0 20 20 20 20 20 f2 68 65 61 70 5f 73 74 6f 72 65 | .heap_store| 00032fe0 28 6c 69 6e 65 61 6e 63 68 6f 72 25 2c 4c 65 6e |(lineanchor%,Len| 00032ff0 4c 69 6e 65 25 2c 30 2c 70 6f 73 25 2c 30 2c a4 |Line%,0,pos%,0,.| 00033000 74 61 62 28 46 24 2c 4e 25 29 29 0d 1c d4 0c 20 |tab(F$,N%)).... | 00033010 20 20 20 ed 20 49 25 0d 1c d5 3d 20 20 20 20 e7 | . I%...= .| 00033020 20 66 25 28 4a 25 29 3d 31 20 8c 20 f2 6c 69 73 | f%(J%)=1 . .lis| 00033030 74 5f 6c 69 6e 65 28 2d 31 2c 6c 69 6e 65 61 6e |t_line(-1,linean| 00033040 63 68 6f 72 25 2c 70 6f 73 25 2d 62 61 73 65 25 |chor%,pos%-base%| 00033050 2c 33 32 29 0d 1c d6 07 20 20 cd 0d 1c d7 08 ed |,32).... ......| 00033060 20 4a 25 0d 1c d8 20 e7 20 c6 8e 28 66 25 28 29 | J%... . ..(f%()| 00033070 29 3e 30 20 8c 20 f2 72 75 6c 65 5f 6f 66 66 28 |)>0 . .rule_off(| 00033080 34 35 29 0d 1c d9 05 e1 0d 1c da 05 3a 0d 1c db |45).........:...| 00033090 12 dd 20 a4 6d 61 72 67 69 6e 5f 77 61 72 6e 0d |.. .margin_warn.| 000330a0 1c dc 11 ea 20 66 25 2c 46 25 2c 52 25 2c 4a 25 |.... f%,F%,R%,J%| 000330b0 0d 1c dd 17 46 25 3d a4 66 6e 75 6d 28 c0 46 6f |....F%=.fnum(.Fo| 000330c0 72 6d 24 2c 32 29 29 0d 1c de 16 c8 8e 20 63 68 |rm$,2))...... ch| 000330d0 61 72 74 79 70 65 25 28 46 25 29 20 ca 0d 1c df |artype%(F%) ....| 000330e0 1b 20 20 c9 20 33 2c 36 2c 34 36 2c 34 37 2c 35 |. . 3,6,46,47,5| 000330f0 34 2c 35 36 2c 35 37 3a 0d 1c e0 14 20 20 52 25 |4,56,57:.... R%| 00033100 3d 63 61 6c 63 72 6f 77 25 3f 46 25 0d 1c e1 10 |=calcrow%?F%....| 00033110 20 20 e3 20 4a 25 3d 30 20 b8 20 33 0d 1c e2 2e | . J%=0 . 3....| 00033120 20 20 20 20 e7 20 a4 73 65 6c 65 63 74 65 64 28 | . .selected(| 00033130 70 73 65 6c 65 63 74 57 25 2c 52 25 2a 35 2d 4a |pselectW%,R%*5-J| 00033140 25 29 20 8c 20 66 25 3d 46 25 0d 1c e3 0a 20 20 |%) . f%=F%.... | 00033150 ed 20 4a 25 0d 1c e4 05 cb 0d 1c e5 3f e7 20 66 |. J%........?. f| 00033160 25 3e 30 20 80 20 4c 6d 61 72 67 69 6e 25 3c 39 |%>0 . Lmargin%<9| 00033170 20 8c 20 f2 73 6f 66 74 65 72 72 6f 72 28 22 20 | . .softerror(" | 00033180 28 22 2b 54 61 67 24 28 66 25 29 2b 22 29 2e 22 |("+Tag$(f%)+")."| 00033190 2c 39 32 29 3a 3d 2d 31 0d 1c e6 07 3d 66 25 0d |,92):=-1....=f%.| 000331a0 1c e7 05 3a 0d 1c e8 11 dd 20 a4 74 61 62 28 46 |...:..... .tab(F| 000331b0 24 2c 4e 25 29 0d 1c e9 08 ea 20 4c 25 0d 1c ea |$,N%)..... L%...| 000331c0 17 4c 25 3d a9 28 46 24 29 2b a9 28 73 70 61 63 |.L%=.(F$)+.(spac| 000331d0 65 72 24 29 0d 1c eb 2c e7 20 54 61 62 25 28 4e |er$)...,. Tab%(N| 000331e0 25 29 2d 54 61 62 25 28 4e 25 2d 31 29 2d 4c 25 |%)-Tab%(N%-1)-L%| 000331f0 3c 3d 30 20 8c 3d 46 24 2b 73 70 61 63 65 72 24 |<=0 .=F$+spacer$| 00033200 0d 1c ec 2c 3d 46 24 2b c4 54 61 62 25 28 4e 25 |...,=F$+.Tab%(N%| 00033210 29 2d 54 61 62 25 28 4e 25 2d 31 29 2d 4c 25 2c |)-Tab%(N%-1)-L%,| 00033220 22 20 22 29 2b 73 70 61 63 65 72 24 0d 1c ed 05 |" ")+spacer$....| 00033230 3a 0d 1c ee 19 dd 20 a4 6a 75 73 74 69 66 79 28 |:..... .justify(| 00033240 66 24 2c 78 25 2c 78 31 25 29 0d 1c ef 08 ea 20 |f$,x%,x1%)..... | 00033250 4c 25 0d 1c f0 24 4c 25 3d 54 61 62 25 28 78 25 |L%...$L%=Tab%(x%| 00033260 29 2d 54 61 62 25 28 78 31 25 29 2d a9 28 73 70 |)-Tab%(x1%)-.(sp| 00033270 61 63 65 72 24 29 0d 1c f1 2c e7 20 a9 28 66 24 |acer$)...,. .(f$| 00033280 29 3e 4c 25 20 8c 3d c0 66 24 2c 4c 25 29 20 8b |)>L% .=.f$,L%) .| 00033290 3d c4 4c 25 2d a9 28 66 24 29 2c 22 20 22 29 2b |=.L%-.(f$)," ")+| 000332a0 66 24 0d 1c f2 05 3a 0d 1c f3 17 dd 20 f2 65 78 |f$....:..... .ex| 000332b0 65 63 75 74 65 5f 66 69 6c 65 28 66 24 29 0d 1c |ecute_file(f$)..| 000332c0 f4 36 ea 20 46 2c 50 25 2c 6e 61 6d 65 24 2c 63 |.6. F,P%,name$,c| 000332d0 6f 6d 6d 61 6e 64 24 2c 66 69 6e 69 73 68 65 64 |ommand$,finished| 000332e0 25 2c 66 69 72 73 74 71 75 65 72 79 25 2c 73 74 |%,firstquery%,st| 000332f0 61 74 65 25 0d 1c f5 1e e7 20 ac 20 a4 63 6f 6e |ate%..... . .con| 00033300 66 69 72 6d 28 a4 6d 73 67 28 36 38 29 29 20 8c |firm(.msg(68)) .| 00033310 20 e1 0d 1c f6 07 ea 20 85 0d 1c f7 47 e7 20 a4 | ...... ....G. .| 00033320 73 65 6c 65 63 74 65 64 28 70 72 69 6e 74 57 25 |selected(printW%| 00033330 2c 33 39 29 20 8c 20 72 65 70 6f 72 74 64 65 73 |,39) . reportdes| 00033340 74 24 3d 22 46 69 6c 65 22 20 8b 20 72 65 70 6f |t$="File" . repo| 00033350 72 74 64 65 73 74 24 3d 22 57 69 6e 64 6f 77 22 |rtdest$="Window"| 00033360 0d 1c f8 0b 46 3d 8e 28 66 24 29 0d 1c f9 1b f4 |....F=.(f$).....| 00033370 20 53 63 72 69 70 74 20 66 69 6c 65 20 73 69 67 | Script file sig| 00033380 6e 61 74 75 72 65 0d 1c fa 0d 6a 75 6e 6b 24 3d |nature....junk$=| 00033390 be 23 46 0d 1c fb 1d ee 20 85 20 ea 3a f7 20 85 |.#F..... . .:. .| 000333a0 3a f2 61 62 6f 72 74 5f 73 63 72 69 70 74 3a e1 |:.abort_script:.| 000333b0 0d 1c fc 19 c8 95 20 ac 28 c5 23 46 20 84 20 66 |...... .(.#F . f| 000333c0 69 6e 69 73 68 65 64 25 29 0d 1c fd 18 20 20 c8 |inished%).... .| 000333d0 99 20 22 4f 53 5f 42 79 74 65 22 2c 32 32 39 2c |. "OS_Byte",229,| 000333e0 30 0d 1c fe 0f 20 20 6c 69 6e 65 24 3d be 23 46 |0.... line$=.#F| 000333f0 0d 1c ff 18 20 20 73 70 61 63 65 25 3d a7 6c 69 |.... space%=.li| 00033400 6e 65 24 2c 22 20 22 29 0d 1d 00 77 20 20 e7 20 |ne$," ")...w . | 00033410 73 70 61 63 65 25 3d 30 20 8c 20 63 6f 6d 6d 61 |space%=0 . comma| 00033420 6e 64 24 3d 6c 69 6e 65 24 3a 70 61 72 61 6d 73 |nd$=line$:params| 00033430 24 3d 22 22 20 8b 20 63 6f 6d 6d 61 6e 64 24 3d |$="" . command$=| 00033440 c0 6c 69 6e 65 24 2c 73 70 61 63 65 25 2d 31 29 |.line$,space%-1)| 00033450 3a 70 61 72 61 6d 73 24 3d c1 6c 69 6e 65 24 2c |:params$=.line$,| 00033460 73 70 61 63 65 25 2b 31 29 3a 73 74 61 74 65 25 |space%+1):state%| 00033470 3d 28 70 61 72 61 6d 73 24 3d 22 4f 4e 22 29 0d |=(params$="ON").| 00033480 1d 01 13 20 20 c8 8e 20 63 6f 6d 6d 61 6e 64 24 |... .. command$| 00033490 20 ca 0d 1d 02 15 20 20 20 20 c9 20 22 21 43 4f | ..... . "!CO| 000334a0 4d 4d 45 4e 54 22 3a 0d 1d 03 14 20 20 20 20 c9 |MMENT":.... .| 000334b0 20 22 21 53 43 52 49 50 54 22 3a 0d 1d 04 12 20 | "!SCRIPT":.... | 000334c0 20 20 20 49 6d 70 43 6f 6d 24 3d 22 22 0d 1d 05 | ImpCom$=""...| 000334d0 19 20 20 20 20 e7 20 70 61 72 61 6d 73 24 3d 22 |. . params$="| 000334e0 45 4e 44 22 20 8c 0d 1d 06 15 20 20 20 20 20 20 |END" ..... | 000334f0 66 69 6e 69 73 68 65 64 25 3d b9 0d 1d 07 3a 20 |finished%=....: | 00033500 20 20 20 20 20 cc 20 f2 65 78 65 63 75 74 65 5f | . .execute_| 00033510 66 69 6c 65 28 24 64 61 74 61 62 61 73 65 25 2b |file($database%+| 00033520 22 2e 50 72 69 6e 74 52 65 73 2e 22 2b 70 61 72 |".PrintRes."+par| 00033530 61 6d 73 24 29 0d 1d 08 09 20 20 20 20 cd 0d 1d |ams$).... ...| 00033540 09 14 20 20 20 20 c9 20 22 21 44 45 4c 45 54 45 |.. . "!DELETE| 00033550 22 3a 0d 1d 0a 16 20 20 20 20 e7 20 70 72 65 73 |":.... . pres| 00033560 65 6e 74 25 3d 37 20 8c 0d 1d 0b 11 20 20 20 20 |ent%=7 ..... | 00033570 20 20 52 65 63 46 25 3d a3 0d 1d 0c 30 20 20 20 | RecF%=....0 | 00033580 20 20 20 e7 20 70 61 72 61 6d 73 24 3d 22 22 20 | . params$="" | 00033590 8c 20 6b 65 79 24 3d be 23 46 20 8b 20 6b 65 79 |. key$=.#F . key| 000335a0 24 3d 70 61 72 61 6d 73 24 0d 1d 0d 35 20 20 20 |$=params$...5 | 000335b0 20 20 20 f2 73 65 6c 65 63 74 28 6b 65 79 70 61 | .select(keypa| 000335c0 64 57 25 2c 32 35 29 3a f2 64 65 73 65 6c 65 63 |dW%,25):.deselec| 000335d0 74 28 6b 65 79 70 61 64 57 25 2c 32 34 29 0d 1d |t(keypadW%,24)..| 000335e0 0e 20 20 20 20 20 20 20 61 64 64 72 3d a4 66 69 |. addr=.fi| 000335f0 6e 64 28 6b 65 79 24 2c 30 2c 30 2c b9 29 0d 1d |nd(key$,0,0,.)..| 00033600 0f 15 20 20 20 20 20 20 e7 20 52 65 63 46 25 3d |.. . RecF%=| 00033610 b9 20 8c 0d 1d 10 1e 20 20 20 20 20 20 20 20 61 |. ..... a| 00033620 64 64 72 3d a4 73 68 69 66 74 28 30 2c 30 2c 30 |ddr=.shift(0,0,0| 00033630 29 0d 1d 11 24 20 20 20 20 20 20 20 20 61 64 64 |)...$ add| 00033640 72 3d a4 6d 6f 76 65 74 6f 28 6b 65 79 25 2c 74 |r=.moveto(key%,t| 00033650 6f 70 2c 31 29 0d 1d 12 0b 20 20 20 20 20 20 cd |op,1).... .| 00033660 0d 1d 13 09 20 20 20 20 cd 0d 1d 14 14 20 20 20 |.... ..... | 00033670 20 c9 20 22 21 49 4e 53 45 52 54 22 3a 0d 1d 15 | . "!INSERT":...| 00033680 16 20 20 20 20 e7 20 70 72 65 73 65 6e 74 25 3d |. . present%=| 00033690 37 20 8c 0d 1d 16 1d 20 20 20 20 20 20 73 75 62 |7 ..... sub| 000336a0 66 69 6c 65 25 3d bb 28 70 61 72 61 6d 73 24 29 |file%=.(params$)| 000336b0 0d 1d 17 29 20 20 20 20 20 20 f2 72 65 61 64 28 |...) .read(| 000336c0 66 69 65 6c 64 73 25 2c a3 2c 52 41 25 2c 24 64 |fields%,.,RA%,$d| 000336d0 61 74 61 62 61 73 65 25 29 0d 1d 18 1d 20 20 20 |atabase%).... | 000336e0 20 20 20 e3 20 6c 6f 6f 70 25 3d 31 20 b8 20 66 | . loop%=1 . f| 000336f0 69 65 6c 64 73 25 0d 1d 19 29 20 20 20 20 20 20 |ields%...) | 00033700 20 20 24 52 66 25 28 6c 6f 6f 70 25 29 3d c0 be | $Rf%(loop%)=..| 00033710 23 46 2c 6c 65 6e 25 28 6c 6f 6f 70 25 29 29 0d |#F,len%(loop%)).| 00033720 1d 1a 0b 20 20 20 20 20 20 ed 0d 1d 1b 1e 20 20 |... ..... | 00033730 20 20 20 20 f2 77 72 69 74 65 28 66 69 65 6c 64 | .write(field| 00033740 73 25 2c 6b 65 79 25 29 0d 1d 1c 09 20 20 20 20 |s%,key%).... | 00033750 cd 0d 1d 1d 13 20 20 20 20 c9 20 22 21 51 55 45 |..... . "!QUE| 00033760 52 59 22 3a 0d 1d 1e 17 20 20 20 20 e7 20 70 61 |RY":.... . pa| 00033770 72 61 6d 73 24 3c 3e 22 22 20 8c 0d 1d 1f 1a 20 |rams$<>"" ..... | 00033780 20 20 20 20 20 50 25 3d a7 70 61 72 61 6d 73 24 | P%=.params$| 00033790 2c 22 2c 22 29 0d 1d 20 21 20 20 20 20 20 20 66 |,",").. ! f| 000337a0 6f 72 6d 75 6c 61 24 3d c1 70 61 72 61 6d 73 24 |ormula$=.params$| 000337b0 2c 50 25 2b 31 29 0d 1d 21 1e 20 20 20 20 20 20 |,P%+1)..!. | 000337c0 6e 61 6d 65 24 3d c0 70 61 72 61 6d 73 24 2c 50 |name$=.params$,P| 000337d0 25 2d 31 29 0d 1d 22 1a 20 20 20 20 20 20 6e 61 |%-1)..". na| 000337e0 6d 65 24 3d c0 6e 61 6d 65 24 2c 31 30 29 0d 1d |me$=.name$,10)..| 000337f0 23 24 20 20 20 20 20 20 53 65 61 72 63 68 24 3d |#$ Search$=| 00033800 a4 70 61 72 73 65 28 66 6f 72 6d 75 6c 61 24 2c |.parse(formula$,| 00033810 b9 29 0d 1d 24 24 20 20 20 20 20 20 24 a4 74 65 |.)..$$ $.te| 00033820 78 74 28 6d 61 74 63 68 57 25 2c 30 29 3d 66 6f |xt(matchW%,0)=fo| 00033830 72 6d 75 6c 61 24 0d 1d 25 21 20 20 20 20 20 20 |rmula$..%! | 00033840 f2 72 65 64 72 61 77 5f 69 63 6f 6e 28 6d 61 74 |.redraw_icon(mat| 00033850 63 68 57 25 2c 30 29 0d 1d 26 1b 20 20 20 20 20 |chW%,0)..&. | 00033860 20 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f | .. "Hourglass_O| 00033870 6e 22 0d 1d 27 15 20 20 20 20 20 20 73 63 72 69 |n"..'. scri| 00033880 70 74 6f 6e 25 3d b9 0d 1d 28 1b 20 20 20 20 20 |pton%=...(. | 00033890 20 f2 64 6f 5f 69 74 28 53 65 61 72 63 68 24 2c | .do_it(Search$,| 000338a0 a3 29 0d 1d 29 23 20 20 20 20 20 20 e7 20 a4 73 |.)..)# . .s| 000338b0 65 6c 65 63 74 65 64 28 70 72 69 6e 74 57 25 2c |elected(printW%,| 000338c0 33 38 29 20 8c 0d 1d 2a 3f 20 20 20 20 20 20 20 |38) ...*? | 000338d0 20 66 69 6c 65 6e 61 6d 65 24 3d 24 64 61 74 61 | filename$=$data| 000338e0 62 61 73 65 25 2b 22 2e 50 72 69 6e 74 4a 6f 62 |base%+".PrintJob| 000338f0 73 2e 22 2b 6e 61 6d 65 24 3a 54 79 70 65 25 3d |s."+name$:Type%=| 00033900 26 46 46 46 0d 1d 2b 3b 20 20 20 20 20 20 20 20 |&FFF..+; | 00033910 53 74 61 72 74 25 3d 21 74 65 78 74 61 6e 63 68 |Start%=!textanch| 00033920 6f 72 25 3a 45 6e 64 25 3d 53 74 61 72 74 25 2b |or%:End%=Start%+| 00033930 43 6f 75 6e 74 25 2a 4c 65 6e 4c 69 6e 65 25 0d |Count%*LenLine%.| 00033940 1d 2c 12 20 20 20 20 20 20 20 20 c8 8e 20 b9 20 |.,. .. . | 00033950 ca 0d 1d 2d 29 20 20 20 20 20 20 20 20 20 20 c9 |...-) .| 00033960 20 49 6d 70 43 6f 6d 24 3d 22 22 3a 24 53 74 61 | ImpCom$="":$Sta| 00033970 72 74 25 3d 70 69 74 63 68 24 0d 1d 2e 39 20 20 |rt%=pitch$...9 | 00033980 20 20 20 20 20 20 20 20 c9 20 49 6d 70 43 6f 6d | . ImpCom| 00033990 24 3c 3e 22 22 20 80 20 66 69 72 73 74 71 75 65 |$<>"" . firstque| 000339a0 72 79 25 3d b9 3a 66 69 72 73 74 71 75 65 72 79 |ry%=.:firstquery| 000339b0 25 3d a3 0d 1d 2f 1f 20 20 20 20 20 20 20 20 20 |%=.../. | 000339c0 20 7f 3a 24 53 74 61 72 74 25 3d 49 6d 70 43 6f | .:$Start%=ImpCo| 000339d0 6d 24 0d 1d 30 0d 20 20 20 20 20 20 20 20 cb 0d |m$..0. ..| 000339e0 1d 31 2e 20 20 20 20 20 20 20 20 f2 73 61 76 65 |.1. .save| 000339f0 28 66 69 6c 65 6e 61 6d 65 24 2c 54 79 70 65 25 |(filename$,Type%| 00033a00 2c 53 74 61 72 74 25 2c 45 6e 64 25 29 0d 1d 32 |,Start%,End%)..2| 00033a10 0b 20 20 20 20 20 20 cd 0d 1d 33 09 20 20 20 20 |. ...3. | 00033a20 cd 0d 1d 34 17 20 20 20 20 c9 20 22 21 53 45 4c |...4. . "!SEL| 00033a30 45 43 54 49 4f 4e 22 3a 0d 1d 35 17 20 20 20 20 |ECTION":..5. | 00033a40 e7 20 70 61 72 61 6d 73 24 3c 3e 22 22 20 8c 0d |. params$<>"" ..| 00033a50 1d 36 33 20 20 20 20 20 20 66 69 6c 65 6e 61 6d |.63 filenam| 00033a60 65 24 3d 24 64 61 74 61 62 61 73 65 25 2b 22 2e |e$=$database%+".| 00033a70 50 72 69 6e 74 52 65 73 2e 22 2b 70 61 72 61 6d |PrintRes."+param| 00033a80 73 24 0d 1d 37 2d 20 20 20 20 20 20 c8 99 20 22 |s$..7- .. "| 00033a90 4f 53 5f 46 69 6c 65 22 2c 35 2c 66 69 6c 65 6e |OS_File",5,filen| 00033aa0 61 6d 65 24 20 b8 20 2c 2c 66 74 79 70 65 25 0d |ame$ . ,,ftype%.| 00033ab0 1d 38 23 20 20 20 20 20 20 66 74 79 70 65 25 3d |.8# ftype%=| 00033ac0 28 66 74 79 70 65 25 3e 3e 38 29 20 80 20 26 46 |(ftype%>>8) . &F| 00033ad0 46 46 0d 1d 39 34 20 20 20 20 20 20 e7 20 66 74 |FF..94 . ft| 00033ae0 79 70 65 25 3d 26 37 46 33 20 8c 20 f2 64 72 61 |ype%=&7F3 . .dra| 00033af0 67 5f 73 65 6c 65 63 74 69 6f 6e 28 66 69 6c 65 |g_selection(file| 00033b00 6e 61 6d 65 24 29 0d 1d 3a 1c 20 20 20 20 20 20 |name$)..:. | 00033b10 cc 20 f2 63 6c 65 61 72 5f 73 65 6c 65 63 74 69 |. .clear_selecti| 00033b20 6f 6e 0d 1d 3b 09 20 20 20 20 cd 0d 1d 3c 17 20 |on..;. ...<. | 00033b30 20 20 20 c9 20 22 21 50 52 49 4e 54 4f 50 54 53 | . "!PRINTOPTS| 00033b40 22 3a 0d 1d 3d 17 20 20 20 20 e7 20 70 61 72 61 |":..=. . para| 00033b50 6d 73 24 3c 3e 22 22 20 8c 0d 1d 3e 33 20 20 20 |ms$<>"" ...>3 | 00033b60 20 20 20 66 69 6c 65 6e 61 6d 65 24 3d 24 64 61 | filename$=$da| 00033b70 74 61 62 61 73 65 25 2b 22 2e 50 72 69 6e 74 52 |tabase%+".PrintR| 00033b80 65 73 2e 22 2b 70 61 72 61 6d 73 24 0d 1d 3f 2d |es."+params$..?-| 00033b90 20 20 20 20 20 20 c8 99 20 22 4f 53 5f 46 69 6c | .. "OS_Fil| 00033ba0 65 22 2c 35 2c 66 69 6c 65 6e 61 6d 65 24 20 b8 |e",5,filename$ .| 00033bb0 20 2c 2c 66 74 79 70 65 25 0d 1d 40 23 20 20 20 | ,,ftype%..@# | 00033bc0 20 20 20 66 74 79 70 65 25 3d 28 66 74 79 70 65 | ftype%=(ftype| 00033bd0 25 3e 3e 38 29 20 80 20 26 46 46 46 0d 1d 41 32 |%>>8) . &FFF..A2| 00033be0 20 20 20 20 20 20 e7 20 66 74 79 70 65 25 3d 26 | . ftype%=&| 00033bf0 37 46 35 20 8c 20 f2 64 72 61 67 5f 6f 70 74 69 |7F5 . .drag_opti| 00033c00 6f 6e 73 28 66 69 6c 65 6e 61 6d 65 24 29 0d 1d |ons(filename$)..| 00033c10 42 3c 20 20 20 20 20 20 cc 20 f2 64 72 61 67 5f |B< . .drag_| 00033c20 6f 70 74 69 6f 6e 73 28 22 3c 50 62 61 73 65 24 |options("<Pbase$| 00033c30 44 69 72 3e 2e 52 65 73 6f 75 72 63 65 73 2e 50 |Dir>.Resources.P| 00033c40 72 69 6e 74 4f 70 74 73 22 29 0d 1d 43 09 20 20 |rintOpts")..C. | 00033c50 20 20 cd 0d 1d 44 2e 20 20 20 20 c9 20 22 21 43 | ...D. . "!C| 00033c60 41 53 45 22 3a f2 73 65 74 5f 69 63 6f 6e 28 6d |ASE":.set_icon(m| 00033c70 61 74 63 68 57 25 2c 31 36 2c 73 74 61 74 65 25 |atchW%,16,state%| 00033c80 29 0d 1d 45 2f 20 20 20 20 c9 20 22 21 49 4e 44 |)..E/ . "!IND| 00033c90 45 58 22 3a f2 73 65 74 5f 69 63 6f 6e 28 6d 61 |EX":.set_icon(ma| 00033ca0 74 63 68 57 25 2c 32 33 2c 73 74 61 74 65 25 29 |tchW%,23,state%)| 00033cb0 0d 1d 46 30 20 20 20 20 c9 20 22 21 45 58 50 41 |..F0 . "!EXPA| 00033cc0 4e 44 22 3a f2 73 65 74 5f 69 63 6f 6e 28 70 72 |ND":.set_icon(pr| 00033cd0 69 6e 74 57 25 2c 31 31 2c 73 74 61 74 65 25 29 |intW%,11,state%)| 00033ce0 0d 1d 47 2e 20 20 20 20 c9 20 22 21 44 41 54 45 |..G. . "!DATE| 00033cf0 22 3a f2 73 65 74 5f 69 63 6f 6e 28 70 72 69 6e |":.set_icon(prin| 00033d00 74 57 25 2c 31 39 2c 73 74 61 74 65 25 29 0d 1d |tW%,19,state%)..| 00033d10 48 2f 20 20 20 20 c9 20 22 21 55 50 50 45 52 22 |H/ . "!UPPER"| 00033d20 3a f2 73 65 74 5f 69 63 6f 6e 28 70 72 69 6e 74 |:.set_icon(print| 00033d30 57 25 2c 31 32 2c 73 74 61 74 65 25 29 0d 1d 49 |W%,12,state%)..I| 00033d40 2f 20 20 20 20 c9 20 22 21 46 49 52 53 54 22 3a |/ . "!FIRST":| 00033d50 f2 73 65 74 5f 69 63 6f 6e 28 70 72 69 6e 74 57 |.set_icon(printW| 00033d60 25 2c 31 30 2c 73 74 61 74 65 25 29 0d 1d 4a 33 |%,10,state%)..J3| 00033d70 20 20 20 20 c9 20 22 21 55 4e 44 45 52 4c 49 4e | . "!UNDERLIN| 00033d80 45 22 3a f2 73 65 74 5f 69 63 6f 6e 28 70 72 69 |E":.set_icon(pri| 00033d90 6e 74 57 25 2c 32 39 2c 73 74 61 74 65 25 29 0d |ntW%,29,state%).| 00033da0 1d 4b 30 20 20 20 20 c9 20 22 21 53 48 52 49 4e |.K0 . "!SHRIN| 00033db0 4b 22 3a f2 73 65 74 5f 69 63 6f 6e 28 70 72 69 |K":.set_icon(pri| 00033dc0 6e 74 57 25 2c 34 30 2c 73 74 61 74 65 25 29 0d |ntW%,40,state%).| 00033dd0 1d 4c 2d 20 20 20 20 c9 20 22 21 54 49 54 4c 45 |.L- . "!TITLE| 00033de0 22 3a 24 a4 74 65 78 74 28 70 72 69 6e 74 57 25 |":$.text(printW%| 00033df0 2c 31 38 29 3d 70 61 72 61 6d 73 24 0d 1d 4d 2c |,18)=params$..M,| 00033e00 20 20 20 20 c9 20 22 21 50 41 47 45 22 3a 24 a4 | . "!PAGE":$.| 00033e10 74 65 78 74 28 70 72 69 6e 74 57 25 2c 31 36 29 |text(printW%,16)| 00033e20 3d 70 61 72 61 6d 73 24 0d 1d 4e 31 20 20 20 20 |=params$..N1 | 00033e30 c9 20 22 21 4c 49 4e 45 53 50 41 43 45 22 3a 24 |. "!LINESPACE":$| 00033e40 a4 74 65 78 74 28 70 72 69 6e 74 57 25 2c 31 37 |.text(printW%,17| 00033e50 29 3d 70 61 72 61 6d 73 24 0d 1d 4f 2f 20 20 20 |)=params$..O/ | 00033e60 20 c9 20 22 21 4c 4d 41 52 47 49 4e 22 3a 24 a4 | . "!LMARGIN":$.| 00033e70 74 65 78 74 28 70 72 69 6e 74 57 25 2c 33 30 29 |text(printW%,30)| 00033e80 3d 70 61 72 61 6d 73 24 0d 1d 50 2f 20 20 20 20 |=params$..P/ | 00033e90 c9 20 22 21 54 4d 41 52 47 49 4e 22 3a 24 a4 74 |. "!TMARGIN":$.t| 00033ea0 65 78 74 28 70 72 69 6e 74 57 25 2c 33 32 29 3d |ext(printW%,32)=| 00033eb0 70 61 72 61 6d 73 24 0d 1d 51 2e 20 20 20 20 c9 |params$..Q. .| 00033ec0 20 22 21 53 50 41 43 45 52 22 3a 24 a4 74 65 78 | "!SPACER":$.tex| 00033ed0 74 28 70 72 69 6e 74 57 25 2c 34 33 29 3d 70 61 |t(printW%,43)=pa| 00033ee0 72 61 6d 73 24 0d 1d 52 30 20 20 20 20 c9 20 22 |rams$..R0 . "| 00033ef0 21 43 4f 4c 57 49 44 54 48 22 3a 24 a4 74 65 78 |!COLWIDTH":$.tex| 00033f00 74 28 70 72 69 6e 74 57 25 2c 34 35 29 3d 70 61 |t(printW%,45)=pa| 00033f10 72 61 6d 73 24 0d 1d 53 16 20 20 20 20 c9 20 22 |rams$..S. . "| 00033f20 21 48 45 41 44 49 4e 47 53 22 3a 0d 1d 54 18 20 |!HEADINGS":..T. | 00033f30 20 20 20 c8 8e 20 a4 75 28 70 61 72 61 6d 73 24 | .. .u(params$| 00033f40 29 20 ca 0d 1d 55 37 20 20 20 20 20 20 c9 20 22 |) ...U7 . "| 00033f50 44 22 3a f2 73 65 6c 65 63 74 28 70 72 69 6e 74 |D":.select(print| 00033f60 57 25 2c 32 29 3a f2 64 65 73 65 6c 65 63 74 28 |W%,2):.deselect(| 00033f70 70 72 69 6e 74 57 25 2c 31 29 0d 1d 56 33 20 20 |printW%,1)..V3 | 00033f80 20 20 20 20 7f 3a f2 73 65 6c 65 63 74 28 70 72 | .:.select(pr| 00033f90 69 6e 74 57 25 2c 31 29 3a f2 64 65 73 65 6c 65 |intW%,1):.desele| 00033fa0 63 74 28 70 72 69 6e 74 57 25 2c 32 29 0d 1d 57 |ct(printW%,2)..W| 00033fb0 09 20 20 20 20 cb 0d 1d 58 13 20 20 20 20 c9 20 |. ...X. . | 00033fc0 22 21 50 49 54 43 48 22 3a 0d 1d 59 33 20 20 20 |"!PITCH":..Y3 | 00033fd0 20 f2 64 65 73 65 6c 65 63 74 28 70 72 69 6e 74 | .deselect(print| 00033fe0 57 25 2c a4 73 65 6c 65 63 74 65 64 5f 65 73 67 |W%,.selected_esg| 00033ff0 28 70 72 69 6e 74 57 25 2c 32 29 29 0d 1d 5a 17 |(printW%,2))..Z.| 00034000 20 20 20 20 c8 8e 20 bb 28 70 61 72 61 6d 73 24 | .. .(params$| 00034010 29 20 ca 0d 1d 5b 20 20 20 20 20 20 20 c9 20 35 |) ...[ . 5| 00034020 3a f2 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 |:.select(printW%| 00034030 2c 34 29 0d 1d 5c 21 20 20 20 20 20 20 c9 20 31 |,4)..\! . 1| 00034040 30 3a f2 73 65 6c 65 63 74 28 70 72 69 6e 74 57 |0:.select(printW| 00034050 25 2c 37 29 0d 1d 5d 21 20 20 20 20 20 20 c9 20 |%,7)..]! . | 00034060 31 32 3a f2 73 65 6c 65 63 74 28 70 72 69 6e 74 |12:.select(print| 00034070 57 25 2c 38 29 0d 1d 5e 1e 20 20 20 20 20 20 7f |W%,8)..^. .| 00034080 3a f2 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 |:.select(printW%| 00034090 2c 36 29 0d 1d 5f 09 20 20 20 20 cb 0d 1d 60 14 |,6).._. ...`.| 000340a0 20 20 20 20 c9 20 22 21 46 4f 52 4d 41 54 22 3a | . "!FORMAT":| 000340b0 0d 1d 61 33 20 20 20 20 f2 64 65 73 65 6c 65 63 |..a3 .deselec| 000340c0 74 28 70 72 69 6e 74 57 25 2c a4 73 65 6c 65 63 |t(printW%,.selec| 000340d0 74 65 64 5f 65 73 67 28 70 72 69 6e 74 57 25 2c |ted_esg(printW%,| 000340e0 33 29 29 0d 1d 62 22 20 20 20 20 f2 69 63 6f 6e |3))..b" .icon| 000340f0 5f 62 69 74 28 32 32 2c 70 72 69 6e 74 57 25 2c |_bit(22,printW%,| 00034100 31 35 2c a3 29 0d 1d 63 4d 20 20 20 20 50 25 3d |15,.)..cM P%=| 00034110 a7 70 61 72 61 6d 73 24 2c 22 20 22 29 3a e7 20 |.params$," "):. | 00034120 50 25 3e 30 20 8c 20 63 6f 6c 73 24 3d c1 70 61 |P%>0 . cols$=.pa| 00034130 72 61 6d 73 24 2c 50 25 2b 31 29 3a 70 61 72 61 |rams$,P%+1):para| 00034140 6d 73 24 3d c0 70 61 72 61 6d 73 24 2c 50 25 2d |ms$=.params$,P%-| 00034150 31 29 0d 1d 64 14 20 20 20 20 c8 8e 20 70 61 72 |1)..d. .. par| 00034160 61 6d 73 24 20 ca 0d 1d 65 2a 20 20 20 20 20 20 |ams$ ...e* | 00034170 c9 20 22 56 45 52 54 49 43 41 4c 22 3a f2 73 65 |. "VERTICAL":.se| 00034180 6c 65 63 74 28 70 72 69 6e 74 57 25 2c 32 34 29 |lect(printW%,24)| 00034190 0d 1d 66 27 20 20 20 20 20 20 c9 20 22 54 41 42 |..f' . "TAB| 000341a0 4c 45 22 3a f2 73 65 6c 65 63 74 28 70 72 69 6e |LE":.select(prin| 000341b0 74 57 25 2c 32 35 29 0d 1d 67 22 20 20 20 20 20 |tW%,25)..g" | 000341c0 20 24 a4 74 65 78 74 28 70 72 69 6e 74 57 25 2c | $.text(printW%,| 000341d0 31 35 29 3d 63 6f 6c 73 24 0d 1d 68 24 20 20 20 |15)=cols$..h$ | 000341e0 20 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c | .icon_bit(22,| 000341f0 70 72 69 6e 74 57 25 2c 31 35 2c b9 29 0d 1d 69 |printW%,15,.)..i| 00034200 27 20 20 20 20 20 20 c9 20 22 4c 41 42 45 4c 22 |' . "LABEL"| 00034210 3a f2 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 |:.select(printW%| 00034220 2c 32 36 29 0d 1d 6a 1f 20 20 20 20 20 20 7f 3a |,26)..j. .:| 00034230 f2 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 2c |.select(printW%,| 00034240 32 33 29 0d 1d 6b 09 20 20 20 20 cb 0d 1d 6c 19 |23)..k. ...l.| 00034250 20 20 20 20 c9 20 22 21 44 45 53 54 49 4e 41 54 | . "!DESTINAT| 00034260 49 4f 4e 22 3a 0d 1d 6d 33 20 20 20 20 f2 64 65 |ION":..m3 .de| 00034270 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 2c a4 |select(printW%,.| 00034280 73 65 6c 65 63 74 65 64 5f 65 73 67 28 70 72 69 |selected_esg(pri| 00034290 6e 74 57 25 2c 34 29 29 0d 1d 6e 14 20 20 20 20 |ntW%,4))..n. | 000342a0 c8 8e 20 70 61 72 61 6d 73 24 20 ca 0d 1d 6f 39 |.. params$ ...o9| 000342b0 20 20 20 20 20 20 c9 20 22 46 49 4c 45 22 3a f2 | . "FILE":.| 000342c0 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 2c 33 |select(printW%,3| 000342d0 39 29 3a 72 65 70 6f 72 74 64 65 73 74 24 3d 22 |9):reportdest$="| 000342e0 46 69 6c 65 22 0d 1d 70 3f 20 20 20 20 20 20 c9 |File"..p? .| 000342f0 20 22 50 52 49 4e 54 45 52 22 3a f2 73 65 6c 65 | "PRINTER":.sele| 00034300 63 74 28 70 72 69 6e 74 57 25 2c 34 31 29 3a 72 |ct(printW%,41):r| 00034310 65 70 6f 72 74 64 65 73 74 24 3d 22 50 72 69 6e |eportdest$="Prin| 00034320 74 65 72 22 0d 1d 71 34 20 20 20 20 20 20 7f 3a |ter"..q4 .:| 00034330 f2 73 65 6c 65 63 74 28 70 72 69 6e 74 57 25 2c |.select(printW%,| 00034340 33 38 29 3a 72 65 70 6f 72 74 64 65 73 74 24 3d |38):reportdest$=| 00034350 22 57 69 6e 64 6f 77 22 0d 1d 72 09 20 20 20 20 |"Window"..r. | 00034360 cb 0d 1d 73 13 20 20 20 20 c9 20 22 21 4c 41 42 |...s. . "!LAB| 00034370 45 4c 22 3a 0d 1d 74 14 20 20 20 20 70 61 72 61 |EL":..t. para| 00034380 6d 73 24 2b 3d 22 2c 22 0d 1d 75 12 20 20 20 20 |ms$+=","..u. | 00034390 e3 20 49 25 3d 31 20 b8 20 37 0d 1d 76 1a 20 20 |. I%=1 . 7..v. | 000343a0 20 20 20 20 50 25 3d a7 70 61 72 61 6d 73 24 2c | P%=.params$,| 000343b0 22 2c 22 29 0d 1d 77 34 20 20 20 20 20 20 70 61 |",")..w4 pa| 000343c0 72 24 3d c0 70 61 72 61 6d 73 24 2c 50 25 2d 31 |r$=.params$,P%-1| 000343d0 29 3a 70 61 72 61 6d 73 24 3d c1 70 61 72 61 6d |):params$=.param| 000343e0 73 24 2c 50 25 2b 31 29 0d 1d 78 11 20 20 20 20 |s$,P%+1)..x. | 000343f0 20 20 c8 8e 20 49 25 20 ca 0d 1d 79 10 20 20 20 | .. I% ...y. | 00034400 20 20 20 20 20 c9 20 31 3a 0d 1d 7a 37 20 20 20 | . 1:..z7 | 00034410 20 20 20 20 20 f2 64 65 73 65 6c 65 63 74 28 6c | .deselect(l| 00034420 61 62 65 6c 57 25 2c a4 73 65 6c 65 63 74 65 64 |abelW%,.selected| 00034430 5f 65 73 67 28 6c 61 62 65 6c 57 25 2c 31 29 29 |_esg(labelW%,1))| 00034440 0d 1d 7b 15 20 20 20 20 20 20 20 20 c8 8e 20 70 |..{. .. p| 00034450 61 72 24 20 ca 0d 1d 7c 26 20 20 20 20 20 20 20 |ar$ ...|& | 00034460 20 20 20 c9 20 22 31 22 3a f2 73 65 6c 65 63 74 | . "1":.select| 00034470 28 6c 61 62 65 6c 57 25 2c 30 29 0d 1d 7d 26 20 |(labelW%,0)..}& | 00034480 20 20 20 20 20 20 20 20 20 c9 20 22 32 22 3a f2 | . "2":.| 00034490 73 65 6c 65 63 74 28 6c 61 62 65 6c 57 25 2c 31 |select(labelW%,1| 000344a0 29 0d 1d 7e 22 20 20 20 20 20 20 20 20 20 20 7f |)..~" .| 000344b0 3a f2 73 65 6c 65 63 74 28 6c 61 62 65 6c 57 25 |:.select(labelW%| 000344c0 2c 32 29 0d 1d 7f 0d 20 20 20 20 20 20 20 20 cb |,2).... .| 000344d0 0d 1d 80 26 20 20 20 20 20 20 20 20 c9 20 32 3a |...& . 2:| 000344e0 24 a4 74 65 78 74 28 6c 61 62 65 6c 57 25 2c 34 |$.text(labelW%,4| 000344f0 29 3d 70 61 72 24 0d 1d 81 26 20 20 20 20 20 20 |)=par$...& | 00034500 20 20 c9 20 33 3a 24 a4 74 65 78 74 28 6c 61 62 | . 3:$.text(lab| 00034510 65 6c 57 25 2c 36 29 3d 70 61 72 24 0d 1d 82 27 |elW%,6)=par$...'| 00034520 20 20 20 20 20 20 20 20 c9 20 34 3a 24 a4 74 65 | . 4:$.te| 00034530 78 74 28 6c 61 62 65 6c 57 25 2c 31 30 29 3d 70 |xt(labelW%,10)=p| 00034540 61 72 24 0d 1d 83 27 20 20 20 20 20 20 20 20 c9 |ar$...' .| 00034550 20 35 3a 24 a4 74 65 78 74 28 6c 61 62 65 6c 57 | 5:$.text(labelW| 00034560 25 2c 31 32 29 3d 70 61 72 24 0d 1d 84 2c 20 20 |%,12)=par$..., | 00034570 20 20 20 20 20 20 f2 73 65 74 5f 69 63 6f 6e 28 | .set_icon(| 00034580 6c 61 62 65 6c 57 25 2c 31 31 2c 28 70 61 72 24 |labelW%,11,(par$| 00034590 3c 3e 22 22 29 29 0d 1d 85 3a 20 20 20 20 20 20 |<>""))...: | 000345a0 20 20 f2 69 63 6f 6e 5f 62 69 74 28 32 32 2c 6c | .icon_bit(22,l| 000345b0 61 62 65 6c 57 25 2c 31 32 2c a4 73 65 6c 65 63 |abelW%,12,.selec| 000345c0 74 65 64 28 6c 61 62 65 6c 57 25 2c 31 31 29 29 |ted(labelW%,11))| 000345d0 0d 1d 86 35 20 20 20 20 20 20 20 20 c9 20 36 3a |...5 . 6:| 000345e0 f2 73 65 74 5f 69 63 6f 6e 28 6c 61 62 65 6c 57 |.set_icon(labelW| 000345f0 25 2c 31 33 2c 28 a4 75 28 70 61 72 24 29 3d 22 |%,13,(.u(par$)="| 00034600 4f 4e 22 29 29 0d 1d 87 35 20 20 20 20 20 20 20 |ON"))...5 | 00034610 20 c9 20 37 3a f2 73 65 74 5f 69 63 6f 6e 28 6c | . 7:.set_icon(l| 00034620 61 62 65 6c 57 25 2c 31 36 2c 28 a4 75 28 70 61 |abelW%,16,(.u(pa| 00034630 72 24 29 3d 22 4f 4e 22 29 29 0d 1d 88 0b 20 20 |r$)="ON")).... | 00034640 20 20 20 20 cb 0d 1d 89 0c 20 20 20 20 ed 20 49 | ..... . I| 00034650 25 0d 1d 8a 18 20 20 20 20 c9 20 22 21 49 4d 50 |%.... . "!IMP| 00034660 52 45 53 53 49 4f 4e 22 3a 0d 1d 8b 18 20 20 20 |RESSION":.... | 00034670 20 50 25 3d a7 70 61 72 61 6d 73 24 2c 22 20 22 | P%=.params$," "| 00034680 29 0d 1d 8c 10 20 20 20 20 e7 20 50 25 3e 30 20 |).... . P%>0 | 00034690 8c 0d 1d 8d 39 20 20 20 20 20 20 49 6d 70 43 6f |....9 ImpCo| 000346a0 6d 24 3d c0 70 61 72 61 6d 73 24 2c 50 25 2d 31 |m$=.params$,P%-1| 000346b0 29 3a 6d 6f 64 69 66 69 65 72 24 3d c1 70 61 72 |):modifier$=.par| 000346c0 61 6d 73 24 2c 50 25 2b 31 29 0d 1d 8e 1c 20 20 |ams$,P%+1).... | 000346d0 20 20 20 20 c8 8e 20 a4 75 28 6d 6f 64 69 66 69 | .. .u(modifi| 000346e0 65 72 24 29 20 ca 0d 1d 8f 27 20 20 20 20 20 20 |er$) ....' | 000346f0 20 20 c9 20 22 4e 4f 54 20 46 49 52 53 54 22 3a | . "NOT FIRST":| 00034700 66 69 72 73 74 71 75 65 72 79 25 3d b9 0d 1d 90 |firstquery%=....| 00034710 0b 20 20 20 20 20 20 cb 0d 1d 91 1b 20 20 20 20 |. ..... | 00034720 20 20 cc 20 49 6d 70 43 6f 6d 24 3d 70 61 72 61 | . ImpCom$=para| 00034730 6d 73 24 0d 1d 92 09 20 20 20 20 cd 0d 1d 93 09 |ms$.... .....| 00034740 20 20 20 20 7f 0d 1d 94 19 20 20 20 20 f2 73 6f | ..... .so| 00034750 66 74 65 72 72 6f 72 28 22 22 2c 34 36 29 0d 1d |fterror("",46)..| 00034760 95 13 20 20 20 20 66 69 6e 69 73 68 65 64 25 3d |.. finished%=| 00034770 b9 0d 1d 96 07 20 20 cb 0d 1d 97 05 ce 0d 1d 98 |..... .........| 00034780 18 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 53 |... "Hourglass_S| 00034790 6d 61 73 68 22 0d 1d 99 12 f2 63 6c 6f 73 65 5f |mash".....close_| 000347a0 66 69 6c 65 28 46 29 0d 1d 9a 07 f7 20 85 0d 1d |file(F)..... ...| 000347b0 9b 05 e1 0d 1d 9c 05 3a 0d 1d 9d 13 dd 20 f2 61 |.......:..... .a| 000347c0 62 6f 72 74 5f 73 63 72 69 70 74 0d 1d 9e 12 f2 |bort_script.....| 000347d0 63 6c 6f 73 65 5f 66 69 6c 65 28 46 29 0d 1d 9f |close_file(F)...| 000347e0 0c e7 20 9f 3d 31 37 20 8c 0d 1d a0 17 20 20 f2 |.. .=17 ..... .| 000347f0 73 6f 66 74 65 72 72 6f 72 28 22 22 2c 35 37 29 |softerror("",57)| 00034800 0d 1d a1 1d 20 20 cc 20 f2 77 69 6d 70 5f 65 72 |.... . .wimp_er| 00034810 72 6f 72 28 b9 2c 9f 2c 9e 2c f6 24 29 0d 1d a2 |ror(.,.,.,.$)...| 00034820 05 cd 0d 1d a3 05 e1 0d 1d a4 05 3a 0d 1d a5 48 |...........:...H| 00034830 f4 20 22 49 6d 70 75 6c 73 65 22 20 68 61 6e 64 |. "Impulse" hand| 00034840 6c 69 6e 67 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |ling -----------| 00034850 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00034870 2d 2d 2d 2d 0d 1d a6 05 3a 0d 1d a7 2e dd 20 f2 |----....:..... .| 00034880 49 6d 70 75 6c 73 65 5f 63 6f 6d 6d 61 6e 64 28 |Impulse_command(| 00034890 74 6f 6b 65 6e 25 2c 70 61 72 61 6d 73 25 2c 6f |token%,params%,o| 000348a0 62 6a 65 63 74 25 29 0d 1d a8 09 ea 20 53 46 24 |bject%)..... SF$| 000348b0 0d 1d a9 34 70 61 72 61 6d 24 3d a4 67 65 74 73 |...4param$=.gets| 000348c0 74 72 28 70 61 72 61 6d 73 25 29 3a 6f 62 6a 65 |tr(params%):obje| 000348d0 63 74 24 3d a4 67 65 74 73 74 72 28 6f 62 6a 65 |ct$=.getstr(obje| 000348e0 63 74 25 29 0d 1d aa 2c e7 20 6f 62 6a 65 63 74 |ct%)...,. object| 000348f0 24 3d 22 22 20 8c 20 6f 62 6a 65 63 74 24 3d a4 |$="" . object$=.| 00034900 6c 65 61 66 28 24 64 61 74 61 62 61 73 65 25 29 |leaf($database%)| 00034910 0d 1d ab 0f c8 8e 20 74 6f 6b 65 6e 25 20 ca 0d |...... token% ..| 00034920 1d ac 40 20 20 c9 20 31 3a f4 20 23 23 23 20 47 |..@ . 1:. ### G| 00034930 65 74 50 61 74 68 6e 61 6d 65 2e 20 52 65 74 75 |etPathname. Retu| 00034940 72 6e 73 20 66 75 6c 6c 20 70 61 74 68 6e 61 6d |rns full pathnam| 00034950 65 20 6f 66 20 6f 62 6a 65 63 74 20 23 23 23 0d |e of object ###.| 00034960 1d ad 1c 20 20 c8 8e 20 a4 6c 65 61 66 28 24 64 |... .. .leaf($d| 00034970 61 74 61 62 61 73 65 25 29 20 ca 0d 1d ae 12 20 |atabase%) ..... | 00034980 20 20 20 c9 20 6f 62 6a 65 63 74 24 3a 0d 1d af | . object$:...| 00034990 3c 20 20 20 20 c8 99 20 22 49 6d 70 75 6c 73 65 |< .. "Impulse| 000349a0 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 26 32 |_SendMessage",&2| 000349b0 30 32 2c 24 64 61 74 61 62 61 73 65 25 2c 2c 2c |02,$database%,,,| 000349c0 2c 2c 6d 79 74 61 73 6b 25 0d 1d b0 14 20 20 20 |,,mytask%.... | 000349d0 20 c9 20 22 4e 6f 20 64 61 74 61 22 3a 0d 1d b1 | . "No data":...| 000349e0 44 20 20 20 20 c8 99 20 22 49 6d 70 75 6c 73 65 |D .. "Impulse| 000349f0 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 26 32 |_SendMessage",&2| 00034a00 30 32 2c 22 4e 6f 20 64 61 74 61 62 61 73 65 20 |02,"No database | 00034a10 6f 70 65 6e 22 2c 2c 2c 2c 2c 6d 79 74 61 73 6b |open",,,,,mytask| 00034a20 25 0d 1d b2 0a 20 20 20 20 7f 3a 0d 1d b3 54 20 |%.... .:...T | 00034a30 20 20 20 c8 99 20 22 49 6d 70 75 6c 73 65 5f 53 | .. "Impulse_S| 00034a40 65 6e 64 4d 65 73 73 61 67 65 22 2c 26 32 30 32 |endMessage",&202| 00034a50 2c 22 43 75 72 72 65 6e 74 20 64 61 74 61 62 61 |,"Current databa| 00034a60 73 65 20 69 73 20 6e 6f 74 20 22 2b 6f 62 6a 65 |se is not "+obje| 00034a70 63 74 24 2c 2c 2c 2c 2c 6d 79 74 61 73 6b 25 0d |ct$,,,,,mytask%.| 00034a80 1d b4 07 20 20 cb 0d 1d b5 3a 20 20 c9 20 32 3a |... ....: . 2:| 00034a90 f4 20 23 23 23 20 53 65 6c 65 63 74 69 6f 6e 2e |. ### Selection.| 00034aa0 20 52 65 74 75 72 6e 73 20 6d 61 78 69 6d 75 6d | Returns maximum| 00034ab0 20 64 61 74 61 20 6c 65 6e 67 74 68 20 23 23 23 | data length ###| 00034ac0 0d 1d b6 1b 20 20 43 6c 69 65 6e 74 53 65 70 24 |.... ClientSep$| 00034ad0 3d c2 70 61 72 61 6d 24 2c 31 29 0d 1d b7 3f 20 |=.param$,1)...? | 00034ae0 20 43 6c 69 65 6e 74 46 6f 72 6d 24 3d a4 66 69 | ClientForm$=.fi| 00034af0 6e 64 5f 66 69 65 6c 64 73 28 70 61 72 61 6d 24 |nd_fields(param$| 00034b00 2c 43 6c 69 65 6e 74 53 65 70 24 2c 43 6c 69 65 |,ClientSep$,Clie| 00034b10 6e 74 4c 65 6e 67 74 68 25 29 0d 1d b8 3f 20 20 |ntLength%)...? | 00034b20 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c |.extend_named_sl| 00034b30 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 74 72 61 6e |iding_block(tran| 00034b40 73 61 6e 63 68 6f 72 25 2c 43 6c 69 65 6e 74 4c |sanchor%,ClientL| 00034b50 65 6e 67 74 68 25 2b 31 29 0d 1d b9 40 20 20 c8 |ength%+1)...@ .| 00034b60 99 20 22 49 6d 70 75 6c 73 65 5f 53 65 6e 64 4d |. "Impulse_SendM| 00034b70 65 73 73 61 67 65 22 2c 26 32 30 32 2c c3 28 43 |essage",&202,.(C| 00034b80 6c 69 65 6e 74 4c 65 6e 67 74 68 25 29 2c 2c 2c |lientLength%),,,| 00034b90 2c 2c 6d 79 74 61 73 6b 25 0d 1d ba 42 20 20 c9 |,,mytask%...B .| 00034ba0 20 33 3a f4 20 23 23 23 20 50 61 72 73 65 51 75 | 3:. ### ParseQu| 00034bb0 65 72 79 2e 20 52 65 74 75 72 6e 73 20 74 69 74 |ery. Returns tit| 00034bc0 6c 65 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 |le generated by | 00034bd0 46 4e 70 61 72 73 65 20 23 23 23 0d 1d bb 24 20 |FNparse ###...$ | 00034be0 20 43 6c 69 65 6e 74 53 65 61 72 63 68 24 3d a4 | ClientSearch$=.| 00034bf0 70 61 72 73 65 28 70 61 72 61 6d 24 2c b9 29 0d |parse(param$,.).| 00034c00 1d bc 36 20 20 c8 99 20 22 49 6d 70 75 6c 73 65 |..6 .. "Impulse| 00034c10 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 26 32 |_SendMessage",&2| 00034c20 30 32 2c 54 69 74 6c 65 24 2c 2c 2c 2c 2c 6d 79 |02,Title$,,,,,my| 00034c30 74 61 73 6b 25 0d 1d bd 70 20 20 c9 20 34 3a f4 |task%...p . 4:.| 00034c40 20 23 23 23 20 47 65 74 52 65 63 6f 72 64 2e 20 | ### GetRecord. | 00034c50 52 65 74 75 72 6e 73 20 64 61 74 61 20 73 70 65 |Returns data spe| 00034c60 63 69 66 69 65 64 20 69 6e 20 53 65 6c 65 63 74 |cified in Select| 00034c70 69 6f 6e 20 61 63 63 6f 72 64 69 6e 67 20 74 6f |ion according to| 00034c80 20 63 72 69 74 65 72 69 61 20 73 70 65 63 69 66 | criteria specif| 00034c90 69 65 64 20 69 6e 20 50 61 72 73 65 51 75 65 72 |ied in ParseQuer| 00034ca0 79 20 23 23 23 0d 1d be 3c 20 20 64 61 74 61 6c |y ###...< datal| 00034cb0 65 6e 67 74 68 25 3d a4 70 72 65 70 61 72 65 5f |ength%=.prepare_| 00034cc0 6e 65 78 74 5f 72 65 63 6f 72 64 28 70 61 72 61 |next_record(para| 00034cd0 6d 24 2c 21 74 72 61 6e 73 61 6e 63 68 6f 72 25 |m$,!transanchor%| 00034ce0 29 0d 1d bf 56 20 20 c8 99 20 22 49 6d 70 75 6c |)...V .. "Impul| 00034cf0 73 65 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c |se_SendMessage",| 00034d00 26 32 30 32 2c 22 52 65 61 64 79 20 74 6f 20 72 |&202,"Ready to r| 00034d10 65 63 65 69 76 65 3f 22 2c 2d 31 2c 2c 2c 74 72 |eceive?",-1,,,tr| 00034d20 61 6e 73 74 61 67 25 2c 6d 79 74 61 73 6b 25 2c |anstag%,mytask%,| 00034d30 4c 65 6e 67 74 68 25 0d 1d c0 1d 20 20 c9 20 35 |Length%.... . 5| 00034d40 3a f4 20 23 23 23 20 50 75 74 52 65 63 6f 72 64 |:. ### PutRecord| 00034d50 20 23 23 23 0d 1d c1 42 20 20 c8 99 20 22 49 6d | ###...B .. "Im| 00034d60 70 75 6c 73 65 5f 53 65 6e 64 4d 65 73 73 61 67 |pulse_SendMessag| 00034d70 65 22 2c 26 32 30 31 2c 22 47 65 74 52 65 63 6f |e",&201,"GetReco| 00034d80 72 64 22 2c 2c 2c 2c 67 65 74 72 65 63 25 2c 6d |rd",,,,getrec%,m| 00034d90 79 74 61 73 6b 25 0d 1d c2 1e 20 20 c9 20 36 3a |ytask%.... . 6:| 00034da0 f4 20 23 23 23 20 45 78 70 61 6e 64 43 6f 64 65 |. ### ExpandCode| 00034db0 20 23 23 23 0d 1d c3 15 20 20 50 25 3d a7 70 61 | ###.... P%=.pa| 00034dc0 72 61 6d 24 2c 22 20 22 29 0d 1d c4 2e 20 20 63 |ram$," ").... c| 00034dd0 6f 64 65 24 3d c0 70 61 72 61 6d 24 2c 50 25 2d |ode$=.param$,P%-| 00034de0 31 29 3a 74 61 62 6c 65 24 3d c1 70 61 72 61 6d |1):table$=.param| 00034df0 24 2c 50 25 2b 31 29 0d 1d c5 4c 20 20 c8 99 20 |$,P%+1)...L .. | 00034e00 22 49 6d 70 75 6c 73 65 5f 53 65 6e 64 4d 65 73 |"Impulse_SendMes| 00034e10 73 61 67 65 22 2c 26 32 30 32 2c a4 65 78 70 61 |sage",&202,.expa| 00034e20 6e 64 28 63 6f 64 65 24 2c 74 61 62 6c 65 24 2c |nd(code$,table$,| 00034e30 4c 25 2c 53 46 24 29 2c 2c 2c 2c 2c 6d 79 74 61 |L%,SF$),,,,,myta| 00034e40 73 6b 25 0d 1d c6 2b 20 20 c9 20 37 2c 38 3a f4 |sk%...+ . 7,8:.| 00034e50 20 23 23 23 20 47 65 74 46 69 65 6c 64 2c 20 47 | ### GetField, G| 00034e60 65 74 45 78 70 61 6e 64 65 64 20 23 23 23 0d 1d |etExpanded ###..| 00034e70 c7 15 20 20 e7 20 70 61 72 61 6d 73 25 3c 3e 2d |.. . params%<>-| 00034e80 31 20 8c 0d 1d c8 44 20 20 20 20 64 61 74 61 6c |1 ....D datal| 00034e90 65 6e 67 74 68 25 3d a4 70 72 65 70 61 72 65 5f |ength%=.prepare_| 00034ea0 6e 65 78 74 5f 66 69 65 6c 64 28 74 6f 6b 65 6e |next_field(token| 00034eb0 25 2c 70 61 72 61 6d 24 2c 21 74 72 61 6e 73 61 |%,param$,!transa| 00034ec0 6e 63 68 6f 72 25 29 0d 1d c9 5c 20 20 20 20 c8 |nchor%)...\ .| 00034ed0 99 20 22 49 6d 70 75 6c 73 65 5f 53 65 6e 64 4d |. "Impulse_SendM| 00034ee0 65 73 73 61 67 65 22 2c 26 32 30 32 2c 22 52 65 |essage",&202,"Re| 00034ef0 61 64 79 20 74 6f 20 72 65 63 65 69 76 65 3f 22 |ady to receive?"| 00034f00 2c 2d 31 2c 2c 2c 74 72 61 6e 73 74 61 67 25 2c |,-1,,,transtag%,| 00034f10 6d 79 74 61 73 6b 25 2c 64 61 74 61 6c 65 6e 67 |mytask%,dataleng| 00034f20 74 68 25 0d 1d ca 32 20 20 20 20 f4 20 4d 61 78 |th%...2 . Max| 00034f30 2e 20 6c 65 6e 67 74 68 20 66 6f 72 20 61 20 50 |. length for a P| 00034f40 6f 77 65 72 62 61 73 65 20 66 69 65 6c 64 20 69 |owerbase field i| 00034f50 73 20 32 34 36 0d 1d cb 07 20 20 cd 0d 1d cc 05 |s 246.... .....| 00034f60 cb 0d 1d cd 05 e1 0d 1d ce 05 3a 0d 1d cf 26 dd |..........:...&.| 00034f70 20 f2 49 6d 70 75 6c 73 65 5f 72 65 70 6c 79 28 | .Impulse_reply(| 00034f80 72 65 70 6c 79 74 61 67 25 2c 72 65 70 6c 79 25 |replytag%,reply%| 00034f90 29 0d 1d d0 07 ea 20 85 0d 1d d1 1c ee 20 85 20 |)..... ...... . | 00034fa0 ea 3a f7 20 85 3a f2 61 62 6f 72 74 5f 6d 65 72 |.:. .:.abort_mer| 00034fb0 67 65 3a e1 0d 1d d2 1a 72 65 70 6c 79 24 3d a4 |ge:.....reply$=.| 00034fc0 67 65 74 73 74 72 28 72 65 70 6c 79 25 29 0d 1d |getstr(reply%)..| 00034fd0 d3 12 c8 8e 20 72 65 70 6c 79 74 61 67 25 20 ca |.... replytag% .| 00034fe0 0d 1d d4 10 20 20 c9 20 67 65 74 72 65 63 25 3a |.... . getrec%:| 00034ff0 0d 1d d5 2b 20 20 f4 20 23 23 23 20 52 65 70 6c |...+ . ### Repl| 00035000 79 20 74 6f 20 47 65 74 52 65 63 6f 72 64 20 63 |y to GetRecord c| 00035010 6f 6d 6d 61 6e 64 2e 20 23 23 23 0d 1d d6 3e 20 |ommand. ###...> | 00035020 20 c8 99 20 22 49 6d 70 75 6c 73 65 5f 46 65 74 | .. "Impulse_Fet| 00035030 63 68 44 61 74 61 22 2c 21 74 72 61 6e 73 61 6e |chData",!transan| 00035040 63 68 6f 72 25 2c 4c 65 6e 67 74 68 25 2c 2c 2c |chor%,Length%,,,| 00035050 2c 2c 6d 79 74 61 73 6b 25 0d 1d d7 12 20 20 c9 |,,mytask%.... .| 00035060 20 6d 65 72 67 65 74 61 67 25 3a 0d 1d d8 4c 20 | mergetag%:...L | 00035070 20 f4 20 23 23 23 20 4d 65 72 67 69 6e 67 20 61 | . ### Merging a| 00035080 70 70 6c 69 63 61 74 69 6f 6e 20 72 65 70 6c 69 |pplication repli| 00035090 65 73 20 77 68 65 6e 20 61 6c 6c 20 64 61 74 61 |es when all data| 000350a0 20 69 6e 20 64 6f 63 75 6d 65 6e 74 20 6d 65 72 | in document mer| 000350b0 67 65 64 20 23 23 23 0d 1d d9 77 20 20 e7 20 a4 |ged ###...w . .| 000350c0 73 65 6c 65 63 74 65 64 28 6d 65 72 67 65 57 25 |selected(mergeW%| 000350d0 2c 36 29 20 8c 20 c8 99 20 22 49 6d 70 75 6c 73 |,6) . .. "Impuls| 000350e0 65 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 26 |e_SendMessage",&| 000350f0 32 30 31 2c 22 3a 22 2b 6d 65 72 67 65 77 69 74 |201,":"+mergewit| 00035100 68 24 2b 22 2e 22 2b 64 6f 63 75 6d 65 6e 74 24 |h$+"."+document$| 00035110 2b 22 20 50 72 69 6e 74 22 2c 2c 2c 2c 70 72 69 |+" Print",,,,pri| 00035120 6e 74 74 61 67 25 2c 6d 79 74 61 73 6b 25 0d 1d |nttag%,mytask%..| 00035130 da 12 20 20 c9 20 70 72 69 6e 74 74 61 67 25 3a |.. . printtag%:| 00035140 0d 1d db 44 20 20 f4 20 23 23 23 20 4d 65 72 67 |...D . ### Merg| 00035150 69 6e 67 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 |ing application | 00035160 68 61 73 20 70 72 69 6e 74 65 64 20 74 68 65 20 |has printed the | 00035170 63 75 72 72 65 6e 74 20 64 6f 63 75 6d 65 6e 74 |current document| 00035180 20 23 23 23 0d 1d dc 18 20 20 c8 99 20 22 4f 53 | ###.... .. "OS| 00035190 5f 42 79 74 65 22 2c 32 32 39 2c 30 0d 1d dd 32 |_Byte",229,0...2| 000351a0 20 20 6d 65 72 67 65 6e 75 6d 25 2b 3d 31 3a 24 | mergenum%+=1:$| 000351b0 a4 74 65 78 74 28 6d 65 72 67 65 57 25 2c 31 34 |.text(mergeW%,14| 000351c0 29 3d c3 28 6d 65 72 67 65 6e 75 6d 25 29 0d 1d |)=.(mergenum%)..| 000351d0 de 1e 20 20 f2 72 65 64 72 61 77 5f 69 63 6f 6e |.. .redraw_icon| 000351e0 28 6d 65 72 67 65 57 25 2c 31 34 29 0d 1d df 30 |(mergeW%,14)...0| 000351f0 20 20 e7 20 a4 73 65 6c 65 63 74 65 64 28 6d 65 | . .selected(me| 00035200 72 67 65 57 25 2c 36 29 20 80 20 43 6c 69 65 6e |rgeW%,6) . Clien| 00035210 74 50 74 72 25 3c 3e 74 6f 70 20 8c 0d 1d e0 2c |tPtr%<>top ....,| 00035220 20 20 20 20 43 6c 69 65 6e 74 50 74 72 25 3d a4 | ClientPtr%=.| 00035230 6d 65 72 67 65 5f 6e 65 78 74 28 43 6c 69 65 6e |merge_next(Clien| 00035240 74 50 74 72 25 2c 31 29 0d 1d e1 1e 20 20 20 20 |tPtr%,1).... | 00035250 cc 20 f2 64 65 73 65 6c 65 63 74 28 6d 65 72 67 |. .deselect(merg| 00035260 65 57 25 2c 36 29 0d 1d e2 07 20 20 cd 0d 1d e3 |eW%,6).... ....| 00035270 0b 20 20 f2 70 6f 6c 6c 0d 1d e4 05 cb 0d 1d e5 |. .poll........| 00035280 05 e1 0d 1d e6 05 3a 0d 1d e7 12 dd 20 f2 61 62 |......:..... .ab| 00035290 6f 72 74 5f 6d 65 72 67 65 0d 1d e8 1d f2 63 6c |ort_merge.....cl| 000352a0 6f 73 65 5f 66 69 6c 65 28 64 62 61 73 65 68 61 |ose_file(dbaseha| 000352b0 6e 64 6c 65 25 29 0d 1d e9 12 43 6c 69 65 6e 74 |ndle%)....Client| 000352c0 50 74 72 25 3d 74 6f 70 0d 1d ea 18 f2 64 65 73 |Ptr%=top.....des| 000352d0 65 6c 65 63 74 28 6d 65 72 67 65 57 25 2c 36 29 |elect(mergeW%,6)| 000352e0 0d 1d eb 1b f2 70 65 72 66 6f 72 6d 5f 63 6c 6f |.....perform_clo| 000352f0 73 65 28 6d 65 72 67 65 57 25 29 0d 1d ec 0c e7 |se(mergeW%).....| 00035300 20 9f 3d 31 37 20 8c 0d 1d ed 17 20 20 f2 73 6f | .=17 ..... .so| 00035310 66 74 65 72 72 6f 72 28 22 22 2c 32 37 29 0d 1d |fterror("",27)..| 00035320 ee 1d 20 20 cc 20 f2 77 69 6d 70 5f 65 72 72 6f |.. . .wimp_erro| 00035330 72 28 b9 2c 9f 2c 9e 2c f6 24 29 0d 1d ef 05 cd |r(.,.,.,.$).....| 00035340 0d 1d f0 05 e1 0d 1d f1 05 3a 0d 1d f2 22 dd 20 |.........:...". | 00035350 f2 49 6d 70 75 6c 73 65 5f 73 65 6e 64 28 74 61 |.Impulse_send(ta| 00035360 67 25 2c 6d 61 78 73 69 7a 65 25 29 0d 1d f3 43 |g%,maxsize%)...C| 00035370 c8 99 20 22 49 6d 70 75 6c 73 65 5f 54 72 61 6e |.. "Impulse_Tran| 00035380 73 6d 69 74 44 61 74 61 22 2c 21 74 72 61 6e 73 |smitData",!trans| 00035390 61 6e 63 68 6f 72 25 2c 64 61 74 61 6c 65 6e 67 |anchor%,dataleng| 000353a0 74 68 25 2c 2c 2c 2c 2c 6d 79 74 61 73 6b 25 0d |th%,,,,,mytask%.| 000353b0 1d f4 11 64 61 74 61 6c 65 6e 67 74 68 25 3d 30 |...datalength%=0| 000353c0 0d 1d f5 05 e1 0d 1d f6 05 3a 0d 1d f7 35 dd 20 |.........:...5. | 000353d0 f2 49 6d 70 75 6c 73 65 5f 72 65 63 65 69 76 65 |.Impulse_receive| 000353e0 28 72 65 70 6c 79 74 61 67 25 2c 65 78 70 65 63 |(replytag%,expec| 000353f0 74 65 64 25 2c 72 65 63 65 69 76 65 64 25 29 0d |ted%,received%).| 00035400 1d f8 0e ea 20 49 25 2c 46 25 2c 50 25 0d 1d f9 |.... I%,F%,P%...| 00035410 1c 74 72 61 6e 73 62 75 66 66 25 3d 21 74 72 61 |.transbuff%=!tra| 00035420 6e 73 61 6e 63 68 6f 72 25 0d 1d fa 1b 74 72 61 |nsanchor%....tra| 00035430 6e 73 62 75 66 66 25 3f 72 65 63 65 69 76 65 64 |nsbuff%?received| 00035440 25 3d 31 33 0d 1d fb 15 64 61 74 61 24 3d 24 74 |%=13....data$=$t| 00035450 72 61 6e 73 62 75 66 66 25 0d 1d fc 47 f4 20 23 |ransbuff%...G. #| 00035460 23 23 20 41 63 6b 6e 6f 77 6c 65 64 67 65 20 64 |## Acknowledge d| 00035470 61 74 61 20 72 65 63 65 69 76 65 64 20 28 67 65 |ata received (ge| 00035480 74 20 72 65 61 73 6f 6e 20 63 6f 64 65 20 31 39 |t reason code 19| 00035490 20 6f 74 68 65 72 77 69 73 65 21 29 20 23 23 23 | otherwise!) ###| 000354a0 0d 1d fd 37 c8 99 20 22 49 6d 70 75 6c 73 65 5f |...7.. "Impulse_| 000354b0 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 26 32 30 |SendMessage",&20| 000354c0 32 2c 2c 2c 2c 2c 72 65 70 6c 79 74 61 67 25 2c |2,,,,,replytag%,| 000354d0 6d 79 74 61 73 6b 25 0d 1d fe 11 e7 20 64 61 74 |mytask%..... dat| 000354e0 61 24 3c 3e 22 22 20 8c 0d 1d ff 14 20 20 50 25 |a$<>"" ..... P%| 000354f0 3d a7 64 61 74 61 24 2c 22 23 22 29 0d 1e 00 1a |=.data$,"#")....| 00035500 20 20 52 45 43 25 3d bb 28 c0 64 61 74 61 24 2c | REC%=.(.data$,| 00035510 50 25 2d 31 29 29 0d 1e 01 18 20 20 64 61 74 61 |P%-1)).... data| 00035520 24 3d c1 64 61 74 61 24 2c 50 25 2b 31 29 0d 1e |$=.data$,P%+1)..| 00035530 02 1a 20 20 e7 20 52 45 43 25 3d 2d 31 20 8c 20 |.. . REC%=-1 . | 00035540 52 45 43 25 3d 52 41 25 0d 1e 03 2e 20 20 f2 72 |REC%=RA%.... .r| 00035550 65 61 64 28 66 69 65 6c 64 73 25 2c 52 45 43 25 |ead(fields%,REC%| 00035560 3c 3e 52 41 25 2c 52 45 43 25 2c 24 64 61 74 61 |<>RA%,REC%,$data| 00035570 62 61 73 65 25 29 0d 1e 04 21 20 20 e3 20 49 25 |base%)...! . I%| 00035580 3d 31 20 b8 20 a9 28 43 6c 69 65 6e 74 46 6f 72 |=1 . .(ClientFor| 00035590 6d 24 29 20 88 20 32 0d 1e 05 24 20 20 20 20 46 |m$) . 2...$ F| 000355a0 25 3d a4 66 6e 75 6d 28 c1 43 6c 69 65 6e 74 46 |%=.fnum(.ClientF| 000355b0 6f 72 6d 24 2c 49 25 2c 32 29 29 0d 1e 06 3c 20 |orm$,I%,2))...< | 000355c0 20 20 20 e7 20 64 61 74 61 24 3c 3e 22 22 20 8c | . data$<>"" .| 000355d0 20 24 52 66 25 28 46 25 29 3d a4 67 65 74 5f 73 | $Rf%(F%)=.get_s| 000355e0 74 72 69 6e 67 28 64 61 74 61 24 2c 43 6c 69 65 |tring(data$,Clie| 000355f0 6e 74 53 65 70 24 29 0d 1e 07 0a 20 20 ed 20 49 |ntSep$).... . I| 00035600 25 0d 1e 08 1a 20 20 f2 77 72 69 74 65 28 66 69 |%.... .write(fi| 00035610 65 6c 64 73 25 2c 6b 65 79 25 29 0d 1e 09 52 20 |elds%,key%)...R | 00035620 20 e7 20 72 65 63 65 69 76 65 64 25 3d 30 20 8c | . received%=0 .| 00035630 20 c8 99 20 22 49 6d 70 75 6c 73 65 5f 53 65 6e | .. "Impulse_Sen| 00035640 64 4d 65 73 73 61 67 65 22 2c 26 32 30 31 2c 22 |dMessage",&201,"| 00035650 47 65 74 52 65 63 6f 72 64 22 2c 2c 2c 2c 67 65 |GetRecord",,,,ge| 00035660 74 72 65 63 25 2c 6d 79 74 61 73 6b 25 0d 1e 0a |trec%,mytask%...| 00035670 05 cd 0d 1e 0b 05 e1 0d 1e 0c 05 3a 0d 1e 0d 1c |...........:....| 00035680 dd 20 a4 67 65 74 5f 73 74 72 69 6e 67 28 f8 20 |. .get_string(. | 00035690 53 24 2c 73 65 70 24 29 0d 1e 0e 0b ea 20 50 25 |S$,sep$)..... P%| 000356a0 2c 46 24 0d 1e 0f 10 50 25 3d a7 53 24 2c 73 65 |,F$....P%=.S$,se| 000356b0 70 24 29 0d 1e 10 0c e7 20 50 25 3e 30 20 8c 0d |p$)..... P%>0 ..| 000356c0 1e 11 12 20 20 46 24 3d c0 53 24 2c 50 25 2d 31 |... F$=.S$,P%-1| 000356d0 29 0d 1e 12 12 20 20 53 24 3d c1 53 24 2c 50 25 |).... S$=.S$,P%| 000356e0 2b 31 29 0d 1e 13 05 cd 0d 1e 14 07 3d 46 24 0d |+1).........=F$.| 000356f0 1e 15 05 3a 0d 1e 16 2b dd 20 a4 70 72 65 70 61 |...:...+. .prepa| 00035700 72 65 5f 6e 65 78 74 5f 72 65 63 6f 72 64 28 6b |re_next_record(k| 00035710 65 79 24 2c 74 72 61 6e 73 62 75 66 66 25 29 0d |ey$,transbuff%).| 00035720 1e 17 12 ea 20 6f 6b 25 2c 49 25 2c 46 25 2c 50 |.... ok%,I%,F%,P| 00035730 25 0d 1e 18 16 e7 20 64 62 61 73 65 68 61 6e 64 |%..... dbasehand| 00035740 6c 65 25 3d 30 20 8c 0d 1e 19 2c 20 20 64 62 61 |le%=0 ...., dba| 00035750 73 65 68 61 6e 64 6c 65 25 3d 8e 28 24 64 61 74 |sehandle%=.($dat| 00035760 61 62 61 73 65 25 2b 22 2e 44 61 74 61 62 61 73 |abase%+".Databas| 00035770 65 22 29 0d 1e 1a 27 20 20 43 6c 69 65 6e 74 50 |e")...' ClientP| 00035780 74 72 25 3d a4 6e 65 69 67 68 62 6f 75 72 28 6b |tr%=.neighbour(k| 00035790 65 79 25 2c 74 6f 70 2c 31 29 0d 1e 1b 05 cd 0d |ey%,top,1)......| 000357a0 1e 1c 11 50 25 3d 74 72 61 6e 73 62 75 66 66 25 |...P%=transbuff%| 000357b0 0d 1e 1d 0d c8 8e 20 6b 65 79 24 20 ca 0d 1e 1e |...... key$ ....| 000357c0 0e 20 20 c9 20 22 2a 2a 2a 22 3a 0d 1e 1f 1f 20 |. . "***":.... | 000357d0 20 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 64 62 61 | .close_file(dba| 000357e0 73 65 68 61 6e 64 6c 65 25 29 0d 1e 20 1b 20 20 |sehandle%).. . | 000357f0 24 50 25 3d 6b 65 79 24 3a 50 25 2b 3d a9 28 24 |$P%=key$:P%+=.($| 00035800 50 25 29 2b 31 0d 1e 21 0b 20 20 c9 20 22 22 3a |P%)+1..!. . "":| 00035810 0d 1e 22 20 20 20 c8 95 20 6f 6b 25 3d a3 20 80 |.." .. ok%=. .| 00035820 20 43 6c 69 65 6e 74 50 74 72 25 3c 3e 74 6f 70 | ClientPtr%<>top| 00035830 0d 1e 23 28 20 20 20 20 52 45 43 25 3d a4 72 65 |..#( REC%=.re| 00035840 63 5f 6e 6f 28 6b 24 2c 6b 65 79 25 2c 43 6c 69 |c_no(k$,key%,Cli| 00035850 65 6e 74 50 74 72 25 29 0d 1e 24 27 20 20 20 20 |entPtr%)..$' | 00035860 f2 72 65 61 64 73 6d 61 72 72 61 79 28 64 62 61 |.readsmarray(dba| 00035870 73 65 68 61 6e 64 6c 65 25 2c 52 45 43 25 29 0d |sehandle%,REC%).| 00035880 1e 25 1e 20 20 20 20 e7 20 a0 28 43 6c 69 65 6e |.%. . .(Clien| 00035890 74 53 65 61 72 63 68 24 29 3d b9 20 8c 0d 1e 26 |tSearch$)=. ...&| 000358a0 24 20 20 20 20 20 20 24 50 25 3d c3 28 52 45 43 |$ $P%=.(REC| 000358b0 25 29 2b 22 23 22 3a 50 25 2b 3d a9 28 24 50 25 |%)+"#":P%+=.($P%| 000358c0 29 0d 1e 27 25 20 20 20 20 20 20 e3 20 49 25 3d |)..'% . I%=| 000358d0 31 20 b8 20 a9 28 43 6c 69 65 6e 74 46 6f 72 6d |1 . .(ClientForm| 000358e0 24 29 20 88 20 32 0d 1e 28 28 20 20 20 20 20 20 |$) . 2..(( | 000358f0 20 20 46 25 3d a4 66 6e 75 6d 28 c1 43 6c 69 65 | F%=.fnum(.Clie| 00035900 6e 74 46 6f 72 6d 24 2c 49 25 2c 32 29 29 0d 1e |ntForm$,I%,2))..| 00035910 29 2c 20 20 20 20 20 20 20 20 24 50 25 3d 46 24 |), $P%=F$| 00035920 28 46 25 29 2b 43 6c 69 65 6e 74 53 65 70 24 3a |(F%)+ClientSep$:| 00035930 50 25 2b 3d a9 28 24 50 25 29 0d 1e 2a 0e 20 20 |P%+=.($P%)..*. | 00035940 20 20 20 20 ed 20 49 25 0d 1e 2b 1f 20 20 20 20 | . I%..+. | 00035950 20 20 24 50 25 2b 3d 43 6c 69 65 6e 74 53 65 70 | $P%+=ClientSep| 00035960 24 3a 50 25 2b 3d 31 0d 1e 2c 0f 20 20 20 20 20 |$:P%+=1..,. | 00035970 20 6f 6b 25 3d b9 0d 1e 2d 09 20 20 20 20 cd 0d | ok%=...-. ..| 00035980 1e 2e 30 20 20 20 20 43 6c 69 65 6e 74 50 74 72 |..0 ClientPtr| 00035990 25 3d a4 6e 65 69 67 68 62 6f 75 72 28 6b 65 79 |%=.neighbour(key| 000359a0 25 2c 43 6c 69 65 6e 74 50 74 72 25 2c 31 29 0d |%,ClientPtr%,1).| 000359b0 1e 2f 07 20 20 ce 0d 1e 30 31 20 20 e7 20 50 25 |./. ...01 . P%| 000359c0 3d 74 72 61 6e 73 62 75 66 66 25 20 8c 20 f2 63 |=transbuff% . .c| 000359d0 6c 6f 73 65 5f 66 69 6c 65 28 64 62 61 73 65 68 |lose_file(dbaseh| 000359e0 61 6e 64 6c 65 25 29 0d 1e 31 08 20 20 7f 3a 0d |andle%)..1. .:.| 000359f0 1e 32 22 20 20 76 61 6c 24 3d a4 74 79 70 65 28 |.2" val$=.type(| 00035a00 6b 65 79 25 29 3a 6b 6c 25 3d a9 28 6b 65 79 24 |key%):kl%=.(key$| 00035a10 29 0d 1e 33 25 20 20 43 6c 69 65 6e 74 50 74 72 |)..3% ClientPtr| 00035a20 25 3d a4 73 65 61 72 63 68 28 6b 65 79 24 2c 6b |%=.search(key$,k| 00035a30 65 79 25 2c 31 29 0d 1e 34 17 20 20 e7 20 43 6c |ey%,1)..4. . Cl| 00035a40 69 65 6e 74 50 74 72 25 3e 3d 30 20 8c 0d 1e 35 |ientPtr%>=0 ...5| 00035a50 28 20 20 20 20 52 45 43 25 3d a4 72 65 63 5f 6e |( REC%=.rec_n| 00035a60 6f 28 6b 24 2c 6b 65 79 25 2c 43 6c 69 65 6e 74 |o(k$,key%,Client| 00035a70 50 74 72 25 29 0d 1e 36 27 20 20 20 20 f2 72 65 |Ptr%)..6' .re| 00035a80 61 64 73 6d 61 72 72 61 79 28 64 62 61 73 65 68 |adsmarray(dbaseh| 00035a90 61 6e 64 6c 65 25 2c 52 45 43 25 29 0d 1e 37 22 |andle%,REC%)..7"| 00035aa0 20 20 20 20 24 50 25 3d c3 28 52 45 43 25 29 2b | $P%=.(REC%)+| 00035ab0 22 23 22 3a 50 25 2b 3d a9 28 24 50 25 29 0d 1e |"#":P%+=.($P%)..| 00035ac0 38 23 20 20 20 20 e3 20 49 25 3d 31 20 b8 20 a9 |8# . I%=1 . .| 00035ad0 28 43 6c 69 65 6e 74 46 6f 72 6d 24 29 20 88 20 |(ClientForm$) . | 00035ae0 32 0d 1e 39 26 20 20 20 20 20 20 46 25 3d a4 66 |2..9& F%=.f| 00035af0 6e 75 6d 28 c1 43 6c 69 65 6e 74 46 6f 72 6d 24 |num(.ClientForm$| 00035b00 2c 49 25 2c 32 29 29 0d 1e 3a 2a 20 20 20 20 20 |,I%,2))..:* | 00035b10 20 24 50 25 3d 46 24 28 46 25 29 2b 43 6c 69 65 | $P%=F$(F%)+Clie| 00035b20 6e 74 53 65 70 24 3a 50 25 2b 3d a9 28 24 50 25 |ntSep$:P%+=.($P%| 00035b30 29 0d 1e 3b 0c 20 20 20 20 ed 20 49 25 0d 1e 3c |)..;. . I%..<| 00035b40 1d 20 20 20 20 24 50 25 2b 3d 43 6c 69 65 6e 74 |. $P%+=Client| 00035b50 53 65 70 24 3a 50 25 2b 3d 31 0d 1e 3d 07 20 20 |Sep$:P%+=1..=. | 00035b60 cd 0d 1e 3e 05 cb 0d 1e 3f 12 3d 50 25 2d 74 72 |...>....?.=P%-tr| 00035b70 61 6e 73 62 75 66 66 25 0d 1e 40 05 3a 0d 1e 41 |ansbuff%..@.:..A| 00035b80 30 dd 20 a4 70 72 65 70 61 72 65 5f 6e 65 78 74 |0. .prepare_next| 00035b90 5f 66 69 65 6c 64 28 6d 65 74 68 6f 64 25 2c 53 |_field(method%,S| 00035ba0 24 2c 74 72 61 6e 73 62 75 66 66 25 29 0d 1e 42 |$,transbuff%)..B| 00035bb0 29 ea 20 4c 25 2c 46 25 2c 50 25 2c 6c 65 6e 25 |). L%,F%,P%,len%| 00035bc0 2c 54 24 2c 46 24 2c 56 25 2c 52 25 2c 62 24 2c |,T$,F$,V%,R%,b$,| 00035bd0 6b 24 2c 53 46 24 0d 1e 43 0f c8 8e 20 74 6f 6b |k$,SF$..C... tok| 00035be0 65 6e 25 20 ca 0d 1e 44 0a 20 20 c9 20 37 3a 0d |en% ...D. . 7:.| 00035bf0 1e 45 26 20 20 46 25 3d a4 66 69 65 6c 64 28 53 |.E& F%=.field(S| 00035c00 24 2c a3 29 3a 56 25 3d 63 68 61 72 74 79 70 65 |$,.):V%=chartype| 00035c10 25 28 46 25 29 0d 1e 46 0d 20 20 c8 8e 20 56 25 |%(F%)..F. .. V%| 00035c20 20 ca 0d 1e 47 43 20 20 20 20 c9 20 30 2c 31 2c | ...GC . 0,1,| 00035c30 32 2c 33 2c 34 2c 35 2c 36 2c 37 2c 38 2c 34 36 |2,3,4,5,6,7,8,46| 00035c40 2c 34 37 2c 34 38 2c 34 39 2c 35 30 2c 35 31 2c |,47,48,49,50,51,| 00035c50 35 32 2c 35 33 2c 35 34 2c 35 35 2c 35 36 2c 35 |52,53,54,55,56,5| 00035c60 37 2c 35 38 3a 0d 1e 48 14 20 20 20 20 4c 25 3d |7,58:..H. L%=| 00035c70 a9 28 46 24 28 46 25 29 29 0d 1e 49 44 20 20 20 |.(F$(F%))..ID | 00035c80 20 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 | .extend_named_s| 00035c90 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 74 72 61 |liding_block(tra| 00035ca0 6e 73 61 6e 63 68 6f 72 25 2c 28 4c 25 2b 34 29 |nsanchor%,(L%+4)| 00035cb0 20 80 20 26 46 46 46 46 46 46 46 43 29 0d 1e 4a | . &FFFFFFFC)..J| 00035cc0 20 20 20 20 20 74 72 61 6e 73 62 75 66 66 25 3d | transbuff%=| 00035cd0 21 74 72 61 6e 73 61 6e 63 68 6f 72 25 0d 1e 4b |!transanchor%..K| 00035ce0 2a 20 20 20 20 24 74 72 61 6e 73 62 75 66 66 25 |* $transbuff%| 00035cf0 3d 46 24 28 46 25 29 3a 74 72 61 6e 73 62 75 66 |=F$(F%):transbuf| 00035d00 66 25 3f 4c 25 3d 30 0d 1e 4c 10 20 20 20 20 c9 |f%?L%=0..L. .| 00035d10 20 33 36 2c 33 39 3a 0d 1e 4d 26 20 20 20 20 52 | 36,39:..M& R| 00035d20 25 3d a4 72 65 63 5f 6e 6f 28 6b 24 2c 6b 65 79 |%=.rec_no(k$,key| 00035d30 25 2c 43 6c 69 65 6e 74 50 74 72 25 29 0d 1e 4e |%,ClientPtr%)..N| 00035d40 2f 20 20 20 20 4c 25 3d a4 62 6c 6f 62 5f 70 61 |/ L%=.blob_pa| 00035d50 74 68 28 a3 2c 24 64 61 74 61 62 61 73 65 25 2c |th(.,$database%,| 00035d60 52 25 2c 46 25 2c 56 25 2c 62 24 29 0d 1e 4f 10 |R%,F%,V%,b$)..O.| 00035d70 20 20 20 20 e7 20 4c 25 3e 30 20 8c 0d 1e 50 46 | . L%>0 ...PF| 00035d80 20 20 20 20 20 20 f2 65 78 74 65 6e 64 5f 6e 61 | .extend_na| 00035d90 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |med_sliding_bloc| 00035da0 6b 28 74 72 61 6e 73 61 6e 63 68 6f 72 25 2c 28 |k(transanchor%,(| 00035db0 4c 25 2b 34 29 20 80 20 26 46 46 46 46 46 46 46 |L%+4) . &FFFFFFF| 00035dc0 43 29 0d 1e 51 22 20 20 20 20 20 20 74 72 61 6e |C)..Q" tran| 00035dd0 73 62 75 66 66 25 3d 21 74 72 61 6e 73 61 6e 63 |sbuff%=!transanc| 00035de0 68 6f 72 25 0d 1e 52 28 20 20 20 20 20 20 c8 99 |hor%..R( ..| 00035df0 20 22 4f 53 5f 46 69 6c 65 22 2c 32 35 35 2c 62 | "OS_File",255,b| 00035e00 24 2c 74 72 61 6e 73 62 75 66 66 25 0d 1e 53 10 |$,transbuff%..S.| 00035e10 20 20 20 20 20 20 cc 20 4c 25 3d 31 0d 1e 54 37 | . L%=1..T7| 00035e20 20 20 20 20 20 20 f2 65 78 74 65 6e 64 5f 6e 61 | .extend_na| 00035e30 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |med_sliding_bloc| 00035e40 6b 28 74 72 61 6e 73 61 6e 63 68 6f 72 25 2c 32 |k(transanchor%,2| 00035e50 35 36 29 0d 1e 55 22 20 20 20 20 20 20 74 72 61 |56)..U" tra| 00035e60 6e 73 62 75 66 66 25 3d 21 74 72 61 6e 73 61 6e |nsbuff%=!transan| 00035e70 63 68 6f 72 25 0d 1e 56 17 20 20 20 20 20 20 3f |chor%..V. ?| 00035e80 74 72 61 6e 73 62 75 66 66 25 3d 30 0d 1e 57 09 |transbuff%=0..W.| 00035e90 20 20 20 20 cd 0d 1e 58 17 20 20 20 20 74 72 61 | ...X. tra| 00035ea0 6e 73 62 75 66 66 25 3f 4c 25 3d 30 0d 1e 59 07 |nsbuff%?L%=0..Y.| 00035eb0 20 20 cb 0d 1e 5a 0a 20 20 c9 20 38 3a 0d 1e 5b | ...Z. . 8:..[| 00035ec0 2b 20 20 50 25 3d a7 53 24 2c 22 20 22 29 3a 54 |+ P%=.S$," "):T| 00035ed0 24 3d c1 53 24 2c 50 25 2b 31 29 3a 53 24 3d c0 |$=.S$,P%+1):S$=.| 00035ee0 53 24 2c 50 25 2d 31 29 0d 1e 5c 32 20 20 46 25 |S$,P%-1)..\2 F%| 00035ef0 3d a4 66 69 65 6c 64 28 53 24 2c a3 29 3a 46 24 |=.field(S$,.):F$| 00035f00 3d a4 65 78 70 61 6e 64 28 46 24 28 46 25 29 2c |=.expand(F$(F%),| 00035f10 54 24 2c 4c 25 2c 53 46 24 29 0d 1e 5d 34 20 20 |T$,L%,SF$)..]4 | 00035f20 f2 65 78 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c |.extend_named_sl| 00035f30 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 74 72 61 6e |iding_block(tran| 00035f40 73 61 6e 63 68 6f 72 25 2c 4c 25 2b 31 29 0d 1e |sanchor%,L%+1)..| 00035f50 5e 1e 20 20 74 72 61 6e 73 62 75 66 66 25 3d 21 |^. transbuff%=!| 00035f60 74 72 61 6e 73 61 6e 63 68 6f 72 25 0d 1e 5f 36 |transanchor%.._6| 00035f70 20 20 24 74 72 61 6e 73 62 75 66 66 25 3d 46 24 | $transbuff%=F$| 00035f80 3a 4c 25 3d a9 28 24 74 72 61 6e 73 62 75 66 66 |:L%=.($transbuff| 00035f90 25 29 3a 74 72 61 6e 73 62 75 66 66 25 3f 4c 25 |%):transbuff%?L%| 00035fa0 3d 30 0d 1e 60 05 cb 0d 1e 61 1b 6c 65 6e 25 3d |=0..`....a.len%=| 00035fb0 28 4c 25 2b 34 29 20 80 20 26 46 46 46 46 46 46 |(L%+4) . &FFFFFF| 00035fc0 46 43 0d 1e 62 09 3d 6c 65 6e 25 0d 1e 63 05 3a |FC..b.=len%..c.:| 00035fd0 0d 1e 64 15 dd 20 f2 72 65 61 64 79 5f 74 6f 5f |..d.. .ready_to_| 00035fe0 6d 65 72 67 65 0d 1e 65 1a 49 6d 70 5f 77 61 69 |merge..e.Imp_wai| 00035ff0 74 25 3d a3 3a 6d 65 72 67 69 6e 67 25 3d b9 0d |t%=.:merging%=..| 00036000 1e 66 1f 24 a4 74 65 78 74 28 6d 65 72 67 65 57 |.f.$.text(mergeW| 00036010 25 2c 31 29 3d 64 6f 63 75 6d 65 6e 74 24 0d 1e |%,1)=document$..| 00036020 67 26 e7 20 ac 20 63 6f 6d 6d 6f 6e 25 20 8c 20 |g&. . common% . | 00036030 24 a4 74 65 78 74 28 6d 65 72 67 65 57 25 2c 33 |$.text(mergeW%,3| 00036040 29 3d 22 22 0d 1e 68 19 f2 6f 70 65 6e 5f 77 69 |)=""..h..open_wi| 00036050 6e 64 6f 77 28 6d 65 72 67 65 57 25 29 0d 1e 69 |ndow(mergeW%)..i| 00036060 19 f2 73 65 74 5f 63 61 72 65 74 28 6d 65 72 67 |..set_caret(merg| 00036070 65 57 25 2c 33 29 0d 1e 6a 58 c8 99 20 22 49 6d |eW%,3)..jX.. "Im| 00036080 70 75 6c 73 65 5f 53 65 6e 64 4d 65 73 73 61 67 |pulse_SendMessag| 00036090 65 22 2c 26 32 30 30 2c 22 3a 22 2b 6d 65 72 67 |e",&200,":"+merg| 000360a0 65 77 69 74 68 24 2b 22 2e 22 2b 64 6f 63 75 6d |ewith$+"."+docum| 000360b0 65 6e 74 24 2b 22 20 45 64 69 74 20 4f 66 66 22 |ent$+" Edit Off"| 000360c0 2c 2c 2c 2c 2d 31 2c 6d 79 74 61 73 6b 25 0d 1e |,,,,-1,mytask%..| 000360d0 6b 05 e1 0d 1e 6c 05 3a 0d 1e 6d 18 dd 20 a4 6d |k....l.:..m.. .m| 000360e0 65 72 67 65 5f 6e 65 78 74 28 50 25 2c 44 25 29 |erge_next(P%,D%)| 000360f0 0d 1e 6e 11 44 25 3d 28 44 25 2b 31 29 20 81 20 |..n.D%=(D%+1) . | 00036100 32 0d 1e 6f 27 50 25 3d a4 6e 65 78 74 5f 6d 61 |2..o'P%=.next_ma| 00036110 74 63 68 28 50 25 2c 44 25 2c 43 6c 69 65 6e 74 |tch(P%,D%,Client| 00036120 53 65 61 72 63 68 24 29 0d 1e 70 0f e7 20 50 25 |Search$)..p.. P%| 00036130 3c 3e 74 6f 70 20 8c 0d 1e 71 2c 20 20 53 24 3d |<>top ...q, S$=| 00036140 46 24 28 4b 46 25 28 6b 65 79 25 2c 30 29 29 2b |F$(KF%(key%,0))+| 00036150 22 20 22 2b 46 24 28 4b 46 25 28 6b 65 79 25 2c |" "+F$(KF%(key%,| 00036160 31 29 29 0d 1e 72 20 20 20 24 a4 74 65 78 74 28 |1))..r $.text(| 00036170 6d 65 72 67 65 57 25 2c 31 33 29 3d c0 53 24 2c |mergeW%,13)=.S$,| 00036180 38 30 29 0d 1e 73 1e 20 20 f2 72 65 64 72 61 77 |80)..s. .redraw| 00036190 5f 69 63 6f 6e 28 6d 65 72 67 65 57 25 2c 31 33 |_icon(mergeW%,13| 000361a0 29 0d 1e 74 5e 20 20 c8 99 20 22 49 6d 70 75 6c |)..t^ .. "Impul| 000361b0 73 65 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c |se_SendMessage",| 000361c0 26 32 30 31 2c 22 3a 22 2b 6d 65 72 67 65 77 69 |&201,":"+mergewi| 000361d0 74 68 24 2b 22 2e 22 2b 64 6f 63 75 6d 65 6e 74 |th$+"."+document| 000361e0 24 2b 22 20 4d 65 72 67 65 22 2c 2c 2c 2c 6d 65 |$+" Merge",,,,me| 000361f0 72 67 65 74 61 67 25 2c 6d 79 74 61 73 6b 25 0d |rgetag%,mytask%.| 00036200 1e 75 05 cd 0d 1e 76 07 3d 50 25 0d 1e 77 05 3a |.u....v.=P%..w.:| 00036210 0d 1e 78 4b f4 20 45 6e 64 20 6f 66 20 22 49 6d |..xK. End of "Im| 00036220 70 75 6c 73 65 22 20 68 61 6e 64 6c 69 6e 67 20 |pulse" handling | 00036230 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00036250 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 1e 79 05 3a |-----------..y.:| 00036260 0d 1e 7a 4b f4 20 49 6d 70 6f 72 74 2f 45 78 70 |..zK. Import/Exp| 00036270 6f 72 74 20 43 53 56 20 66 69 6c 65 73 20 2d 2d |ort CSV files --| 00036280 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000362a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 1e 7b 05 3a |-----------..{.:| 000362b0 0d 1e 7c 1e dd 20 f2 73 74 61 72 74 5f 69 6d 70 |..|.. .start_imp| 000362c0 6f 72 74 28 74 79 70 65 24 2c 77 69 25 29 0d 1e |ort(type$,wi%)..| 000362d0 7d 09 ea 20 4f 4b 25 0d 1e 7e 11 c8 8e 20 70 72 |}.. OK%..~... pr| 000362e0 65 73 65 6e 74 25 20 ca 0d 1e 7f 0a 20 20 c9 20 |esent% ..... . | 000362f0 30 3a 0d 1e 80 2d 20 20 e7 20 66 69 65 6c 64 73 |0:...- . fields| 00036300 25 3d 30 20 8c 20 4f 4b 25 3d b9 20 8b 20 f2 73 |%=0 . OK%=. . .s| 00036310 6f 66 74 65 72 72 6f 72 28 22 22 2c 36 39 29 0d |ofterror("",69).| 00036320 1e 81 2f 20 20 c9 20 37 3a e7 20 4d 6f 64 69 66 |../ . 7:. Modif| 00036330 79 25 20 8c 20 4f 4b 25 3d b9 20 8b 20 f2 73 6f |y% . OK%=. . .so| 00036340 66 74 65 72 72 6f 72 28 22 22 2c 31 34 29 0d 1e |fterror("",14)..| 00036350 82 19 20 20 7f 3a f2 73 6f 66 74 65 72 72 6f 72 |.. .:.softerror| 00036360 28 22 22 2c 36 39 29 0d 1e 83 05 cb 0d 1e 84 0b |("",69).........| 00036370 e7 20 4f 4b 25 20 8c 0d 1e 85 20 20 20 24 a4 74 |. OK% .... $.t| 00036380 65 78 74 28 63 73 76 57 25 2c 31 33 29 3d 66 69 |ext(csvW%,13)=fi| 00036390 6c 65 6e 61 6d 65 24 0d 1e 86 1d 20 20 f2 69 63 |lename$.... .ic| 000363a0 6f 6e 5f 62 69 74 28 32 32 2c 63 73 76 57 25 2c |on_bit(22,csvW%,| 000363b0 30 2c a3 29 0d 1e 87 34 20 20 21 62 6c 6f 63 6b |0,.)...4 !block| 000363c0 25 3d 63 73 76 57 25 3a c8 99 20 22 57 69 6d 70 |%=csvW%:.. "Wimp| 000363d0 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 |_GetWindowState"| 000363e0 2c 2c 62 6c 6f 63 6b 25 0d 1e 88 29 20 20 62 6c |,,block%...) bl| 000363f0 6f 63 6b 25 21 34 3d 38 30 30 3a 62 6c 6f 63 6b |ock%!4=800:block| 00036400 25 21 31 32 3d 62 6c 6f 63 6b 25 21 34 2b 33 39 |%!12=block%!4+39| 00036410 30 0d 1e 89 29 20 20 62 6c 6f 63 6b 25 21 38 3d |0...) block%!8=| 00036420 31 35 30 3a 62 6c 6f 63 6b 25 21 31 36 3d 62 6c |150:block%!16=bl| 00036430 6f 63 6b 25 21 38 2b 37 31 36 0d 1e 8a 28 20 20 |ock%!8+716...( | 00036440 24 43 53 56 54 69 74 6c 65 25 3d 22 49 6d 70 6f |$CSVTitle%="Impo| 00036450 72 74 20 22 2b 74 79 70 65 24 2b 22 20 66 69 6c |rt "+type$+" fil| 00036460 65 22 0d 1e 8b 22 20 20 c8 99 20 22 57 69 6d 70 |e"..." .. "Wimp| 00036470 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c |_OpenWindow",,bl| 00036480 6f 63 6b 25 0d 1e 8c 1a 20 20 f2 73 65 74 5f 63 |ock%.... .set_c| 00036490 61 72 65 74 28 63 73 76 57 25 2c 31 33 29 0d 1e |aret(csvW%,13)..| 000364a0 8d 05 cd 0d 1e 8e 05 e1 0d 1e 8f 05 3a 0d 1e 90 |............:...| 000364b0 1b dd 20 f2 77 72 69 74 65 5f 63 73 76 28 46 69 |.. .write_csv(Fi| 000364c0 6c 65 6e 61 6d 65 24 29 0d 1e 91 15 e7 20 77 72 |lename$)..... wr| 000364d0 69 74 69 6e 67 63 73 76 25 20 8c 20 e1 0d 1e 92 |itingcsv% . ....| 000364e0 3f e7 20 70 72 69 6e 74 6f 72 64 65 72 24 3c 3e |?. printorder$<>| 000364f0 22 22 20 8c 20 46 6f 72 6d 24 3d 70 72 69 6e 74 |"" . Form$=print| 00036500 6f 72 64 65 72 24 20 8b 20 f2 73 6f 66 74 65 72 |order$ . .softer| 00036510 72 6f 72 28 22 22 2c 33 34 29 3a e1 0d 1e 93 21 |ror("",34):....!| 00036520 ea 20 50 25 2c 72 65 63 25 2c 65 78 61 6d 69 6e |. P%,rec%,examin| 00036530 65 64 25 2c 73 75 62 74 6f 74 61 6c 25 0d 1e 94 |ed%,subtotal%...| 00036540 07 ea 20 85 0d 1e 95 18 ee 20 85 20 ea 3a f7 20 |.. ...... . .:. | 00036550 85 3a f2 65 6e 64 5f 63 73 76 3a e1 0d 1e 96 1b |.:.end_csv:.....| 00036560 63 73 76 68 61 6e 64 6c 65 25 3d ae 28 46 69 6c |csvhandle%=.(Fil| 00036570 65 6e 61 6d 65 24 29 0d 1e 97 24 e7 20 a4 73 65 |ename$)...$. .se| 00036580 6c 65 63 74 65 64 28 63 73 76 57 25 2c 31 29 20 |lected(csvW%,1) | 00036590 8c 20 f2 63 73 76 5f 68 65 61 64 0d 1e 98 2a 64 |. .csv_head...*d| 000365a0 62 61 73 65 68 61 6e 64 6c 65 25 3d 8e 28 24 64 |basehandle%=.($d| 000365b0 61 74 61 62 61 73 65 25 2b 22 2e 44 61 74 61 62 |atabase%+".Datab| 000365c0 61 73 65 22 29 0d 1e 99 3e 53 65 61 72 63 68 24 |ase")...>Search$| 000365d0 3d a4 70 61 72 73 65 28 24 a4 74 65 78 74 28 73 |=.parse($.text(s| 000365e0 61 76 65 73 75 62 57 25 2c 30 29 2c a4 73 65 6c |avesubW%,0),.sel| 000365f0 65 63 74 65 64 28 73 61 76 65 73 75 62 57 25 2c |ected(savesubW%,| 00036600 35 29 29 0d 1e 9a 15 c8 99 20 22 48 6f 75 72 67 |5))...... "Hourg| 00036610 6c 61 73 73 5f 4f 6e 22 0d 1e 9b 1d 50 25 3d a4 |lass_On"....P%=.| 00036620 6e 65 69 67 68 62 6f 75 72 28 6b 65 79 25 2c 74 |neighbour(key%,t| 00036630 6f 70 2c 31 29 0d 1e 9c 20 f2 73 63 61 6e 5f 66 |op,1)... .scan_f| 00036640 69 6c 65 28 22 50 25 3c 3e 74 6f 70 22 2c 6b 65 |ile("P%<>top",ke| 00036650 79 25 2c 33 29 0d 1e 9d 16 c8 99 20 22 48 6f 75 |y%,3)...... "Hou| 00036660 72 67 6c 61 73 73 5f 4f 66 66 22 0d 1e 9e 1b f2 |rglass_Off".....| 00036670 63 6c 6f 73 65 5f 66 69 6c 65 28 63 73 76 68 61 |close_file(csvha| 00036680 6e 64 6c 65 25 29 0d 1e 9f 1d f2 63 6c 6f 73 65 |ndle%).....close| 00036690 5f 66 69 6c 65 28 64 62 61 73 65 68 61 6e 64 6c |_file(dbasehandl| 000366a0 65 25 29 0d 1e a0 28 e7 20 73 65 70 24 3d 22 2c |e%)...(. sep$=",| 000366b0 22 20 8c 20 74 79 70 65 25 3d 26 64 66 65 20 8b |" . type%=&dfe .| 000366c0 20 74 79 70 65 25 3d 26 66 66 66 0d 1e a1 23 c8 | type%=&fff...#.| 000366d0 99 20 22 4f 53 5f 46 69 6c 65 22 2c 31 38 2c 46 |. "OS_File",18,F| 000366e0 69 6c 65 6e 61 6d 65 24 2c 74 79 70 65 25 0d 1e |ilename$,type%..| 000366f0 a2 11 77 72 69 74 69 6e 67 63 73 76 25 3d a3 0d |..writingcsv%=..| 00036700 1e a3 05 e1 0d 1e a4 05 3a 0d 1e a5 0e dd 20 f2 |........:..... .| 00036710 65 6e 64 5f 63 73 76 0d 1e a6 18 c8 99 20 22 48 |end_csv...... "H| 00036720 6f 75 72 67 6c 61 73 73 5f 53 6d 61 73 68 22 0d |ourglass_Smash".| 00036730 1e a7 1b f2 63 6c 6f 73 65 5f 66 69 6c 65 28 63 |....close_file(c| 00036740 73 76 68 61 6e 64 6c 65 25 29 0d 1e a8 1d f2 63 |svhandle%).....c| 00036750 6c 6f 73 65 5f 66 69 6c 65 28 64 62 61 73 65 68 |lose_file(dbaseh| 00036760 61 6e 64 6c 65 25 29 0d 1e a9 12 f2 63 6c 6f 73 |andle%).....clos| 00036770 65 5f 66 69 6c 65 28 46 29 0d 1e aa 22 c8 99 20 |e_file(F)...".. | 00036780 22 4f 53 5f 46 69 6c 65 22 2c 31 38 2c 46 69 6c |"OS_File",18,Fil| 00036790 65 6e 61 6d 65 24 2c 26 64 66 65 0d 1e ab 11 77 |ename$,&dfe....w| 000367a0 72 69 74 69 6e 67 63 73 76 25 3d a3 0d 1e ac 0c |ritingcsv%=.....| 000367b0 e7 20 9f 3d 31 37 20 8c 0d 1e ad 17 20 20 f2 73 |. .=17 ..... .s| 000367c0 6f 66 74 65 72 72 6f 72 28 22 22 2c 34 31 29 0d |ofterror("",41).| 000367d0 1e ae 1d 20 20 cc 20 f2 77 69 6d 70 5f 65 72 72 |... . .wimp_err| 000367e0 6f 72 28 b9 2c 9f 2c 9e 2c f6 24 29 0d 1e af 05 |or(.,.,.,.$)....| 000367f0 cd 0d 1e b0 05 e1 0d 1e b1 05 3a 0d 1e b2 0f dd |..........:.....| 00036800 20 f2 63 73 76 5f 68 65 61 64 0d 1e b3 1a ea 20 | .csv_head..... | 00036810 49 25 2c 46 25 2c 66 24 2c 48 24 2c 48 65 61 64 |I%,F%,f$,H$,Head| 00036820 24 2c 4e 25 0d 1e b4 09 49 25 3d 2d 31 0d 1e b5 |$,N%....I%=-1...| 00036830 14 c8 95 20 49 25 3c a9 28 46 6f 72 6d 24 29 2d |... I%<.(Form$)-| 00036840 31 0d 1e b6 28 20 20 49 25 2b 3d 32 3a 46 25 3d |1...( I%+=2:F%=| 00036850 a4 66 6e 75 6d 28 c1 46 6f 72 6d 24 2c 49 25 2c |.fnum(.Form$,I%,| 00036860 32 29 29 3a 4e 25 2b 3d 31 0d 1e b7 50 20 20 e7 |2)):N%+=1...P .| 00036870 20 a4 73 65 6c 65 63 74 65 64 28 70 72 69 6e 74 | .selected(print| 00036880 57 25 2c 32 29 20 8c 20 48 65 61 64 24 3d 24 a4 |W%,2) . Head$=$.| 00036890 74 65 78 74 28 6d 61 69 6e 57 25 2c 28 64 65 73 |text(mainW%,(des| 000368a0 63 25 28 46 25 29 29 29 20 8b 20 48 65 61 64 24 |c%(F%))) . Head$| 000368b0 3d 54 61 67 24 28 46 25 29 0d 1e b8 4d 20 20 e7 |=Tag$(F%)...M .| 000368c0 20 a4 73 65 6c 65 63 74 65 64 28 63 73 76 57 25 | .selected(csvW%| 000368d0 2c 34 29 20 8c 20 48 65 61 64 24 3d c3 28 6c 65 |,4) . Head$=.(le| 000368e0 6e 25 28 46 25 29 29 2b 22 a4 22 2b 48 65 61 64 |n%(F%))+"."+Head| 000368f0 24 2b 22 a4 22 2b c3 28 63 68 61 72 74 79 70 65 |$+"."+.(chartype| 00036900 25 28 46 25 29 29 0d 1e b9 58 20 20 e7 20 63 68 |%(F%))...X . ch| 00036910 61 72 74 79 70 65 25 28 46 25 29 3c 3e 33 20 80 |artype%(F%)<>3 .| 00036920 20 63 68 61 72 74 79 70 65 25 28 46 25 29 3c 3e | chartype%(F%)<>| 00036930 36 20 80 20 a4 73 65 6c 65 63 74 65 64 28 63 73 |6 . .selected(cs| 00036940 76 57 25 2c 30 29 20 8c 20 48 65 61 64 24 3d 22 |vW%,0) . Head$="| 00036950 22 22 22 2b 48 65 61 64 24 2b 22 22 22 22 0d 1e |"""+Head$+""""..| 00036960 ba 1f 20 20 e7 20 4e 25 3e 31 20 8c 20 48 65 61 |.. . N%>1 . Hea| 00036970 64 24 3d 73 65 70 24 2b 48 65 61 64 24 0d 1e bb |d$=sep$+Head$...| 00036980 19 20 20 d5 23 63 73 76 68 61 6e 64 6c 65 25 2c |. .#csvhandle%,| 00036990 48 65 61 64 24 3b 0d 1e bc 05 ce 0d 1e bd 17 d5 |Head$;..........| 000369a0 23 63 73 76 68 61 6e 64 6c 65 25 2c 74 65 72 6d |#csvhandle%,term| 000369b0 24 3b 0d 1e be 05 e1 0d 1e bf 05 3a 0d 1e c0 18 |$;.........:....| 000369c0 dd 20 f2 77 72 69 74 65 5f 63 73 76 5f 72 65 63 |. .write_csv_rec| 000369d0 28 52 25 29 0d 1e c1 30 ea 20 49 25 2c 46 25 2c |(R%)...0. I%,F%,| 000369e0 66 24 2c 46 24 2c 4c 25 2c 4e 25 2c 66 69 6c 65 |f$,F$,L%,N%,file| 000369f0 6e 61 6d 65 24 2c 6c 65 6e 25 2c 62 61 73 65 25 |name$,len%,base%| 00036a00 2c 53 46 24 0d 1e c2 1a e7 20 a4 73 65 6c 65 63 |,SF$..... .selec| 00036a10 74 65 64 28 63 73 76 57 25 2c 33 29 20 8c 0d 1e |ted(csvW%,3) ...| 00036a20 c3 13 20 20 46 24 3d a4 6b 65 79 32 28 30 2c 31 |.. F$=.key2(0,1| 00036a30 29 0d 1e c4 2c 20 20 e7 20 a4 73 65 6c 65 63 74 |)..., . .select| 00036a40 65 64 28 63 73 76 57 25 2c 30 29 20 8c 20 46 24 |ed(csvW%,0) . F$| 00036a50 3d 22 22 22 22 2b 46 24 2b 22 22 22 22 0d 1e c5 |=""""+F$+""""...| 00036a60 1b 20 20 d5 23 63 73 76 68 61 6e 64 6c 65 25 2c |. .#csvhandle%,| 00036a70 46 24 2b 73 65 70 24 3b 0d 1e c6 05 cd 0d 1e c7 |F$+sep$;........| 00036a80 17 49 25 3d 2d 31 3a 4c 25 3d a9 28 46 6f 72 6d |.I%=-1:L%=.(Form| 00036a90 24 29 2d 31 0d 1e c8 0c c8 95 20 49 25 3c 4c 25 |$)-1...... I%<L%| 00036aa0 0d 1e c9 22 20 20 49 25 2b 3d 32 3a 46 25 3d a4 |..." I%+=2:F%=.| 00036ab0 66 6e 75 6d 28 c1 46 6f 72 6d 24 2c 49 25 2c 32 |fnum(.Form$,I%,2| 00036ac0 29 29 0d 1e ca 18 20 20 c8 8e 20 63 68 61 72 74 |)).... .. chart| 00036ad0 79 70 65 25 28 46 25 29 20 ca 0d 1e cb 10 20 20 |ype%(F%) ..... | 00036ae0 20 20 c9 20 33 36 2c 33 39 3a 0d 1e cc 2c 20 20 | . 36,39:..., | 00036af0 20 20 6c 65 6e 25 3d a4 6c 6f 61 64 5f 62 6c 6f | len%=.load_blo| 00036b00 62 28 24 64 61 74 61 62 61 73 65 25 2c 52 25 2c |b($database%,R%,| 00036b10 46 25 2c 33 36 29 0d 1e cd 27 20 20 20 20 e7 20 |F%,36)...' . | 00036b20 6c 65 6e 25 3e 30 20 84 20 a4 73 65 6c 65 63 74 |len%>0 . .select| 00036b30 65 64 28 63 73 76 57 25 2c 32 29 20 8c 0d 1e ce |ed(csvW%,2) ....| 00036b40 2b 20 20 20 20 20 20 4e 25 2b 3d 31 3a e7 20 4e |+ N%+=1:. N| 00036b50 25 3e 31 20 8c 20 d5 23 63 73 76 68 61 6e 64 6c |%>1 . .#csvhandl| 00036b60 65 25 2c 73 65 70 24 3b 0d 1e cf 33 20 20 20 20 |e%,sep$;...3 | 00036b70 20 20 e7 20 a4 73 65 6c 65 63 74 65 64 28 63 73 | . .selected(cs| 00036b80 76 57 25 2c 30 29 20 8c 20 d5 23 63 73 76 68 61 |vW%,0) . .#csvha| 00036b90 6e 64 6c 65 25 2c 22 22 22 22 3b 0d 1e d0 28 20 |ndle%,"""";...( | 00036ba0 20 20 20 20 20 f2 62 6c 6f 62 5f 74 6f 5f 66 69 | .blob_to_fi| 00036bb0 6c 65 28 63 73 76 68 61 6e 64 6c 65 25 2c 6c 65 |le(csvhandle%,le| 00036bc0 6e 25 29 0d 1e d1 33 20 20 20 20 20 20 e7 20 a4 |n%)...3 . .| 00036bd0 73 65 6c 65 63 74 65 64 28 63 73 76 57 25 2c 30 |selected(csvW%,0| 00036be0 29 20 8c 20 d5 23 63 73 76 68 61 6e 64 6c 65 25 |) . .#csvhandle%| 00036bf0 2c 22 22 22 22 3b 0d 1e d2 09 20 20 20 20 cd 0d |,"""";.... ..| 00036c00 1e d3 1d 20 20 20 20 c9 20 33 2c 36 2c 34 36 2c |... . 3,6,46,| 00036c10 34 37 2c 35 34 2c 35 36 2c 35 37 3a 0d 1e d4 17 |47,54,56,57:....| 00036c20 20 20 20 20 46 24 3d 46 24 28 46 25 29 3a 4e 25 | F$=F$(F%):N%| 00036c30 2b 3d 31 0d 1e d5 27 20 20 20 20 e7 20 46 24 3c |+=1...' . F$<| 00036c40 3e 22 22 20 84 20 a4 73 65 6c 65 63 74 65 64 28 |>"" . .selected(| 00036c50 63 73 76 57 25 2c 32 29 20 8c 0d 1e d6 1d 20 20 |csvW%,2) ..... | 00036c60 20 20 20 20 e7 20 4e 25 3e 31 20 8c 20 46 24 3d | . N%>1 . F$=| 00036c70 73 65 70 24 2b 46 24 0d 1e d7 1a 20 20 20 20 20 |sep$+F$.... | 00036c80 20 d5 23 63 73 76 68 61 6e 64 6c 65 25 2c 46 24 | .#csvhandle%,F$| 00036c90 3b 0d 1e d8 09 20 20 20 20 cd 0d 1e d9 0a 20 20 |;.... ..... | 00036ca0 20 20 7f 3a 0d 1e da 21 20 20 20 20 e7 20 a4 73 | .:...! . .s| 00036cb0 65 6c 65 63 74 65 64 28 70 72 69 6e 74 57 25 2c |elected(printW%,| 00036cc0 31 31 29 20 8c 0d 1e db 2f 20 20 20 20 20 20 46 |11) ..../ F| 00036cd0 24 3d a4 65 78 70 61 6e 64 28 46 24 28 46 25 29 |$=.expand(F$(F%)| 00036ce0 2c 6c 69 6e 6b 24 28 46 25 29 2c 4c 65 6e 25 2c |,link$(F%),Len%,| 00036cf0 53 46 24 29 0d 1e dc 15 20 20 20 20 20 20 cc 20 |SF$).... . | 00036d00 46 24 3d 46 24 28 46 25 29 0d 1e dd 09 20 20 20 |F$=F$(F%).... | 00036d10 20 cd 0d 1e de 0d 20 20 20 20 4e 25 2b 3d 31 0d | ..... N%+=1.| 00036d20 1e df 27 20 20 20 20 e7 20 46 24 3c 3e 22 22 20 |..' . F$<>"" | 00036d30 84 20 a4 73 65 6c 65 63 74 65 64 28 63 73 76 57 |. .selected(csvW| 00036d40 25 2c 32 29 20 8c 0d 1e e0 30 20 20 20 20 20 20 |%,2) ....0 | 00036d50 e7 20 a4 73 65 6c 65 63 74 65 64 28 63 73 76 57 |. .selected(csvW| 00036d60 25 2c 30 29 20 8c 20 46 24 3d 22 22 22 22 2b 46 |%,0) . F$=""""+F| 00036d70 24 2b 22 22 22 22 0d 1e e1 1d 20 20 20 20 20 20 |$+"""".... | 00036d80 e7 20 4e 25 3e 31 20 8c 20 46 24 3d 73 65 70 24 |. N%>1 . F$=sep$| 00036d90 2b 46 24 0d 1e e2 1a 20 20 20 20 20 20 d5 23 63 |+F$.... .#c| 00036da0 73 76 68 61 6e 64 6c 65 25 2c 46 24 3b 0d 1e e3 |svhandle%,F$;...| 00036db0 09 20 20 20 20 cd 0d 1e e4 07 20 20 cb 0d 1e e5 |. ..... ....| 00036dc0 05 ce 0d 1e e6 17 d5 23 63 73 76 68 61 6e 64 6c |.......#csvhandl| 00036dd0 65 25 2c 74 65 72 6d 24 3b 0d 1e e7 05 e1 0d 1e |e%,term$;.......| 00036de0 e8 05 3a 0d 1e e9 16 dd 20 f2 63 6f 6e 76 65 72 |..:..... .conver| 00036df0 74 5f 63 73 76 28 66 24 29 0d 1e ea 72 ea 20 6b |t_csv(f$)...r. k| 00036e00 24 2c 42 25 2c 4a 25 2c 66 6c 64 25 2c 63 73 76 |$,B%,J%,fld%,csv| 00036e10 68 61 6e 64 6c 65 25 2c 74 6f 6f 62 69 67 68 61 |handle%,toobigha| 00036e20 6e 64 6c 65 25 2c 53 24 2c 73 65 70 25 2c 73 65 |ndle%,S$,sep%,se| 00036e30 70 32 25 2c 74 65 72 6d 25 2c 74 65 72 6d 32 25 |p2%,term%,term2%| 00036e40 2c 46 24 2c 41 25 2c 46 25 2c 6b 65 79 62 61 73 |,F$,A%,F%,keybas| 00036e50 65 25 2c 62 61 73 65 25 2c 62 61 73 65 32 25 2c |e%,base%,base2%,| 00036e60 73 68 6f 77 25 2c 64 6f 6e 65 25 0d 1e eb 07 ea |show%,done%.....| 00036e70 20 85 0d 1e ec 1d ee 20 85 20 ea 3a f7 20 85 3a | ...... . .:. .:| 00036e80 f2 73 74 6f 70 5f 72 65 61 64 69 6e 67 3a e1 0d |.stop_reading:..| 00036e90 1e ed 19 73 69 7a 65 25 3d 26 31 30 30 3a 69 6e |...size%=&100:in| 00036ea0 63 25 3d 73 69 7a 65 25 0d 1e ee 32 f2 65 78 74 |c%=size%...2.ext| 00036eb0 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e |end_named_slidin| 00036ec0 67 5f 62 6c 6f 63 6b 28 74 65 6d 70 61 6e 63 68 |g_block(tempanch| 00036ed0 6f 72 25 2c 73 69 7a 65 25 29 0d 1e ef 3a 73 65 |or%,size%)...:se| 00036ee0 70 25 3d 97 28 73 65 70 24 29 3a e7 20 a9 28 73 |p%=.(sep$):. .(s| 00036ef0 65 70 24 29 3d 32 20 8c 20 73 65 70 32 25 3d 97 |ep$)=2 . sep2%=.| 00036f00 28 c2 73 65 70 24 29 29 20 8b 20 73 65 70 32 25 |(.sep$)) . sep2%| 00036f10 3d 32 35 35 0d 1e f0 40 74 65 72 6d 25 3d 97 28 |=255...@term%=.(| 00036f20 74 65 72 6d 24 29 3a e7 20 a9 28 74 65 72 6d 24 |term$):. .(term$| 00036f30 29 3d 32 20 8c 20 74 65 72 6d 32 25 3d 97 28 c2 |)=2 . term2%=.(.| 00036f40 74 65 72 6d 24 29 29 20 8b 20 74 65 72 6d 32 25 |term$)) . term2%| 00036f50 3d 32 35 35 0d 1e f1 14 63 73 76 68 61 6e 64 6c |=255....csvhandl| 00036f60 65 25 3d 8e 28 66 24 29 0d 1e f2 24 e7 20 70 72 |e%=.(f$)...$. pr| 00036f70 65 73 65 6e 74 25 3d 30 20 8c 20 f2 63 73 76 5f |esent%=0 . .csv_| 00036f80 74 6f 5f 64 62 61 73 65 28 66 24 29 0d 1e f3 19 |to_dbase(f$)....| 00036f90 46 6f 72 6d 24 3d a4 63 73 76 5f 69 6d 70 6f 72 |Form$=.csv_impor| 00036fa0 74 66 6f 72 6d 0d 1e f4 33 74 6f 6f 62 69 67 68 |tform...3toobigh| 00036fb0 61 6e 64 6c 65 25 3d ae 28 24 64 61 74 61 62 61 |andle%=.($databa| 00036fc0 73 65 25 2b 22 2e 50 72 69 6e 74 4a 6f 62 73 2e |se%+".PrintJobs.| 00036fd0 54 6f 6f 42 69 67 22 29 0d 1e f5 15 c8 99 20 22 |TooBig")...... "| 00036fe0 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 1e f6 |Hourglass_On"...| 00036ff0 05 f5 0d 1e f7 0c 20 20 c8 8e 20 b9 20 ca 0d 1e |...... .. . ...| 00037000 f8 1d 20 20 20 20 c9 20 a4 73 65 6c 65 63 74 65 |.. . .selecte| 00037010 64 28 63 73 76 57 25 2c 33 29 3a 0d 1e f9 13 20 |d(csvW%,3):.... | 00037020 20 20 20 f2 72 65 61 64 5f 62 79 74 65 73 0d 1e | .read_bytes..| 00037030 fa 2c 20 20 20 20 61 64 64 72 3d a4 66 69 6e 64 |., addr=.find| 00037040 28 c0 24 62 61 73 65 25 2c 4b 4c 25 28 6b 65 79 |(.$base%,KL%(key| 00037050 25 29 29 2c 30 2c 31 2c a3 29 0d 1e fb 22 20 20 |%)),0,1,.)..." | 00037060 20 20 52 45 43 25 3d a4 72 65 63 5f 6e 6f 28 6b | REC%=.rec_no(k| 00037070 24 2c 6b 65 79 25 2c 61 64 64 72 29 0d 1e fc 28 |$,key%,addr)...(| 00037080 20 20 20 20 f2 72 65 61 64 28 66 69 65 6c 64 73 | .read(fields| 00037090 25 2c b9 2c 52 45 43 25 2c 24 64 61 74 61 62 61 |%,.,REC%,$databa| 000370a0 73 65 25 29 0d 1e fd 0a 20 20 20 20 7f 3a 0d 1e |se%).... .:..| 000370b0 fe 32 20 20 20 20 6b 65 79 62 61 73 65 25 3d 21 |.2 keybase%=!| 000370c0 6b 65 79 61 6e 63 68 6f 72 25 28 30 29 3a 41 25 |keyanchor%(0):A%| 000370d0 3d 21 6b 65 79 62 61 73 65 25 3a 46 25 3d 41 25 |=!keybase%:F%=A%| 000370e0 0d 1e ff 1c 20 20 20 20 e7 20 21 28 6b 65 79 62 |.... . !(keyb| 000370f0 61 73 65 25 2b 46 25 29 3e 30 20 8c 0d 1f 00 3a |ase%+F%)>0 ....:| 00037100 20 20 20 20 20 20 41 25 3d 21 28 6b 65 79 62 61 | A%=!(keyba| 00037110 73 65 25 2b 46 25 29 3a 52 45 43 25 3d 21 28 6b |se%+F%):REC%=!(k| 00037120 65 79 62 61 73 65 25 2b 46 25 2b 38 2b 4b 4c 25 |eybase%+F%+8+KL%| 00037130 28 30 29 2b 31 29 0d 1f 01 0b 20 20 20 20 20 20 |(0)+1).... | 00037140 cc 0d 1f 02 1e 20 20 20 20 20 20 69 6e 63 72 25 |..... incr%| 00037150 3d bb 28 24 49 6e 63 72 65 6d 65 6e 74 25 29 0d |=.($Increment%).| 00037160 1f 03 15 20 20 20 20 20 20 e7 20 69 6e 63 72 25 |... . incr%| 00037170 3e 30 20 8c 0d 1f 04 27 20 20 20 20 20 20 20 20 |>0 ....' | 00037180 f2 63 68 61 6e 67 65 5f 6c 65 6e 67 74 68 28 52 |.change_length(R| 00037190 41 25 2b 69 6e 63 72 25 2c a3 29 0d 1f 05 36 20 |A%+incr%,.)...6 | 000371a0 20 20 20 20 20 20 20 6b 65 79 62 61 73 65 25 3d | keybase%=| 000371b0 21 6b 65 79 61 6e 63 68 6f 72 25 28 30 29 3a 41 |!keyanchor%(0):A| 000371c0 25 3d 21 6b 65 79 62 61 73 65 25 3a 46 25 3d 41 |%=!keybase%:F%=A| 000371d0 25 0d 1f 06 3c 20 20 20 20 20 20 20 20 41 25 3d |%...< A%=| 000371e0 21 28 6b 65 79 62 61 73 65 25 2b 46 25 29 3a 52 |!(keybase%+F%):R| 000371f0 45 43 25 3d 21 28 6b 65 79 62 61 73 65 25 2b 46 |EC%=!(keybase%+F| 00037200 25 2b 38 2b 4b 4c 25 28 30 29 2b 31 29 0d 1f 07 |%+8+KL%(0)+1)...| 00037210 22 20 20 20 20 20 20 20 20 cc 20 85 20 6d 6f 61 |" . . moa| 00037220 6e 5f 65 72 72 25 2c a4 6d 73 67 28 36 36 29 0d |n_err%,.msg(66).| 00037230 1f 08 0b 20 20 20 20 20 20 cd 0d 1f 09 09 20 20 |... ..... | 00037240 20 20 cd 0d 1f 0a 27 20 20 20 20 f2 72 65 61 64 | ....' .read| 00037250 28 66 69 65 6c 64 73 25 2c a3 2c 52 41 25 2c 24 |(fields%,.,RA%,$| 00037260 64 61 74 61 62 61 73 65 25 29 0d 1f 0b 07 20 20 |database%).... | 00037270 cb 0d 1f 0c 16 20 20 65 6e 64 6c 69 6e 65 25 3d |..... endline%=| 00037280 a3 3a 4a 25 3d 2d 31 0d 1f 0d 23 20 20 c8 95 20 |.:J%=-1...# .. | 00037290 4a 25 3c a9 28 46 6f 72 6d 24 29 2d 32 20 80 20 |J%<.(Form$)-2 . | 000372a0 65 6e 64 6c 69 6e 65 25 3d a3 0d 1f 0e 26 20 20 |endline%=....& | 000372b0 20 20 4a 25 2b 3d 32 3a 66 6c 64 25 3d a4 66 6e | J%+=2:fld%=.fn| 000372c0 75 6d 28 c1 46 6f 72 6d 24 2c 4a 25 2c 32 29 29 |um(.Form$,J%,2))| 000372d0 0d 1f 0f 21 20 20 20 20 f2 74 72 61 6e 73 66 65 |...! .transfe| 000372e0 72 5f 63 73 76 5f 66 69 65 6c 64 28 66 6c 64 25 |r_csv_field(fld%| 000372f0 29 0d 1f 10 07 20 20 ce 0d 1f 11 31 20 20 e7 20 |).... ....1 . | 00037300 66 6c 64 25 3c 66 69 65 6c 64 73 25 20 80 20 ac |fld%<fields% . .| 00037310 20 65 6e 64 6c 69 6e 65 25 20 8c 20 f2 6e 65 78 | endline% . .nex| 00037320 74 5f 63 73 76 5f 72 65 63 0d 1f 12 0b 20 20 f2 |t_csv_rec.... .| 00037330 70 6f 6c 6c 0d 1f 13 1a 20 20 f2 77 72 69 74 65 |poll.... .write| 00037340 28 66 69 65 6c 64 73 25 2c 6b 65 79 25 29 0d 1f |(fields%,key%)..| 00037350 14 2d 20 20 e7 20 a4 73 65 6c 65 63 74 65 64 28 |.- . .selected(| 00037360 63 73 76 57 25 2c 31 31 29 20 8c 20 f2 72 65 64 |csvW%,11) . .red| 00037370 72 61 77 28 6d 61 69 6e 57 25 29 0d 1f 15 3f 20 |raw(mainW%)...? | 00037380 20 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 50 | .. "Hourglass_P| 00037390 65 72 63 65 6e 74 61 67 65 22 2c 8f 23 63 73 76 |ercentage",.#csv| 000373a0 68 61 6e 64 6c 65 25 2a 31 30 30 20 81 20 a2 23 |handle%*100 . .#| 000373b0 63 73 76 68 61 6e 64 6c 65 25 0d 1f 16 18 20 20 |csvhandle%.... | 000373c0 c8 99 20 22 4f 53 5f 42 79 74 65 22 2c 32 32 39 |.. "OS_Byte",229| 000373d0 2c 30 0d 1f 17 12 fd 20 c5 23 63 73 76 68 61 6e |,0..... .#csvhan| 000373e0 64 6c 65 25 0d 1f 18 16 c8 99 20 22 48 6f 75 72 |dle%...... "Hour| 000373f0 67 6c 61 73 73 5f 4f 66 66 22 0d 1f 19 1b f2 63 |glass_Off".....c| 00037400 6c 6f 73 65 5f 66 69 6c 65 28 63 73 76 68 61 6e |lose_file(csvhan| 00037410 64 6c 65 25 29 0d 1f 1a 1e f2 63 6c 6f 73 65 5f |dle%).....close_| 00037420 66 69 6c 65 28 74 6f 6f 62 69 67 68 61 6e 64 6c |file(toobighandl| 00037430 65 25 29 0d 1f 1b 25 f2 73 63 72 61 70 5f 73 6c |e%)...%.scrap_sl| 00037440 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 74 65 6d 70 |iding_block(temp| 00037450 61 6e 63 68 6f 72 25 29 0d 1f 1c 37 c8 99 20 22 |anchor%)...7.. "| 00037460 4f 53 5f 46 69 6c 65 22 2c 31 38 2c 24 64 61 74 |OS_File",18,$dat| 00037470 61 62 61 73 65 25 2b 22 2e 50 72 69 6e 74 4a 6f |abase%+".PrintJo| 00037480 62 73 2e 54 6f 6f 42 69 67 22 2c 26 66 66 66 0d |bs.TooBig",&fff.| 00037490 1f 1d 1c 61 64 64 72 3d a4 6d 6f 76 65 74 6f 28 |...addr=.moveto(| 000374a0 6b 65 79 25 2c 74 6f 70 2c 31 29 0d 1f 1e 14 f2 |key%,top,1).....| 000374b0 63 6c 65 61 72 5f 73 65 6c 65 63 74 69 6f 6e 0d |clear_selection.| 000374c0 1f 1f 18 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 |....close_window| 000374d0 28 63 73 76 57 25 29 0d 1f 20 46 e7 20 a4 73 65 |(csvW%).. F. .se| 000374e0 6c 65 63 74 65 64 28 70 61 73 73 57 25 2c 31 36 |lected(passW%,16| 000374f0 29 20 8c 20 d5 23 6c 6f 67 68 61 6e 64 6c 65 25 |) . .#loghandle%| 00037500 2c 22 43 53 56 20 64 61 74 61 20 69 6d 70 6f 72 |,"CSV data impor| 00037510 74 65 64 20 66 72 6f 6d 20 22 2b 66 24 0d 1f 21 |ted from "+f$..!| 00037520 05 e1 0d 1f 22 05 3a 0d 1f 23 21 dd 20 f2 74 72 |....".:..#!. .tr| 00037530 61 6e 73 66 65 72 5f 63 73 76 5f 66 69 65 6c 64 |ansfer_csv_field| 00037540 28 f8 20 66 6c 64 25 29 0d 1f 24 18 c8 8e 20 63 |(. fld%)..$... c| 00037550 68 61 72 74 79 70 65 25 28 66 6c 64 25 29 20 ca |hartype%(fld%) .| 00037560 0d 1f 25 0e 20 20 c9 20 33 36 2c 33 39 3a 0d 1f |..%. . 36,39:..| 00037570 26 11 20 20 f2 72 65 61 64 5f 62 79 74 65 73 0d |&. .read_bytes.| 00037580 1f 27 31 20 20 5a 25 3d a4 62 6c 6f 62 5f 70 61 |.'1 Z%=.blob_pa| 00037590 74 68 28 b9 2c 24 64 61 74 61 62 61 73 65 25 2c |th(.,$database%,| 000375a0 52 45 43 25 2c 66 6c 64 25 2c 33 36 2c 46 24 29 |REC%,fld%,36,F$)| 000375b0 0d 1f 28 22 20 20 53 74 61 72 74 25 3d 62 61 73 |..(" Start%=bas| 000375c0 65 25 3a 45 6e 64 25 3d 62 61 73 65 25 2b 70 74 |e%:End%=base%+pt| 000375d0 72 25 0d 1f 29 20 20 20 f2 73 61 76 65 28 46 24 |r%..) .save(F$| 000375e0 2c 26 66 66 66 2c 53 74 61 72 74 25 2c 45 6e 64 |,&fff,Start%,End| 000375f0 25 29 0d 1f 2a 49 20 20 e7 20 a4 73 65 6c 65 63 |%)..*I . .selec| 00037600 74 65 64 28 63 73 76 57 25 2c 31 31 29 20 80 20 |ted(csvW%,11) . | 00037610 63 68 61 72 74 79 70 65 25 28 66 6c 64 25 29 3d |chartype%(fld%)=| 00037620 33 39 20 8c 20 f2 73 68 6f 77 5f 74 65 78 74 5f |39 . .show_text_| 00037630 62 6c 6f 63 6b 28 66 6c 64 25 29 0d 1f 2b 4d 20 |block(fld%)..+M | 00037640 20 c9 20 30 2c 31 2c 32 2c 33 2c 34 2c 35 2c 36 | . 0,1,2,3,4,5,6| 00037650 2c 37 2c 38 2c 34 31 2c 34 32 2c 34 33 2c 34 34 |,7,8,41,42,43,44| 00037660 2c 34 35 2c 34 36 2c 34 37 2c 34 38 2c 34 39 2c |,45,46,47,48,49,| 00037670 35 30 2c 35 31 2c 35 32 2c 35 33 2c 35 34 2c 35 |50,51,52,53,54,5| 00037680 35 2c 35 36 2c 35 37 3a 0d 1f 2c 11 20 20 f2 72 |5,56,57:..,. .r| 00037690 65 61 64 5f 62 79 74 65 73 0d 1f 2d 39 20 20 e7 |ead_bytes..-9 .| 000376a0 20 a4 73 65 6c 65 63 74 65 64 28 63 73 76 57 25 | .selected(csvW%| 000376b0 2c 31 36 29 20 8c 20 24 62 61 73 65 25 3d a4 73 |,16) . $base%=.s| 000376c0 74 72 69 70 73 70 61 63 65 73 28 24 62 61 73 65 |tripspaces($base| 000376d0 25 29 0d 1f 2e 0c 20 20 c8 8e 20 b9 20 ca 0d 1f |%).... .. . ...| 000376e0 2f 2c 20 20 20 20 c9 20 70 74 72 25 3c 3d 6c 65 |/, . ptr%<=le| 000376f0 6e 25 28 66 6c 64 25 29 3a 24 52 66 25 28 66 6c |n%(fld%):$Rf%(fl| 00037700 64 25 29 3d 24 62 61 73 65 25 0d 1f 30 13 20 20 |d%)=$base%..0. | 00037710 20 20 c9 20 70 74 72 25 3c 32 34 37 3a 0d 1f 31 | . ptr%<247:..1| 00037720 41 20 20 20 20 d5 23 74 6f 6f 62 69 67 68 61 6e |A .#toobighan| 00037730 64 6c 65 25 2c 22 52 65 63 2e 22 2b c3 28 52 45 |dle%,"Rec."+.(RE| 00037740 43 25 29 2b 22 2c 46 6c 64 2e 22 2b c3 28 66 6c |C%)+",Fld."+.(fl| 00037750 64 25 29 2b 22 2c 22 2b 24 62 61 73 65 25 0d 1f |d%)+","+$base%..| 00037760 32 16 20 20 20 20 24 52 66 25 28 66 6c 64 25 29 |2. $Rf%(fld%)| 00037770 3d 22 40 22 0d 1f 33 0a 20 20 20 20 7f 3a 0d 1f |="@"..3. .:..| 00037780 34 87 20 20 20 20 d5 23 74 6f 6f 62 69 67 68 61 |4. .#toobigha| 00037790 6e 64 6c 65 25 2c 22 52 65 63 2e 22 2b c3 28 52 |ndle%,"Rec."+.(R| 000377a0 45 43 25 2b 31 29 2b 22 2c 46 6c 64 2e 22 2b c3 |EC%+1)+",Fld."+.| 000377b0 28 66 6c 64 25 29 2b 22 20 69 73 20 6d 6f 72 65 |(fld%)+" is more| 000377c0 20 74 68 61 6e 20 32 34 36 20 63 68 61 72 61 63 | than 246 charac| 000377d0 74 65 72 73 20 6c 6f 6e 67 2e 20 44 61 74 61 20 |ters long. Data | 000377e0 6e 6f 74 20 73 61 76 65 64 2e 20 45 78 74 65 72 |not saved. Exter| 000377f0 6e 61 6c 20 66 69 65 6c 64 20 73 75 67 67 65 73 |nal field sugges| 00037800 74 65 64 2e 22 0d 1f 35 16 20 20 20 20 24 52 66 |ted."..5. $Rf| 00037810 25 28 66 6c 64 25 29 3d 22 40 22 0d 1f 36 07 20 |%(fld%)="@"..6. | 00037820 20 cb 0d 1f 37 0f 20 20 7f 3a 66 6c 64 25 2b 3d | ...7. .:fld%+=| 00037830 31 0d 1f 38 46 20 20 f4 20 23 23 23 20 43 61 6e |1..8F . ### Can| 00037840 27 74 20 70 75 74 20 43 53 56 20 64 61 74 61 20 |'t put CSV data | 00037850 69 6e 74 6f 20 42 75 74 74 6f 6e 2c 20 53 70 72 |into Button, Spr| 00037860 69 74 65 20 6f 72 20 44 72 61 77 20 66 69 65 6c |ite or Draw fiel| 00037870 64 73 21 20 23 23 23 0d 1f 39 05 cb 0d 1f 3a 05 |ds! ###..9....:.| 00037880 e1 0d 1f 3b 05 3a 0d 1f 3c 11 dd 20 f2 72 65 61 |...;.:..<.. .rea| 00037890 64 5f 62 79 74 65 73 0d 1f 3d 17 ea 20 65 6e 64 |d_bytes..=.. end| 000378a0 24 2c 66 6c 61 67 25 2c 42 25 2c 6e 71 25 0d 1f |$,flag%,B%,nq%..| 000378b0 3e 1e 62 61 73 65 25 3d 21 74 65 6d 70 61 6e 63 |>.base%=!tempanc| 000378c0 68 6f 72 25 3a 70 74 72 25 3d 2d 31 0d 1f 3f 13 |hor%:ptr%=-1..?.| 000378d0 42 25 3d 9a 23 63 73 76 68 61 6e 64 6c 65 25 0d |B%=.#csvhandle%.| 000378e0 1f 40 0d e7 20 42 25 3d 33 34 20 8c 0d 1f 41 13 |.@.. B%=34 ...A.| 000378f0 20 20 66 6c 61 67 25 3d b9 3a 6e 71 25 3d 31 0d | flag%=.:nq%=1.| 00037900 1f 42 63 20 20 65 6e 64 24 3d 22 28 62 61 73 65 |.Bc end$="(base| 00037910 25 3f 28 70 74 72 25 2d 31 29 3d 33 34 20 41 4e |%?(ptr%-1)=34 AN| 00037920 44 20 28 6e 71 25 20 4d 4f 44 20 32 29 3d 30 29 |D (nq% MOD 2)=0)| 00037930 20 41 4e 44 20 28 42 25 3d 73 65 70 25 20 4f 52 | AND (B%=sep% OR| 00037940 20 42 25 3d 74 65 72 6d 25 20 4f 52 20 45 4f 46 | B%=term% OR EOF| 00037950 23 63 73 76 68 61 6e 64 6c 65 25 3d 54 52 55 45 |#csvhandle%=TRUE| 00037960 29 22 0d 1f 43 07 20 20 cc 0d 1f 44 21 20 20 cf |)"..C. ...D! .| 00037970 23 63 73 76 68 61 6e 64 6c 65 25 3d 8f 23 63 73 |#csvhandle%=.#cs| 00037980 76 68 61 6e 64 6c 65 25 2d 31 0d 1f 45 37 20 20 |vhandle%-1..E7 | 00037990 65 6e 64 24 3d 22 42 25 3d 73 65 70 25 20 4f 52 |end$="B%=sep% OR| 000379a0 20 42 25 3d 74 65 72 6d 25 20 4f 52 20 45 4f 46 | B%=term% OR EOF| 000379b0 23 63 73 76 68 61 6e 64 6c 65 25 3d 54 52 55 45 |#csvhandle%=TRUE| 000379c0 22 0d 1f 46 05 cd 0d 1f 47 05 f5 0d 1f 48 2b 20 |"..F....G....H+ | 000379d0 20 42 25 3d 9a 23 63 73 76 68 61 6e 64 6c 65 25 | B%=.#csvhandle%| 000379e0 3a 70 74 72 25 2b 3d 31 3a 62 61 73 65 25 3f 70 |:ptr%+=1:base%?p| 000379f0 74 72 25 3d 42 25 0d 1f 49 16 20 20 e7 20 42 25 |tr%=B%..I. . B%| 00037a00 3d 33 34 20 8c 20 6e 71 25 2b 3d 31 0d 1f 4a 4f |=34 . nq%+=1..JO| 00037a10 20 20 e7 20 70 74 72 25 3d 73 69 7a 65 25 20 8c | . ptr%=size% .| 00037a20 20 73 69 7a 65 25 2b 3d 69 6e 63 25 3a f2 65 78 | size%+=inc%:.ex| 00037a30 74 65 6e 64 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 |tend_named_slidi| 00037a40 6e 67 5f 62 6c 6f 63 6b 28 74 65 6d 70 61 6e 63 |ng_block(tempanc| 00037a50 68 6f 72 25 2c 73 69 7a 65 25 29 0d 1f 4b 0d fd |hor%,size%)..K..| 00037a60 20 a0 28 65 6e 64 24 29 0d 1f 4c 15 e7 20 66 6c | .(end$)..L.. fl| 00037a70 61 67 25 20 8c 20 70 74 72 25 2d 3d 31 0d 1f 4d |ag% . ptr%-=1..M| 00037a80 11 62 61 73 65 25 3f 70 74 72 25 3d 31 33 0d 1f |.base%?ptr%=13..| 00037a90 4e 0b c8 8e 20 42 25 20 ca 0d 1f 4f 16 20 20 c9 |N... B% ...O. .| 00037aa0 20 73 65 70 25 3a f2 73 6b 69 70 5f 73 65 70 0d | sep%:.skip_sep.| 00037ab0 1f 50 18 20 20 c9 20 74 65 72 6d 25 3a f2 73 6b |.P. . term%:.sk| 00037ac0 69 70 5f 74 65 72 6d 0d 1f 51 05 cb 0d 1f 52 05 |ip_term..Q....R.| 00037ad0 e1 0d 1f 53 05 3a 0d 1f 54 13 dd 20 f2 6e 65 78 |...S.:..T.. .nex| 00037ae0 74 5f 63 73 76 5f 72 65 63 0d 1f 55 05 f5 0d 1f |t_csv_rec..U....| 00037af0 56 15 20 20 42 25 3d 9a 23 63 73 76 68 61 6e 64 |V. B%=.#csvhand| 00037b00 6c 65 25 0d 1f 57 0e fd 20 42 25 3d 74 65 72 6d |le%..W.. B%=term| 00037b10 25 0d 1f 58 0e f2 73 6b 69 70 5f 74 65 72 6d 0d |%..X..skip_term.| 00037b20 1f 59 05 e1 0d 1f 5a 05 3a 0d 1f 5b 0f dd 20 f2 |.Y....Z.:..[.. .| 00037b30 73 6b 69 70 5f 73 65 70 0d 1f 5c 12 e7 20 73 65 |skip_sep..\.. se| 00037b40 70 32 25 3c 3e 32 35 35 20 8c 0d 1f 5d 15 20 20 |p2%<>255 ...]. | 00037b50 42 25 3d 9a 23 63 73 76 68 61 6e 64 6c 65 25 0d |B%=.#csvhandle%.| 00037b60 1f 5e 2f 20 20 e7 20 42 25 3c 3e 73 65 70 32 25 |.^/ . B%<>sep2%| 00037b70 20 8c 20 cf 23 63 73 76 68 61 6e 64 6c 65 25 3d | . .#csvhandle%=| 00037b80 8f 23 63 73 76 68 61 6e 64 6c 65 25 2d 31 0d 1f |.#csvhandle%-1..| 00037b90 5f 05 cd 0d 1f 60 05 e1 0d 1f 61 05 3a 0d 1f 62 |_....`....a.:..b| 00037ba0 10 dd 20 f2 73 6b 69 70 5f 74 65 72 6d 0d 1f 63 |.. .skip_term..c| 00037bb0 13 e7 20 74 65 72 6d 32 25 3c 3e 32 35 35 20 8c |.. term2%<>255 .| 00037bc0 0d 1f 64 15 20 20 42 25 3d 9a 23 63 73 76 68 61 |..d. B%=.#csvha| 00037bd0 6e 64 6c 65 25 0d 1f 65 3d 20 20 e7 20 42 25 3c |ndle%..e= . B%<| 00037be0 3e 74 65 72 6d 32 25 20 8c 20 cf 23 63 73 76 68 |>term2% . .#csvh| 00037bf0 61 6e 64 6c 65 25 3d 8f 23 63 73 76 68 61 6e 64 |andle%=.#csvhand| 00037c00 6c 65 25 2d 31 20 8b 20 65 6e 64 6c 69 6e 65 25 |le%-1 . endline%| 00037c10 3d b9 0d 1f 66 12 20 20 cc 20 65 6e 64 6c 69 6e |=...f. . endlin| 00037c20 65 25 3d b9 0d 1f 67 05 cd 0d 1f 68 05 e1 0d 1f |e%=...g....h....| 00037c30 69 05 3a 0d 1f 6a 13 dd 20 f2 73 74 6f 70 5f 72 |i.:..j.. .stop_r| 00037c40 65 61 64 69 6e 67 0d 1f 6b 16 c8 99 20 22 48 6f |eading..k... "Ho| 00037c50 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d 1f 6c 36 |urglass_Off"..l6| 00037c60 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 63 73 76 68 |.close_file(csvh| 00037c70 61 6e 64 6c 65 25 29 3a f2 63 6c 6f 73 65 5f 66 |andle%):.close_f| 00037c80 69 6c 65 28 74 6f 6f 62 69 67 68 61 6e 64 6c 65 |ile(toobighandle| 00037c90 25 29 0d 1f 6d 25 f2 73 63 72 61 70 5f 73 6c 69 |%)..m%.scrap_sli| 00037ca0 64 69 6e 67 5f 62 6c 6f 63 6b 28 74 65 6d 70 61 |ding_block(tempa| 00037cb0 6e 63 68 6f 72 25 29 0d 1f 6e 0d e7 20 9f 20 3d |nchor%)..n.. . =| 00037cc0 31 37 20 8c 0d 1f 6f 17 20 20 f2 73 6f 66 74 65 |17 ...o. .softe| 00037cd0 72 72 6f 72 28 22 22 2c 37 34 29 0d 1f 70 1d 20 |rror("",74)..p. | 00037ce0 20 cc 20 f2 77 69 6d 70 5f 65 72 72 6f 72 28 b9 | . .wimp_error(.| 00037cf0 2c 9f 2c 9e 2c f6 24 29 0d 1f 71 05 cd 0d 1f 72 |,.,.,.$)..q....r| 00037d00 12 e7 20 70 72 65 73 65 6e 74 25 3d 37 20 8c 0d |.. present%=7 ..| 00037d10 1f 73 1e 20 20 61 64 64 72 3d a4 6d 6f 76 65 74 |.s. addr=.movet| 00037d20 6f 28 6b 65 79 25 2c 74 6f 70 2c 31 29 0d 1f 74 |o(key%,top,1)..t| 00037d30 16 20 20 f2 63 6c 65 61 72 5f 73 65 6c 65 63 74 |. .clear_select| 00037d40 69 6f 6e 0d 1f 75 05 cd 0d 1f 76 05 e1 0d 1f 77 |ion..u....v....w| 00037d50 05 3a 0d 1f 78 15 dd 20 a4 63 73 76 5f 69 6d 70 |.:..x.. .csv_imp| 00037d60 6f 72 74 66 6f 72 6d 0d 1f 79 0e ea 20 46 25 2c |ortform..y.. F%,| 00037d70 66 24 2c 46 24 0d 1f 7a 0e 65 6e 64 6c 69 6e 65 |f$,F$..z.endline| 00037d80 25 3d a3 0d 1f 7b 0a c8 8e 20 b9 20 ca 0d 1f 7c |%=...{... . ...|| 00037d90 1b 20 20 c9 20 a4 73 65 6c 65 63 74 65 64 28 63 |. . .selected(c| 00037da0 73 76 57 25 2c 31 29 3a 0d 1f 7d 2f 20 20 f4 20 |svW%,1):..}/ . | 00037db0 23 23 23 20 55 73 65 20 68 65 61 64 65 72 20 72 |### Use header r| 00037dc0 65 63 6f 72 64 20 74 6f 20 62 75 69 6c 64 20 66 |ecord to build f| 00037dd0 6f 72 6d 20 23 23 23 0d 1f 7e 07 20 20 f5 0d 1f |orm ###..~. ...| 00037de0 7f 13 20 20 20 20 f2 72 65 61 64 5f 62 79 74 65 |.. .read_byte| 00037df0 73 0d 1f 80 1b 20 20 20 20 46 25 3d a4 66 69 65 |s.... F%=.fie| 00037e00 6c 64 28 24 62 61 73 65 25 2c a3 29 0d 1f 81 25 |ld($base%,.)...%| 00037e10 20 20 20 20 e7 20 46 25 3d 30 20 8c 20 85 20 6d | . F%=0 . . m| 00037e20 6f 61 6e 5f 65 72 72 25 2c a4 6d 73 67 28 38 37 |oan_err%,.msg(87| 00037e30 29 0d 1f 82 11 20 20 20 20 66 24 3d c3 7e 28 46 |).... f$=.~(F| 00037e40 25 29 0d 1f 83 1d 20 20 20 20 e7 20 a9 28 66 24 |%).... . .(f$| 00037e50 29 3d 31 20 8c 20 66 24 3d 22 30 22 2b 66 24 0d |)=1 . f$="0"+f$.| 00037e60 1f 84 0e 20 20 20 20 46 24 2b 3d 66 24 0d 1f 85 |... F$+=f$...| 00037e70 22 20 20 20 20 f2 69 6e 76 65 72 74 28 6d 61 69 |" .invert(mai| 00037e80 6e 57 25 2c 66 69 65 6c 64 25 28 46 25 29 29 0d |nW%,field%(F%)).| 00037e90 1f 86 10 20 20 fd 20 65 6e 64 6c 69 6e 65 25 0d |... . endline%.| 00037ea0 1f 87 18 20 20 c9 20 70 72 69 6e 74 6f 72 64 65 |... . printorde| 00037eb0 72 24 3c 3e 22 22 3a 0d 1f 88 42 20 20 f4 20 23 |r$<>"":...B . #| 00037ec0 23 23 20 42 75 69 6c 64 20 66 6f 72 6d 20 66 72 |## Build form fr| 00037ed0 6f 6d 20 68 69 67 68 6c 69 67 68 74 65 64 20 66 |om highlighted f| 00037ee0 69 65 6c 64 73 2c 20 61 73 20 69 6e 20 70 72 69 |ields, as in pri| 00037ef0 6e 74 69 6e 67 20 23 23 23 0d 1f 89 14 20 20 46 |nting ###.... F| 00037f00 24 3d 70 72 69 6e 74 6f 72 64 65 72 24 0d 1f 8a |$=printorder$...| 00037f10 08 20 20 7f 3a 0d 1f 8b 42 20 20 f4 20 23 23 23 |. .:...B . ###| 00037f20 20 41 73 73 75 6d 65 20 65 6e 74 72 79 20 69 6e | Assume entry in| 00037f30 74 6f 20 61 6c 6c 20 66 69 65 6c 64 73 2c 20 62 |to all fields, b| 00037f40 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 66 69 |eginning with fi| 00037f50 72 73 74 20 23 23 23 0d 1f 8c 16 20 20 e3 20 46 |rst ###.... . F| 00037f60 25 3d 31 20 b8 20 66 69 65 6c 64 73 25 0d 1f 8d |%=1 . fields%...| 00037f70 11 20 20 20 20 66 24 3d c3 7e 28 46 25 29 0d 1f |. f$=.~(F%)..| 00037f80 8e 1d 20 20 20 20 e7 20 a9 28 66 24 29 3d 31 20 |.. . .(f$)=1 | 00037f90 8c 20 66 24 3d 22 30 22 2b 66 24 0d 1f 8f 0e 20 |. f$="0"+f$.... | 00037fa0 20 20 20 46 24 2b 3d 66 24 0d 1f 90 0a 20 20 ed | F$+=f$.... .| 00037fb0 20 46 25 0d 1f 91 05 cb 0d 1f 92 07 3d 46 24 0d | F%.........=F$.| 00037fc0 1f 93 05 3a 0d 1f 94 17 dd 20 f2 63 73 76 5f 74 |...:..... .csv_t| 00037fd0 6f 5f 64 62 61 73 65 28 66 24 29 0d 1f 95 1e ea |o_dbase(f$).....| 00037fe0 20 46 25 2c 50 25 2c 51 25 2c 46 48 25 2c 53 24 | F%,P%,Q%,FH%,S$| 00037ff0 2c 72 65 61 64 70 6f 73 25 0d 1f 96 48 e7 20 ac |,readpos%...H. .| 00038000 20 28 a4 73 65 6c 65 63 74 65 64 28 63 73 76 57 | (.selected(csvW| 00038010 25 2c 34 29 20 80 20 a4 73 65 6c 65 63 74 65 64 |%,4) . .selected| 00038020 28 63 73 76 57 25 2c 31 29 29 20 8c 20 85 20 6d |(csvW%,1)) . . m| 00038030 6f 61 6e 5f 65 72 72 25 2c a4 6d 73 67 28 38 38 |oan_err%,.msg(88| 00038040 29 0d 1f 97 28 f2 72 65 61 64 5f 62 79 74 65 73 |)...(.read_bytes| 00038050 3a 53 24 3d 24 62 61 73 65 25 3a cf 23 63 73 76 |:S$=$base%:.#csv| 00038060 68 61 6e 64 6c 65 25 3d 30 0d 1f 98 27 e7 20 a7 |handle%=0...'. .| 00038070 53 24 2c 22 a4 22 29 3d 30 20 8c 20 85 20 6d 6f |S$,".")=0 . . mo| 00038080 61 6e 5f 65 72 72 25 2c a4 6d 73 67 28 38 39 29 |an_err%,.msg(89)| 00038090 0d 1f 99 1e 6c 65 61 66 24 3d a4 6c 65 61 66 28 |....leaf$=.leaf(| 000380a0 66 24 29 3a 63 73 76 63 6f 6e 76 25 3d b9 0d 1f |f$):csvconv%=...| 000380b0 9a 3d e7 20 24 64 61 74 61 62 61 73 65 25 3d 22 |.=. $database%="| 000380c0 4e 6f 20 64 61 74 61 22 20 8c 20 24 64 61 74 61 |No data" . $data| 000380d0 62 61 73 65 25 3d 64 62 61 73 65 70 61 74 68 24 |base%=dbasepath$| 000380e0 2b 22 2e 21 22 2b 6c 65 61 66 24 0d 1f 9b 1b f2 |+".!"+leaf$.....| 000380f0 73 61 76 65 28 24 64 61 74 61 62 61 73 65 25 2c |save($database%,| 00038100 30 2c 30 2c 30 29 0d 1f 9c 18 66 69 65 6c 64 73 |0,0,0)....fields| 00038110 25 3d 30 3a 65 6e 64 6c 69 6e 65 25 3d a3 0d 1f |%=0:endline%=...| 00038120 9d 05 f5 0d 1f 9e 10 20 20 66 69 65 6c 64 73 25 |....... fields%| 00038130 2b 3d 31 0d 1f 9f 1b 20 20 f2 72 65 61 64 5f 62 |+=1.... .read_b| 00038140 79 74 65 73 3a 53 24 3d 24 62 61 73 65 25 0d 1f |ytes:S$=$base%..| 00038150 a0 22 20 20 50 25 3d a7 53 24 2c 22 a4 22 29 3a |." P%=.S$,"."):| 00038160 51 25 3d a7 53 24 2c 22 a4 22 2c 50 25 2b 31 29 |Q%=.S$,".",P%+1)| 00038170 0d 1f a1 25 20 20 54 61 67 24 28 66 69 65 6c 64 |...% Tag$(field| 00038180 73 25 29 3d c1 53 24 2c 50 25 2b 31 2c 51 25 2d |s%)=.S$,P%+1,Q%-| 00038190 50 25 2d 31 29 0d 1f a2 20 20 20 6c 65 6e 25 28 |P%-1)... len%(| 000381a0 66 69 65 6c 64 73 25 29 3d bb 28 c0 53 24 2c 50 |fields%)=.(.S$,P| 000381b0 25 2d 31 29 29 0d 1f a3 25 20 20 63 68 61 72 74 |%-1))...% chart| 000381c0 79 70 65 25 28 66 69 65 6c 64 73 25 29 3d bb 28 |ype%(fields%)=.(| 000381d0 c1 53 24 2c 51 25 2b 31 29 29 0d 1f a4 0e fd 20 |.S$,Q%+1))..... | 000381e0 65 6e 64 6c 69 6e 65 25 0d 1f a5 25 f2 73 63 72 |endline%...%.scr| 000381f0 61 70 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b |ap_sliding_block| 00038200 28 74 65 6d 70 61 6e 63 68 6f 72 25 29 0d 1f a6 |(tempanchor%)...| 00038210 1d 46 48 25 3d ae 28 24 64 61 74 61 62 61 73 65 |.FH%=.($database| 00038220 25 2b 22 2e 46 6f 72 6d 22 29 0d 1f a7 11 f1 23 |%+".Form").....#| 00038230 46 48 25 2c 66 69 65 6c 64 73 25 0d 1f a8 14 e3 |FH%,fields%.....| 00038240 20 46 25 3d 31 20 b8 20 66 69 65 6c 64 73 25 0d | F%=1 . fields%.| 00038250 1f a9 13 20 20 78 64 25 3d 31 36 3a 78 66 25 3d |... xd%=16:xf%=| 00038260 39 36 0d 1f aa 1a 20 20 79 64 25 3d 2d 28 46 25 |96.... yd%=-(F%| 00038270 2a 35 32 29 3a 79 66 25 3d 79 64 25 0d 1f ab 48 |*52):yf%=yd%...H| 00038280 20 20 f1 23 46 48 25 2c 54 61 67 24 28 46 25 29 | .#FH%,Tag$(F%)| 00038290 2c 54 61 67 24 28 46 25 29 2c 78 64 25 2c 79 64 |,Tag$(F%),xd%,yd| 000382a0 25 2c 78 66 25 2c 79 66 25 2c 6c 65 6e 25 28 46 |%,xf%,yf%,len%(F| 000382b0 25 29 2c 63 68 61 72 74 79 70 65 25 28 46 25 29 |%),chartype%(F%)| 000382c0 2c 30 2c 30 0d 1f ac 08 ed 20 46 25 0d 1f ad 14 |,0,0..... F%....| 000382d0 f2 63 6c 6f 73 65 5f 66 69 6c 65 28 46 48 25 29 |.close_file(FH%)| 000382e0 0d 1f ae 2b c8 99 20 22 4f 53 5f 46 69 6c 65 22 |...+.. "OS_File"| 000382f0 2c 31 38 2c 24 64 61 74 61 62 61 73 65 25 2b 22 |,18,$database%+"| 00038300 2e 46 6f 72 6d 22 2c 26 37 66 32 0d 1f af 1c 66 |.Form",&7f2....f| 00038310 69 65 6c 64 73 25 3d 30 3a 46 69 65 6c 64 6e 75 |ields%=0:Fieldnu| 00038320 6d 62 65 72 25 3d 30 0d 1f b0 1c 66 69 65 6c 64 |mber%=0....field| 00038330 73 25 3d a4 67 65 74 5f 66 6f 72 6d 28 46 70 74 |s%=.get_form(Fpt| 00038340 72 25 29 0d 1f b1 10 f2 64 65 66 61 75 6c 74 5f |r%).....default_| 00038350 6b 65 79 0d 1f b2 19 72 65 61 64 70 6f 73 25 3d |key....readpos%=| 00038360 8f 23 63 73 76 68 61 6e 64 6c 65 25 0d 1f b3 13 |.#csvhandle%....| 00038370 52 41 25 3d a4 6e 6f 5f 6f 66 5f 72 65 63 73 0d |RA%=.no_of_recs.| 00038380 1f b4 1f f2 64 65 66 61 75 6c 74 73 28 24 64 61 |....defaults($da| 00038390 74 61 62 61 73 65 25 2c 52 41 25 2c 30 29 0d 1f |tabase%,RA%,0)..| 000383a0 b5 0e f2 73 61 76 65 5f 6b 65 79 73 0d 1f b6 16 |...save_keys....| 000383b0 f2 64 65 73 65 6c 65 63 74 28 63 73 76 57 25 2c |.deselect(csvW%,| 000383c0 31 29 0d 1f b7 32 f2 63 72 65 61 74 65 5f 6e 61 |1)...2.create_na| 000383d0 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 |med_sliding_bloc| 000383e0 6b 28 74 65 6d 70 61 6e 63 68 6f 72 25 2c 73 69 |k(tempanchor%,si| 000383f0 7a 65 25 29 0d 1f b8 14 63 73 76 68 61 6e 64 6c |ze%)....csvhandl| 00038400 65 25 3d 8e 28 66 24 29 0d 1f b9 19 cf 23 63 73 |e%=.(f$).....#cs| 00038410 76 68 61 6e 64 6c 65 25 3d 72 65 61 64 70 6f 73 |vhandle%=readpos| 00038420 25 0d 1f ba 05 e1 0d 1f bb 05 3a 0d 1f bc 11 dd |%.........:.....| 00038430 20 a4 6e 6f 5f 6f 66 5f 72 65 63 73 0d 1f bd 0b | .no_of_recs....| 00038440 ea 20 4e 25 2c 42 25 0d 1f be 05 f5 0d 1f bf 17 |. N%,B%.........| 00038450 20 20 f5 20 42 25 3d 9a 23 63 73 76 68 61 6e 64 | . B%=.#csvhand| 00038460 6c 65 25 0d 1f c0 1f 20 20 fd 20 42 25 3d 74 65 |le%.... . B%=te| 00038470 72 6d 25 20 84 20 c5 23 63 73 76 68 61 6e 64 6c |rm% . .#csvhandl| 00038480 65 25 0d 1f c1 0b 20 20 4e 25 2b 3d 31 0d 1f c2 |e%.... N%+=1...| 00038490 3f 20 20 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 |? .. "Hourglass| 000384a0 5f 50 65 72 63 65 6e 74 61 67 65 22 2c 8f 23 63 |_Percentage",.#c| 000384b0 73 76 68 61 6e 64 6c 65 25 2a 31 30 30 20 81 20 |svhandle%*100 . | 000384c0 a2 23 63 73 76 68 61 6e 64 6c 65 25 0d 1f c3 12 |.#csvhandle%....| 000384d0 fd 20 c5 23 63 73 76 68 61 6e 64 6c 65 25 0d 1f |. .#csvhandle%..| 000384e0 c4 07 3d 4e 25 0d 1f c5 05 3a 0d 1f c6 26 f4 20 |..=N%....:...&. | 000384f0 2d 2d 2d 20 53 4c 49 44 49 4e 47 20 48 45 41 50 |--- SLIDING HEAP| 00038500 20 32 2e 30 30 20 50 52 4f 43 45 44 55 52 45 53 | 2.00 PROCEDURES| 00038510 0d 1f c7 05 3a 0d 1f c8 1f f4 20 72 65 71 75 69 |....:..... requi| 00038520 72 65 73 20 53 6c 69 64 69 6e 67 48 65 61 70 20 |res SlidingHeap | 00038530 32 2e 30 30 0d 1f c9 05 3a 0d 1f ca 16 f4 20 6d |2.00....:..... m| 00038540 6f 64 75 6c 65 20 61 6e 64 20 50 52 4f 43 73 0d |odule and PROCs.| 00038550 1f cb 1a f4 20 a9 20 53 74 65 76 65 6e 20 48 61 |.... . Steven Ha| 00038560 73 6c 61 6d 20 31 39 39 32 0d 1f cc 05 3a 0d 1f |slam 1992....:..| 00038570 cd 15 dd 20 a4 5f 68 65 61 70 5f 73 6c 6f 74 73 |... ._heap_slots| 00038580 69 7a 65 0d 1f ce 09 ea 20 52 30 25 0d 1f cf 22 |ize..... R0%..."| 00038590 c8 99 20 22 57 69 6d 70 5f 53 6c 6f 74 53 69 7a |.. "Wimp_SlotSiz| 000385a0 65 22 2c 2d 31 2c 2d 31 20 b8 20 52 30 25 0d 1f |e",-1,-1 . R0%..| 000385b0 d0 08 3d 52 30 25 0d 1f d1 05 3a 0d 1f d2 2f dd |..=R0%....:.../.| 000385c0 20 a4 5f 68 65 61 70 5f 6e 75 6d 74 6f 73 74 72 | ._heap_numtostr| 000385d0 28 64 25 2c 6e 25 29 3d c2 c4 64 25 2c 22 30 22 |(d%,n%)=..d%,"0"| 000385e0 29 2b c3 7e 6e 25 2c 64 25 29 0d 1f d3 2f dd 20 |)+.~n%,d%).../. | 000385f0 a4 5f 68 65 61 70 5f 73 6e 75 6d 74 6f 73 74 72 |._heap_snumtostr| 00038600 28 64 25 2c 6e 25 29 3d c2 c4 64 25 2c 22 20 22 |(d%,n%)=..d%," "| 00038610 29 2b c3 6e 25 2c 64 25 29 0d 1f d4 05 3a 0d 1f |)+.n%,d%)....:..| 00038620 d5 10 dd 20 f2 68 65 61 70 73 69 6e 66 6f 0d 1f |... .heapsinfo..| 00038630 d6 37 c8 99 20 22 4f 53 5f 48 65 61 70 22 2c 31 |.7.. "OS_Heap",1| 00038640 2c 66 69 78 65 64 68 65 61 70 62 61 73 65 25 20 |,fixedheapbase% | 00038650 b8 20 2c 2c 62 69 67 62 6c 6f 63 25 2c 74 6f 74 |. ,,bigbloc%,tot| 00038660 66 72 65 65 25 0d 1f d7 12 f1 20 22 46 69 78 65 |free%..... "Fixe| 00038670 64 20 68 65 61 70 22 0d 1f d8 12 f1 20 22 2d 2d |d heap"..... "--| 00038680 2d 2d 2d 20 2d 2d 2d 2d 22 0d 1f d9 3a f1 20 22 |--- ----"...:. "| 00038690 48 65 61 70 20 62 61 73 65 20 20 20 20 3a 20 26 |Heap base : &| 000386a0 22 3b a4 5f 68 65 61 70 5f 6e 75 6d 74 6f 73 74 |";._heap_numtost| 000386b0 72 28 38 2c 66 69 78 65 64 68 65 61 70 62 61 73 |r(8,fixedheapbas| 000386c0 65 25 29 0d 1f da 35 f1 20 22 48 65 61 70 20 73 |e%)...5. "Heap s| 000386d0 69 7a 65 20 20 20 20 3a 20 22 3b a4 5f 68 65 61 |ize : ";._hea| 000386e0 70 5f 62 79 74 65 73 32 28 66 69 78 65 64 68 65 |p_bytes2(fixedhe| 000386f0 61 70 73 69 7a 65 25 29 0d 1f db 2f f1 20 22 4c |apsize%).../. "L| 00038700 61 72 67 65 73 74 20 66 72 65 65 20 3a 20 22 3b |argest free : ";| 00038710 a4 5f 68 65 61 70 5f 62 79 74 65 73 32 28 62 69 |._heap_bytes2(bi| 00038720 67 62 6c 6f 63 25 29 0d 1f dc 2f f1 20 22 54 6f |gbloc%).../. "To| 00038730 74 61 6c 20 66 72 65 65 20 20 20 3a 20 22 3b a4 |tal free : ";.| 00038740 5f 68 65 61 70 5f 62 79 74 65 73 32 28 74 6f 74 |_heap_bytes2(tot| 00038750 66 72 65 65 25 29 0d 1f dd 05 f1 0d 1f de 14 f1 |free%)..........| 00038760 20 22 53 6c 69 64 69 6e 67 20 68 65 61 70 22 0d | "Sliding heap".| 00038770 1f df 14 f1 20 22 2d 2d 2d 2d 2d 2d 2d 20 2d 2d |.... "------- --| 00038780 2d 2d 22 0d 1f e0 2e c8 99 20 22 53 6c 69 64 69 |--"...... "Slidi| 00038790 6e 67 48 65 61 70 5f 48 65 61 70 49 6e 66 6f 22 |ngHeap_HeapInfo"| 000387a0 2c 73 6c 69 64 69 6e 67 68 65 61 70 62 61 73 65 |,slidingheapbase| 000387b0 25 0d 1f e1 05 e1 0d 1f e2 05 3a 0d 1f e3 17 dd |%.........:.....| 000387c0 20 a4 5f 68 65 61 70 5f 70 61 67 65 75 70 28 6e | ._heap_pageup(n| 000387d0 25 29 0d 1f e4 09 ea 20 52 30 25 0d 1f e5 20 c8 |%)..... R0%... .| 000387e0 99 20 22 4f 53 5f 52 65 61 64 4d 65 6d 4d 61 70 |. "OS_ReadMemMap| 000387f0 49 6e 66 6f 22 20 b8 20 52 30 25 0d 1f e6 1b 3d |Info" . R0%....=| 00038800 28 6e 25 2b 52 30 25 2d 31 29 20 80 20 ac 20 28 |(n%+R0%-1) . . (| 00038810 52 30 25 2d 31 29 0d 1f e7 05 3a 0d 1f e8 2a dd |R0%-1)....:...*.| 00038820 20 f2 69 6e 69 74 68 65 61 70 73 28 68 65 61 70 | .initheaps(heap| 00038830 73 69 7a 65 25 2c 73 6c 69 64 69 6e 67 62 6c 6f |size%,slidingblo| 00038840 63 6b 73 25 29 0d 1f e9 1c 66 69 78 65 64 68 65 |cks%)....fixedhe| 00038850 61 70 73 69 7a 65 25 3d 68 65 61 70 73 69 7a 65 |apsize%=heapsize| 00038860 25 0d 1f ea 4c 68 65 61 70 5f 74 72 69 67 67 65 |%...Lheap_trigge| 00038870 72 25 3d a4 5f 68 65 61 70 5f 70 61 67 65 75 70 |r%=._heap_pageup| 00038880 28 93 2b 66 69 78 65 64 68 65 61 70 73 69 7a 65 |(.+fixedheapsize| 00038890 25 2b 32 30 2b 32 30 2a 73 6c 69 64 69 6e 67 62 |%+20+20*slidingb| 000388a0 6c 6f 63 6b 73 25 2d 26 38 30 30 30 29 0d 1f eb |locks%-&8000)...| 000388b0 1f f2 73 65 74 73 6c 6f 74 73 69 7a 65 28 68 65 |..setslotsize(he| 000388c0 61 70 5f 74 72 69 67 67 65 72 25 29 0d 1f ec 47 |ap_trigger%)...G| 000388d0 e7 20 a4 5f 68 65 61 70 5f 73 6c 6f 74 73 69 7a |. ._heap_slotsiz| 000388e0 65 3c 68 65 61 70 5f 74 72 69 67 67 65 72 25 20 |e<heap_trigger% | 000388f0 8c 20 85 20 31 33 30 2c 22 55 6e 61 62 6c 65 20 |. . 130,"Unable | 00038900 74 6f 20 69 6e 69 74 69 61 6c 69 73 65 20 68 65 |to initialise he| 00038910 61 70 22 0d 1f ed 14 66 69 78 65 64 68 65 61 70 |ap"....fixedheap| 00038920 62 61 73 65 25 3d 93 0d 1f ee 25 73 6c 69 64 69 |base%=....%slidi| 00038930 6e 67 68 65 61 70 62 61 73 65 25 3d 93 2b 66 69 |ngheapbase%=.+fi| 00038940 78 65 64 68 65 61 70 73 69 7a 65 25 0d 1f ef 31 |xedheapsize%...1| 00038950 c8 99 20 22 4f 53 5f 48 65 61 70 22 2c 30 2c 66 |.. "OS_Heap",0,f| 00038960 69 78 65 64 68 65 61 70 62 61 73 65 25 2c 2c 66 |ixedheapbase%,,f| 00038970 69 78 65 64 68 65 61 70 73 69 7a 65 25 0d 1f f0 |ixedheapsize%...| 00038980 3d c8 99 20 22 53 6c 69 64 69 6e 67 48 65 61 70 |=.. "SlidingHeap| 00038990 5f 43 72 65 61 74 65 22 2c 73 6c 69 64 69 6e 67 |_Create",sliding| 000389a0 68 65 61 70 62 61 73 65 25 2c 32 2c 73 6c 69 64 |heapbase%,2,slid| 000389b0 69 6e 67 62 6c 6f 63 6b 73 25 0d 1f f1 30 c8 99 |ingblocks%...0..| 000389c0 20 22 53 6c 69 64 69 6e 67 48 65 61 70 5f 56 65 | "SlidingHeap_Ve| 000389d0 72 69 66 79 48 65 61 70 22 2c 73 6c 69 64 69 6e |rifyHeap",slidin| 000389e0 67 68 65 61 70 62 61 73 65 25 0d 1f f2 05 e1 0d |gheapbase%......| 000389f0 1f f3 05 3a 0d 1f f4 15 dd 20 a4 5f 68 65 61 70 |...:..... ._heap| 00038a00 5f 6e 65 78 74 66 72 65 65 0d 1f f5 0f ea 20 6e |_nextfree..... n| 00038a10 65 78 74 66 72 65 65 25 0d 1f f6 3a c8 99 20 22 |extfree%...:.. "| 00038a20 53 6c 69 64 69 6e 67 48 65 61 70 5f 4e 65 78 74 |SlidingHeap_Next| 00038a30 46 72 65 65 22 2c 73 6c 69 64 69 6e 67 68 65 61 |Free",slidinghea| 00038a40 70 62 61 73 65 25 20 b8 20 6e 65 78 74 66 72 65 |pbase% . nextfre| 00038a50 65 25 0d 1f f7 0e 3d 6e 65 78 74 66 72 65 65 25 |e%....=nextfree%| 00038a60 0d 1f f8 05 3a 0d 1f f9 13 dd 20 f2 64 65 73 74 |....:..... .dest| 00038a70 72 6f 79 68 65 61 70 73 0d 1f fa 19 f2 73 65 74 |royheaps.....set| 00038a80 73 6c 6f 74 73 69 7a 65 28 93 2d 26 38 30 30 30 |slotsize(.-&8000| 00038a90 29 0d 1f fb 05 e1 0d 1f fc 05 3a 0d 1f fd 24 dd |).........:...$.| 00038aa0 20 a4 5f 68 65 61 70 5f 77 6f 72 64 75 70 28 78 | ._heap_wordup(x| 00038ab0 25 29 3d 28 78 25 2b 33 29 20 80 20 ac 20 33 0d |%)=(x%+3) . . 3.| 00038ac0 1f fe 05 3a 0d 1f ff 1b dd 20 a4 63 72 65 61 74 |...:..... .creat| 00038ad0 65 5f 61 6e 63 68 6f 72 28 6e 61 6d 65 24 29 0d |e_anchor(name$).| 00038ae0 20 00 0c ea 20 73 70 61 63 65 25 0d 20 01 17 de | ... space%. ...| 00038af0 20 73 70 61 63 65 25 20 34 2b a9 6e 61 6d 65 24 | space% 4+.name$| 00038b00 2b 31 0d 20 02 0d 21 73 70 61 63 65 25 3d 30 0d |+1. ..!space%=0.| 00038b10 20 03 15 24 28 73 70 61 63 65 25 2b 34 29 3d 6e | ..$(space%+4)=n| 00038b20 61 6d 65 24 0d 20 04 0b 3d 73 70 61 63 65 25 0d |ame$. ..=space%.| 00038b30 20 05 05 3a 0d 20 06 30 dd 20 f2 63 72 65 61 74 | ..:. .0. .creat| 00038b40 65 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f |e_named_sliding_| 00038b50 62 6c 6f 63 6b 28 61 6e 63 68 6f 72 25 2c 73 69 |block(anchor%,si| 00038b60 7a 65 25 29 0d 20 07 0e ea 20 74 72 79 73 69 7a |ze%). ... trysiz| 00038b70 65 25 0d 20 08 1e 73 69 7a 65 25 3d a4 5f 68 65 |e%. ..size%=._he| 00038b80 61 70 5f 77 6f 72 64 75 70 28 73 69 7a 65 25 29 |ap_wordup(size%)| 00038b90 0d 20 09 37 74 72 79 73 69 7a 65 25 3d a4 5f 68 |. .7trysize%=._h| 00038ba0 65 61 70 5f 70 61 67 65 75 70 28 a4 5f 68 65 61 |eap_pageup(._hea| 00038bb0 70 5f 6e 65 78 74 66 72 65 65 2b 73 69 7a 65 25 |p_nextfree+size%| 00038bc0 2d 26 37 46 46 34 29 0d 20 0a 1e e7 20 74 72 79 |-&7FF4). ... try| 00038bd0 73 69 7a 65 25 3e 68 65 61 70 5f 74 72 69 67 67 |size%>heap_trigg| 00038be0 65 72 25 20 8c 0d 20 0b 1d 20 20 20 f2 73 65 74 |er% .. .. .set| 00038bf0 73 6c 6f 74 73 69 7a 65 28 74 72 79 73 69 7a 65 |slotsize(trysize| 00038c00 25 29 0d 20 0c 23 20 20 20 e7 20 a4 5f 68 65 61 |%). .# . ._hea| 00038c10 70 5f 73 6c 6f 74 73 69 7a 65 3c 74 72 79 73 69 |p_slotsize<trysi| 00038c20 7a 65 25 20 8c 0d 20 0d 25 20 20 20 20 20 20 f2 |ze% .. .% .| 00038c30 73 65 74 73 6c 6f 74 73 69 7a 65 28 68 65 61 70 |setslotsize(heap| 00038c40 5f 74 72 69 67 67 65 72 25 29 0d 20 0e 46 20 20 |_trigger%). .F | 00038c50 20 20 20 20 85 20 31 33 31 2c 22 4e 6f 74 20 65 | . 131,"Not e| 00038c60 6e 6f 75 67 68 20 72 6f 6f 6d 20 74 6f 20 63 72 |nough room to cr| 00038c70 65 61 74 65 20 62 6c 6f 63 6b 20 22 22 22 2b 24 |eate block """+$| 00038c80 28 61 6e 63 68 6f 72 25 2b 34 29 2b 22 22 22 22 |(anchor%+4)+""""| 00038c90 0d 20 0f 08 20 20 20 cc 0d 20 10 20 20 20 20 20 |. .. .. . | 00038ca0 20 20 68 65 61 70 5f 74 72 69 67 67 65 72 25 3d | heap_trigger%=| 00038cb0 74 72 79 73 69 7a 65 25 0d 20 11 08 20 20 20 cd |trysize%. .. .| 00038cc0 0d 20 12 05 cd 0d 20 13 46 c8 99 20 22 53 6c 69 |. .... .F.. "Sli| 00038cd0 64 69 6e 67 48 65 61 70 5f 4e 65 77 42 6c 6f 63 |dingHeap_NewBloc| 00038ce0 6b 22 2c 73 6c 69 64 69 6e 67 68 65 61 70 62 61 |k",slidingheapba| 00038cf0 73 65 25 2c 61 6e 63 68 6f 72 25 2c 73 69 7a 65 |se%,anchor%,size| 00038d00 25 2c 61 6e 63 68 6f 72 25 2b 34 0d 20 14 30 c8 |%,anchor%+4. .0.| 00038d10 99 20 22 53 6c 69 64 69 6e 67 48 65 61 70 5f 56 |. "SlidingHeap_V| 00038d20 65 72 69 66 79 48 65 61 70 22 2c 73 6c 69 64 69 |erifyHeap",slidi| 00038d30 6e 67 68 65 61 70 62 61 73 65 25 0d 20 15 05 e1 |ngheapbase%. ...| 00038d40 0d 20 16 05 3a 0d 20 17 23 dd 20 f2 73 63 72 61 |. ..:. .#. .scra| 00038d50 70 5f 73 6c 69 64 69 6e 67 5f 62 6c 6f 63 6b 28 |p_sliding_block(| 00038d60 61 6e 63 68 6f 72 25 29 0d 20 18 14 e7 20 21 61 |anchor%). ... !a| 00038d70 6e 63 68 6f 72 25 3d 30 20 8c 20 e1 0d 20 19 38 |nchor%=0 . .. .8| 00038d80 c8 99 20 22 53 6c 69 64 69 6e 67 48 65 61 70 5f |.. "SlidingHeap_| 00038d90 53 63 72 61 70 42 6c 6f 63 6b 22 2c 73 6c 69 64 |ScrapBlock",slid| 00038da0 69 6e 67 68 65 61 70 62 61 73 65 25 2c 61 6e 63 |ingheapbase%,anc| 00038db0 68 6f 72 25 0d 20 1a 31 74 72 79 73 69 7a 65 25 |hor%. .1trysize%| 00038dc0 3d a4 5f 68 65 61 70 5f 70 61 67 65 75 70 28 a4 |=._heap_pageup(.| 00038dd0 5f 68 65 61 70 5f 6e 65 78 74 66 72 65 65 2d 26 |_heap_nextfree-&| 00038de0 37 46 46 43 29 0d 20 1b 1f e7 20 74 72 79 73 69 |7FFC). ... trysi| 00038df0 7a 65 25 3c 3e 68 65 61 70 5f 74 72 69 67 67 65 |ze%<>heap_trigge| 00038e00 72 25 20 8c 0d 20 1c 1d 20 20 20 f2 73 65 74 73 |r% .. .. .sets| 00038e10 6c 6f 74 73 69 7a 65 28 74 72 79 73 69 7a 65 25 |lotsize(trysize%| 00038e20 29 0d 20 1d 1d 20 20 20 68 65 61 70 5f 74 72 69 |). .. heap_tri| 00038e30 67 67 65 72 25 3d 74 72 79 73 69 7a 65 25 0d 20 |gger%=trysize%. | 00038e40 1e 05 cd 0d 20 1f 0e 21 61 6e 63 68 6f 72 25 3d |.... ..!anchor%=| 00038e50 30 0d 20 20 30 c8 99 20 22 53 6c 69 64 69 6e 67 |0. 0.. "Sliding| 00038e60 48 65 61 70 5f 56 65 72 69 66 79 48 65 61 70 22 |Heap_VerifyHeap"| 00038e70 2c 73 6c 69 64 69 6e 67 68 65 61 70 62 61 73 65 |,slidingheapbase| 00038e80 25 0d 20 21 05 e1 0d 20 22 05 3a 0d 20 23 1c dd |%. !... ".:. #..| 00038e90 20 f2 73 65 74 73 6c 6f 74 73 69 7a 65 28 6e 65 | .setslotsize(ne| 00038ea0 77 73 69 7a 65 25 29 0d 20 24 22 c8 99 20 22 57 |wsize%). $".. "W| 00038eb0 69 6d 70 5f 53 6c 6f 74 53 69 7a 65 22 2c 6e 65 |imp_SlotSize",ne| 00038ec0 77 73 69 7a 65 25 2c 2d 31 0d 20 25 05 e1 0d 20 |wsize%,-1. %... | 00038ed0 26 05 3a 0d 20 27 33 dd 20 f2 65 78 74 65 6e 64 |&.:. '3. .extend| 00038ee0 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 |_named_sliding_b| 00038ef0 6c 6f 63 6b 28 61 6e 63 68 6f 72 25 2c 6e 65 77 |lock(anchor%,new| 00038f00 73 69 7a 65 25 29 0d 20 28 42 e7 20 21 61 6e 63 |size%). (B. !anc| 00038f10 68 6f 72 25 3d 30 20 8c 20 f2 63 72 65 61 74 65 |hor%=0 . .create| 00038f20 5f 6e 61 6d 65 64 5f 73 6c 69 64 69 6e 67 5f 62 |_named_sliding_b| 00038f30 6c 6f 63 6b 28 61 6e 63 68 6f 72 25 2c 6e 65 77 |lock(anchor%,new| 00038f40 73 69 7a 65 25 29 3a e1 0d 20 29 41 e7 20 21 61 |size%):.. )A. !a| 00038f50 6e 63 68 6f 72 25 3e a4 5f 68 65 61 70 5f 6e 65 |nchor%>._heap_ne| 00038f60 78 74 66 72 65 65 20 8c 20 85 20 31 32 39 2c 22 |xtfree . . 129,"| 00038f70 42 6c 6f 63 6b 20 62 65 79 6f 6e 64 20 68 65 61 |Block beyond hea| 00038f80 70 20 6c 69 6d 69 74 73 22 0d 20 2a 24 6e 65 77 |p limits". *$new| 00038f90 73 69 7a 65 25 3d a4 5f 68 65 61 70 5f 77 6f 72 |size%=._heap_wor| 00038fa0 64 75 70 28 6e 65 77 73 69 7a 65 25 29 0d 20 2b |dup(newsize%). +| 00038fb0 48 c8 99 20 22 53 6c 69 64 69 6e 67 48 65 61 70 |H.. "SlidingHeap| 00038fc0 5f 44 65 73 63 72 69 62 65 42 6c 6f 63 6b 22 2c |_DescribeBlock",| 00038fd0 73 6c 69 64 69 6e 67 68 65 61 70 62 61 73 65 25 |slidingheapbase%| 00038fe0 2c 61 6e 63 68 6f 72 25 20 b8 20 2c 2c 6f 6c 64 |,anchor% . ,,old| 00038ff0 73 69 7a 65 25 0d 20 2c 1d 6c 61 72 67 65 72 25 |size%. ,.larger%| 00039000 3d 6e 65 77 73 69 7a 65 25 3e 6f 6c 64 73 69 7a |=newsize%>oldsiz| 00039010 65 25 0d 20 2d 0f e7 20 6c 61 72 67 65 72 25 20 |e%. -.. larger% | 00039020 8c 0d 20 2e 48 20 20 20 74 72 79 73 69 7a 65 25 |.. .H trysize%| 00039030 3d a4 5f 68 65 61 70 5f 70 61 67 65 75 70 28 a4 |=._heap_pageup(.| 00039040 5f 68 65 61 70 5f 6e 65 78 74 66 72 65 65 2b 28 |_heap_nextfree+(| 00039050 6e 65 77 73 69 7a 65 25 2d 6f 6c 64 73 69 7a 65 |newsize%-oldsize| 00039060 25 29 2d 26 37 46 46 43 29 0d 20 2f 21 20 20 20 |%)-&7FFC). /! | 00039070 e7 20 74 72 79 73 69 7a 65 25 3e 68 65 61 70 5f |. trysize%>heap_| 00039080 74 72 69 67 67 65 72 25 20 8c 0d 20 30 20 20 20 |trigger% .. 0 | 00039090 20 20 20 20 f2 73 65 74 73 6c 6f 74 73 69 7a 65 | .setslotsize| 000390a0 28 74 72 79 73 69 7a 65 25 29 0d 20 31 26 20 20 |(trysize%). 1& | 000390b0 20 20 20 20 e7 20 a4 5f 68 65 61 70 5f 73 6c 6f | . ._heap_slo| 000390c0 74 73 69 7a 65 3c 74 72 79 73 69 7a 65 25 20 8c |tsize<trysize% .| 000390d0 0d 20 32 28 20 20 20 20 20 20 20 20 20 f2 73 65 |. 2( .se| 000390e0 74 73 6c 6f 74 73 69 7a 65 28 68 65 61 70 5f 74 |tslotsize(heap_t| 000390f0 72 69 67 67 65 72 25 29 0d 20 33 40 20 20 20 20 |rigger%). 3@ | 00039100 20 20 20 20 20 85 20 31 33 32 2c 22 4e 6f 74 20 | . 132,"Not | 00039110 65 6e 6f 75 67 68 20 72 6f 6f 6d 20 74 6f 20 65 |enough room to e| 00039120 78 74 65 6e 64 20 62 6c 6f 63 6b 20 23 22 2b c3 |xtend block #"+.| 00039130 7e 61 6e 63 68 6f 72 25 0d 20 34 0b 20 20 20 20 |~anchor%. 4. | 00039140 20 20 cc 0d 20 35 23 20 20 20 20 20 20 20 20 20 | .. 5# | 00039150 68 65 61 70 5f 74 72 69 67 67 65 72 25 3d 74 72 |heap_trigger%=tr| 00039160 79 73 69 7a 65 25 0d 20 36 0b 20 20 20 20 20 20 |ysize%. 6. | 00039170 cd 0d 20 37 08 20 20 20 cd 0d 20 38 05 cd 0d 20 |.. 7. .. 8... | 00039180 39 42 c8 99 20 22 53 6c 69 64 69 6e 67 48 65 61 |9B.. "SlidingHea| 00039190 70 5f 45 78 74 65 6e 64 42 6c 6f 63 6b 22 2c 73 |p_ExtendBlock",s| 000391a0 6c 69 64 69 6e 67 68 65 61 70 62 61 73 65 25 2c |lidingheapbase%,| 000391b0 61 6e 63 68 6f 72 25 2c 6e 65 77 73 69 7a 65 25 |anchor%,newsize%| 000391c0 0d 20 3a 31 74 72 79 73 69 7a 65 25 3d a4 5f 68 |. :1trysize%=._h| 000391d0 65 61 70 5f 70 61 67 65 75 70 28 a4 5f 68 65 61 |eap_pageup(._hea| 000391e0 70 5f 6e 65 78 74 66 72 65 65 2d 26 37 46 46 43 |p_nextfree-&7FFC| 000391f0 29 0d 20 3b 1f e7 20 74 72 79 73 69 7a 65 25 3c |). ;.. trysize%<| 00039200 3e 68 65 61 70 5f 74 72 69 67 67 65 72 25 20 8c |>heap_trigger% .| 00039210 0d 20 3c 1d 20 20 20 f2 73 65 74 73 6c 6f 74 73 |. <. .setslots| 00039220 69 7a 65 28 74 72 79 73 69 7a 65 25 29 0d 20 3d |ize(trysize%). =| 00039230 1d 20 20 20 68 65 61 70 5f 74 72 69 67 67 65 72 |. heap_trigger| 00039240 25 3d 74 72 79 73 69 7a 65 25 0d 20 3e 05 cd 0d |%=trysize%. >...| 00039250 20 3f 30 c8 99 20 22 53 6c 69 64 69 6e 67 48 65 | ?0.. "SlidingHe| 00039260 61 70 5f 56 65 72 69 66 79 48 65 61 70 22 2c 73 |ap_VerifyHeap",s| 00039270 6c 69 64 69 6e 67 68 65 61 70 62 61 73 65 25 0d |lidingheapbase%.| 00039280 20 40 05 e1 0d 20 41 05 3a 0d 20 42 16 dd 20 a4 | @... A.:. B.. .| 00039290 5f 68 65 61 70 5f 62 79 74 65 73 28 62 25 29 0d |_heap_bytes(b%).| 000392a0 20 43 0a ea 20 65 6e 64 25 0d 20 44 3e c8 99 20 | C.. end%. D>.. | 000392b0 22 4f 53 5f 43 6f 6e 76 65 72 74 46 69 78 65 64 |"OS_ConvertFixed| 000392c0 46 69 6c 65 53 69 7a 65 22 2c 62 25 2c 62 6c 6f |FileSize",b%,blo| 000392d0 63 6b 25 2c 62 6c 6f 63 6b 25 2b 26 31 30 30 20 |ck%,block%+&100 | 000392e0 b8 20 2c 65 6e 64 25 0d 20 45 0c 3f 65 6e 64 25 |. ,end%. E.?end%| 000392f0 3d 31 33 0d 20 46 0c 3d 24 62 6c 6f 63 6b 25 0d |=13. F.=$block%.| 00039300 20 47 05 3a 0d 20 48 17 dd 20 a4 5f 68 65 61 70 | G.:. H.. ._heap| 00039310 5f 62 79 74 65 73 32 28 62 25 29 0d 20 49 0a ea |_bytes2(b%). I..| 00039320 20 65 6e 64 25 0d 20 4a 39 c8 99 20 22 4f 53 5f | end%. J9.. "OS_| 00039330 43 6f 6e 76 65 72 74 46 69 6c 65 53 69 7a 65 22 |ConvertFileSize"| 00039340 2c 62 25 2c 62 6c 6f 63 6b 25 2c 62 6c 6f 63 6b |,b%,block%,block| 00039350 25 2b 26 31 30 30 20 b8 20 2c 65 6e 64 25 0d 20 |%+&100 . ,end%. | 00039360 4b 0c 3f 65 6e 64 25 3d 31 33 0d 20 4c 0c 3d 24 |K.?end%=13. L.=$| 00039370 62 6c 6f 63 6b 25 0d 20 4d 05 3a 0d 20 4e 20 dd |block%. M.:. N .| 00039380 20 a4 63 72 65 61 74 65 5f 66 69 78 65 64 5f 62 | .create_fixed_b| 00039390 6c 6f 63 6b 28 73 69 7a 65 25 29 0d 20 4f 14 ea |lock(size%). O..| 000393a0 20 70 6f 69 6e 74 65 72 25 2c 66 6c 61 67 25 0d | pointer%,flag%.| 000393b0 20 50 3c c8 99 20 22 58 4f 53 5f 48 65 61 70 22 | P<.. "XOS_Heap"| 000393c0 2c 32 2c 66 69 78 65 64 68 65 61 70 62 61 73 65 |,2,fixedheapbase| 000393d0 25 2c 2c 73 69 7a 65 25 20 b8 20 2c 2c 70 6f 69 |%,,size% . ,,poi| 000393e0 6e 74 65 72 25 3b 66 6c 61 67 25 0d 20 51 10 c8 |nter%;flag%. Q..| 000393f0 95 20 66 6c 61 67 25 20 80 20 31 0d 20 52 14 f2 |. flag% . 1. R..| 00039400 65 78 74 65 6e 64 66 69 78 65 64 68 65 61 70 0d |extendfixedheap.| 00039410 20 53 3c c8 99 20 22 58 4f 53 5f 48 65 61 70 22 | S<.. "XOS_Heap"| 00039420 2c 32 2c 66 69 78 65 64 68 65 61 70 62 61 73 65 |,2,fixedheapbase| 00039430 25 2c 2c 73 69 7a 65 25 20 b8 20 2c 2c 70 6f 69 |%,,size% . ,,poi| 00039440 6e 74 65 72 25 3b 66 6c 61 67 25 0d 20 54 05 ce |nter%;flag%. T..| 00039450 0d 20 55 0d 3d 70 6f 69 6e 74 65 72 25 0d 20 56 |. U.=pointer%. V| 00039460 05 3a 0d 20 57 16 dd 20 f2 65 78 74 65 6e 64 66 |.:. W.. .extendf| 00039470 69 78 65 64 68 65 61 70 0d 20 58 1c ea 20 6e 73 |ixedheap. X.. ns| 00039480 68 62 25 2c 65 78 74 65 6e 64 25 2c 74 72 79 73 |hb%,extend%,trys| 00039490 69 7a 65 25 0d 20 59 24 c8 99 20 22 4f 53 5f 52 |ize%. Y$.. "OS_R| 000394a0 65 61 64 4d 65 6d 4d 61 70 49 6e 66 6f 22 20 b8 |eadMemMapInfo" .| 000394b0 20 65 78 74 65 6e 64 25 0d 20 5a 24 74 72 79 73 | extend%. Z$trys| 000394c0 69 7a 65 25 3d a4 5f 68 65 61 70 5f 73 6c 6f 74 |ize%=._heap_slot| 000394d0 73 69 7a 65 2b 65 78 74 65 6e 64 25 0d 20 5b 1a |size+extend%. [.| 000394e0 f2 73 65 74 73 6c 6f 74 73 69 7a 65 28 74 72 79 |.setslotsize(try| 000394f0 73 69 7a 65 25 29 0d 20 5c 45 e7 20 a4 5f 68 65 |size%). \E. ._he| 00039500 61 70 5f 73 6c 6f 74 73 69 7a 65 3c 74 72 79 73 |ap_slotsize<trys| 00039510 69 7a 65 25 20 8c 20 85 20 32 35 35 2c 22 4e 6f |ize% . . 255,"No| 00039520 20 72 6f 6f 6d 20 74 6f 20 65 78 74 65 6e 64 20 | room to extend | 00039530 66 69 78 65 64 20 68 65 61 70 22 0d 20 5d 22 6e |fixed heap". ]"n| 00039540 73 68 62 25 3d 73 6c 69 64 69 6e 67 68 65 61 70 |shb%=slidingheap| 00039550 62 61 73 65 25 2b 65 78 74 65 6e 64 25 0d 20 5e |base%+extend%. ^| 00039560 35 c8 99 20 22 53 6c 69 64 69 6e 67 48 65 61 70 |5.. "SlidingHeap| 00039570 5f 53 68 69 66 74 48 65 61 70 22 2c 73 6c 69 64 |_ShiftHeap",slid| 00039580 69 6e 67 68 65 61 70 62 61 73 65 25 2c 6e 73 68 |ingheapbase%,nsh| 00039590 62 25 0d 20 5f 2a c8 99 20 22 4f 53 5f 48 65 61 |b%. _*.. "OS_Hea| 000395a0 70 22 2c 35 2c 66 69 78 65 64 68 65 61 70 62 61 |p",5,fixedheapba| 000395b0 73 65 25 2c 2c 65 78 74 65 6e 64 25 0d 20 60 1b |se%,,extend%. `.| 000395c0 66 69 78 65 64 68 65 61 70 73 69 7a 65 25 2b 3d |fixedheapsize%+=| 000395d0 65 78 74 65 6e 64 25 0d 20 61 1a 73 6c 69 64 69 |extend%. a.slidi| 000395e0 6e 67 68 65 61 70 62 61 73 65 25 3d 6e 73 68 62 |ngheapbase%=nshb| 000395f0 25 0d 20 62 30 c8 99 20 22 53 6c 69 64 69 6e 67 |%. b0.. "Sliding| 00039600 48 65 61 70 5f 56 65 72 69 66 79 48 65 61 70 22 |Heap_VerifyHeap"| 00039610 2c 73 6c 69 64 69 6e 67 68 65 61 70 62 61 73 65 |,slidingheapbase| 00039620 25 0d 20 63 05 e1 0d ff |%. c....| 00039628