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) |