Interactive SQL Help

The Interactive SQL capability in the IDE currently supports SELECT statements with a extended syntax for richly formatted results.

Contents

Interactive SQL Extended Syntax

<Select_Statement // Statement_Qualifiers>

STATEMENT qualifiers

Statement qualifiers follow a double slash '//' comment and are individually seperated by a single slash.

  • BREAK - Set Row break options for table
  • {NO}CACHE - Enable or disable SQL cache
  • CAPTION - Define a table caption
  • {NO}CODE - Display executable M code that implements SQL
  • COLS - Set global and class attributes for column qualifiers
  • {NO}DQMODE - Enable Data-Qwik natural join and Null value translation logic
  • {NO}DEBUG - Analyze or Debug a SELECT statement
  • MARKUP - Set the markup language to either HTML or TEXT (Default = HTML)
  • OUTPUT - Set output device to print results set
  • PAGE - Set number of lines per page before issuing form feed and heading reprints
  • {NO}PLAN - Display IO access plan score
  • ROWS - Set maximum number of rows to output (default = 1,000)
  • STYLE - Set table HTML styles (e.g., background-color:#FCFDFE) HTML mode only
  • TEMPLATE - Set format and style properties according to a pre-defined template (e.g., REPORT)
  • TITLE - Set heading title on top of column headings and enable standard heading format


COLUMN qualifiers ( SQLcolumnExpression {Column_Qualifiers} )

Column qualifiers are enclosed in brackets '{}' adter the column expression. Individual column qualifiers are seperated by commas.

  • ALIGN - Set alignment of value in cell to Left, Center, or Right
  • {NO}BREAK - Insert line breaks or page break if a column value changes from the last row
  • {NO}LENGTH - Set column field length for wrap option or suppress column if '0'
  • {NO}FORMAT - Set column format or mask (e.g., decimal-size:2;group-separator:',')
  • HEADING - Set column Heading
  • MATH - Column mat? ( AVG | COUNT | COUNT-LEAST | COUNT-MOST | LEAST | MAX | MED | MIN | MOST | SUM | UNIQUE )
  • MERGE - Merge column with prior column(s)
  • NULL - Replace Null value with supplied value
  • {NO}REPEAT - Suppress column if value is the same as previous row
  • {NO}SPACE - Set whitespace before next column (Text mode only)
  • {NO}STYLE - Set HTML style for column (e.g., color:red)
  • TITLE - Set column title for hover help (HTML mode only)
  • TYPE - Set column data type (TUFN$L)
  • {NO}WRAP - Set column overflow wrap option to {NO}WRAP (text mode only) or TRUNCATE

The values of the column qualifiers: ALIGN, FORMAT, LENGTH, HEADING, TITLE and TYPE default from the data dictionary (i.e., Data-Qwik).

Data formats default to masks associated with a column's initial data type (e.g., 'D' = MM/DD/YEAR). The mask is initialized to the runtime variables %MSKE, %MSKD, etc. These can be overridden at either the table level or the individual column level by changing the format property. Formatting can also be defeated completely (Raw data) at the table, class and individual column level.

SQL Syntax Extension

 
 SELECT ColumnList FROM tableList WHERE whereExpression // StatementQualifiers
    ColumnList :== SQLColumnExpression {ColumnQualifier{,...}} {,...}

               ColumnQualifier :== QualifierName=Properties{;...}

                                QualifierName :==  String format, String style, Number length, String wrap, 
                                                   String merge, String align, String heading, String math, String type,
                                                   Number space, Boolean repeat, String null, Boolean break

                                Properties :== PropertyName:Value

                                            PropertyName :== String PropertyName
                                            Value :== Primitive Value

Optional column qualifiers are imbedded directly within SQL SELECT statements. They are declared by enclosing column qualifier expressions in brackets ({}) between SQL column expressions. Qualifier expressions are parsed out of the SQL expression before the SQL expression is processed by the SQL engine or SQL API (e.g., JDBC).

The qualifiers BREAK, FORMAT, LENGTH, REPEAT, SPACE, STYLE, and WRAP can either be prefixed by the string 'no' or assigned a value of 'none'; which will disable the qualifier. (e.g., NOFORMAT and FORMAT = 'none' will disable all formatting for a column and display the raw value from within the results row.)

Example

select class, method, parameters{heading=Format Parameters, style=color:red},des from objectmet 

Would override the dictionary default column heading for the column 'parameters' and display the text in Red.

Implementation notes

Default values for STATEMENT expression qualifiers ( preceded by // after SELECT expression)

  • BREAK = no
  • CACHE = yes (Note: CACHE = no if PLAN = yes)
  • CAPTION = Null
  • CODE = no
  • COLS = no
  • DEBUG = no
  • OUTPUT = Current browser window
  • MARKUP = 'HTML'
  • PAGE = no
  • PLAN = no
  • ROWS = 1000 (Can be extended but may fail if output exceeds 1MB)
  • TEMPLATE = Null
  • TITLE = Null
  • STYLE = Table style properties default to the following values
 border-width:1px
 padding:2px
 border-spacing:
 border-style:inset
 border-color:#788cb3
 border-collapse:collapse
 background-color:#FCFDFE
 font-family:Verdana
 font-size:80%
 alt-row-color:#E0FFD9
 currency-minus-color:red  


Default values for COLUMN qualifiers ( enclosed in brackets {} after a column expression )

  • LENGTH = Dictionary default for column
  • WRAP = yes (Text mode only, ignored for HTML mode unless 'truncate')
  • FORMAT = Table and class FORMAT defaults (includes display masks and decimal size)
  • ALIGN = Right if column is Currency or Number, Center if Boolean, otherwise Left
  • HEADING = Dictionary default from DBTBL1D.RHD
  • MATH = Null
  • MERGE = No
  • TITLE = Dictionary default (composite: DBTBL1D.DI _ DBTBL1D.TYP _ DBTBL1D.DES _ DBTBL1D.TBL)
  • TYPE = Dictionary default (List: '$,B,C,D,F,L,M,T,U')
  • SPACE = 2 (Text mode only)
  • STYLE = Table defaults
  • REPEAT = Yes
  • NULL = Null
  • BREAK = No

Column qualifier detail

  • BREAK - Break can be set to an integer between 0 and 10 or the literal 'page'. If multiple columns are set to BREAK, will insert the number of line feeds indicated by the highest column value. Setting the value to 'page' will generate a page feed (form feed, title and heading) when the column value changes. Generally, columns that include the BREAK qualifier should be placed at the beginning of the column list. This qualifier is typically used for key column breaks, or when column values are placed into the page titles.
  • FORMAT - This qualifier describes the output mask or formatting rules that are applied to the underlying raw data. For Currency, Date, Number, Logical and Time column classes, the format will default to configuration parameters. Formats can be set for an entire class with the /COLS table qualifier ( e.g., /Currency.format=decimal-size:2 ) or within an individual column ( e.g., DEP.TLD{format="year/mm/dd"} ).

The Number and Currency classes include the following format options:

decimal-size: <default to schema>
decimal-seperator: <default to configuration or ".")
group-size: <default to 3>
group-seperator: <default to configuration or ",")

