(FILECREATED " 5-Dec-85 04:18:39" ("compiled on " {ERIS}LIBRARY>CMLSTRING.;11) " 5-Dec-85 03:54:27" recompiled changes: \SP-STRING-COMPARE STRING<* STRING>* STRING<=* STRING>=* STRING> STRING<= STRING>= STRING/= STRING-LESSP STRING-GREATERP STRING-NOT-GREATERP STRING-NOT-LESSP STRING-NOT-EQUAL STRING-UPCASE STRING-DOWNCASE STRING-CAPITALIZE NSTRING-UPCASE NSTRING-DOWNCASE NSTRING-CAPITALIZE STRING-LEFT-TRIM STRING-RIGHT-TRIM STRING-TRIM in "INTERLISP-D 17-Oct-85 ..." dated "17-Oct-85 19:19:58") (FILECREATED " 5-Dec-85 04:17:27" {ERIS}LIBRARY>CMLSTRING.;11 27040 changes to: (FNS STRING-LESSP STRING-GREATERP STRING-NOT-GREATERP STRING-NOT-LESSP STRING-NOT-EQUAL STRING-LEFT-TRIM STRING-RIGHT-TRIM STRING-TRIM \SP-STRING-COMPARE NSTRING-UPCASE NSTRING-DOWNCASE NSTRING-CAPITALIZE STRING> STRING<= STRING>= STRING/= STRING<* STRING>* STRING<=* STRING>=* STRING-UPCASE STRING-DOWNCASE STRING-CAPITALIZE) (MACROS FOR-SUBSTRING WITH-ONE-STRING WITH-STRING WITH-TWO-STRINGS STRING<>=*-BODY ) (VARS CMLKBRSTRINGCOMS) previous date: " 5-Dec-85 00:35:05" {ERIS}LIBRARY>CMLSTRING.;7) STRING D1 (I 0 X) *@‘@@dlð•É ˜k@ o@ (47Q CL:ERROR 36Q ALLOCSTRING 33Q CHAR-INT 25Q CHARACTERP) (17Q SYMBOL) ( 43Q "~S cannot be coerced to a string.") \SP-STRING-COMPARE D1 (P 4 I P 3 I2 P 2 I1 I 5 END2 I 4 START2 I 3 STRING2 I 2 END1 I 1 START1 I 0 STRING1) AEµC kÕBµ@ kÕADjKHó³#JIó³@J CK ð¡LJkÔºKkÔ»LkÔ¼°Üh(53Q CHAR 46Q CHAR 17Q CL:LENGTH 6 CL:LENGTH) NIL () STRING=* D1 (L (5 END2 4 START2 3 END1 2 START1 1 STRING2 0 STRING1)) >@lð˜@Éb¿C¦@ b¿Alð˜AÉb¿E¦A b ¿@BCADE hð(71Q \SP-STRING-COMPARE 54Q CL:LENGTH 24Q CL:LENGTH) (41Q SYMBOL 11Q SYMBOL) () STRING/=* D1 (L (5 END2 4 START2 3 END1 2 START1 1 STRING2 0 STRING1)) <@lð˜@Éb¿C¦@ b¿Alð˜AÉb¿E¦A b ¿@BCADE (71Q \SP-STRING-COMPARE 54Q CL:LENGTH 24Q CL:LENGTH) (41Q SYMBOL 11Q SYMBOL) () STRING<* D1 (L (5 END2 4 START2 3 END1 2 START1 1 STRING2 0 STRING1)) f@lð˜@Éb¿C¦@ b¿Alð˜AÉb¿E¦A b ¿@BCADE Hd²%dC ‘HE ‘h@H AHDBÕÔ ´H(140Q CHAR< 135Q CHAR 124Q CHAR 114Q %%= 105Q %%= 71Q \SP-STRING-COMPARE 54Q CL:LENGTH 24Q CL:LENGTH) (41Q SYMBOL 11Q SYMBOL) () STRING>* D1 (L (5 END2 4 START2 3 END1 2 START1 1 STRING2 0 STRING1)) f@lð˜@Éb¿C¦@ b¿Alð˜AÉb¿E¦A b ¿@BCADE Hd²%dE ‘HC ‘h@H AHDBÕÔ ´H(140Q CHAR> 135Q CHAR 124Q CHAR 114Q %%= 105Q %%= 71Q \SP-STRING-COMPARE 54Q CL:LENGTH 24Q CL:LENGTH) (41Q SYMBOL 11Q SYMBOL) () STRING<=* D1 (L (5 END2 4 START2 3 END1 2 START1 1 STRING2 0 STRING1)) i@lð˜@Éb¿C¦@ b¿Alð˜AÉb¿E¦A b ¿@BCADE HµCBÕdC ‘HE ‘h@H AHDBÕÔ ´H(143Q CHAR< 140Q CHAR 127Q CHAR 117Q %%= 110Q %%= 71Q \SP-STRING-COMPARE 54Q CL:LENGTH 24Q CL:LENGTH) (41Q SYMBOL 11Q SYMBOL) () STRING>=* D1 (L (5 END2 4 START2 3 END1 2 START1 1 STRING2 0 STRING1)) i@lð˜@Éb¿C¦@ b¿Alð˜AÉb¿E¦A b ¿@BCADE HµCBÕdE ‘HC ‘h@H AHDBÕÔ ´H(143Q CHAR> 140Q CHAR 127Q CHAR 117Q %%= 110Q %%= 71Q \SP-STRING-COMPARE 54Q CL:LENGTH 24Q CL:LENGTH) (41Q SYMBOL 11Q SYMBOL) () STRING< D1 (L (0 \CL:LAMBDA.ARGCNT) P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) ØelHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿IJMOOO (325Q STRING<* 20Q ERROR) (263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 14Q "Too few args") STRING> D1 (L (0 \CL:LAMBDA.ARGCNT) P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) ØelHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿IJMOOO (325Q STRING>* 20Q ERROR) (263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 14Q "Too few args") STRING<= D1 (L (0 \CL:LAMBDA.ARGCNT) P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) ØelHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿IJMOOO (325Q STRING<=* 20Q ERROR) (263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 14Q "Too few args") STRING>= D1 (L (0 \CL:LAMBDA.ARGCNT) P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) ØelHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿IJMOOO (325Q STRING>=* 20Q ERROR) (263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 14Q "Too few args") STRING= D1 (L (0 \CL:LAMBDA.ARGCNT) P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) ØelHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿IJMOOO (325Q STRING=* 20Q ERROR) (263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 14Q "Too few args") STRING/= D1 (L (0 \CL:LAMBDA.ARGCNT) P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) ØelHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿IJMOOO (325Q STRING/=* 20Q ERROR) (263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 14Q "Too few args") STRING-LESSP D1 (L (0 \CL:LAMBDA.ARGCNT) P 24Q CHAR2 P 23Q CHAR1 P 22Q INDEX2 P 21Q INDEX1 P 20Q SLEN2 P 17Q SLEN1 P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) lelHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿Ilð–IɹO¦I _¿Jlð–JɺO¦J _¿OMÕOOÕjOó¤jO ó—o ¿MO"O"O §O$O šOO ²'hIO" _&¿JO$ _(¿O&O( «O&O( ´O"O"kÔO$kÔ_$¿_"°´(526Q CHAR-LESSP 516Q CHAR-EQUAL 504Q CHAR 473Q CHAR 461Q %%= 451Q %%= 441Q %%= 423Q CL:ERROR 363Q CL:LENGTH 334Q CL:LENGTH 20Q ERROR) (351Q SYMBOL 322Q SYMBOL 263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 420Q "Improper bounds for string comparison." 14Q "Too few args") STRING-GREATERP D1 (L (0 \CL:LAMBDA.ARGCNT) P 24Q CHAR2 P 23Q CHAR1 P 22Q INDEX2 P 21Q INDEX1 P 20Q SLEN2 P 17Q SLEN1 P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) lelHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿Ilð–IɹO¦I _¿Jlð–JɺO¦J _¿OMÕOOÕjOó¤jO ó—o ¿MO"O"O §O$O šOO ²'hIO" _&¿JO$ _(¿O&O( «O&O( ´O"O"kÔO$kÔ_$¿_"°´(526Q CHAR-GREATERP 516Q CHAR-EQUAL 504Q CHAR 473Q CHAR 461Q %%= 451Q %%= 441Q %%= 423Q CL:ERROR 363Q CL:LENGTH 334Q CL:LENGTH 20Q ERROR) (351Q SYMBOL 322Q SYMBOL 263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 420Q "Improper bounds for string comparison." 14Q "Too few args") STRING-NOT-GREATERP D1 (L (0 \CL:LAMBDA.ARGCNT) P 24Q CHAR2 P 23Q CHAR1 P 22Q INDEX2 P 21Q INDEX1 P 20Q SLEN2 P 17Q SLEN1 P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) celHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿Ilð–IɹO¦I _¿Jlð–JɺO¦J _¿OMÕOOÕjOó¤jO ó—o ¿MO"O"O §O$O ’O"IO" _&¿JO$ _(¿O&O( ªO&O( ²ÜhO"kÔO$kÔ_$¿_"°½(516Q CHAR-GREATERP 506Q CHAR-EQUAL 474Q CHAR 463Q CHAR 451Q %%= 441Q %%= 423Q CL:ERROR 363Q CL:LENGTH 334Q CL:LENGTH 20Q ERROR) (351Q SYMBOL 322Q SYMBOL 263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 420Q "Improper bounds for string comparison." 14Q "Too few args") STRING-NOT-LESSP D1 (L (0 \CL:LAMBDA.ARGCNT) P 24Q CHAR2 P 23Q CHAR1 P 22Q INDEX2 P 21Q INDEX1 P 20Q SLEN2 P 17Q SLEN1 P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) celHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿Ilð–IɹO¦I _¿Jlð–JɺO¦J _¿OMÕOOÕjOó¤jO ó—o ¿MO"O"O §O$O ’O"IO" _&¿JO$ _(¿O&O( ªO&O( ²ÜhO"kÔO$kÔ_$¿_"°½(516Q CHAR-LESSP 506Q CHAR-EQUAL 474Q CHAR 463Q CHAR 451Q %%= 441Q %%= 423Q CL:ERROR 363Q CL:LENGTH 334Q CL:LENGTH 20Q ERROR) (351Q SYMBOL 322Q SYMBOL 263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 420Q "Improper bounds for string comparison." 14Q "Too few args") STRING-NOT-EQUAL D1 (L (0 \CL:LAMBDA.ARGCNT) P 26Q INDEX2 P 25Q INDEX1 P 24Q INDEX2 P 23Q INDEX1 P 22Q INDEX2 P 21Q INDEX1 P 20Q SLEN2 P 17Q SLEN1 P 16Q END2 P 13Q START2 P 10Q END1 P 5 START1 P 2 STRING2 P 1 STRING1) ËelHñ˜oH ¿@AÂHl¼»LdKó–¿hµj°agð”LkØ°òLlÔ\°åa½Hl_¿¾OdNó–¿hd³°agð•OkØ°ñOlÔ_°âa_¿Hl_¿_¿OdOó–¿hµj°agð•OkØ°ñOlÔ_°áa_¿Hl_¿_¿OdOó–¿hd³°agð•OkØ°ñOlÔ_°áa_¿Ilð–IɹO¦I _¿Jlð–JɺO¦J _¿OMÕOOÕjOó¤jO ó—o ¿jOó¤jO ó—o OO ²4MOO"O ‘hIO" JO$ ¢O"O"kÔO$kÔ_$¿_"°ØO Oó²2MOO&O ¯IO& JO( ¢O&O&kÔO(kÔ_(¿_&°ÚMOO,O ¯IO* JO, ¢O*O*kÔO,kÔ_,¿_*¿°×(665Q CHAR-EQUAL 662Q CHAR 654Q CHAR 645Q %%= 605Q CHAR-EQUAL 602Q CHAR 574Q CHAR 565Q %%= 516Q CHAR-EQUAL 513Q CHAR 505Q CHAR 474Q %%= 455Q %%= 445Q CL:ERROR 423Q CL:ERROR 363Q CL:LENGTH 334Q CL:LENGTH 20Q ERROR) (351Q SYMBOL 322Q SYMBOL 263Q :END2 203Q :START2 123Q :END1 53Q :START1) ( 442Q "Improper substring for comparison." 420Q "Improper bounds for string comparison." 14Q "Too few args") MAKE-STRING D1 (L (0 \CL:LAMBDA.ARGCNT) P 4 INITIAL-ELEMENT P 1 SIZE) FekHñ˜oH ¿@1Hl»ºKdJó–¿hd³°agð”KkØ°òKlÔ[°åa¼ILd’ (103Q ALLOCSTRING 100Q CHAR-INT 17Q ERROR) (51Q :INITIAL-ELEMENT) ( 13Q "Too few args") STRING-UPCASE D1 (L (0 \CL:LAMBDA.ARGCNT) P 17Q INDEX P 15Q INDEX P 13Q INDEX P 11Q NEWSTRING P 10Q SLEN P 7 END P 4 START P 1 STRING) ÿekHñ˜oH ¿@aHl»ºKdJó–¿hµj°agð”KkØ°òKlÔ[°åa¼Hl¾½NdMó–¿hd³°agð”NkØ°òNlÔ^°åa_¿Ilð–IɹO¦I _¿I O  LkÕj OOó³OOIO ¿OkÔ_°çOkÕL OOó³OOIO ¿OkÔ_°äOkÕOOOó³OOIO ¿OkÔ_°çO(361Q SCHARSET 356Q CHAR 312Q SCHARSET 307Q CHAR-UPCASE 304Q CHAR 241Q SCHARSET 236Q CHAR 203Q MAKE-STRING 173Q CL:LENGTH 164Q CL:LENGTH 17Q ERROR) (152Q SYMBOL 116Q :END 51Q :START) ( 13Q "Too few args") STRING-DOWNCASE D1 (L (0 \CL:LAMBDA.ARGCNT) P 17Q INDEX P 15Q INDEX P 13Q INDEX P 11Q NEWSTRING P 10Q SLEN P 7 END P 4 START P 1 STRING) ÿekHñ˜oH ¿@aHl»ºKdJó–¿hµj°agð”KkØ°òKlÔ[°åa¼Hl¾½NdMó–¿hd³°agð”NkØ°òNlÔ^°åa_¿Ilð–IɹO¦I _¿I O  LkÕj OOó³OOIO ¿OkÔ_°çOkÕL OOó³OOIO ¿OkÔ_°äOkÕOOOó³OOIO ¿OkÔ_°çO(361Q SCHARSET 356Q CHAR 312Q SCHARSET 307Q CHAR-DOWNCASE 304Q CHAR 241Q SCHARSET 236Q CHAR 203Q MAKE-STRING 173Q CL:LENGTH 164Q CL:LENGTH 17Q ERROR) (152Q SYMBOL 116Q :END 51Q :START) ( 13Q "Too few args") STRING-CAPITALIZE D1 (L (0 \CL:LAMBDA.ARGCNT) P 21Q INDEX P 17Q INDEX P 15Q INDEX P 13Q NEWSTRING P 12Q SLEN P 11Q CHAR P 10Q NEWWORD P 7 END P 4 START P 1 STRING) &ekHñ˜oH ¿@aHl»ºKdJó–¿hµj°agð”KkØ°òKlÔ[°åa¼Hl¾½NdMó–¿hd³°agð”NkØ°òNlÔ^°åa_¿Ilð–IɹO¦I _¿i I  O  LkÕj OOó³OOIO ¿OkÔ_°çOkÕLOOó³>IO _ ¥i_¿°OœO _¿h_¿‡O _¿OOO ¿OkÔ_°ÁOkÕOO"O ó³OO"IO" ¿O"kÔ_"°çO(430Q SCHARSET 425Q CHAR 361Q SCHARSET 345Q CHAR-DOWNCASE 330Q CHAR-UPCASE 311Q ALPHANUMERICP 304Q CHAR 245Q SCHARSET 242Q CHAR 207Q MAKE-STRING 177Q CL:LENGTH 164Q CL:LENGTH 17Q ERROR) (152Q SYMBOL 116Q :END 51Q :START) ( 13Q "Too few args") NSTRING-UPCASE D1 (L (0 \CL:LAMBDA.ARGCNT) P 11Q INDEX P 7 END P 4 START P 1 STRING)   ekHñ˜oH ¿@aHl»ºKdJó–¿hµj°agð”KkØ°òKlÔ[°åa¼Hl¾½NdMó–¿hd³°agð”NkØ°òNlÔ^°åa_¿Ilð–IɹOµI _kÕL OOó³IOIO ¿OkÔ_°åI(223Q SCHARSET 220Q CHAR-UPCASE 215Q CHAR 165Q CL:LENGTH 17Q ERROR) (152Q SYMBOL 116Q :END 51Q :START) ( 13Q "Too few args") NSTRING-DOWNCASE D1 (L (0 \CL:LAMBDA.ARGCNT) P 11Q INDEX P 7 END P 4 START P 1 STRING)   ekHñ˜oH ¿@aHl»ºKdJó–¿hµj°agð”KkØ°òKlÔ[°åa¼Hl¾½NdMó–¿hd³°agð”NkØ°òNlÔ^°åa_¿Ilð–IɹOµI _kÕL OOó³IOIO ¿OkÔ_°åI(223Q SCHARSET 220Q CHAR-DOWNCASE 215Q CHAR 165Q CL:LENGTH 17Q ERROR) (152Q SYMBOL 116Q :END 51Q :START) ( 13Q "Too few args") NSTRING-CAPITALIZE D1 (L (0 \CL:LAMBDA.ARGCNT) P 13Q INDEX P 11Q CHAR P 10Q NEWWORD P 7 END P 4 START P 1 STRING) É ekHñ˜oH ¿@aHl»ºKdJó–¿hµj°agð”KkØ°òKlÔ[°åa¼Hl¾½NdMó–¿hd³°agð”NkØ°òNlÔ^°åa_¿Ilð–IɹO¦I _¿i OkÕL OOó³=IO _ ¥i_¿°OœO _¿h_¿‡O _¿IOO ¿OkÔ_°ÂI(274Q SCHARSET 261Q CHAR-DOWNCASE 244Q CHAR-UPCASE 225Q ALPHANUMERICP 220Q CHAR 164Q CL:LENGTH 17Q ERROR) (152Q SYMBOL 116Q :END 51Q :START) ( 13Q "Too few args") STRING-LEFT-TRIM D1 (L (1 STRING 0 CHAR-BAG)) F0Adlð–Éb XjYH ªAI @ ³AZ–JIH oJg °êIkÔ°Ó(75Q \CHECK-TYPE-FAIL 61Q SUBSEQ 44Q CL:FIND 40Q CHAR 32Q %%= 23Q CL:LENGTH) (72Q STRING 14Q SYMBOL) ( 66Q "value") STRING-RIGHT-TRIM D1 (L (1 STRING 0 CHAR-BAG)) HAdlð–Éb dkÕjHóªAH @ ³AY˜IjHkÔ oIg °èHkÕ¸°Ò(76Q \CHECK-TYPE-FAIL 62Q SUBSEQ 43Q CL:FIND 37Q CHAR 20Q CL:LENGTH) (73Q STRING 11Q SYMBOL) ( 67Q "value") STRING-TRIM D1 (L (1 STRING 0 CHAR-BAG)) e`Adlð–Éb Xj[dH ¬¿AK @ ³(K¹HkÕ¼ILóªAL @ ³LºA]²MIJkÔ KkÔ°ÄL°×oMg °ß(141Q \CHECK-TYPE-FAIL 115Q SUBSEQ 73Q CL:FIND 67Q CHAR 46Q CL:FIND 42Q CHAR 33Q %%= 23Q CL:LENGTH) (136Q STRING 14Q SYMBOL) ( 132Q "value") (PRETTYCOMPRINT CMLSTRINGCOMS) (RPAQQ CMLSTRINGCOMS ((MACROS FOR-SUBSTRING \STRING WITH-ONE-STRING WITH-STRING WITH-TWO-STRINGS STRING<>=*-BODY) (FNS STRING \SP-STRING-COMPARE STRING=* STRING/=* STRING<* STRING>* STRING<=* STRING>=* STRING< STRING> STRING<= STRING>= STRING= STRING/= STRING-LESSP STRING-GREATERP STRING-NOT-GREATERP STRING-NOT-LESSP STRING-NOT-EQUAL MAKE-STRING STRING-UPCASE STRING-DOWNCASE STRING-CAPITALIZE NSTRING-UPCASE NSTRING-DOWNCASE NSTRING-CAPITALIZE STRING-LEFT-TRIM STRING-RIGHT-TRIM STRING-TRIM) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS ( NLAMA) (NLAML) (LAMA NSTRING-CAPITALIZE NSTRING-DOWNCASE NSTRING-UPCASE STRING-CAPITALIZE STRING-DOWNCASE STRING-UPCASE MAKE-STRING STRING-NOT-EQUAL STRING-NOT-LESSP STRING-NOT-GREATERP STRING-GREATERP STRING-LESSP STRING/= STRING= STRING>= STRING<= STRING> STRING<))))) (DEFMACRO FOR-SUBSTRING (STRING START END NEW INDEX &REST FORMS) (* * Creates a new string to hold the old string and iterates the body over the positions START to END with INDEX * *) (BQUOTE (LET* ((SLEN (CL:LENGTH (\, STRING))) ((\, NEW) (MAKE-STRING SLEN))) (for INDEX from 0 to (1- (\, START)) do (SETF (CHAR (\, NEW) INDEX) (CHAR (\, STRING) INDEX))) (for (\, INDEX) from (\, START) to (1- (\, END)) do (\,@ FORMS)) (for INDEX from (\, END) to (1- SLEN) do (SETF (CHAR (\, NEW) INDEX) (CHAR (\, STRING) INDEX))) (\, NEW)))) (DEFMACRO \STRING (THING) (* \String returns its arg if it is a string, otherwise calls String. *) ( BQUOTE (COND ((STRINGP (\, THING)) (\, THING)) (T (STRING (\, THING)))))) (DEFMACRO WITH-ONE-STRING (STRING START END &REST FORMS) (* WITH-ONE-STRING is used to set up some string hacking things. The keywords are parsed, and the string is hacked into a simple-string. *) ( BQUOTE (PROGN (COND ((SYMBOLP (\, STRING)) (SETQ (\, STRING) (SYMBOL-NAME (\, STRING))))) (COND ((NULL (\, END)) (SETQ (\, END) (CL:LENGTH (\, STRING))))) (\,@ FORMS)))) (DEFMACRO WITH-STRING (STRING &REST FORMS) (* WITH-STRING is like WITH-ONE-STRING, but doesn't parse keywords. *) (BQUOTE (LET ((START 0) END) (COND ((SYMBOLP (\, STRING)) (SETQ (\, STRING) (SYMBOL-NAME (\, STRING))))) (SETQ END (CL:LENGTH (\, STRING))) (\,@ FORMS)))) (DEFMACRO WITH-TWO-STRINGS (STRING1 STRING2 START1 END1 START2 END2 &REST FORMS) (* WITH-TWO-STRINGS is used to set up string comparison operations. The keywords are parsed, and symbols are hacked into strings *) (BQUOTE (PROGN (COND ((SYMBOLP (\, STRING1)) (SETQ (\, STRING1) (SYMBOL-NAME (\, STRING1))) )) (COND ((NULL (\, END1)) (SETQ (\, END1) (CL:LENGTH (\, STRING1))))) (COND ((SYMBOLP (\, STRING2)) ( SETQ (\, STRING2) (SYMBOL-NAME (\, STRING2))))) (COND ((NULL (\, END2)) (SETQ (\, END2) (CL:LENGTH (\, STRING2))))) (\,@ FORMS)))) (DEFMACRO STRING<>=*-BODY (LESSP EQUALP) (BQUOTE (WITH-TWO-STRINGS STRING1 STRING2 START1 END1 START2 END2 (LET ((INDEX (\SP-STRING-COMPARE STRING1 START1 END1 STRING2 START2 END2))) (COND (INDEX (COND (( = INDEX (\, (COND (LESSP (QUOTE END1)) (T (QUOTE END2))))) INDEX) ((= INDEX (\, (COND (LESSP (QUOTE END2)) (T (QUOTE END1))))) NIL) (((\, (COND (LESSP (QUOTE CHAR<)) (T (QUOTE CHAR>)))) (CHAR STRING1 INDEX) (CHAR STRING2 (+ INDEX (- START2 START1)))) INDEX) (T NIL))) (T (\, (COND (EQUALP (QUOTE (- END1 START1))) (T (QUOTE NIL)))))))))) (PUTPROPS CMLSTRING COPYRIGHT ("Xerox Corporation" 1985)) NIL