dadllcommon
DLL Usage description
Library: dadllcommon
This library contains common functionality that does not belong to any other, more specific library.
Unless specified otherwise the following formats should be used for passing parameters/can be expected as return value:
table : ppmmmnnn tablefield: ppmmmnnn.ccccccccc domain :
ppcccccccccccc
DLL Prototypes
function extern convert.char.to.new.line(ref string text.line())
pre : true post : in text.line all ASCII characters 255 are replaced with new
line
characters.
function extern convert.new.line.to.char(ref string text.line())
pre : true post : in text.line all new line characters are replaced with
ASCII
character 255.
function extern display.mess(const string msg())
pre : true post : msg is displayed in the user_message part of the 'progress
window'. The user_messagepart of the window can contain 72
characters at most. desc : see dllusage of function
display.xch.progress()
function extern display.xch.progress(
domain daxch.txch xch.type,
const domain daxch.cxch xch.scheme,
const domain daxch.cbat batch,
domain daxch.batl batchline,
const domain daxch.ttbl triton.table,
const domain daxch.casf ASCII.file,
long run.num,
long try.num,
const string filename(),
long no.read,
long no.processed,
long no.error.rejected,
long no.cond.rejected,
long no.skipped)
pre : true post : Information passed as parameters is displayed in a window
desc : Window should look like:
+------------------------FFFFFFxch_typeFFFFFF-------------------+
| Exchange Scheme: FFFF Records read |
| Batch : FFFF Records processed : FFFF |
| |
| Batchline : FF Records rejected due to errors: FFFF |
| |
| Table : FFFF Records rejected due to conds. : FFFF |
| |
| ASCII File : FFFF Records skipped without action: FFFF |
| |
| Run-/trynumber : FF/FF |
| |
| File : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
| |
| FFFFFFFFFFFFFFuser_messageFFFFFFFFFFFFFF |
+---------------------------------------------------------------+
function extern long domain.exists(const string domain.name())
pre : true return: whether <domain.name> is an existing domain
function extern long field.exists(
const domain daxch.ttbl table.name,
const domain daxch.tfld field.name,
[ ref string domain.name() ],
[ ref long field.type ],
[ ref long field.flag ],
[ ref long field.depth ])
pre : format of field.name is without table return: whether <field.name> is
an existing field of table <table.name>
(if it is a combined field false will be returned) post : if true is
returned and one or more of the optional parameters
are specified they will be given their proper value
function extern long generate.unique.key()
pre : true return: a unique value is returned by this function which will
never be
returned again.
function extern string get.index.field.name(
const string tble(),
long index.no,
long part.no )
pre : index.no > 0 return: the name of the <part.no>th field in index
<index.no> of table
<tble>. IF either <tble> does not exist or <tble> does not have
an index <index.no> or index <index.no> does not have at least
<part.no> fields THEN the empty string is returned.
Note that the data dictionary is read using the rdi functions,
thus according to the current package combination of the user.
function extern string get.separator(
const domain daxch.cxch xch.scheme )
pre : true return: xch.scheme exists ==> sepa.to.sepa.char
(daxch001.ctrl,daxch001.sepa) otherwise ==> "" state : current record of
daxch001 will not be changed
function extern long index.exists(
const domain daxch.ttbl table.name,
long index.no,
[ ref long no.parts ],
[ ref long duplicate ] )
pre : true return: whether <table.name> has an index with number <index.no>.
post : if true is returned the no.parts contains (if provided) the
number of fields belonging to the index and duplicate,
if provided, tells whether duplicates are allowed.
function extern long is.index.field(
const string tble(),
long index.no,
string field.name(18) fixed )
pre : index.no > 0 return: whether field <field.name> belongs to index
<index.no> of
table <tble>
function extern long is.numeric.constant(const string str())
return: true if and only if str contains a long or float constant
(possibly in scientific notation)
function extern long is.text.buffer.field(const string field.name())
pre : true return: whether <field.name> is "tttxt010.text" or "tttxt015.text"
desc : this function is used to determine whether the field contains
new line characters (table field tttxt010.text usually does).
function extern long is.text.field(const string field.name())
pre : true return: whether field <field.name> is a tttxt???.ctxt field
function extern justify.and.convert.string(
ref string string.value() mb,
const string string.domain())
pre : string.domain is an existing string domain post : string.value is:
- justified to left, right or center
- converted to upper or lower case
- truncated to the domain length according to the definition of
the domain string.domain
function extern long language.exists(string lang(1))
pre : true return: whether <lang> is an existing language
function extern string make.string.const(const string str())
pre : true return : str converted to a string constant as can be used in
literal
code such as dynamic sql or generated scripts).
For example: - double quotes (") have been placed around str
- double quotes within str have been replaced
with 2 double quotes ("")
- leading or trailing spaces are NOT removed
from str
function extern remove.xch.progress()
pre : display.xch.progress() or display.mess() must have been called
before. post : window used by display.xch.progress and display.mess has
been
removed.
function extern string replace(
domain daxch.str stri,
const string pattern(),
const string repl() )
pre : pattern <> "" return: stri with all occurences of pattern replaced with
repl return
string should not exceed length of domain daxch.str
function extern sepa.string.to.sepa(
const string sepa.string(),
ref domain daxch.yesno ctrl,
ref domain daxch.sepa sepa )
pre : valid.separator.string(sepa.string) post : if isspace(sepa.string):
ctrl = no and sepa = ""
if len(sepa.string) = 1: ctrl = no and sepa = sepa.string
if len(sepa.string) = 2: ctrl = yes and sepa = sepa.string(2)
function extern string sepa.to.sepa.char(
domain daxch.yesno ctrl,
domain daxch.sepa sepa )
pre : valid.separator(ctrl, sepa) return: if ctrl = no: sepa
if ctrl = yes: the ASCII character for <Ctrl> sepa
function extern long size.of(const string domain.name())
pre : domain.name is a domain of type string return: the length of the domain
function extern long table.exists(const domain daxch.ttbl table.name)
pre : true return: whether <table.name> is an existing table.
function extern long valid.separator(
domain daxch.yesno ctrl,
domain daxch.sepa sepa )
pre: true return: true if and only if ctrl and sepa make up a valid
separator.
For example:- ctrl = no and sepa not in {, 0--9, A--Z}
- ctrl = yes and sepa in {A--Z, [, \, ], ^}
function extern long valid.separator.string(const string sepa.string())
pre : true return: true if and only if sepa.string is a valid separator.
For example:- isspace(sepa.string)
- len(sepa.string) = 1 and valid.separator
(no, sepa.string)
- len(sepa.string) = 2 and sepa.string(1;1)
= "^" and valid.separator (yes, sepa.string(2)