- The Date class defaults to configuration or "MM/DD/YEAR"

- The Time class defaults to configuration or "12:60 AM"

- The Logical Class dafaults to configuration or "NY"

- The String, Upper and Memo class supports format masks that implement HTML elements. the "URL" mask output the column value as a hyperlink (value=URL), the "IMAGE" mask outputs an image (value=URL) and "HTML " outputs raw HTML (value=HTML markup).

Formatting can be disabled by setting the format qualifier to either noformat or format = none

Notes

a. When entering formats for the Number and Currency class, the syntax must follow the format=property:value; pattern. When entering masks for the other classes, the correct syntax is: format=mask.

b. To disable formatting for the entire table, enter /COLS=.noformat in the table qualifiers. To disable formatting for a specific class enter /COLS=className.noformat in the table qualifiers.

  • HEADING - The column heading can be entered in plain text (default) or in HTML markup. To specify HTML, the heading qualifier must be followed by a space and the text html (i.e., {heading html=<img src=http_Reference>}). If the heading is enterd as html markup, all html characters must be propery 'escaped' (e.g., < = &lt;) or the browser may not render the heading correctly.

Individual column headings can be disabled by setting the heading qualifier to noheading or heading = 'none'

  • LENGTH - NOLENGTH or LENGTH='0' can be specified to suppress the output of the column. This option can be used in combination with table titles and column breaks to display key columns in headings.
  • NULL - Replaced a Null value for the column with a specified value. Since the replacement occurs prior to the execution of the MATH functions, the replacement value will be included in the results.
  • MATH - Ignores all null values within all functions (unless changed with NULL qualifier). However, math functions will include values for rows that have output suppressed by the REPEAT qualifier.
  • REPEAT - To avoid ambiguity between Null values that result from the REPEAT qualifir and underlying actual Null values, set the Null qualifier if database may contain actual Null values for the column
  • STYLE - HTML mode only, can contain any valid HTML Style property
  • WRAP - Text mode only. If WRAP is enabled a single character overflow will intrude one character into the space between columns if necessary to avoid a single character overflow. If a SELECT statement contains a column that typically overflows the default display length (e.g., OBJECTMET.PROPERTIES) it may make sense to place that column last in the select expression and set the qualifier to NOWRAP.

