The routines described here return errors via the status global variable. A status of -717 means that at least one of the parameters was invalid (ie blob located in a file, or not initialized, or a wrong string index). -1319 indicates the lack of memory.
file | cascc.c |
declaration | function asc_addline(b, s, l) define b text, s char(32000), l smallint |
returns | nothing |
purpose | adds the text contained in s to b, before line l. |
example | function text_load(t, f) define t text, f char(80), fd integer call asc_locate(t) let fd=file_open(f, "r") if (f is not null) then # # split lines at word boundaries # call fd_postwordsep(fd, " ") while not fd_eof(fd) call asc_line(t, fd_read(fd), "") end while end if end function |
notes |
|
file | cascc.c |
declaration | function asc_addstring(b, t, i) define b text, t char(32000), i integer |
returns | nothing |
purpose | adds the text contained in t to b, before character i. |
example |
function right_margin(pk, w) define pk integer, w smallint, l, p smallint, t text locate t in memory select someblob into t from sometable where sometable.pk=pk asc_initialize(t) let l=1 while (l<=asc_lines(t)) if (asc_linelength(t, l)>w) then let p=asc_linepos(t, l)+w call asc_addstring(t, ascii 10, p) end if let l=l+1 end while update sometable set someblob=t where sometable.pk=pk asc_free(t) end function |
notes |
|
file | cascc.c |
declaration | function asc_changeline(b, t, i) define b text, t char(32000), i integer |
returns | nothing |
purpose | changes the contents of line l with the text contained in t. |
example |
function downshift_text(t) define t text, l, m integer let m=asc_lines(t) if (status) then return end if for l=1 to m call asc_changeline(t, downshift(asc_retrieveline(t, l)), l) end for end function |
notes | If t contains no NL, the line count of b will be unchanged. |
file | cascc.c |
declaration | function asc_changestring(b, t, s, e) define b text, t char(32000), s, e integer |
returns | nothing |
purpose | changes the text contained in b[s, e] with the contents of t. |
example |
function upshift_text(t) define t text, l, s, e integer let l=asc_length(t) if (status) then return end if for s=1 to l step 100 let e=p+99 if (e>l) then let e=l end if call asc_changestring(t, upshift(asc_retrievestring(t, s, e)), s, e) end for end function |
notes | none |
file | cascc.c |
declaration | function asc_copy(b1, b2) define b1, b2 text |
returns | nothing |
purpose |
copies the contents of the text variable b1 into b2
|
example | none |
notes |
|
file | cascc.c |
declaration | function asc_dropline(b, l) define b text, l integer |
returns | nothing |
purpose | removes line l from b up to and including the trailing NL |
example | none |
notes | none |
file | cascc.c |
declaration | function asc_dropstring(b, s, e) define b text, s, e integer |
returns | nothing |
purpose | removes characters from b staring from position s up to and including e |
example | none |
notes | none |
file | cascc.c |
declaration | function asc_free(b) define b text |
returns | nothing |
purpose | frees the text variable from memory. |
example | see asc_addstring |
notes | never free a text variable located with asc_locate, asc_copy, or asc_initialize with the 4gl FREE statement (which is entirely possible), as this will result in memory leaks |
file | cascc.c |
declaration | function asc_initialize(b) define b text |
returns | nothing |
purpose |
adds line indexing to text variable b
|
example | see asc_addstring |
notes | never free a text variable located with asc_initialize with the 4gl FREE statement (which is entirely possible), as this will result in memory leaks |
file | cascc.c |
declaration | function asc_length(b) define b text |
returns | l (integer), the blob size |
purpose | returns the size in characters of b |
example | see asc_changestring |
notes | none |
file | cascc.c |
declaration | function asc_lines(b) define b text |
returns | l (integer), the number of lines in the blob |
purpose | returns the number of lines in b |
example | see asc_addstring |
notes | none |
file | cascc.c |
declaration | function asc_linelength(b, l) define b text, l integer |
returns | c, integer, length of line l |
purpose | returns the length of line l |
example | see asc_addstring |
notes | none |
file | cascc.c |
declaration | function asc_linepos(b, l) define b text, l integer |
returns | c, integer position of first character of line l |
purpose | returns the start position of line l within b |
example | see asc_addstring |
notes | none |
file | cascc.c |
declaration | function asc_locate(b) define b text |
returns | nothing |
purpose | locates text var in memory and prepares it for blob manipulation. |
example | see asc_addline |
notes |
|
file | cascc.c |
declaration | function asc_retrieveline(b, l) define b text, l integer |
returns | t (char(512)), the line contents. |
purpose | returns the contents of line l |
example | function text_unload(t, f) define t text, f char(80), fd integer let fd=file_open(f, "w") if (fd is not null) then for i=1 to asc_lines(t) call fd_writeln(fd, asc_retrieveline(t, i)) end for let i=fd_close(fd) end if end function |
notes | the string returned does not include the final NL |
file | cascc.c |
declaration | function asc_retrievestring(b, s, e) define b text, s, e integer |
returns | t (char(512)), text variable substring |
purpose | returns a substring of b starting at position s up to and including e |
example | see asc_changestring |
notes | none |
Please address questions or comments to
marco greco (last updated Thu, 28 March 2002 16:04:18 GMT) |