-READ ME  ͤ STRINGS DEC  STRINGS DZC; STRINGS IZC"  TESTER PCDAת TESTER PZS]w; If using PascalP version 3.1.9 up, READ(f, string), LENGTH(string) standard procedures may be used in place of READSTRING and LENGTH in this package. Similarly you may use READLN(f, string). These standard procedures also all use the default input file when the file specification is omitted. The new READ function is slightly different from READSTRING in that it stops reading when the string is full, or on eoln, whichever comes first. This allows a long line to be read into multiple strings. If you want to flush the line remnant use READLN. In addition you do not supply the maxstring parameter. Simply delete the READSTRING and LENGTH procedures from STRINGS.INC file if you have version 3.1.9 up. Make suitable modifications in the TEST program. Note that 3.1.9 will also accept this package unchanged. 3.1.9 also provides STRINGCP(VAR s1, s2 : string) : integer; function, which compares strings. It returns -1, 0, +1 for s1 >, =, < s2., and thus makes the STRINGCLEAN function in this package unnecessary. I am not altering this package so that it will continue to function on earlier versions, and on Standard Pascal systems. I have however crunched the members of this library. The PascalP 3.1.9 manual gives a further explanation of the added string functions. C.B. Falconer (86/02/12) (* includable module for string functions, declarations *) (*$x+,h+ allow multiple declaration sections *) CONST eos = (:0:); (* end of string marker *) (*$s+*) maxstring = 80; xmaxstring = 81; (* maxstring + 1 *) TYPE xstrindex = 0..maxstring; strindex = 1..maxstring; xxstrindex = 1..xmaxstring; string = PACKED ARRAY[xxstrindex] OF char; (* eos terminated *) (*$x- restore options *) 8vSTRINGS.DOC[4k 85/11/14]%  '3 )FqA1&s(o1MSqt4Hp5F.! hAHe9ACԀy<#B.bLƓf 8ި 9N'SMl@aU27'R ;Ӎ3,A)$…s:M"ifM?a6jl<ܡL *IB H͂ΏvO3)E$Ts[wA&5Eg '# rLZSO S,ӚR[sam1fPN$'4q)3J<1!r(j+.907 mఎ 0C`8+)']a j#d; Bx"" (*$s H6 *)~㚨:R.7CF,B"Ar)b.'O򬸻국79,xި)r'pi d+ 4*|/1@:R 8{5   hH'3@ bK<2H·! x9N4"R<$0@+8RƉ*>,+~56K@7$k:#Cxظ(\3s9= lZJ*b#k~ /V6D'Z! QJ!+H878猊 3NЄBH!xAccu_$(M)/Benn,jKD9*ܞIHjѻ6 m(; 2uKyH(8x/6Zc@:u8CN(s#u04 8F,# c3I,2yO7 !mr. RD5¾;/;S UNJ"9ahqt9'[b7hm$ ) Z$[g8R!4@ ڂvAP$ 2pcX(I 9$(#dpTiX Pl<HKUYq18(K!(K a+ f2僓lT)# c0D:X|2p@ oa7G(ƸJz6: FJKr$NGx 9H "$gJG9G>$IbHxN9j|0q=C"H:@1.2f?n p 1Co* #b{?QFn "AZ<Lrᄎ5F[i&mԧ) <NHJ*Xgv7  tS93Ω]Rv> .Q H2U7Lj 91ATS'Ti|ytfE| ~N} (9Ehgk횫2KNUҜU`¼!ʚ<@4vq\K6SႣp5H1f ;eo@(BiT@9RS)vSTRINGS.INC[9k 87/02/12]% B @l7 nLcIe7)o2 a>e9M&l4t9K1<@*APA v0M Χ3#1D I@S!I3SsEuTˎZ-m_F^w%t@@r23pa'c).e*1q F08WO1rLi ^1G(7}Eaj;0 H<^?ã'HhP7AK3*^Od. xZHsN) " $, $Ҫ2vHB%Zkx74B*ơ ɸC0LQIJ@tŊR *1k3ZBih:퍊90,$0ҷXU!8'O C3HcV¸$'|1 PH@<0uL"ֵf'T D2LKh-"S(W1a@xh` `%w9%('EsN|c1AGQ} ])I8T'J,ۃ<[ J*!07,ʬQgs:$syWum-9ubyuԯ: W]FQ¨!HZ`"O+dU5*:Q)ڧ61.SL 5OjU}&F`qҰ,K Q/wZl;^~$Cpk*Z*r궸ن# S0'-8;DZ@;kIIYD(Yd'' 4 GF7" DPP##2D5Ҷ N@ek&Cq B$ʱea䘸ë{!͂%  yp+P\[nSʫ&O3lʾ̺;oذAbOA9{!RC/l6˒: l AC$(6~RSa+;lr ǘ' tŘHD d+UF9xЊ<0isE-HZ|1[9eb( #JJ +V0R[Dd R_=/\yA8"1;'4y),!Х֊fe|]cqPU u+iYR i&dzs,ѰPvhMa28Ú!҅* _!+H tISaBe ҆*֙0xF "EOg96C$]vdX]JyU Zb PS@j5i6 Ӧ*1ڧ"9zPQȈkwdĜPo$2l0n nb"U$jQ*$:`Y[!k Ql`Զ$J*@Tg- # XEZ\˚X\1'1ֈG)Z9otZ+a֭Z^¿z7XM/fľ9K(a' A/=pl.ݑ#d"BQ$8>Ŵar`eD{mJIZJ3%0E͗a3IHsWe},!T\FB.--T-䯯P]*Ƀw‘DLeQK\j./Ȇ|>PJV_͠e{rۼn\xӛ9bWèbHz`RnʰƫMetP2AYfUd:BJ !&-Fő#r"XCyy-4ٻ_5_ :; ^TaIl#DvQ:v*9jdݫ潑k͉+9$ 8o ",d]RlpZLr[u3ig P馡^5l0P €E!QsTSW fܖӠ ېL)\+SWkS׌g4bi*n_CC/6tQs1G^}"HX1#|^P)CH,eC $xԼc JVI2A) @JK8PH ǘRIXXTJ],Y|"Î9bdS6SZ͑S)wX40ʵWO.J5y W+/BqjL',ee!qCC CDAy ߰ ։V/?X8 zQn ~Qia~~z~xzՆg? |Qag@]gK ~gL~/gM ~Qi ~gO ~Qa~~gPg\~g]~"g^ g_⧉ aag`@ga~P6gb~Qi gc~Q⧉ a~Qagdgqnˋ gr aagt~|gv|| |Qn~Qia~~gw |Qi| ~Pgx|P |QagyXg ~Q~|~ ~Qa~~|~gg ~P~|~ ~Q⧉ a~~|~g Qaggg  g Pg |gi |Q |]|➃zgz|mgz Xg~~x<~g~Qi z~Qi gz|~~~x~ȆgzPgg~ ~|C~g͊ ~Qi]a]zgΊ ~Q⧊ ~Qi a~~|~gg܊ c ~g݊~Qi ~~gފ~Qi-!g~P P kc]g~Qi09Bg k~Qi0c~~g~Qi09g~Pggg 0g  gQ⧉aPgg g -a~ g~g  ~QaggRz i z gSgh~ ~|e~gi~z (z f~Qz \) "z "gjz f~Qgk"z z ~~|~glgs z gtf Qf QQ\ > z "lguf Qf QQ\ < z "?gvf Qf QQ\ = z "gw\ BUG z "gx z z gy'gfQ\Initialized stringfQag~~\sg\ Enter string[ z "{z \]:z "z gz f{Q{~ sgz gz \Trailing blanks removedz "z g~~$sf{Q{~ sggz \In a field of 60 charsz "z g~~>sg"z z f{Q<"z z {~ sdžg z g~<~!s{ z {~ sgz g\ to continuez "z z gfQ fQ gfQQfQQfQfQQfQQfQgz \"Single blanks at end, concatenated""z "z ggz \Substring at 4 for 8 charsz "z g~~psgf{QQf^ g{z (z f^z \) "z "gz f^"z z {~ sgz \String relationshipsz "z gfQQfQ g~~$sf{Q {~ sgg~~Fsg{~~s{{{~ s{~ sg\ to continuez "z z gz \Enter string to search for =z "z gz fg~~sgff{Q sg{gz f{Qf{Qz g {z ]^z z gff{Q{P sg{ {z ]^z z g{.g\Not found in stringz "{z z {~ sgz \Upshifting stringsz "z g~~$sf{Q {~ sggz \Numeric values of stringsz "z g~~vsg{z gf{Qf\ has no value z "g\ = z "{z gz {~ sg\Again (y/n) ? z "z gY]yXg$z\@y({ & evTESTER.PAS[5k 85/11/14]%  D9HM 8aPi7A`#h(P*N#8rg2L~?!D1\d2AyS x:1%7bE`7F2Nb  Cb$ENM`X0^,"pк 'q4Qs C&G- hp  F 4y>"TA%a7M*[͖q@w21TC*Iʦe8)[SFwF z9o6+g>ʋ#r3 9 ckȄ"K̐+IOSA@#b # 7>+*P ޳"HذkJpp"# ð4.O@HH x""8'B荣h7X44h-Kd0C ޥ:3 A?3;,+*8Ls,7jp&3Nq~% +|Dal9"Hp6:5@ND@.sEr,'$R'KR0%@;C8棌#CN#+Z,b05Y3Z/''=Y. `'Q$Cpdb$q ;Hb#(NxϬ@-"ZN]#<3*k;J:`|#I u(*ɼn-. ҭ-&HכB9+oڷj;n0,{̊Du.]{R"% 2yAxD}{߼޺Lg0*[ժ&cz+EzdĜ*}~2A`  BB%eU7 q[p[z"Kx4[17(of*42``nɻJJIbp' 8p(B(O n128`8EdŝV~at?E@xE(8[nX;:D5Ok!P#Wk+x62~2Ia,(S7ӈg7 {o<.[ODzC.ypA,eMLF(dcȍLpE蓀' 5)EQ=5@"PnMT멸x`c"%[9f\s5PJP=PBM@WVZLN"ښ(41fJm͍,_J,3:;npZ!6\. أ}yu7y W{u5˪0cc_dLLk4/] A+3dϚkk YhQݠ /gG{nxH5}&AWM#O}mYO"Zr^d/M6z*Not ˺-Ԯز{Nl7 25[P'°C ث2v{4ӡy-ȏV=jnW ]}co}&z 7!0PAxn-hA :'B RT^z 'l|كE"I`dr,x '