Table Titles

In addition to column headings and table captions, a title can be specified for the a table with the /TITLE='Expression' qualifier. A title is typically used to display a report name, directory name, date and time, other optional runtime or table values, and page numbers. Titles are enclosed within the table headings and are displayed at every page break along with column headings. In contrast, captions which outside of the table boundaries and are displayed once at the beginning of the table.

If specified, a title appears within the table boundaries and is contained within a heading group with the individual column headings. The title spans across all of the columns in the table. The title displays the contents of the /TITLE table qualifier, and the directory {company} name (CUVAR.CONAM) along with the system date (%SystemDate) and Current Date (%CurrentDate) and time Current Time (%CurrentTime). If a page break value is specified (/PAGE= 'NumberLines'), the title will also include the current page number.

Variable Insertion in Titles

Through variable insertion, it is also possible to include and format current row (column) data and other runtime values into the title. Including column data into the title when combined with the column properties /break = page and /nolength provides an elegant presentation option for key columns that change infrequently.

The syntax for inserting a column or runtime variable into a title is to prefix the column name or position or variable name with a colon, and enclose it with the greater than and less than symbol, e.g., <:columnReference|variable>. A column reference can be either the column position (e.g., <:1>) or a table.column reference (e.g.,? <:objectmet.class>)

Variable references can include any PSL variable / keyword from within the following list:

Number %ClientVersionID, String %CompanyName, Date %CurrentDate, Time %CurrentTime, Date %EffectiveDate, 
String %Identifier, Number %ProcessID, String %RoutineName, String %ServerChannelID, String %SessionID, 
String %SystemCurrency, Date %SystemDate, String %UserClass, String %UserID, String %UserName, 
String %UserStation, String %VersionID

Data type declarations, formatting and HTML Styles can also be applied to variables by including the Format and Style properties in the variable expression as follows: <:columnReference|variable {Format=ColumnFormat} {Style=ColumnStyle}> For example, the following expression would display a heading with the values for columns dep.cls and dep.grp imbedded and rendered in a red font.

/heading='Account Listing for Class: <:dep.cls style=color:red> and Group <:dep.grp style=color:red>'

Enhanced Wildcard Selection

SQL provides a wildcard character ('*') that can be used to select all of the columns within a table. This capability has been extended to provide filters on the columns that are selected from a table.

  • LIST - Selects the columns specified in DBTBL1.DFTHDR or the column that is contained in the DESCRIPTION string (e.g., DES, DESC). The Primary keys of the table are also always included in the selection. This wildcard option is useful for simple list of table table rows that contain a description column.
  • "<selectionQuery>" - Selects all the columns specified by the selection query which is applied to the table DBTBL1D. For example: select *"nod in (50,51) and typ = 'D'" from DEP selects all the Date data type columns mapped to nodes 50 and 51 from the DEP table. The selection query is entered in SQL syntax itself, and can include any columns from the DBTBL1D table and any valid SQL where clause syntax.

Sample HTML Results

By default the Interactive SQL interpreter uses HTML to markup the results.

Example #1

Statement

select cls{break=page,nolength},
          grp{break=page,nolength},
          type{break},
          cid,
          lnm,
          bal{math=sum;avg, format=decimal-size:2},
          balavl,
          tld 
          from dep
          order by cls,grp,type,lnm,cid
          // rows=30/template=report
          /title=Account Listing for Class: <:dep.cls style=color:red> and Group <:dep.grp style=color:red>

Results

HTML Formatted Interactive SQL results

Sample Text Results

