Home page  
Help >
TB API Stored Procedures()
Version 7.11
TB API Stored Procedures()
TB API Stored Procedures()
   (*) indicates items that are subject to change.
   (+) New ddlCommand() command
   (-) Do not publish ddlCommand() in user document
   (o) Old form; do not publish ddlCommand is user document
 
I. EXEC Command
 
   Syntax:
      ddlCommand(ctl,ArgString)
         ArgString is:
            EXEC  [ [ ... []]]
             is the file name containing the procedure;
               without the path; but with the extension (*);
             from 1 to 9 optional parameters; blank delimited;
               [no "s or 's or embedded blanks (*)]
 
   Procedures may be nested 10 deep (*);
 
   Parameters are dereferenced as %1, %2 ... %9.
 
   Parameters cannot be passed recursively (*).

II. Limits on TB API internal functions

   The following TB API CALC Functions are not operable:
   . _PRLINE() - return printer line number;
   . _REMAIN() - return number of lines on page;
   . _STORAGE() - return amount of available storage on a drive;
   . NURAND() - random number generator;
   . _RECNO() - record number;
   . _ABSRECNO() - absolute record number;


   The following TB API SET functions are not operable:
   . _TEXT() - memo field control;
   . _PRSELECT() - name of selected printer;
   . _METAPHONE() - metaphone function
   . _PORTER() - porter function;
   . _SOUNDEX() - soundex function

III. Special Clauses

   There are two clauses that must be given special treatment.

   A. The RESULTSET Clause contains the commands that are required to
      build the final Result Set. They are delimited by the statements
         BEGIN RESULTSET
         END RESULTSET
      For example:
         BEGIN RESULTSET
            GETCALC ...
         END RESULTSET

      The END RESULTSET statement also acts as an END statement to exit the
      current procedure. [However, if the current procedure is a nested 
      procedure, the lower level procedures do not exit.]

      The total length of the commands in the RESULTSET Clause is returned in
      ctl->Ans2 of the initial ddlCommand() EXEC call. The contents of the 
      RESULTSET Clause can be retrieved with the ddlGetExecClause().

   B. The ATEND Clause contains the commands that are required to
      remove unneeded objects after the Result Set is discarded. They
      are delimited by the statements
         BEGIN ATEND
         END ATEND
      For example:
         BEGIN ATEND
            DESTROYTABLE ...
         END ATEND

      The END ATEND statement does not act as an END statement to exit the
      current procedure. If there are multiple ATEND Clauses, the last one
      encountered is the one that is returned.

      The total length of the commands in the ATEND Clause is returned in
      ctl->Ans3 of the initial ddlCommand() EXEC call. The contents of the 
      RESULTSET Clause can be retrieved with the ddlGetExecClause().

   C. A new API function, ddlGetExecClause() can be used to retrieve the
      RESULTSET and/or the ATEND Clauses. The prototype is
         void ddlGetExecClause(
            CONTROL *ctl,
            char *buffResultSet,   /* buffer to receive RESULTSET Clause, or NULL */
            int buffResultSetSize, /* size of buffResultSet */
            char *buffAtend,       /* buffer to receive ATEND Clause, or NULL */
            int buffAtendSize);    /* size of *buffAtend */

      ctl->Ans2 contains the size of the RESULTSET Clause (including NULL terminator);
      ctl->Ans3 contains the size of the ATEND Clause (including NULL terminator);


IV. Current List of Commands
 
    1) ATTACH:              ddlAttach(ctlp,OptnString,ArgString);
    2) BEGIN ATEND          (+) Control
    3) BEGIN RESULTSET      (+) Control
    4) BREAK:               Control
    5) CALC:                ddlCalc() + "CALC"
    6) CATRD:               (-) ddlCatRD(ctlp,OptnString,ArgString);
    7) CHANGE:              ddlChange(ctlp,OptnString,ArgString);
    8) CLEAR:               ddlClear(ctlp,OptnString,ArgString);
    9) CLOSE:               (-) ddlClose(ctlp);
   10) COMPILERDMEM:        (+) ddlCompileRdMem(ctlp,OptnString,ArgString,NULL);
   11) CONSTRUCT:           ddlConstruct(ctlp,OptnString,ArgString);
   12) COPYDATA:            ddlCopyData(ctlp,OptnString,ArgString);
   13) CREATEALIAS:         (+) ddlCreateFieldAlias(ctlp,OptnString,ArgString);
   14) CREATECALCOBJECT:    (+) ddlCreateCalcObject(ctlp,OptnString,ArgString,NULL);
   15) CREATECOLL:          (+) ddlCreateColl(ctlp,OptnString,ArgString);
   16) CREATETABLE:         (+) DoCreateTempTable(ctlp,OptnString,ArgString);
   17) CREATETEMPTABLE:     (o) DoCreateTempTable(ctlp,OptnString,ArgString);
   18) DBDCOMP:             (-) ddlCompileDBD(ctlp,OptnString,ArgString);
   19) DELETE:              ddlDelete(ctlp,OptnString,ArgString);
   20) DESTROYALIAS:        (+) ddlDestroyFieldAlias(ctlp,OptnString,ArgString);
   21) DESTROYCALCOBJECT:   (+) ddlDestroyCalcObject(ctlp,OptnString,ArgString);
   22) DESTROYCOLL:         (+) ddlDestroyColl(ctlp,OptnString,ArgString);
   23) DESTROYRDMEM:        (+) ddlDestroyRdMem(ctlp,OptnString,ArgString);
   24) DESTROYTABLE:        (+) ddlDestroyTempTable(ctlp,OptnString,ArgString);
   25) DESTROYTEMPTABLE:    (o) ddlDestroyTempTable(ctlp,OptnString,ArgString);
   26) DESTRUCT:            ddlDestruct(ctlp,OptnString,ArgString);
   27) DETACH:              ddlDetach(ctlp,OptnString,ArgString);
   28) ELSE:                Control
   29) END:                 Control
   30) END ATEND            (+) Control
   31) END RESULTSET        (+) Control
   32) ENDIF:               Control
   33) ENDWHILE:            Control
   34) EXEC:                DoProcedure(ctlp,OptnString,ArgString,ExecInfo);
   35) FILL:                ddlFill(ctlp,OptnString,ArgString);
   36) FIND:                ddlFind(ctlp,OptnString,ArgString);
   37) FINDCALC:            (+) ddlFindCalc(ctlp,OptnString,ArgString);
   38) GETCALC:             ddlGetCalc(ctlp,OptnString,ArgString,NULL);
   39) GETRDTYPE:           ddlGetRDType(ctlp,OptnString,ArgString);
   40) GETTYPE:             ddlGetType(ctlp,OptnString,ArgString);
   41) IF:                  ddlCalc() + "IF"
   42) INFO:                ddlInfo(ctlp,OptnString,ArgString);
   43) LOAD:                ddlLoad(ctlp,OptnString,ArgString);
   44) LOCK:                (-) ddlLock(ctlp,OptnString,ArgString);
   45) MATCH:               ddlMatch(ctlp,OptnString,ArgString);
   46) MODE:                ddlMode(ctlp,OptnString,ArgString);
   47) MPICK:               (-) ddlMpick(ctlp,OptnString,ArgString);
   48) OPEN:                (-) ddlOpen(ctlp,OptnString,ArgString);
   49) ORDER:               ddlOrder(ctlp,OptnString,ArgString);
   50) PICK:                ddlPick(ctlp,OptnString,ArgString);
   51) PICOMP:              ddlCompileAI(ctlp,OptnString,ArgString);
   52) PON:                 [Debug] Enable print to diagnostic window
   53) POF:                 [Debug] Negate print to diagnostic window
   54) RAZE:                ddlRaze(ctlp,OptnString,ArgString);
   55) REDUCE:              ddlReduce(ctlp,OptnString,ArgString);
   56) RELATE:              ddlRelate(ctlp,OptnString,ArgString);
   57) RELATEX:             DoRelateEx(ctlp,OptnString,ArgString);
   58) RPR:                 ddlRpr(ctlp,OptnString,ArgString);
   59) SAVECOLL:            (+) ddlSaveColl(ctlp,OptnString,ArgString);
   60) SET:                 ddlCalc() + "SET"
   61) SHOW:                ddlShow(ctlp,OptnString,ArgString);
   62) SMATCH:              (-) ddlSuperMatch(ctlp,OptnString,ArgString);
   63) SORT:                ddlSort(ctlp,OptnString,ArgString);
   64) STRUCTURE:           ddlStructure(ctlp,OptnString,ArgString);
   65) TALLY:               ddlTally(ctlp,OptnString,ArgString);
   66) TYPE:                Control
   67) UNCALC:              (+) ddlCalc() + "UNCALC"
   68) UNSET:               (+) ddlCalc() + "UNSET"
   69) UNLOAD:              ddlUnload(ctlp,OptnString,ArgString);
   70) UNLOCK:              (-) ddlUnlock(ctlp,OptnString,ArgString);
   71) USERS:               ddlUsers(ctlp,OptnString,ArgString);
   72) VERIFY:              ddlVerify(ctlp,OptnString,ArgString);
   73) VLIST:               ddlCalc() + "VLIST"
   74) WHILE:               ddlCalc() + "IF" + Control
   75) WRITE:               ddlWrite(ctlp,OptnString,ArgString);

Copyright © 2019 , WhamTech, Inc.  All rights reserved. This document is provided for information purposes only and the contents hereof are subject to change without notice. Names may be trademarks of their respective owners.