C7EXPLORE CMD /EXPLORE1CMD8)\FATHER NDXafGEN DQCiq.GHOST FMTGHOST ZIPGHOST ZPR 8HELPEXP FMT _UHELPEXP ZIP<>HELPEXP ZPR&HELPEXP2FMT&HELPEXP2ZIP4HELPEXP2ZPRC 'HELPEXP3FMTL HELPEXP3ZIPYjHELPEXP3ZPRhHELPEXP4FMTp 6HELPEXP4ZIP|<HELPEXP4ZPR9LIST FMTqLIST ZIP(LIST ZPR MOTHER NDXҹNAME NDXf,NEWINDEXCMD41NS CMDNPERSONS DBFREF NDXSTORIES DBF  STORY CMD+(STORYREFNDX;dTESTSW CMDC-02MAR86DWNS+*** EXPLORE.CMD - ROOT PROGRAM FOR THE EXPLORATION ON THE GENEOLOGICAL DATA BASE. *** version 1.0 *** change the following line to suit your installation *** SET DEFAULT TO B: *** GETTING STARTED *** RELEASE ALL USE PERSONS INDEX REF,FATHER,MOTHER,NAME SET TALK OFF SET BELL OFF erase store '0000' to curper store '1111' to m1 store t to cont store "N" to command store f to didhelp @ 12,0 say "type (H)elp to see what the commands listed below" @ 14,11 say "allow you do." @ 4,10 say "G E N E A L O G Y " @ 6,0 SAY "copyright 1984 by S. Washburn" @ 7,0 say "for public domain use only" *** main loop *** do while cont set intensity on If .not. didhelp *** see what he wants to do. *** @ 22,0 @ 22,0 say 'ENTER A COMMAND ->NRGBFMSCAELQ 8426<- H = Help ?' GET COMMAND PICTURE '!' read endif store F to didhelp do case Case command ="A" set carry on append store ref:no to m1 store ref:no to curper if val(curper) do explore1 endif set carry off case command = "R" set intensity on if val(curper)<>0 store curper to M1 endif @ 22,0 @ 22,0 say "enter a person's reference number?" get M1 picture "9999" read store M1 to curper if val(m1)<>0 do explore1 endif case command ="N" DO NS case command ="C" if val(m7)>0 .and. childcount>0 store M7 to curper store M7 to M1 do explore1 endif case command ="Q" store f to cont case command ="G" if val(curper)<>0 store curper to m1 do explore1 endif case command ="E" find &curper if # store str(#,4) to line edit &line store ref:no to m1 store ref:no to curper endif if val(curper) do explore1 endif case command ="F" if val(m2) store m2 to curper store m2 to M1 do explore1 endif case command = "L" store " "to command set format to list read set format to screen if command $ "Nn" erase set print on set index to name list last:name, first:name,"B:",$(str(birth:date,8),1,4),"ref=",ref:no off set print off endif if command $ "Rr" erase set print on set index to ref list ref:no, trim(last:name), trim(first:name),"B:",$(str(birth:date,8),1,4) off set print off endif set index to ref,father,mother,name if val(curper) do explore1 endif case command ="M" if val(m3) store m3 to curper store M3 to m1 do explore1 endif case command ="S" if val(m4) store m4 to curper store m4 to M1 do explore1 endif case command ="B" if val(curper) do story endif case command $ "H?," set intensity off do while command $ "Hh?," store " " to command set format to helpexp read if command $ "?," store " "to command set format to helpexp2 read if command $ "?," store " " to command set format to helpexp3 read if command $ "?," store " " to command set format to helpexp4 read endif endif endif enddo set format to screen if val(curper) do explore1 endif if command <> " " store T to didhelp endif store !(command) to command case command = "I" do newindex if val(curper) do explore1 endif case command $ "8426!'{]" store row to nrow store col to ncol *** calculate new row and collumn *** if command $ "8!" store row-1 to nrow else if command $ "2{" store row+1 to nrow else if command $ "4'" store col-1 to ncol else if command $ "6]" store col+1 to ncol endif endif endif endif *** continue only if new position is on screen *** if ncol>0 .and. Nrow>0 .and. ncol<5 .and. nrow<7 if .not. (nrow=1 .and. Ncol>2) *** figure out the memory variable in the new cell *** if nrow=1 if ncol=1 store M2 to nref else store m3 to nref endif else if nrow=2 if ncol=1 store M1 to nref else if ncol=2 store m4 to nref else if ncol=3 store m5 to nref else if ncol=4 store m6 to nref endif endif endif endif else if nrow>2 *set echo on *set step on store (ncol-1)*4+nrow-2 to child1 if child1>childcount store "0" to nref else store str(child1+6,2) to child if val(child)<10 store $(child,2,1) to child endif store m&child to nref endif endif endif endif **** DEBUG LINES *set echo off *set step off *** continue only if cell is occupied *** if val(nref)<>0 *** display marker at new position *** @ &prow, &pcol say " " store str((ncol-1)*26,2) to pcol if nrow=1 store "2" to prow else if nrow=2 store "6" to prow else if nrow>2 store str(10+(nrow-3)*3,2) to prow endif endif endif set intensity off @ &prow,&pcol say '*' store nrow to row store ncol to col store nref to curper endif endif endif ***** DEBUG LINES ** @ 23,0 say 'nref='+nref+' curper='+curper+' chcnt='; ** +str(childcount,2)+' '+str(row,2)+' '+str(col,2) case command="Z" set format to ghost read set format to screen if val(curper) do explore1 endif otherwise @ 22,0 @ 22,0 say command+" command unknown. Type any key" wait endcase if .not. didhelp store " " to command endif enddo return **** EXPLORE1.CMD - DISPLAY FAMILLY ON SCREEN WITH CODE IN M1 AS PRIME PERSON. *** **** version 1.0 *** getting started. ERASE set intensity on @ 1,0 SAY 'vvvvvvvvvvv PARENTS vvvvvvvvvvvvvvv' @ 4,0 SAY '------------------------- vvvvvvvvvvvvv SPOUSES vvvvvvvvvvvvvv' @ 8,0 SAY '-------------------------' @ 5,25 say ')' @ 6,25 say ")" @ 7,25 say ')' set intensity off *** look up prime person *** FIND &M1 IF # = 0 @ 23,0 @ 23,0 SAY m1+' NOT FOUND IN DATA BASE. TRY AGAIN !!' STORE f to notfirst store 'C' to command set intensity on RETURN ENDIF store t to notfirst *** display prime person @ 7,1 SAY BIRTH:DATE USING '#### ##/##' IF DEATH:DATE<>0 @ 7,12 SAY '-' @ 7,14 SAY DEATH:DATE USING '#### ##/##' ENDIF @ 5,1 SAY FIRST:NAME @ 6,1 SAY trim(LAST:NAME) set intensity on @ 6,25 say ')' set intensity off *** save data of prime person *** STORE FATHER:REF TO M2 STORE MOTHER:REF TO M3 store spse1:ref to m4 store spse2:ref to m5 store spse3:ref to m6 store str(spse1:date,8) to mdate4 store str(spse2:date,8) to mdate5 store str(spse3:date,8) to mdate6 STORE SEX TO MSEX *** find and display father *** FIND &M2 IF #=0 @ 2,0 SAY "father not found" STORE "0000" TO M2 ELSE @ 2,1 SAY FIRST:NAME @ 3,1 SAY LAST:NAME ENDIF *** find and display mother *** fIND &M3 IF #=0 @ 2,26 SAY "Mother not found" store "0000" to m3 else @ 2,27 say first:name @ 3,27 say last:name endif store 2 to row store 2 to col store 1 to l store t to true *** find and display spouses *** do while l<4 store str(3+l,1) to element if val(m&element)<>0 store str((col-1)*26+1,2) to pcol store str((row-2)*4+5,2) to prow store f to true find &m&element if #<>0 @ &prow,&pcol say trim(first:name)+' '+$(mdate&element,1,4) store str(val(prow)+1,2)to prow @ &prow,&pcol say last:name else @ &prow,&pcol say m&element+" not found" endif store col+1 to col endif store l+1 to l enddo if true @ 6,30 say "not married or spouse unknown" endif store 1 to col store row+1 to row **** display children ****************** set intensity on @ 9,0 say "CHILDREN:" set intensity off if msex="m" .OR. msex="M" store "father" to indx else store "mother" to indx endif set index to &indx store "6" to child *** look up first occurance of prime person in the *** parent index selected. find &m1 if #<>0 store "7" to child store t to true do while true *** display current child *** store str((col-1)*26+1,2)to pcol store str((row-3)*3+10,2) to prow @ &prow,&pcol say trim(first:name)+' '+$(str(birth:date,8),1,4) store str(val(prow)+1,2)to prow @ &prow,&pcol say last:name *** save childs reference number to child array *** store ref:no to m&child *** increment screen position *** if (row-2)/4 = int((row-2)/4) store 3 to row store col+1 to col else store row+1 to row endif *** look for next child *** skip if eof .OR. &indx.:ref<>M1 .OR. val(child)=22 store f to true else *** increment child array element *** store str(val(child)+1,2) to child if val(child)<10 store $(child,2,1) to child endif endif enddo *** back up to display next child *** else @ 12,5 say "no children" endif store val(child)-6 to childcount store '6' to prow store '0' to pcol @ &prow,&pcol say "*" store 2 to row store 1 to col set index to ref,father,mother,name set intensity on return FATHER:REF+STR(BIRTH:DATE,8)Pp_pπppϠpπ_P_p_pp_P_POp_P__P_PD1100110111021103110411051106 1107 1108 11091110 111111121113111411151116 11171117{11171117120012011202 1203 1204 1210 1300 1400"1401#1402$1403!1500160016011602000010280201000010300101000010500101000010700101 000010700101000010700101 000010800101 000010990101000011050101110010510101110010540101110010560101 110010600101 110010680101110211020101110610940101110811070101110811080101111111140101 1800180118021803180418211900190119021903191020002600450155501665017750188501995020:5021;5022<5023=5024>5025?5026@502vGEN.DOC  o !"$#&%')(+*-,./012_4357698;:=<>?@ AB CEDFrGHIJKLMNPOQQ RST VUWXYZ[\]^_`bacedfghjiSkmlnpoqrtsuvwyxz|6{}u~1:V]GEM+0KI3;LHJZ^( -72MO[h}}/NOU'ggtzfLzE߀vyV"=P7 NʻvT|Z"5jhJvͧhgGqw{ ?۟vaS=?-mm2\C#VN_ks! Q;>6\C#9Tć кOkROK[R+=/5w~ciɼP̾Rw;>66NNr;{ZʻiicsrʣҞ+HZ9b~9bBTD|tcskEe0rʣNu=֎J>r~Vw;>667,GZ9bS*b)5XO󉸱ry ͧ֯1Gka爕gTBv'Ʀˆ hԎw=Kn>-yk(B=*pOħ%M3kzwC4skvw|">-InnosROKnhYbO(XjH}+OħL%776p}!YVOJnnln:4+^%qcʻn>- vwi&{,O VOKm7 穁ʻi3ٟVO Vvǧz7P{.FPvwͼ{晚'5jhJw'Tۼs*}ׄMք~Gh~qQK>?->,{#|h}AQzF)4n{=W~~ vш j*:=a9O_RǧъIS} \!GOO[nA σ>D+F^xk} >b9>)v,N:>ՋQxރYx9pV 8MJjۧ!hSM ꤩnʠK{|ރiyꤩnsv>]٩f? Y?[_?.u|q\!G=E}jTTO .z#>^G+NuϠ+koršЇ8*}KhԎ}} |krz>}s jic]٩f/u| Sh9Z>}} |kicV{1~>~ڷ\ToގhS=>Y)j^♰SKs jڧFP} SکƱS''~:>՗o_‡k9ħ?ЪCO_|KI*b~/Q߾K*vǧ-49hD}G4)u/ ;>[?>էкòOOuCSKTkq̧/NNR 7js }~ |mş@,\T?f`h3}^/[?(|>~9s@Sb2hPKWu@mNB@!òO) e/gSC{,ĖץOF#zm#"gGhuFEqD3Y|} |S jlnw|g vO_;rs@ q ڨyE>a٥OSSh F7) 4hh9+l_ˆf>D|^7z%} |j |sB Gz? o0,W yTݼn=ǟv0lnw|g ==ڧ9nSt;B@W^nKO+ԾTQJj[j 9/u|74>jev )pj?P[#¥O)tG#R>>E|N0iڈfFExi}]3{6hgGQ67lo rFj/m{ܼ0*#6/~S&O59bT尦:0[ʻe |S}Qx.g!'>arSK\EvÚ2Frpu/jF_ks0R'W{V32Z^%x^ɎuQ`ršq+.u|rP ;>'=omnI>G4s*/~9Ή/~F#>Lu׾=g, NN0a {Fx>>D|4"Ooyj  ,'-l ny,Vx c߶Xs{Fw'T_ʈqD3eq@ш)F4eG/u|rhD)綯 oĺμ&+2o)u [.gvμKMZ2FxG4N[nO=n~.u|r4~7ş߇rPs@l3}^ Ծ&lnyxR'gkܶ~xN#xশ<)FFڍj?s |㓫hԎ}S~^9\S=n^b]Mg^_^Mgeݢ>|[*ǟ̙5av~eYVG4)0W9;Kuߪbsw{r }X9|9=ճA)agYnTğAe0aW] W]rXӖwS)m}(5>^5GR'+~k޳Ш-'jsjO_*۟k{59=K(j <ԾT6_k]3{76oj(f_FvTtr:爕RO[;>zكe[h{\ f/:yMd9iaMӄEO_шOOn^9ϧhԎ}Sv'TO^ YZ>m?S7OAlyƲ=GhqVC;l}9lF E[5jl9YF6G}R'Sh-g =GA݃R4S{@\[5ڥO|>( 7?уRBvTEe9bQirp-rm?\!G*nwO[<]y#ƱSg~v\XjOoG%j=SSCQY} \X,/u|r@vΘ\{NB@+OscjԺϭm^ à?ŰOl9O/^?m1d}s2Y՟H E'"{Mgnw|r60 k2Nzb=UI~bS|zkw'a֟U} /ɞٞ$?1!=էP>(%G܆ ozA^X=ճ=UI~bSC {P>(%G܆  L/^?ճ=U1)kM܆ m2{Dd{bj)S֚0k;> //`"S[lOU[~ʔ&ZOngL/^?TS5azw|r6,ʿe\bS}fAw'aâE2s]O}Z'Aff~Ϲ ԅ0_j/w'i/&ް=U1=1O)~a8w'0X3 k؞$?1!=9pVRrm`KHd"TO TTF>uw|r6&k&zzS'ņ ]Y=v'I/a"*/ɞb{Ġ'[cyg>(%G V~?U5 Uy{33?=+O&%L$[e>OUĠgi 1Pmŧm`j~ Fya?žAOK}bQưygaw|r0XoXzSբ<1R73{{W>uw|r2_DbQf.3TU O zfAknY|:l _׍^U75;j)𩡨,|qQ4h4O.r~V~?0{,A)  -\"g5@F sZwCX?r~V>jorXxv>~#|h}AQz1̞6PgB.z,Km@=v'T9 b1ύY"5+:ވO EeYcu"R'W # n| |j(* 6W{ܼmY=Rj^|v'&Ӌa!刕G@C{,߭8bA)  }+nw|m߀hg#z>j7?(A9?uK\GStχ>g=sqdӖ nዏf=:>L6òO9?p; sV˖WwB"5{ڥO G%BGA)  Y òORǧ=A,8?Q?j_WWsgKv;{mf>~#mw7_|C9Ԟ\滵Ri?(A9?)sgl9Kti}+iA,yE=7 Ryn kVޑmxKv |g{|ރFσR4Zxؠ?*y5XKyj6B~Ԏr6S l})FT:>ssY5:ga٧70LvZ1se_zh _ׁ| vy|j>5j=n +R')u/ ;>[/FP,k{5?X|KI*b=-XvQ^n_?;z. n}(}֏e nڍ}CԖGO?3X8>h[s1;js;!GSSP,ԀP>jbN /z#>rIk=5VD|Zڰ_Xl$T%yw|">-mذg b{v'K/d63N EXj{|+#§+;gCˁ/u|"vP[vB>,,ganj?`!+NG#jR'"{)4Oč͍M刕Cxs刕Oxv@%\ m>-nw|">eve=m6"y_Gyq>Pp;! -H[.u|ڷ<*ܶ6POEmO&H:, Kv!j--g9?+Om9rY4zF§oC>DB>O̓=:>MFGhOo>R&T}W ,G4vhVO;D|4"~|G\wcSjski60+Z.zӾ[ڼ+>p1 PqX=@F;D_kt+krx>vhhD-|NqͭTkԖP|>>mD3{jURswͼ"nlnlns{vXyv@%\ mnw|+;i >l}6Pڧ©O;mj?Fa٧5X݀hhy;{#y| [8,iA5̧ܼY||Dz 8u)lKvGN|^7z>S{>jB->Q t/>_HU1¼6jx/Gnw| CjOb1 c |j95mj)9WuZK]*҉?> `S aY)d2ynVKE:oTj豂?šLf#1Yԣm,?z4-6P<^Z>m `S a=n^lŧ \ L.h[lYG4sX)𩁴RǧvW l zlvB b_1G4sSicV)}l{8 QlM;jpu)RǧvPj}gt6w;>%шZ8,;Lur ahF=O @Rǧv[#֞U ~ԺOFa٧5X}^_n--<豂?}vjswSZ bqXe;[.kyX)𫙽m륎O^n+j߃Ɯ?尦nwOKn##V.Q;JݓOKh}Uш?[T~9lJ7Oo[\R'"Mh+=x|^9yE=_|mjA5ܼş?W:> K-|lö%rn#Z_.zohyBR'bq Ov})幡qj,4a=樯tbqv>[/u|"Qx8g_{sv泊Q!*^||I-:>YB(#h}U^<v O Y|q |eW a٧oaWcY nڵԖ/Q߾Ksj֗o_‡k9ħ?Ъ4OK݇Fz;{G=`![#7)pᦺD|jw'Ӣm^K~Z"D|Z[w;>ݨ}) .X} r5G,ѧ-ğ{NZKQ;? /Q_} 9ϡ)s jO-D|Z**׮#|Xv ?;O_ѨAegPm+: 8r/Hu"?AmS/Mu>4OopjgZwX)jZ{>>nrOOuòOO)4%w@/Q_i͋ވ?>էкS~ |j9?j? zOkP{qgGSg] >!*Ɩo9KSŷSWun@#r>ERhX#yK3'b#Ox9lS*buB4qjP;D?E| =S ~eSt >Eog륎ODSޟkc)4~r=YBﱴAOħLIShOShOg O`!D|ʴ8$1P7,;òKhv@%\l?׺,v%ͭ_WmZʻOK=p1hPÚve}PCsGcNoZpqUsv | ZxϵQk7U§8G7{<5WO9D9|m9=lA.^ g_©nj_" \D=V0գQs;xEoGah1ӒƳ[Z|XywQrscdVD|4cWuw+C9a9 >[?~Ev7ş_kATB np<HicV)G,]/u|کԶ:дQy>g=/jFϴaCf7}=)iNJ^Dۧe[[Qp[|u˾ވ =VYmş7{l},7楎O{Gm>W iyG9*yPBY߃nt]X^GSԀPϢM&Hk{*)vBjO (,=aF"D|Zv ˾ވT>mjC~oʠ樯tPRǧAxۯS5-g Z<@gַpq,i(fZl=5c%DWSXi+߷_Q߮z -gQxVY|nh}a=EZ F<ԮEoďyVv>☣auvD^/#L1byN?ׄMOmʻ۫M-܂Oqјm9[Gp˱Kؓ<@%tp Sh=ׄMLOb6G}eOu!~ 5jlODڜ :S=SI7LԾA@Wt-TU) 9gWD`2T;z.V =-z2~R+nwODz!Adl }wzɚS[[\maN:D^n&l~SUrK-Iߺ;> l|TU}l 5t7O&k&>UU_/7zM?tɻqyTejyx4\!GzÈSCsw|"N`=eT=-x>ꩁʻ^~bHd>y:+DD4Y/HOmk*ʠKU}}5d;>%XS[F2gU_ "kvvS3bO V"C"X$v'"YzhOKNX#) >D&4Ԉ;BBoʠ@߇)44w'"{0ܧ F,+H]=v_qaM5ii© 9gWJih#g54w'@&{7ܧ F,?@?`!gTBŪ=-lP =5Zyw{"ҋO B'3Ogce&3Xb=rv'b&MB2L2eDHiLO yN ;>3ibi V6oOfShaMuN|pPވCy7g9/u|"B pm7ėÚvq<(5jvTz ڈ7 jԧ ET}oEzBoWvLo)W_/7Y6ibL01swSo'}%֫Dӿ~їtr'h>-ɻh:U B g#y{љˌ_ޝ7lx֬KXk7LK˻©[qa_.d䧪?Ԉ- Q8Ű/ I)  =yw߰X̿zѢYdE Μ!a` ;/NN6G}uԧg\d䧪-9lSo)i@%\ԧg\xywS/Q_} =VS苓IShX$w'?Uy3~/- аHFOU©|q I9pVHK;C85/&I T6iw'?UU#(HU;o,ҽIf}V39d ADzMÆ;jQ?>)OKOr5ae~ywSVFjw' dE9d}~ywS[ qz>gQoX%I _ޝVEOx9lQ ET#NZ`䧶. kMu 0 ?Ъ$Ntz$ g#y{љ߀l$o":3#-v?t[MքM6 1Yx&iiwlع;j}7տ~Z"_O:4Ɍ&`[X÷6iw' ]Dg8tos HNnM_-'#xÆ_ޝTf^|-Ss 5jqjh䧪"?ŋ$Ҟ+H˻2rB_sS@(f_`';tk-?-eΩ~ zOU }Bﱴ+ރ~O;Q;yJ^§PjLzZw'?UQO/jFK/ޔ<&˻?K aUsVO=GOUTVTB)p#^{P/N~WDKY _ޝTE>&#UdFjw' dE9d}~yw2 qz>gQoXZBɌ7\樯>>jy(5j$I w'3p_X/oOx'|\8V˻tz$ g#y{љ߀l$o":3˻3?t[MքM66 1Yx&iiwlع;j}7տ~Z"_O:4Ɍ&`[X76iw' z%-IY_N*bΠ;ɭ$r/0$dFjw'?U!k,sv^F}?G8e/d:y!O+;sqdSbR \ؼ9BW=(Sߟkyw'`?W4jGPY-+Y k2Nɟ>fywSkH?,3mHKS>˻kϴaCۋ Ϲy i#~ =5_ޝ|"V&zB<ӆ mj@( /N~b+nnOJih(w'?r~V=PB+H?WW4* >~Ӓ;~ia~4}I'wӒ;T}l 5t&#-aWϠ$^%82idFjw'?Ummn+\X~aM&I3~yw2#˻66ope~;!NAxB\ ܼ k2NBO`穡;ԵvBXMFZɌ/N~ ETI w'3p_X/oOx'|\8V˻tz$ g#y{љ߀l$o":3˻mbS \ؼ9BW=(Sߟkyw'`?W4jGPY- * GHOST.FMT @ 0, 0 SAY "+-------------------------------------------------" @ 0,50 SAY "+" @ 1, 0 SAY ": -- MESSAGE FROM THE AUTHOR'S GHOST --" @ 1,50 SAY ":" @ 2, 0 SAY ": I wrote this program because I'm interested in" @ 2,50 SAY ":" @ 3, 0 SAY ": genealogies and computers. Being on a computer" @ 3,50 SAY ":" @ 4, 0 SAY ": should make it easier to pass on to following" @ 4,50 SAY ":" @ 5, 0 SAY ": generations because updating and distributing" @ 5,50 SAY ":" @ 6, 0 SAY ": it becomes so easy. I only wonder whether" @ 6,50 SAY ":" @ 7, 0 SAY ": dbaseII and cpm will still exist when it's my" @ 7,50 SAY ":" @ 8, 0 SAY ": grand childrens turn to keep the thing up to" @ 8,50 SAY ":" @ 9, 0 SAY ": date!! They'll probobly be updating it on their" @ 9,50 SAY ":" @ 10, 0 SAY ": wristwatch or god knows what else." @ 10,50 SAY ":" @ 11, 0 SAY ": Well I wrote this thing while living in Paris" @ 11,50 SAY ":" @ 12, 0 SAY ": in 1983 and Bill Graham who organised the first" @ 12,50 SAY ":" @ 13, 0 SAY ": French Osborne user's group (Osborne was the" @ 13,50 SAY ":" @ 14, 0 SAY ": first portable computer) suggested I toss it," @ 14,50 SAY ":" @ 15, 0 SAY ": like a note in a bottle, into the seas and" @ 15,50 SAY ":" @ 16, 0 SAY ": rivers of public domaine software. Since you're" @ 16,50 SAY ":" @ 17, 0 SAY ": reading this now, it must have washed up on the" @ 17,50 SAY ":" @ 18, 0 SAY ": distant shore of your computer. If you like it," @ 18,50 SAY ":" @ 19, 0 SAY ": hate it, use it or whatever I'd like to know so" @ 19,50 SAY ":" @ 20, 0 SAY ": please send me a note in a bottle: SAM WASHBURN" @ 20,50 SAY ":" @ 21, 0 SAY ": 3 Temple Place, Andover, Ma. 01810 U.S.A." @ 21,50 SAY ":" @ 22, 0 SAY ": TYPE ANY COMMAND" @ 22,24 GET COMMAND @ 22,50 SAY ":"+-------------------------------------------------+ : -- MESSAGE FROM THE AUTHOR'S GHOST -- : : I wrote this program because I'm interested in : : genealogies and computers. Being on a computer : : should make it easier to pass on to following : : generations because updating and distributing : : it becomes so easy. I only wonder whether : : dbaseII and cpm will still exist when it's my : : grand childrens turn to keep the thing up to : : date!! They'll probobly be updating it on their : : wristwatch or god knows what else. : : Well I wrote this thing while living in Paris : : in 1983 and Bill Graham who organised the first : : French Osborne user's group (Osborne was the : : first portable computer) suggested I toss it, : : like a note in a bottle, into the seas and : : rivers of public domaine software. Since you're : : reading this now, it must have washed up on the : : distant shore of your computer. If you like it, : : hate it, use it or whatever I'd like to know so : : please send me a note in a bottle: SAM WASHBURN : : 3 Temple Place, Andover, Ma. 01810 U.S.A. : : TYPE ANY COMMAND #COMMAND :  *** File B:GHOST.ZPR *** +-------------------------------------------------+ : -- MESSAGE FROM THE AUTHOR'S GHOST -- : : I wrote this program because I'm interested in : : genealogies and computers. Being on a computer : : should make it easier to pass on to following : : generations because updating and distributing : : it becomes so easy. I only wonder whether : : dbaseII and cpm will still exist when it's my : : grand childrens turn to keep the thing up to : : date!! They'll probobly be updating it on their : : wristwatch or god knows what else. : : Well I wrote this thing while living in Paris : : in 1983 and Bill Graham who organised the first : : French Osborne user's group (Osborne was the : : first portable computer) suggested I toss it, : : like a note in a bottle, into the seas and : : rivers of public domaine software. Since you're : : reading this now, it must have washed up on the : : distant shore of your computer. If you like it, : : hate it, use it or whatever I'd like to know so : : please send me a note in a bottle: SAM WASHBURN : : 3 Temple Place, Andover, Ma. 01810 U.S.A. : : TYPE ANY COMMAND #COMMAND :  * HELPEXP.FMT @ 0, 0 SAY "+-------------------------------------------------" @ 0,50 SAY "+" @ 1, 0 SAY ": E X P L O R E T H E G E N E A L O G Y." @ 1,50 SAY ":" @ 2, 0 SAY ": Valid responses to the ENTER COMMAND: :" @ 2,50 SAY ":" @ 3, 0 SAY ": -- TO GET STARTED ---" @ 3,50 SAY ":" @ 4, 0 SAY ": N to find someone via his (N)ame." @ 4,50 SAY ":" @ 5, 0 SAY ": R to find someone via his (R)eference No." @ 5,50 SAY ": :" @ 6, 0 SAY ": -- AFTER YOU HAVE A FAMILY DISPLAYED --" @ 6,50 SAY ":" @ 7, 0 SAY ": G (G)o display family of the * person." @ 7,50 SAY ":" @ 8, 0 SAY ": B display the (B)iography of the * person" @ 8,50 SAY ":" @ 9, 0 SAY ": F display the family of the (F)ather," @ 9,50 SAY ":" @ 10, 0 SAY ": M or (M)other," @ 10,50 SAY ":" @ 11, 0 SAY ": S or first (S)pouse," @ 11,50 SAY ":" @ 12, 0 SAY ": C or first (C)hild." @ 12,50 SAY ":" @ 13, 0 SAY ": Q to (Q)uit." @ 13,50 SAY ":" @ 14, 0 SAY ": -- TO MOVE THE * TO A NEW PERSON ON SCREEN --" @ 14,50 SAY ":" @ 15, 0 SAY ": 8 these keys move the * in the" @ 15,50 SAY ":" @ 16, 0 SAY ": 4 6 direction indicated." @ 16,50 SAY ":" @ 17, 0 SAY ": 2" @ 17,50 SAY ":" @ 18, 0 SAY ": -- YOU MAY NOW TYPE :" @ 18,50 SAY ":" @ 19, 0 SAY ": -> one of the above commandes; OR" @ 19,50 SAY ":" @ 20, 0 SAY ": -> ? to display next help screen; OR" @ 20,50 SAY ":" @ 21, 0 SAY ": -> RETURN key to go back to your family." @ 21,50 SAY ":" @ 22, 0 SAY ": ENTER YOUR COMMAND" @ 22,22 GET COMMAND @ 22,50 SAY ":"+-------------------------------------------------+ : E X P L O R E T H E G E N E A L O G Y. : : Valid responses to the ENTER COMMAND: : : : -- TO GET STARTED --- : : N to find someone via his (N)ame. : : R to find someone via his (R)eference No. : : : -- AFTER YOU HAVE A FAMILY DISPLAYED -- : : G (G)o display family of the * person. : : B display the (B)iography of the * person : : F display the family of the (F)ather, : : M or (M)other, : : S or first (S)pouse, : : C or first (C)hild. : : Q to (Q)uit. : : -- TO MOVE THE * TO A NEW PERSON ON SCREEN -- : : 8 these keys move the * in the : : 4 6 direction indicated. : : 2 : : -- YOU MAY NOW TYPE : : : -> one of the above commandes; OR : : -> ? to display next help screen; OR : : -> RETURN key to go back to your family. : : ENTER YOUR COMMAND #COMMAND :  *** File B:HELPEXP.ZPR *** +-------------------------------------------------+ : E X P L O R E T H E G E N E A L O G Y. : : Valid responses to the ENTER COMMAND: : : : -- TO GET STARTED --- : : N to find someone via his (N)ame. : : R to find someone via his (R)eference No. : : : -- AFTER YOU HAVE A FAMILY DISPLAYED -- : : G (G)o display family of the * person. : : B display the (B)iography of the * person : : F display the family of the (F)ather, : : M or (M)other, : : S or first (S)pouse, : : C or first (C)hild. : : Q to (Q)uit. : : -- TO MOVE THE * TO A NEW PERSON ON SCREEN -- : : 8 these keys move the * in the : : 4 6 direction indicated. : : 2 : : -- YOU MAY NOW TYPE : : : -> one of the above commandes; OR : : -> ? to display next help screen; OR : : -> RETURN key to go back to your family. : : ENTER YOUR COMMAND #COMMAND :  * HELPEXP2.FMT @ 0, 0 SAY "+-------------------------------------------------" @ 0,50 SAY "+" @ 1, 0 SAY ": E X P L O R E T H E G E N E A L O G Y." @ 1,50 SAY ":" @ 2, 0 SAY ": HELP SCREEN No 2." @ 2,50 SAY ":" @ 3, 0 SAY ": -- COMMANDS TO MODIFY YOUR GENEALOGY --" @ 3,50 SAY ":" @ 4, 0 SAY ": E to (E)dit the person at screen center." @ 4,50 SAY ":" @ 5, 0 SAY ": A to (A)dd new people." @ 5,50 SAY ":" @ 6, 0 SAY ": I to rebuild the (I)ndexes after a problm" @ 6,50 SAY ":" @ 7, 0 SAY ": L to print a List of people in the genlgy" @ 7,50 SAY ":" @ 8, 0 SAY ": Z to communicate with the author's ghost!" @ 8,50 SAY ":" @ 9, 0 SAY ": NOTE: It is better to execute these functions" @ 9,50 SAY ":" @ 10, 0 SAY ": via the above commands while you are in the" @ 10,50 SAY ":" @ 11, 0 SAY ": genealogy program than to do them directly" @ 11,50 SAY ":" @ 12, 0 SAY ": from the dbaseII dot (.) prompt." @ 12,50 SAY ":" @ 13, 0 SAY ": This is because when you are in the" @ 13,50 SAY ":" @ 14, 0 SAY ": genealogy program, the four indexes are" @ 14,50 SAY ":" @ 15, 0 SAY ": always correctly SET and thus you won't" @ 15,50 SAY ":" @ 16, 0 SAY ": foul them up." @ 16,50 SAY ":" @ 17, 0 SAY ":" @ 17,50 SAY ":" @ 18, 0 SAY ": -- YOU MAY NOW TYPE :" @ 18,50 SAY ":" @ 19, 0 SAY ": -> one of the above commands; OR" @ 19,50 SAY ":" @ 20, 0 SAY ": -> ? to display the next help screen; OR" @ 20,50 SAY ":" @ 21, 0 SAY ": -> RETURN key to go back to your family." @ 21,50 SAY ":" @ 22, 0 SAY ": ENTER YOUR COMMAND" @ 22,25 GET COMMAND @ 22,50 SAY ":"+-------------------------------------------------+ : E X P L O R E T H E G E N E A L O G Y. : : HELP SCREEN No 2. : : -- COMMANDS TO MODIFY YOUR GENEALOGY -- : : E to (E)dit the person at screen center. : : A to (A)dd new people. : : I to rebuild the (I)ndexes after a problm : : L to print a List of people in the genlgy : : Z to communicate with the author's ghost! : : NOTE: It is better to execute these functions : : via the above commands while you are in the : : genealogy program than to do them directly : : from the dbaseII dot (.) prompt. : : This is because when you are in the : : genealogy program, the four indexes are : : always correctly SET and thus you won't : : foul them up. : : : : -- YOU MAY NOW TYPE : : : -> one of the above commands; OR : : -> ? to display the next help screen; OR : : -> RETURN key to go back to your family. : : ENTER YOUR COMMAND #COMMAND :  *** File B:HELPEXP2.ZPR *** +-------------------------------------------------+ : E X P L O R E T H E G E N E A L O G Y. : : HELP SCREEN No 2. : : -- COMMANDS TO MODIFY YOUR GENEALOGY -- : : E to (E)dit the person at screen center. : : A to (A)dd new people. : : I to rebuild the (I)ndexes after a problm : : L to print a List of people in the genlgy : : Z to communicate with the author's ghost! : : NOTE: It is better to execute these functions : : via the above commands while you are in the : : genealogy program than to do them directly : : from the dbaseII dot (.) prompt. : : This is because when you are in the : : genealogy program, the four indexes are : : always correctly SET and thus you won't : : foul them up. : : : : -- YOU MAY NOW TYPE : : : -> one of the above commands; OR : : -> ? to display the next help screen; OR : : -> RETURN key to go back to your family. : : ENTER YOUR COMMAND #COMMAND :  * HELPEXP3.FMT @ 0, 0 SAY "+-------------------------------------------------" @ 0,50 SAY "+" @ 1, 0 SAY ": E X P L O R E T H E G E N E A L O G Y." @ 1,50 SAY ":" @ 2, 0 SAY ": HELP SCREEN No 3." @ 2,50 SAY ":" @ 3, 0 SAY ": -- HINTS ABOUT LOADING YOUR GENEALOGY (part 1)" @ 3,50 SAY ":" @ 4, 0 SAY ":" @ 4,50 SAY ":" @ 5, 0 SAY ": Each person you add must have a unique" @ 5,50 SAY ":" @ 6, 0 SAY ": REF:NO. This allows the system to uniquely" @ 6,50 SAY ":" @ 7, 0 SAY ": identify each person. When you relate a person" @ 7,50 SAY ":" @ 8, 0 SAY ": to others in the genealogy, you use his REF:NO" @ 8,50 SAY ":" @ 9, 0 SAY ": to do it." @ 9,50 SAY ":" @ 10, 0 SAY ": For example if person 1000 is the father of" @ 10,50 SAY ":" @ 11, 0 SAY ": person 1005, you must put 1000 in the field" @ 11,50 SAY ":" @ 12, 0 SAY ": FATHER:REF of person 1005's record." @ 12,50 SAY ":" @ 13, 0 SAY ": To help you keep track of the reference" @ 13,50 SAY ":" @ 14, 0 SAY ": numbers of the people in your geneology the L" @ 14,50 SAY ":" @ 15, 0 SAY ": command will print a list of all the people and" @ 15,50 SAY ":" @ 16, 0 SAY ": their reference numbers." @ 16,50 SAY ":" @ 17, 0 SAY ":" @ 17,50 SAY ":" @ 18, 0 SAY ": -- YOU MAY NOW TYPE :" @ 18,50 SAY ":" @ 19, 0 SAY ": -> one of the above commands; OR" @ 19,50 SAY ":" @ 20, 0 SAY ": -> ? to display the next help screen; OR" @ 20,50 SAY ":" @ 21, 0 SAY ": -> RETURN key to go back to your family." @ 21,50 SAY ":" @ 22, 0 SAY ": ENTER YOUR COMMAND" @ 22,25 GET COMMAND @ 22,50 SAY ":"+-------------------------------------------------+ : E X P L O R E T H E G E N E A L O G Y. : : HELP SCREEN No 3. : : -- HINTS ABOUT LOADING YOUR GENEALOGY (part 1) : : : : Each person you add must have a unique : : REF:NO. This allows the system to uniquely : : identify each person. When you relate a person : : to others in the genealogy, you use his REF:NO : : to do it. : : For example if person 1000 is the father of : : person 1005, you must put 1000 in the field : : FATHER:REF of person 1005's record. : : To help you keep track of the reference : : numbers of the people in your geneology the L : : command will print a list of all the people and : : their reference numbers. : : : : -- YOU MAY NOW TYPE : : : -> one of the above commands; OR : : -> ? to display the next help screen; OR : : -> RETURN key to go back to your family. : : ENTER YOUR COMMAND #COMMAND :  *** File B:HELPEXP3.ZPR *** +-------------------------------------------------+ : E X P L O R E T H E G E N E A L O G Y. : : HELP SCREEN No 3. : : -- HINTS ABOUT LOADING YOUR GENEALOGY (part 1) : : : : Each person you add must have a unique : : REF:NO. This allows the system to uniquely : : identify each person. When you relate a person : : to others in the genealogy, you use his REF:NO : : to do it. : : For example if person 1000 is the father of : : person 1005, you must put 1000 in the field : : FATHER:REF of person 1005's record. : : To help you keep track of the reference : : numbers of the people in your geneology the L : : command will print a list of all the people and : : their reference numbers. : : : : -- YOU MAY NOW TYPE : : : -> one of the above commands; OR : : -> ? to display the next help screen; OR : : -> RETURN key to go back to your family. : : ENTER YOUR COMMAND #COMMAND :  * HELPEXP4.FMT @ 0, 0 SAY "+-------------------------------------------------" @ 0,50 SAY "+" @ 1, 0 SAY ": E X P L O R E T H E G E N E A L O G Y." @ 1,50 SAY ":" @ 2, 0 SAY ": HELP SCREEN No 4." @ 2,50 SAY ":" @ 3, 0 SAY ": -- HINTS ABOUT LOADING YOUR GENEALOGY (part 2)" @ 3,50 SAY ":" @ 4, 0 SAY ":" @ 4,50 SAY ":" @ 5, 0 SAY ": Since a person's REF:NO is used to relate" @ 5,50 SAY ":" @ 6, 0 SAY ": other people to him, there are a few" @ 6,50 SAY ":" @ 7, 0 SAY ": important rules to follow:" @ 7,50 SAY ":" @ 8, 0 SAY ": 1. Make sure each person's REF:NO is unique." @ 8,50 SAY ":" @ 9, 0 SAY ":" @ 9,50 SAY ":" @ 10, 0 SAY ": 2. Never change a person's REF:NO." @ 10,50 SAY ":" @ 11, 0 SAY ":" @ 11,50 SAY ":" @ 12, 0 SAY ": 3. When you add a story for a person, be" @ 12,50 SAY ":" @ 13, 0 SAY ": sure to put his REF:NO in the first field" @ 13,50 SAY ":" @ 14, 0 SAY ": of each story line." @ 14,50 SAY ":" @ 15, 0 SAY ":" @ 15,50 SAY ":" @ 16, 0 SAY ": 4. The format of all date fields is YYYYMMDD" @ 16,50 SAY ":" @ 17, 0 SAY ":" @ 17,50 SAY ":" @ 18, 0 SAY ": -- YOU MAY NOW TYPE :" @ 18,50 SAY ":" @ 19, 0 SAY ": -> any valid command; OR" @ 19,50 SAY ":" @ 20, 0 SAY ": -> H to display the first help screen OR" @ 20,50 SAY ":" @ 21, 0 SAY ": -> RETURN key to go back to your family." @ 21,50 SAY ":" @ 22, 0 SAY ": ENTER YOUR COMMAND" @ 22,25 GET COMMAND @ 22,50 SAY ":"+-------------------------------------------------+ : E X P L O R E T H E G E N E A L O G Y. : : HELP SCREEN No 4. : : -- HINTS ABOUT LOADING YOUR GENEALOGY (part 2) : : : : Since a person's REF:NO is used to relate : : other people to him, there are a few : : important rules to follow: : : 1. Make sure each person's REF:NO is unique. : : : : 2. Never change a person's REF:NO. : : : : 3. When you add a story for a person, be : : sure to put his REF:NO in the first field : : of each story line. : : : : 4. The format of all date fields is YYYYMMDD : : : : -- YOU MAY NOW TYPE : : : -> any valid command; OR : : -> H to display the first help screen OR : : -> RETURN key to go back to your family. : : ENTER YOUR COMMAND #COMMAND :  *** File B:HELPEXP4.ZPR *** +-------------------------------------------------+ : E X P L O R E T H E G E N E A L O G Y. : : HELP SCREEN No 4. : : -- HINTS ABOUT LOADING YOUR GENEALOGY (part 2) : : : : Since a person's REF:NO is used to relate : : other people to him, there are a few : : important rules to follow: : : 1. Make sure each person's REF:NO is unique. : : : : 2. Never change a person's REF:NO. : : : : 3. When you add a story for a person, be : : sure to put his REF:NO in the first field : : of each story line. : : : : 4. The format of all date fields is YYYYMMDD : : : : -- YOU MAY NOW TYPE : : : -> any valid command; OR : : -> H to display the first help screen OR : : -> RETURN key to go back to your family. : : ENTER YOUR COMMAND #COMMAND :  * LIST.FMT @ 1, 7 SAY "L I S T T H E G E N E O L O G Y" @ 3, 0 SAY "Please turn the printer on and warn your wife that" @ 4, 0 SAY "you'll be making a lot of noise for a while !!" @ 6, 0 SAY "These listings can be helpful when you're adding" @ 7, 0 SAY "new people to the geneology because you'll need to" @ 8, 0 SAY "know the reference numbers of their parents, and" @ 9, 0 SAY "spouses." @ 12, 5 SAY "The list can be sorted by :" @ 14,15 SAY "(N)ame" @ 16,17 SAY "or" @ 18,15 SAY "(R)eference number." @ 20, 0 SAY "ENTER YOUR CHOICE --> N,R, or x to exit ?" @ 20,42 GET command L I S T T H E G E N E O L O G Y Please turn the printer on and warn your wife that you'll be making a lot of noise for a while !! These listings can be helpful when you're adding new people to the geneology because you'll need to know the reference numbers of their parents, and spouses. The list can be sorted by : (N)ame or (R)eference number. ENTER YOUR CHOICE --> N,R, or x to exit ? #command  *** File B:LIST.ZPR *** L I S T T H E G E N E O L O G Y Please turn the printer on and warn your wife that you'll be making a lot of noise for a while !! These listings can be helpful when you're adding new people to the geneology because you'll need to know the reference numbers of their parents, and spouses. The list can be sorted by : (N)ame or (R)eference number. ENTER YOUR CHOICE --> N,R, or x to exit ? #command MOTHER:REF+STR(BIRTH:DATE,8)Pp_pπppϠpπ_P_p_pp_P_POp_P__P_PD000010280201000010300101000010500101000010700101 000010700101000010700101 000010800101 000010990101000011050101110010510101110010540101110010560101 110010600101 110010680101110211020101110610940101110811070101110811080101000010280201000010300101000010500101000010700101 000010700101000010700101 000010800101 000010990101000011050101110110510101110110540101110110560101 110110600101 110110680101110311020101110510940101110911070101110911080101111211140101 1800180118021803180418211900190119021903191020002600450155501665017750188501995020:5021;5022<5023=5024>5025?5026@502*, !(LAST:NAME+FIRST:NAME)E,8)Pp_pπppϠpπ_P_p_pp_P_POp_P__P_PDOF ENGLAND MATHILDA  OF NORMANDIE WILLIAM II OF NORMANDY ROBERT OF NORMANDY WILLIAM OF NORMANDY WILLIAM I OF SCOTLAND MATHILDA OF NORMANDY  OF ????? MATHILDA OF ANJOU GEOFFREY OF BLOIS EUSTACE OF BLOIS STEPHAN I OF BLOIS STEPHEN OF CONVERSANA SYBIL OF ENGLAND MATHILDA OF FLANDERS MATHILDA OF GERMANY HENRY V OF LOUVAIN ADELICIA OF NORMANDIE HENRY I OF NORMANDIE OF NORMANDY ADELE OF NORMANDY RICHARD OF NORMANDY ROBERT OF NORMANDY WILLIAM OF NORMANDY WILLIAM I OF SCOTLAND MATHILDA OF NORMANDY ADELE OF NORMANDY RICHARD OF NORMANDY ROBERT OF NORMANDY WILLIAM OF NORMANDY WILLIAM I OF SCOTLAND OF ENGLAND MATHILDA  OF NORMANDIE WILLIAM II OF NORMANDY ROBERT OF NORMANDY WILLIAM OF NORMANDY WILLIAM I OF SCOTLAND MATHILDA OF NORMANDY ADELE OF NORMANDY RICHARD OF NORMANDY ROBERT OF NORMANDY WILLIAM OF NORMANDY WILLIAM I OF SCOTLAND OF ENGLAND WILLIAM OF FLANDERS MATHILDA OF GERMANY HENRY V OF LOUVAIN ADELICIA OF NORMANDIE HENRY I OF NORMANDIE WILLIAM II OF ENGLAND WILLIAM OF FLANDERS MATHILDA OF GERMANY HENRY V OF LOUVAIN ADELICIA OF NORMANDIE HENRY I OF NORMANDIE ** COMMAND FILE TO BUILD COMPLETELY NEW INDEXES FOR THE GENEOLOGICAL DATA BASE ** * * * NEWINDEX.CMD version 1.0 ********************************************************************************* USE PERSONS ERASE ? "*** BE PATIENT THIS TAKES A WHILE ***" PACK ? ? "BUILDING REF:NO INDEX" INDEX ON REF:NO TO REF ? " COMPLETE." ? ? "BUILDING FATHER INDEX" INDEX ON FATHER:REF+STR(BIRTH:DATE,8) TO FATHER ? " COMPLETE." ? ? "BUILDING MOTHER INDEX" INDEX ON MOTHER:REF+STR(BIRTH:DATE,8) TO MOTHER ? " COMPLETE." ? ? "BUILDING NAME INDEX" INDEX ON !(LAST:NAME+FIRST:NAME) TO NAME ? " COMPLETE." ? ? "CLEANING UP STORY FILE" USE STORIES DELETE ALL FOR REF:CODE = " " PACK ? "BUILDING STORY FILE INDEX" INDEX ON REF:CODE TO STORYREF ? " COMPLETE." ? ? "ALL INDEXES REBUILT" USE PERSONS SET INDEX TO REF,FATHER,MOTHER,NAME ** END OF PROGRAM ****** NS.CMD - COMMAND FILE TO PROMPT FOR AND FIND A PERSON BY NAME. **** **** version 1.0 STORE T TO TRUE STORE 0 TO CHOICE **** MAIN LOOP OF SUBROUTINE. * LOOP UNTIL HE CHOOSES ONE OF THE NAMES DISPLAYED OR SAYS HE * WANTS TO QUIT. DO WHILE TRUE *** ASK FOR LAST NAME STORE " " TO LNAME @ 22,0 @ 23,0 @ 22,0 SAY 'ENTER ALL OR PART OF LAST NAME OF PERSON TO FIND (Q=>QUIT)' GET LNAME PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!' READ IF TRIM(LNAME) = "Q" .OR. $(LNAME,1,1)=" " STORE F TO TRUE ENDIF SET INDEX TO NAME STORE T TO FIRST **** LOOP2 OF SUBROUTINE DO WHILE TRIM(LNAME) <> "Q" .AND. $(LNAME,1,1)<>" " STORE " " TO FNAME @ 23,0 SAY 'ENTER A FIRST NAME TOO IF YOU WANT' GET FNAME PICTURE '!!!!!!!!!!!!!!!' READ ** BUILD THE LOOKUP KEY. FILE KEY IS : LAST:NAME + FIRST:NAME. * NOTE THAT THE LAST NAME IS PADDED WITH SPACES TO A LENGTH OF 25. IF $(FNAME,1,1) = " " STORE TRIM(LNAME) TO NAMEKEY ELSE STORE LNAME+TRIM(FNAME) TO NAMEKEY ENDIF STORE 1 TO MAX STORE 99 TO CHOICE **** LOOP3 OF SUBROUTINE. * IT DISPLAYS THE NAMES OF PEOPLE WHO MATCH THE NAME HE GAVE. * AND ALLOWS THE USER TO SELECT THE ONE HE WANTS TO DISPLAY. DO WHILE MAX STORE 0 TO MAX ERASE SET INTENSITY OFF **** LOOP4 OF SUBROUTINE. * IT FILLS UP THE SCREEN WITH PEOPLE WHOSE NAME MATCHES THE ONE * HE GAVE. DO WHILE CHOICE = 99 IF FIRST STORE F TO FIRST FIND &NAMEKEY ELSE SKIP ENDIF IF #<>0 .AND. (.NOT. EOF) .AND. NAMEKEY=$(!(LAST:NAME+FIRST:NAME),1,LEN(NAMEKEY)) STORE MAX+1 TO MAX IF MAX>9 STORE STR(MAX,2) TO MAXS ELSE STORE STR(MAX,1) TO MAXS ENDIF STORE REF:NO TO REF&MAXS @ &MAXS,0 SAY MAXS+" "+TRIM(LAST:NAME)+', '+TRIM(FIRST:NAME)+" b: "+$(STR(BIRTH:DATE,8),1,4)+" ref= "+REF:NO ELSE STORE 0 TO CHOICE ENDIF IF MAX = 20 STORE 0 TO CHOICE ENDIF ENDDO SET INTENSITY ON IF MAX STORE -1 TO CHOICE DO WHILE (CHOICE<0 .OR. CHOICE>MAX) .AND. CHOICE<>99 @ 22,0 SAY 'SELECT A PERSON (0=QUIT, 99=CONTINUE DISPLAYING)' GET CHOICE PICTURE '99' READ ENDDO IF CHOICE <> 0 .AND. CHOICE <> 99 STORE 0 TO MAX STORE "Q" TO LNAME STORE F TO TRUE ELSE IF CHOICE=0 STORE 0 TO MAX ELSE ERASE ENDIF ENDIF ENDIF ENDDO STORE "Q" TO LNAME ENDDO ENDDO **** DISPLAY EITHER THE PERSON HE CHOSE OR OR LAST PERSON DISPLAYED BEFORE HE * SELECTED OPTION N IF AFTER ALL HE DIDN'T CHOOSE ANYONE. SET INDEX TO REF,FATHER,MOTHER,NAME ERASE IF CHOICE > 0 .AND. CHOICE <> 99 IF CHOICE>9 STORE STR(CHOICE,2) TO CHOICES ELSE STORE STR(CHOICE,1) TO CHOICES ENDIF STORE REF&CHOICES TO M1 STORE M1 TO CURPER DO EXPLORE1 ELSE IF VAL(CURPER) <> 0 DO EXPLORE1 ENDIF ENDIF *** LOOP TO RELEASE MEMORY VARIBLES. *** STORE 1 TO MAX DO WHILE MAX<21 IF MAX<10 STORE STR(MAX,1) TO MAXS ELSE STORE STR(MAX,2) TO MAXS ENDIF RELEASE REF&MAXS STORE MAX+1 TO MAX ENDDO RETURN REF:NOC٪FATHER:REFCݪMOTHER:REFCFIRST:NAMECMID:NAMECLAST:NAMECNICK:NAMECBIRTH:DATEN+DEATH:DATEN3SEXC;SPSE1:REFC<SPSE1:DATEN@SPSE1:CHILNHSPSE2:REFCJSPSE2:DATENNSPSE2:CHILNVSPSE3:REFCXSPSE3:DATEN\SPSE3:CHILNd 110000000000William I of Normandy the Conqueror 1028020110870401m11011049010110 0 110100000000Mathilda of Flanders 1030010110910101f11001049010110 0 110200000000Sybil of Conversana 1070010111250101f110311000101 3 0 110311001101Robert of Normandy Curthose 1051010111340101m110211000101 3 0 111011021103William Clito of Normandy 1102010111100101m 0 0 0 110411001101Richard of Normandy 1054010110810101m 0 0 0 110511001101Adele of Normandy 1056010111240101f110611800101 5 0 110600000000Stephen of Blois 1050010111200101m110511800101 5 0 110711001101William II of Normandie Rufus 1060010111000901m 0 0 0 110811001101Henry I of Normandie 1068010111360101m110910950101 2111711200101 0 110900000000Mathilda of Scotland 1070010111180101f110810950101 2 0 0 111700000000Adelicia of Louvain 1080010111400101f110810200101 0 0 0 111100000000Mathilda of ????? 1099010111500101f111210250101 5 0 0 111211061105Stephan I of Blois 1094010111540101m111110250101 5 0 0 111311081109William of England 1107010111201125m 0 0 0 0 111411081109Mathilda of England 1108010111600101f111511200101 1111611250101 2 111500000000Henry V of Germany Emperor 1070010111250101m111411200101 1 0 0 111600000000Geoffrey of Anjou Count 1105010111660101m111411200101 2 0 0 111711111112Eustace of Blois 1114010111300101m 0 0 0 0 1102010111100101m 0 0 0 110411001101Richard of Normandy 1054010110810101m 0 0 0 110511001101Adele of Normandy 1056010111240101f110611800101 5 0 110600000000Stephen ?REF:NOME+FIRST:NAMEAMEpPp_pπppϠpπ_P_p_pp_P_POp_P__P_PD1100110111021103110411051106 1107 1108 11091110 111111121113111411151116 11171117{11171117120012011202 1203 1204 1210 1300 1400"1401#1402$1403!15001600160116021100110111021103110411051106 1107 1108 11091110 111111121113111411151116 11171117{11171117120012011202 1203 1204 1210 1300 1400"1401#1402$1403!150016001601160216031700 1800180118021803180418211900190119021903191020002600450155501665017750188501995020:5021;5022<5023=5024>5025?5026@5024T2REF:CODECpTEXTC-p 1100William inherited the duchy of Normandy at th 1100age of 7 when his father left and died while 1100on a pilgrimmage to the holy land. He spent 1100the first few years hiding from the barons 1100who were trying to kill him. Finally in 1047 1100after recruiting the help of the king of 1100France he defeated the barons at the battle 1100Val es dunes. He spent the next few years 1100consolidating his power in Normandie. 1100William's uncle Edward the Confessor was king 1100England and William felt this gave him the 1100right to the English crown. However he had to 1100defeat Harold at the battle of Hastings in 1100order to finally become king in 1066. He 1100changed the course of english history by 1100doing this. 1100He was s shrewd, courageous, ruthless man, 1100capable of mercy but also of inflicting 1100torture when diplomacy wouldn't work. 1100William died as he lived from injuries 1100received on his way to paris to attack the 1100king of france for having insulted him. 1107William, called rufus because of his ruddy 1107complexion, was a man illtempered little both 1107in mind and stature. By his oppression and 1107cruelty he was loathsome to well nigh all his 1107people. He was at least a brave and capable 1107warrior. Malcolm of scotland paid him hommage 1107and he fought successfully in France. He was 1107killed by accident while hunting. He was so 1107disliked that the church refused religious 1107rites to his remains. There are those who say 1107he was a flamming homosexuel. 1108Henry "Beauclerc" was scholarly and well 1108educated. He preferred craft to force. His 1108marriage to the scottish princess won him 1108much support among his people. He also won 1108back the support of the church and abbeys 1108by allowing them to collect their rents 1108normally. He defeated his brother Robert at 1108at the battle of Tinchebray in Normandie and 1108imprisoned him for life in England. This gave 1108him title to all England and Normandie making 1108him and his descendants very powerful among 1108the european monarchs. He left no heirs as 1108his only son was drowned in a shipwreck. 1112Stephen became king by breaking a promise to 1112his uncle after his death. He took the throne 1112instead of giving it to his cousin Mathilda. 1112His reign was a dismal succesion of civil 1112wars, rebellions, squabbles, principally 1112about Mathilda.  normally. He defeated his brother Robert at 1108at the battle of Tinchebray in Normandie and 1108imprisoned him for life in England. This gave 1108him title to all England and Normandie making 1108him and his descendants very powerful among 1108the european monarchs. He left no heirs as 1108his only son was drowned in a shipwreck. 1112Stephen became king by breaking a promise to 1112his uncle after his death. He took the throne 1112instead of giving it to his cousin Mathilda. 1112His reign was a dismal succesion of civil 1112wars, rebellions, squabbles, principally 1112about Mathilda.  of 10 years old. 1800From there he went on to Milton academy 1800where he was an average student but a great 1800athlete following in his father's tradition. 1800He had a one-hitter for the varsity baseball 1800team among other exploits. 1203John was born in Bogata Colombia. 12***************************************************** * * * STORY.CMD Display story of * person and * * version 1.0 allow editing or appending. * ***************************************************** *** DISPLAY SCREEN HEADER *** FIND &CURPER ERASE @ 1,18 SAY "S T O R Y O F " @ 2,15 SAY TRIM(FIRST:NAME)+" "+ TRIM(MID:NAME)+' '+TRIM(LAST:NAME)+' ('+REF:NO+')' @ 3,18 SAY "Born:" @ 3,24 SAY BIRTH:DATE USING "#### ##/##" IF DEATH:DATE @ 3,36 SAY "Died:" @ 3,42 SAY DEATH:DATE USING "#### ##/##" ENDIF @ 4,0 SAY "__________________________________________________" *** SEE IF THERE'S A STORY ON FILE *** USE STORIES INDEX STORYREF FIND &CURPER IF #=0 @ 22,0 SAY "No story on file for this person. TYPE ANY KEY" WAIT ELSE *** DISPLAY THE STORY ON THE SCREEN STORE 6 TO MAX @ 6,0 DO WHILE MAX ? TEXT SKIP IF CURPER<>REF:CODE .OR. EOF STORE 0 TO MAX ELSE IF MAX=19 @ 22,0 SAY "TYPE ANY KEY TO CONTINUE" WAIT STORE 6 TO MAX DO WHILE MAX<22 STORE STR(MAX,2) TO LINE @ &LINE,0 STORE MAX+1 TO MAX ENDDO @ 6,0 ELSE STORE MAX+1 TO MAX ENDIF ENDIF ENDDO ENDIF *** OFFER TO LET HIM QUIT EDIT OR APPEND *** STORE "Q" TO COMMAND @ 22,0 SAY "(Q)uit, (E)dit story, or (A)ppend to story? " get command picture '!' READ IF COMMAND="E" IF # FIND &CURPER BROWSE ELSE @ 22,0 @ 22,0 SAY "SORRY I CAN'T EDIT A STORY THAT DOESN'T EXIST. Type any key." WAIT ENDIF ELSE IF COMMAND="A" ERASE SET INTENSITY OFF @ 11,10 SAY "Remember. When appending for this person," @ 13,20 SAY " REF:CODE = "+CURPER SET INTENSITY ON @ 22,0 SAY "TYPE ANY KEY TO CONTINUE" WAIT SET CARRY ON APPEND ENDIF ENDIF *** FINISH UP BY OPENING UP FILES AND REDISPLAYING OLD FAMILY *** STORE M1 TO CURPER USE PERSONS INDEX REF,FATHER,MOTHER,NAME DO EXPLORE1 RETURNSTORE 0 TO MAX ELSE IF MAX=19 @ 22,0 SAY "TYPE ANY KEY TO CONTINUE" WAIT STORE 6 TO ?REF:CODEME+FIRST:NAME)E,8)Pp_pπppϠpπ_P_p_pp_P_POp_P__P_PD OF ????? MATHILDA OF ANJOU GEOFFREY OF BLOIS EUSTACE OF BLOIS STEPHAN I OF BLOIS STEPHEN OF CONVERSANA SYBIL OF ENGLAND 411001100110011001100110011001100 1100 1100 1100 1100 1100110011001100110011001100110011001100110711071107110711071107110711071107 1107!1107"1108#1108$1108%1108&1108'1108(1108)1108*1108+1108,1108-1108.1108/11120111211112211123111241112 ADELICIA OF NORMANDIE HENRY I OF NORMANDIE store 1 to cont do case case 1=1 ? "this should print" case 1=2 do case case 1=1 ? "it made it to second level case" store cont+1 to cont endcase ? "this should not print" otherwise ? "wrong. It did the otherwise." endcase Return MIKE SALLY SAMUEL WILLIAM WILLIAM P/`P/ _P/ Po P/ P/ Po _P _0_P _P_P P/ _P_Po _P _0_P _ CCC C CC o _P _0_P _ CCC C CC p/ p/ po _p/ p`PO`_p/ ?Po _po _Po _P/ _Po ?p/0?P/ p/ / P/`P/ ?P/ / P/ 0/ P/`/ po`p/`po po`p/ _Pp`?P _P/_0 _PO _P`po _Pop/ _/ _P/ P/ _P/ P/ _P/ P/ _? _P/`P/ _P/ Po P/ P/ Po _P _0_P _P_P P/ _P_P_P/ P/_P/_Po_P/ P/ _Po _P/ SALLY SAMUEL WILLIAM WILLIAM P/`P/ _P/ Po P/ P/ Po _P _0_P _P_P P/ _Pre 1 to cont do case case 1=1 ? "this should print case 1=2 do case case 1=1 ? "it made it to second level case" store cont+1 to cont endcase ? "this should not print" otherwise ? "wrong. It did the otherwise." endcase Return MIKE SALLY SAMUEL WILLIAM WILLIAM P/`P/ _P/ Po P/ P/ Po _P _0_P _P_P P/ _P_Po _P _0_P _ CCC C C