Sample results (there are three examples below, each demonstrating different features of the SELECT browser.

Example #1

Demonstrates the use of MATH functions, headings, format and null value replacement.

Note: The different unique count in columns #5 and #6, due to the replacement of Nulls in column #6. Column #4 is a good example of Unique.

Note: The headings in quotes preserved original upper/lower case, while unquoted values were converted to uppercase. Also, the last heading was split into two lines since it contained the '@' character.

Note: The second column (SUM) was formatted with the Data-Qwik E option, inserting commas into the numbers.

Note: DEP.BAL is defined as three decimal precision in this directory.


Input

SELECT CID{math=unique}, LNM{length=10,wrap=2,math=unique}, bal{math=sum,heading=sum}, bal{math=avg,heading=average}, 
bal{math=count,heading=count}, bal{math=unique,null=0,heading='Unique Balances'} from dep //rows=10/template=report


Results


Console> %PSL-Runtime: .005691 Seconds
    Account  Report                                                                  Unique
     Number  Short Name              SUM          AVERAGE            COUNT         Balances
------------  ----------  ---------------  ---------------  ---------------  ---------------
          6  HOERR,BRUC       10,236.990        10236.990        10236.990        10236.990
          7  HOERR,BRUC       17,901.510        17901.510        17901.510        17901.510
          8  HOERR,BRUC          210.000          210.000          210.000          210.000
          9  HOERR,BRUC                                                               0.000
         45  HOERR,BRUC        7,200.000         7200.000         7200.000         7200.000
         55  SRIVASTAVA      100,000.000       100000.000       100000.000       100000.000
         56  SRIVASTAVA        2,574.000         2574.000         2574.000         2574.000
         68  HOERR,BRUC                                                               0.000
         71  SANCHEZ,FR          180.000          180.000          180.000          180.000
         76  SCHWARTZ,C       12,420.000        12420.000        12420.000        12420.000
============  ==========  ===============  ===============  ===============  ===============
         10           4      150,722.500        18840.313                8                9
Complete :> 10 rows processed.

Example #2

Demonstrates the use of the 'break', 'repeat' and /PAGE options.

Note: Even if norepeat is enabled, all columns will print on the first line after a page break.

Input

SELECT class{break},method from objectmet//cache/rows=99/PAGE=10

Output

Console> %PSL-Runtime: .01222 Seconds
 Class         Method
 ------------  --------------
 ByteString   ascii
              extract
              find
              justify
              length
              piece
              toPSLExpression
              translate

 Class        Method
 ------------  --------------
 Cache        getRecord
              isDefined
 Class        isAncestor
              isClass
              isDescendant
              isValid
              new

 Class        Method
 ------------  --------------
 Date         day
              dayOfMonth
              dayOfYear
              daysInMonth
              daysToEOY
              isBusDate
              isLeapYear
              month

 Class        Method
 ------------  --------------
 Date         monthOfYear
              nextBusDate
              nextFreqDate
              prevBusDate
              toString
              year
 Db           currVal

 Class        Method
 ------------  --------------
 Db           delete
              fastDelete
              getOneRow
              getRecord
              getSchemaColumn
              getSchemaTable
              insert
              isDefined

 Class        Method 
 -----------  --------------
 Db           isSchemaColumn
              isSchemaTable
              nextKey
              nextVal
              prevKey
              prevVal
              select
              selectDbSet

 Class        Method
 ------------  --------------
 Db           update
 DbSet        getRecord
              isEmpty
              next
 HTML         addAttrib
              addCol

 Class         Method
 ------------  --------------
 HTML         addElement
              addList
              addProp
              addRow
              addString
              addTitle
 IO           close

 Class        Method
 ------------  --------------
 IO           open
              read
              write
 List         add
              contains
              count
              elementAt

 Class        Method
 ------------  --------------
 List         position
              sort
 Number       byte
              char
              fnumber
              random
              roundCur

 Class        Method
 ------------  --------------
 Number       roundDec
              toString
              zero 
 Object       data
              exists
              getClass
              isPrimitive

 Class        Method
 ------------  --------------
 Object       order
              query 
 PSL          actual
              addSetting
              addSubrou
              cachePSLColumn
              cachePSLTable

 Class        Method
 ------------  --------------
 PSL          error
              getDbLoad
              getLabelRecord
              getPSLColumn
              getPSLTable
              getSetting
              hasSetting
              insertLine
 
 Class        Method
 ------------  --------------
 PSL          isRecord
              mExpr
              newVariable
              openBuffer

 Complete :> 99 rows processed.

Example #3

Demonstrates the use of the break and wrap options. Also demonstrates the use of the /CODE option to display the M database code.


Note: Column #2 is truncated, while #1 and #3 wrap

Input

SELECT class{break,math=unique}, method,des{length=40,wrap=truncate}, parameters{length=50} from objectmet  //code

Output

Console> %PSL-Runtime: .011288 Seconds

Line  Executable code
----  --------------------------------------------------------------------------
  1   S vsql(1)=""
  2   S vsql(1)=$O(^OBJECT(vsql(1)),1) I vsql(1)="" S vsql=-1
  3   S vsql(2)=""
  4   S vsql(2)=$O(^OBJECT(vsql(1),1,vsql(2)),1) I vsql(2)="" S vsql=1
  5   S vsql(3)=$G(^OBJECT(vsql(1),1,vsql(2)))
  6   S vd=$S(vsql(1)=$C(254):"",1:vsql(1))_$C(9)_$S(vsql(2)=$C(254):"",1:vsql(2))_$C(9)_$P(vsql(3),"|",4)_$C(9)_$P(vsql(3),"|",2)</nowiki>


Data Key    Value
 --------    ---------------------------------
 0           "4"
 1           ""
 2           ""
 3           ""
 A           ""
 D           "T0T0T0T0"
 F           "||MM/DD/YEAR||||"
 I           "OBJECTMET"
 K           "2"
 P           "4"


Class         Method          Description                               Formal Parameters
------------  --------------  ----------------------------------------  --------------------------------------------------
ByteString    ascii           ASCII code of byte at specified pos       lo?al Number position
              extract         Extract a bytestring                      local Number start,local Number end
              find            Find the next position of a bytestring    local ByteString string,local Number start
              justify         Justify a bytestring                      local Number fieldLength
              length          String length                             local ByteString delimiter
              piece           Return bytestring at delimited position   local ByteString delimiter,local Number start,
                                                                        local Number end
              toPSLExpression translate literal value to PSL expressio
              translate       Byte by byte replace                      local ByteString lookFor,local ByteString replaceBy

Cache         getRecord       Get RecordTABLE object from Cache         literal String table,String KeyExpr,literal 
                                                                        Boolean classNew
              isDefined       Check if RecordTABLE row exists using Ca  literal String table,String KeyExpr

Class         isAncestor      Is Name1 an ancestor of Name2             String ancestorName,String descendantName
              isClass         Does className exist in OBJECT table      String className
              isDescendant    Is Name1 a descendant of Name2            String descendantName,String ancestorName
              isValid         Does className exist in OBJECT table      Reference instance
              new             Create a new instance of class            literal String Class,Object initObj

Date          day             2 digit day of month
              dayOfMonth      Numeric day of the month
              dayOfYear       Day of the year
              daysInMonth     Number of days in Month
              daysToEOY       Days to the end of the year
              isBusDate       Date is a business date in calendar       local String Calendar
              isLeapYear      Leap Year
              month           2 digit month of year
              monthOfYear     Numeric month of year
              nextBusDate     Next business date for calendar           local Number numberDays,local String Calendar
              nextFreqDate    Next frequency date                       local String frequency,public Number AF,local 
                                                                        String control
              prevBusDate     Previous business date for calendar       local Number numberDays,local String Calendar
              toString        Convert Date to String                    local String DateMask
              year            Year (4 digit)

Db            currVal         Return highest key value                  literal String table,String KeyExpr
              delete          Delete records (SQL format)               literal String table,local String where,local 
                                                                        String PSQLqualifiers
              fastDelete      Delete multiple records                   literal String table,String KeyExpr
              getOneRow       Select one row of data from a table       String select,String table,String keys,String delim
              getRecord       Retrieve a recordTABLE from the database  literal String table,String KeyExpr,literal 
                                                                        Boolean ClassNew
              getSchemaColumn Return a PSL column descriptor            local String table, local String column
              getSchemaTable  Return a PSL table descriptor             local String table
              insert          Insert a new record (SQL format)          String table,String columns,String values,String 
                                                                        PSQLqualifiers
              isDefined       Returns whether reference is defined      literal String from,literal String where,loca? 
                                                                        Number match
              isSchemaColumn  Is table.column a valid column name?      local String table, local String column
              isSchemaTable   Is table a valid table name?              local String table
              nextKey         Return next key value                     literal String table,String KeyExpr
              nextVal         Return highest key value + 1              literal String table,String KeyExpr
              prevKey         Return previous key value                 literal String table,String KeyExpr
              prevVal         Return prior key value                    literal String table,String KeyExpr
              select          Create a Result set                       local String select,local String from,local 
                                                                        String where,local String orderby,local String 
                                                                        groupby,local String PSQLparams
              selectDbSet     Create a set of Records                   literal String table,local String where,local 
                                                                        String orderby
              update          Update records (SQL format)               String table,String columns,String where,String 
                                                                        PSQLqualifiers

DbSet         getRecord       Return current record                     literal String table
              isEmpty         Return boolean state of results set
              next            Position cursor to the next row

HTML          addAttrib       Add column attributes                     String element,String attributes
              addCol          Add Column form resultset to XML documen  ResultSet rs,String col
              addElement      Add Element line to XML DTD               String element,String attributes
              addList         Add a matching list (columns+values) XML  literal String element,literal String columnlist,
                                                                        String valuelist,String delim
              addProp         Add individual column and value to XML    String column,String value
              addRow          Add results row with tags                 String element,ResultSet rs
              addString       Add string to XML format (clsoe or open)  String string,literal Boolean close
              addTitle        Add XML title to header                   String title

IO            close           Close Device
              open            Open IO
              read            Reads a record from device                public String ErrorType
              write           Write record                              local String Record,local String EOL

List          add             Add a value to a list                     local String expr,local String delimiter,local 
                                                                        Boolean allowDuplicate,local Boolean inOrder
              contains        List contains expression                  String expr,String delimiter,Boolean ignoreCase
              count           Number of elements in list                local String delimiter,local Boolean noDuplicates
              elementAt       Return individual element of List         local Number position,local String delimiter
              position        Ordinal position in the list              local String expr,local String delimiter,local 
                                                                        Boolean ignoreCase
              sort            Sort the elements in a list               local String delimiter,local Boolean allowDuplicate

Number        byte            return single byte represented by number
              char            return character represented by number
              fnumber         Format (and round) a number        ?      local String format,local Number decimals
              random          Return pseudo-random number in {0,val-1}
              roundCur        Round an amount to currency               local String crcd,local String roundOption,local 
                                                                        Number justify
              roundDec        Round an amount to decimal                local Number decimal,local String roundOption,
                                                                        local Number justify
              toString        Format a number                           local Number decimal,local String formatMask
              zero            Zero fill a number                        local Number length,local Number decimal,local 
                                                                        Boolean implied,local Number sign

Object        data            Return object exists / is array
              exists          Return object exists
              getClass        Return object class
              isPrimitive     Class is a primitive class
              order           Next or previous subscript in array       local Number direction
              query           Name of next node in array

PSL           actual          actual() array as 'property'              Number sub
              addSetting      Add or modify a PSL compiler setting      local String section,local String ident,local 
                                                                        Primitive value
              addSubrou       Add a subroutine to the module            local String Name,local List parameters,local 
                                                                        String comment,local Boolean new
              cachePSLColumn  Cache and return a PSL column descriptor  PSLColumn cache(), local String qcn, PSLTable 
                                                                        tCache()
              cachePSLTable   Cache and return a PSL table descriptor   PSLTable cache(), local String table, local 
                                                                        Number level
              error           Output a PSL compile-time error           String errorText
              getDbLoad       Return Record map header                  local String subRou,local String var,local Number 
                                                                        instPtr
              getLabelRecord  Return a PSL subroutine label record      String subrou
              getPSLColumn    Return a PSL column descriptor            local String table, local String column, 
                                                                        SchemaTable stCache()
              getPSLTable     Return a PSL table descriptor             local String table,local Number level
              getSetting      Return a PSL compiler setting (defaults   local String section,local String ident
              hasSetting      Does PSL compiler setting exist?          local String section,local String ident
              insertLine      Insert a line of code                     local String PSLCode,local Number line,local 
                                                                        Number level
              isRecord        Record class is ancestor of class         local String class
              mExpr           Convert a PSL string to an M string       local String psl
              newVariable     Generate a new variable name
              openBuffer      Open a new PSL buffer                     local List parameters,local String comment
              patch           Replace expression with backpatch token   local String expression
              subrouExists    Subroutine exists in current module       local String name
              warn            Output a PSL compile-time warning         local String warning

PSLBuffer     add             Add a line of PSL code to the buffer      local String code
              insert       ?  insert PSL subroutine into current code   local String name, local String resultClass

PSLColumn     getClass        column's dataType as PSL class
              getCurrentExpr  expression to retrieve(0)/set(1) column   local PSLIdentifier rec,local Boolean bLeft
              getCurrentLvn   local variable containing column's value  local PSLIdentifier rec
              getCurrentNode  Node containing column's value            local Boolean bQuoted
              getOldExpr      expr to retrieve(0)/set(1) column.oldVal  local PSLIdentifier rec,local Boolean bLeft
              getOldLvn       local variable containing column.oldVal   local PSLIdentifier rec
              getOldNode      Node containing column.oldVal             local Boolean bQuoted
              getPurposeNode  purpose Id of node containing the column
              getUpdateCode   code to update column value               local PSLIdentifier rec,local PSLExpression value,
                                                                        local Number mode

PSLExpression fitsLineLength  does expression + extra space fit M line  local Number extra
              isArray         Expression is an array
              isLiteral       Expression is literal
              isVariable      Expression is a variable
              toValue         Reduce expression to constant

PSLIdentifier optimize        Reference object can be post optimized

PSLSubrou     addCode         Add a line of M code the buffer           local String code
              addExe          Add a line of code from exe() the buffer  local String code
              addLvn          Add a vsql() replacement for addExe() to  local Number nr,local String expr
              addTag          Add a tag(number) for addExe() to the su  local Number nr,local String code
              getCode         Get M code at specified line              local Number line
              getLine         Get highest linenumber of the subroutine
              getLvn          Get vsql() replacement value              local Number lvn
              getLvnMax       Get highest vsql() replacement number of
              getTag          Get the tag for a subscript in exe()      local Number tag
              getTagMax       Get highest tag number of the subroutine
              getTagPrefix    Get the tag prefix for addExe()
              insCode         Insert M code at specified line           local Number line,local String Code
              setTagPrefix    Set the tag prefix for addExe()           local String prefix

PSLTable      assertLevel     Assert a PSLTable instance with minimum   local Number level, PSLColumn cache()
              getArchivable   Is table valid to be archived
              getArchiveIncl  Get tables included with this when archi
              uded
              getArchiveKey   Get archive key number                    local Boolean forArch
              getArchiveSubs  Get archive sub-tables
              getArchiveTable Get primary archive table
              getFilerLogic   Filer logic that needs to be processed    local String operation,local PSLExpression 
                                                                        qualExp,local Boolean isPslExp
              getLoadCode     M code to load data node                  local PSLIdentifier rec,local String node,local 
                                                                        Number mode,local Boolean exists,public String 
                                                                        lvpm()
              getNewCode      M code instantiate new Record             local PSLIdentifier rec,local PSLExpression mode
              getQuery        Get table query
              getSaveCode     M code to save data node                  local PSLIdentifier rec,local String node,local 
                                                                        Number mode,local String lvpm(),local PSLColumn 
                                                                  ?     rdbCol()
              getUpdateKey    M code to safe current key for UPDATE     local PSLIdentifier rec,local String lvpm()
              isOneNode       table uses single node in internal stora
              isParent        Table is parent table

Primitive     get             The primitive's value or a default value  Primitive default
              isNull          Expression is NULL                        literal Boolean isIncludeEmptyQuotes

Record        bypassSave      Database save, bypass triggers
              compare         Compare and report differences            local Record object2
              copy            Copy object                               local String colmap
              fromArchive     Check if record loaded from archive
              fromArray       Copy M array into object properties       literal String Array,literal String Keys
              getMode         Return Record Mode
              getTable        Return table represented by this record
              isChanged       Check if the Column has Changed           local String column,local String useagetype
              overlay         New record overlay fields                 String array()
              save            Save a record to the database             local String Filerqualifiers
              setAuditFlag    Set update history flag                   literal Boolean state
              setCreateOnly   Allow create mode only
              setMode         Set Record Mode                           local Number Mode
              setUpdateOnly   Allow update mode only
              toArray         Copy object properties into M array       literal String Array,literal String Keys
              toString        Copy object

RecordACN     renew           Loan/Deposit renewal                      String keys

RecordCIF     default         New Cif account defaults form product     String key

RecordDEP     default         Deposit new account default method        String keys
              renew           Loan/Deposit renewal                      String keys

RecordLN      default         Loan new account product defaults         String keys
              renew           Loan/Deposit renewal                      String keys

Reference     copy            Copy Reference class instance
              equals          Compare two reference objects             Reference cmp
              getPointer      Return pointer to reference object
              getStoredValue  Return a process scope value from object  local String tag
              setStoredValue  Store a process scope value in an object  local String tag,local String value
              toString        Return string representation of object

ResultSet     getCol          Return column value from results row      local Primitive colRef
              getColProt      Return column protection                  local Primitive colRef
              getRow          Return current results row                local String delimiter,local List columnList
              getRowProt      Return row protection
              isEmpty         Return boolean state of results set
              next            Position cursor to the next row

Row           getColumns      Get the properties of a Row object
              getDelimiter    Get the row delimiter
              setColumns      Set the properties of a Row object        local List Properties
              setDelimiter    Set the row delimiter                     local String delimiter
              toRecord        Copy a Row object to a Record object      local Record identifier,local String columnMap
              toString        Convert a Row object to a String          local String colDel,local String quoChar,local 
                                                                        String fmtDate,local String fmtTime,local String 
                                                                        fmtBool

RowSet        beforeFirst     Position RowSet before first Row
  ?           getRow          Return current row
              isEmpty         Return if RowSet is empty
              loadFromFile    Load RowSet from file                     local String directory,local String filename,
                                                                        local String filetype
              next            Position rowset at the next row

Runtime       charset         Character set
              commit          Commit TP fence
              delErrXBAD      XBAD error                                object,errcode
              delayCommit     Call subroutine with delayed commits      literal String entryref
              rollback        Tp Rollback to the start of a fence       Startptr
              setErrMSG       Message Table Error                       object,msgnum,variable
              setErrSTBLER    Application Error                         object,errcode
              setErrXBAD      XBAD error                                object,errcode,column,curval,altval
              start           Start TP fence                            Tranid,varlist,stat

Schema        createTable     Create temporary table schema             String table,String keyexpr,String columnList,
                                                                        String globalName
              deleteTable     Delete table schema                       String table
              getTableName    Return a table name for a RecordClass     String class
              getTableRecord  Return a Data-Qwik table record           String table

String        addQuotes       Add one layer of quotes                   local String character
              ascii           ASCII code of character at specified pos  local Number position
              beginsWith      Begins with string                        local String string,local Boolean ignoreCase
              blank           Pad a string with blanks                  local Number fieldLength, local Boolean 
                                                                        rightJustify
              byteLimitSubst  substring of at most maxBytes bytes       local Number start, local Number maxBytes
              ring
              complexUnpack   Complex unpack of data string             local Number length,local Boolean signed,local 
                                                                        Boolean leftnib
              contains        Contains a string                         local String string
              endsWith        Ends with string                          local String string,local Boolean ignoreCase
              extract         Extract a string                          local Number start,local Number end
              find            Find the next position of a string        local String string,local Number start,local 
                                                                        Boolean ignoreCase,local String quoteChar
              follows         Follows a string                          local String string
              getSub          Return a sub-delimited or labeled string  local String label,local String delimiter1,local 
                                                                        String delimiter2,local Number position
              insert          Insert a string into a string             local String string,local Number offSet,local 
                                                                        String padCharacter,local Boolean displace
              isInteger       Is an integer
              isLike          Is like (SQL like)                        local String likeExpr,local Boolean ignoreCase
              isLiteral       Is a literal value - quoted or number
              isNumber        Is a number
              justify         Justify and pad a string                  local Number fieldLength,local Number direction,
                                                                        local String padCharacter,local Boolean truncate?
              length          String length                             local String delimiter
              lowerCase       Convert to lower case                     local Boolean capitalizeFirstChar
              piece           Return string at delimited position       local String delimiter,local Number start,local 
                                                                        Number end,local String quoteChar
              putSub          Insert a sub-delimited or tagged string   local String insert,local String label,local 
                                                                        String delimiter1,local String delimiter2,local 
                                                                        Number position
              replace         Replace occurrances of expr1 with expr2   local String expr1,local String expr2,local 
                                                                        Number count,local Boolean ignoreCase,local 
                                                                        String quoteChar
              reverse         Reverse the character order
              stripQuotes     Strip one layer of quotes                 local String quoteCharacter
              toByteString    Convert String to ByteString
              toDate          Convert formatted date to julien date     local String mask
              toNumber        Convert String to Number                  local String mask,local Boolean stripSpace
              toRow           Convert a String type to a Row type       local List elements,local String delimiter
              toTime          Convert formatted to internal time
              translate       Character by character replace            local String lookFor,local String replaceBy
              trim            Trim characters from a String             local Number Option,local String character
              unpack          Unpacks data string                       local Number length
              upperCase       Convert to upper case

Time          toString        Convert Time to String                    local String TimeMask

TranSet       copyTran        Copy transaction to TranSet               local RecordTTX ttx,String colRefs(),local Number 
                                                                        tranSeq,local String secTran
              getTran         Get transaction from TranSet              local Number Sequence
              postTSet        Post TranSet                              PostDate,Branch,PostParam,TranArr
============
          33

Complete :> 244 rows processed.