WebKit API Documentation

The WebKit API is a series of uniVerse BASIC routines that can be used to process HTML forms or to dynamically generate HTML documents from data stored in a uniVerse database file.


HTMLAddArgs adds various values to the argstring
usage: HTMLAddArgs -SELECTED
Back to Index

HTMLArgstring generates a list of the arguments passed via POST argstring
Back to Index

HTMLAssocDisplay displays the data in the specified associated
               multivalued fields in table with the field
               names in the first row and the data in subsequent rows.
               null rows at the end are not displayed.
Calling sequence is
HTMLAssocDisplay  [TableOptions] [-TV] [DICT] FileName DataRecID FieldName ...
      TableOptions is any of the following:
      -BORDER n (default = 0)
-CELLSPACING n (default = 1)
      -CELLPADDING n (default = 5)
      -WIDTH xx{%} (default = no width specification)
      -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
      -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
          specifies global cell alignment
              Values are supplied with comma as delimiter.
              Default is CENTER, TOP
      -COLOREVEN #xxxxxx
      -COLORODD  #xxxxxx
      -COLORHEAD #xxxxxx
      -NH 	No Header display
      -NOEMPTY FIELDNAME
	If the value for the fieldname specified is empty then scrap
	the line. (Doesn't work with PH's yet)
      -NOSPACE  Do not display a &nbsp in empty fields
	-TV generate the lines as columns instead of rows with
          the field names in the first row.
      FileName the file being displayed
      DataRecID is the record to be displayed. If @SELECT then
              see if there is a record ID in select list 1.
               If so ,then use it. If not or if command line
               value is '' then leave blank
               for user to fill in on DataWrite request
               if it has a value @ID then use the value of
               the @ID control in argstring
               if "&NEXT.AVAILABLE&" generate next available
      FieldName are fields to be displayed.
Back to Index

HTMLAssocEntry generates a data entry form for the specified associated
               multivalued fields in table with the field
               names in the first row and n rows of data
               entry controls
Calling sequence is
HTMLAssocEntry [TableOptions] [-TV] [-DEPTH n] [-DT|-CT|-DB-|-CB|-C | -R n] [DICT] FileName DataRecID FieldName ...
where -DEPTH n means display n lines of data entry controls; default = 1
use only -DEPTH to generate a new record form
      -TV means generate the lines as columns instead of rows with
          the field names in the first row.
      -DT means construct DEPTH input row followed
          by rows displaying all existing lines (non-empty multivalues)
          new input line becomes top line in assoc
      -DB means construct DEPTH input rows after
          rows displaying all existing lines (non-empty multivalues)
          new input line becomes bottom line in assoc
      -CT means construct DEPTH input rows followed
          by rows containing input controls for
          all existing lines (non-empty multivalues)
          new input line become top line in assoc
      -CB means construct DEPTH input row after
          rows containing input controls for
          all existing lines (non-empty multivalues)
          new input line become bottom line in assoc
      -C  means construct rows for changing existing lines
          no new lines may be entered. Any DEPTH parameter is ignored.
      -CI  means construct rows for changing existing lines
          no new lines may be entered. Any DEPTH parameter is ignored.
          Count I type values as non-empty so an Itype can be used to
          set number of rows
      -N n creates new input lines beginning with value n (default: 
          end of existing values
      -NH No header display
      -R n selects only the nth row of the association for update. Any
          -DEPTH is ignored.
    	-HR n specifies to repeat the header row every n rows
      TableOptions is any of the following:
      -BORDER n (default = 0)
-CELLSPACING n (default = 1)
      -CELLPADDING n (default = 5)
      -WIDTH xx{%} (default = no width specification)
      -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
      -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
          specifies global cell alignment
              Values are supplied with comma as delimiter.
      -COLOREVEN #xxxxxx
      -COLORODD #xxxxxx (default = #FFFFFF)
      -COLORHEAD #xxxxxx 
      FileName the file being updated
      DataRecID is the record to be updated. If @SELECT then
              see if there is a record ID in select list 1.
               If so ,then use it. If not or if command line
               value is '' then leave blank
               for user to fill in on DataWrite request
               if it has a value @ID then use the value of
               the @ID control in argstring
      FieldName are fields to be used. If no FieldNames are specified
                then use @REVISE phrase if present, else just
                generate an @ID control
Back to Index

HTMLAssocMerge combines rows that have identical controlling fields
usage: HTMLAssocMerge file @ID fields
where the specified fields define the association.
     there must be at least 2 fields
     the first field is a quantity field
     the second field is the controlling field
     starting with the controlling value of the last row, HTMLAssocMerge
     looks for a row with the identical value. If found, it adds the
     quantity in the last row to the quantity in the row with the identical
     controlling value and deletes the last row.
     for example, if the association has 2 fields and 3 rows:
     2   ABC32
     1   BEF98
     3   ABC32
After processing the association would be:
     5   ABC32
     1   BEF98
Back to Index

TMCAssocSort re-sorts the values in an association
Calling sequence is: TMCAssocSort [-A|-D] field file recordID assoc
where -A|-D specify the sort order, default is -A
      field is the field by which the values should be sorted
      two fields can be specified by specifying an X item in
      the following format:
      SORT-SPEC:
      0001: X
      0002: field1:@VM:field2:@SM:field-conv
      file is the file which contains the record
      recordID is the ID of the record which contains the association
      to sort
      assoc is the association PHrase
Back to Index

HTMLAssocWrite updates the fields of the specified association with
data from argstring
Usage: HTMLAssocWrite [-D field value | -UF | -UL ] file recid field ...
where the fields define the association
          file specifies the filename
          recid specifies the record
the values for the fields are in argstring specified as field<n>=value
where <n> specifies the row in the association.
<-1> means add to the end. <0> means insert as first row, pushing existing rows down one row
The record must exist in the file
If -D field value is specified the row which has field = value is deleted.
field must be one of the fields defining the association.
if none of the values match the specified value, the operation is ignored silently.
if field is the special name @ROW.NO, then the value is the row number to delete.
fields are deleted.
If a control record named ASSOCDELETE is in the argstring, the values are rows to delete from the
resulting record. All other updates are completed first and then the ASSOCDELETE rows are
deleted.
-UL or UF specifies that the association rows should be unique for the fields that are
preceded with a "-" character. -UL means keep the last of the matching
rows; -UF means keep the first. E.g.:
HTMLAssocWrite -UL ORDER.FILE QUANTITY -PROD.NO -COLOR
specifies that if there are rows that have identical values for the 
PROD.NO and COLOR fields, keep the last one.
HTMLAssocWrite assumes that if there are any control names of the form nnn<-1> or nnnn<0>, there is
is only one such row being appended or prepended to the existing data in the association.
If there are multiple occurrences for these controls, they are considered multiple values for the one row.
These control forms can not be mixed with controls specifying specific row numbers
Back to Index

HTMLCalDisp - Display a calendar for a specified month
usage: HTMLCalDisp [-W] [-L link] [-E EndMon] [-M] [-S|-D]
                   StartMonth [Year]
  StartMonth The month or the beginning of a range of months
             when -E is used
  Year       The Year of the month to display (default=current)
  -U link    The url of the control handling the action, to which
             '+@dow=date' will be appended. (& if + is used)
  -W         Don't display weekends as actionable (linked)
  -E EndMon  The last month to process in a range
  -M         Start week on Monday
  -P	       Do not display dates Prior to today as links
  -S         Inclusion Array using this format:
               internal_date@VMopt@VMhtml(text.links,images)@VM:celldisplay.array
               opt:
             if SLNum is not specified, SL 1 is used
  -D         Exclusion Array using this format:
               internal_date@VMcellopt@VMhtml(text.links,images)@VMcelldisplay.array
               opt:
             if third option, html(text.links,images), is unspecified
               link will be used if specified.
             if SLNum is not specified, SL 1 is used
  -N /URI    Specify alternate URI for next/prev links. If URI is
             /DEFAULT the default action is used, if no URI is specified
             the navigation is disabled
update to use css for formatting
calmonth - month in heading
caldow - day of week row
caltable - calendar table
caltablesub - nested calendar table (with -N)
caltablerow - modify tr in caltable
caltablehead - modify th in caltable
caltablecell - modify td in caltable
caltabletoday - modify td in caltable
callink - modify a tag
calitem1 - modify a text item
calitem2 - modify a text item
calitem3 - modify a text item
calitem4 - modify a text item
calitem5 - modify a text item
Back to Index

HTMLCapture captures the output of a WKCONTROL transaction
usage: HTMLCapture [-Q] [-A "argstring"] wkcontrolID file record
where wkcontrolID is the name of the WKCONTROL transaction to execute
      file and record specify where to write the output of the transaction
      -A "argstring" uses the specified argstring. Argstring should be
         in plain text which means that & can not be in the data.
         e.g., -A "arg1=Value1&arg2=value2&arg3=value3"
      -Q indicates quiet mode (no output for use in admin controls)
Back to Index

HTMLCat copies specified html to standard out with or without substitution
usage: HTMLCat [-TS|-CS] file html
where html is the record in file that contains the html source
      -CS specifies performing a Command Line substitution
      -TS specifies performing a text substitution
      -TA XXX specifies performing text substitution and outputting XXX=result
          (used in ADDARGS segment for placing html segment
      -Q  exit quietly
CommandLineSubstitute:
           strings of the form &xxxx (&^xxxx) are replaced
           with the value of argstring variable xxxx (upcased
           value of argstring variable xxxx for &^xxxx)
           x is alphameric or . - _ characters
           if value contains spaces it is quoted before substitution.
           If xxxx is not in argstring or is empty, the string
           is deleted, unless the next character after xxxxx is ";"
           if next characters after xxxxx are "\&", they are deleted
           from output. This lets you substitute a value before a
           alphameric or one of the characters ".-_"
           E.g. If argstring contains Type=blue and
           SegmentInfo (or html segment) contains Filename=&Type\&.txt
           the output is Filename=blue.txt
 TextSubstitute:
           Same as CommandLineSubstitute except value is never quoted.
Back to Index

HTMLCatFun is similiar to HTMLCat, but can be called from an ITYPE
usage: SUBR("HTMLCatFun","File htmlFile",ReplacementStrings)
where File is of the form "File htmlFile" or "File/htmlFile"
htmlFile contains html source  
If html source contains a substitution of the form &OPTIONx where x is a 
number, then x is used as an index of a multivalued argument: 
ReplacementStrings. If htmlFile contains a &OPTION without a number, the 
whole ReplacementStrings is used
-----------------
example ITYPE: 
SUBR("HTMLCatFun","PROJECT.BITS viewproject.link",@ID:@FM:TITLE)
example html: 
    viewproject.link
<p><a href="/bin/f.wk?project.view+&OPTION1">&OPTION2</a></p>
Back to Index

HTMLAuthnet interfaces with the Authorize.net CreditCard
processing web interface
Usage: HTMLAuthNet [-M Merchant_ID] [-P Password] [-T] [-D]
        In a Validate WKCONTROL Segment.
Integration guide:
http://www.merchantexpress.com/authorizenet/adc_integration_guide.htm
URL for authnet processing:
new: https://secure2.authorize.net/gateway/transact.dll
Advanced Integration Specs:
http://www.mmcis.com/Internal/Quality/manual/AIM_specs.pdf
Advanced Integration Specs FULL:
http://www.mmcis.com/Internal/Quality/manual/AIM_guide.pdf
Options:
----------------------------
     -D              - Debug mode
     -M Merchant_ID  - default is cac7447ma
     -P Password     - default is something I won't type here
     -T              - puts AuthNet into Test mode
Arguments
----------------------------
Unless @AUTHNET_ARGS is in the argstring, these values are expected in the
argstring
 @AN_METHOD - CC | ECHECK | AUTH_ONLY | PRIOR_AUTH_CAPTURE | VOID
 following are required values for CC or if @AN_METHOD is not present
 @AN_AMOUNT  - amount no dollar sign
 @AN_CARDNUM - 11 numbers usually
 @AN_EXPDATE - mmyy or mm/yy
 @AN_FNAME   - any strin
 @AN_LNAME   - any strin
 @AN_ADDRESS - any strin
 @AN_ZIP     - zip code
 following are required values for xMethod PRIOR_AUTH_CAPTURE
(in addition to above)
 optional:
 @AN_ORDERID - as an invoice number
 @AN_DESCRIPTION - description of charges
 @AN_CARDCODE - card code from the back of the card
 @AN_TRANSID - transaction id passed back form AUTH_ONLY transaction
	 Required for PRIOR_AUTH and VOID xMethods (@AN_METHOD)
 @AUTHNET_ARGS=
 Following are required fields for @AN_METHOD = ECHECK
 @AN_AMOUNT - amount no dollar sign
 @AN_RECURRING = Usually Yes
 @AN_BANKCODE - ABA code
 @AN_ACCTNUM - bank account number
 @AN_ACCTTYPE - bank account type - CHECKING is only valid value for now
 @AN_BANKNAME - bank name
 @AN_ECHECKTYPE - WEB
 @AN_FNAME   - any strin
 @AN_LNAME   - any strin
 @AN_ADDRESS - any strin
 optional:
 @AN_ORDERID - invoice number
 @AN_DESCRIPTION - description of charges
 "xInvoiceNum,xAmount xCardNum,xExpDate,xfirstname,xlastname,xaddress,xzip,xCardcode,xDescription"
 NOTE: There is no smart parsing of comma's so fields can not contain commas - yet
Return Values
----------------------------
ErrorMsg          = Message if card is declined or if something went wrong
AUTHNET-RAWRETURN = the entire cvs output
AUTHNET-TRANSID   = transaction id needed for reversing charges and stuff
AUTHNET-AUTHCODE  = authorization code needed for reversing charges and stuff
AUTHNET-MESSAGE   = the message returned
CCVALID           = 1 on success or 0 for failure
Back to Index

HTMLCreditCardCheck performs a reasonableness check on credit card information
useage: HTMLCreditCard CardNumber CardType CardExpMonth CardExpYear
if the CardNumber is not a valid number for the CardType, HTMLCreditCard
outputs "CNUMBER=0" and "CCVALID=0"
If valid, it outputs "CNUMBER=canonical form of credit card number" and
         "CCVALID=1"
HTMLCreditCard is meant to be called by an ADDARGS WKCONTROL segment.
CardType = "MasterCard" or "VISA" or "AMEX" or "Discover"
If CardNumber starts with string MMCIS then report good.
  or string defined in VOC entry HTML.CCPREFIX
if CardType = "Calc" then calculate type from Card Number
Back to Index

HTMLLinkPoint interfaces with the linkpoint credit card processing
processing web interface
Usage: HTMLLinkPoint [-M Merchant_ID] [-P pemFile] [-T mode] [-D] [-U url]
        In a Validate WKCONTROL Segment.
Advanced Integration Specs:
https://www.mmcis.com/Internal/Quality/manual/linkpoint/LinkPointAPIv3_6.pdf
Advanced Integration Specs FULL:
https://www.mmcis.com/Internal/Quality/manual/linkpoint/LinkPointCentralv3_6.pdf
Options:
----------------------------
     -D              - Debug mode
     -M Merchant_ID  - default is 950598
     -P pemFile      - location in the file system that contains the pem file 
     -T              - TBD: Test mode
     -U              - URL to submit [ default is the real linkpoint server]
Arguments
----------------------------
 @LP_METHOD - CC*|ECHECK|Preauth|Postauth|Void|Credit|Calcshipping|Calctax
 Required values for "sale" method 
 @LP_AMOUNT  - amount no dollar sign
 @LP_CARDNUM - 11 numbers usually
 @LP_EXPMONTH - mm
 @LP_EXPYEAR - yy
 @LP_ADDRESS - any string
 @LP_ZIP     - zip code
 optional:
 @LP_FNAME   - any string
 @LP_LNAME   - any string
 following are required values for x_Method PRIOR_AUTH_CAPTURE
(in addition to above)
 optional:
 @LP_ORDERID - as an invoice number
 @LP_DESCRIPTION - description of charges
 @LP_CARDCODE - card code from the back of the card
 @LP_TRANSID - transaction id passed back form AUTH_ONLY transaction
	 Required for PRIOR_AUTH and VOID x_Methods (@LP_METHOD)
 @LINKPOINT_ARGS=
 Following are required fields for @LP_METHOD = ECHECK
 @LP_AMOUNT - amount no dollar sign
 @LP_RECURRING = Usually Yes
 @LP_BANKCODE - ABA code
 @LP_ACCTNUM - bank account number
 @LP_ACCTTYPE - bank account type - CHECKING is only valid value for now
 @LP_BANKNAME - bank name
 @LP_ECHECKTYPE - WEB
 @LP_FNAME   - any string
 @LP_LNAME   - any string
 @LP_ADDRESS - any string
 @LP_ADDRESS2 - any string
 @LP_CITY - any string
 optional:
 @LP_ORDERID - invoice number
 @LP_DESCRIPTION - description of charges
Return Values
----------------------------
ErrorMsg          = Message if card is declined or if something went wrong
LINKPOINT-RAWRETURN = the entire cvs output
LINKPOINT-TRANSID   = transaction id needed for reversing charges and stuff
LINKPOINT-AUTHCODE  = authorization code needed for reversing charges and stuff
LINKPOINT-MESSAGE   = the message returned
CCVALID           = 1 on success or 0 for failure
--------------------------------------------------
Back to Index

HTMLSecurePay interfaces with the SecurePay CreditCard
processing web interface
Usage: HTMLSecurePay [-M Merchant_ID] [-P Password] [-T] [-D]
        In a Validate WKCONTROL Segment.
https://www.securepay.com/secure16/index.cfm
Options:
----------------------------
     -D              - Debug mode
     -M Merchant_ID  -
     -P Password     -
     -T              - puts AuthNet into Test mode
Arguments
----------------------------
these values are expected in the argstring
 @AN_METHOD - CC | ECHECK | AUTH_ONLY | PRIOR_AUTH_CAPTURE | VOID
 following are required values for CC or if @AN_METHOD is not present
 @AN_AMOUNT  - amount no dollar sign
 @AN_CARDNUM - 11 numbers usually
 @AN_EXPDATE - mmyy or mm/yy
 @AN_NAME   -
 @AN_STREET -
 @AN_CITY -
 @AN_STATE -
 @AN_ZIP     - zip code
 @AN_EMAIL - any string
 @AN_FMETHOD - POST, GET, or NO (return post method)
 @AN_SUCCESS_URL - return for success
 @AN_FAILURE_URL - return for failure
 @AN_SEND_MAIL - "Yes" (send an email to the merchant)
 @AN_SECURE_PAGE - name of (uv) File to write the SecurePay response to
 optional:
 @AN_ORDERID - as an invoice number
 @AN_DESCRIPTION - description of charges
 @AN_TRANSID - transaction id passed back from AUTH_ONLY transaction
	 Required for PRIOR_AUTH and VOID xMethods (@AN_METHOD)
Return Values
----------------------------
Return_Code       = Y or N
Approv_Num        = the approval number or "NOT APPROVED" for return code N
Card_Response     = verbose text from processor.
AVS_Response      = see below
VoidRecNum	    = Transaction ID, needed for matching transaction to
                    charge or for VOID or refund
AVS Result Code:
            A  =   Address (Street) matches, ZIP does not
            E  =   AVS error
            G  =   Non-U.S. Card Issuing Bank
            N  =   No Match on Address (Street) or ZIP
            R  =   Retry . System unavailable or timed out
            S  =   Service not supported by issuer
            U  =   Address information is unavailable
            W  =   9 digit ZIP matches, Address (Street) does not
            X  =   Address (Street) and 9 digit ZIP match
            Y  =   Address (Street) and 5 digit ZIP match
            Z  =   5 digit ZIP matches, Address (Street) does not
Back to Index

HTMLCGIDecode converts CGI encoded characters to their hex equivalents,
and spaces to "+"
it is written as a subroutine so it can be called from I-Types
Back to Index

HTMLCGIEncode converts all non alphameric characters to their
CGI encoding: space converts to "+"
all other non alphamerics to %xx where xx is the hexadecimal character code 
it is written as a subroutine so it can be called from I-Types
Back to Index

HTMLCGIParse returns the input argument string with any CGI
escape sequences replaced by plain text characters
Back to Index

HTMLClink executes a report and then post processes the output
replacing constructs like <....> with the output of the specified
I-Type. It does not generate the HTML headers.
Calling sequence is: HTMLCLink "command" file itype
where command is the command line to execute
      file is the name of the file containing the itype
      itype is the name of an itype dictionary entry in filename
Back to Index

HTMLCmdChk checks the first token on the command line to 
see if it is a command that is authorized to be executed
the list of authorized commands is maintained as a record
named HTMLValidCommands in VOCLIB.
You can specify a class of commands to allow by making an entry in
VOCLIB HTMLValidCommands of the form XXXX... where you want to authorize
any command starting with XXXX
Back to Index

HTMLCommandLoop creates a select list from a multiple value
forms control and executes the specified command for each value
in the select list with the next list value appended to the command.
usage: HTMLCommandLoop controlname cmd
where controlname is the name of the form control (cannot be @FileName or @ID)
      cmd is the command to execute.
in between each command execution, HTMLCommandLoop clears /FORMS/ common
by setting ArgString = 0
e.g.  HTMLCommandLoop RECORDS "DISPLAY.RECORDS"
if argstring = RECORDS=1&RECORDS=2&RECORDS=3
would cause the following three commands to be executed:
 DISPLAY.RECORDS 1
 DISPLAY.RECORDS 2
 DISPLAY.RECORDS 3
Back to Index

HTMLCookieExpires generates the expiration date for a COOKIE header.
calling sequence in itype is: subr("HTMLCookieExpires","DATE")
where:
 DATE=n [year{s} | month{s} | day{s}]
 DATE=n [hour{s} | minute{s} | second{s}]
 years|months|days are specified with time = current TOD
 years are calculated as 365.25 days
 months are calculated as 30.4375 days
Back to Index

HTMLCreateSelect builds a select list with additional text prepended.
Usage: HTMLCreateSelect [-L "literal string to put on top"] [-C "command to run - output goes on top"] "select command you would have put in F10"
result is put in SLIST 1
use ~ to indicate a field mark and %%NULL%% if you want to indicate an empty
value.
Back to Index

HTMLCryptFun encrypts and mimeencodes 
usage: SUBR("HTMLCryptFun","VALUE")
-----------------
Back to Index

HTMLCustDemo returns information from the demo file CUSTOMERS
Back to Index

HTMLDataDisplay generates a HTML for displaying the specified fields
               for a record in a uniVerse file. Calling sequence is:
HTMLDataDisplay [-A|TV|T1|TH|T2|TM "file:rec,..."] {TableOptions}
                       {DICT} FileName DataRecID FieldName ...
where FileName is the file to be displayed
      DataRecID is the record to be displayed.
      if it has a value @SELECT then look in SELECT LIST 1 for ID(s)
      if it has a value @ID then use the value of the @ID control
          in argstring
       -A is used when DataDisplay is called as an ADDARGS segment.
      -TV means display the fields in a two column table with
          field name in column 1 and field values in column 2
      -TM "[file:]rec[,...]" means to display the fields in an
          n column table with field name in column 1 and the
          field values in columns 2 through n.
          file:rec specifies the additonal file/recs. If other
    files are specified they must have the same dictionary structure
          since only the dictionary of the FileName is used.
      -T1 means display the fields in a one column table alternating
          between field name and data value
      -TH means display the fields horizontally in a 1 row table
          alternating between field name and data value
      -T2 means display the fields horizontally in a 1 row table
          with the label and data seperated by a <br>
      -A  specifies this call is in a WKCONTROL ADDARGS and output
          should be in the for @FIELDNAME=DATA
          The reason that a "@" is added is so that we won't have to
          worry about screwing up valid data for writes later.
          (note: @@ID could and should appear)
      -NH specifies that heads should not be displayed
      TableOptions is any of the following:
           -NOEMPTY - don't display fields with no value
           -BORDER n (default = 0)
           -CELLSPACING n (default = 1)
           -CELLPADDING n (default = 2)
           -WIDTH xx{%} (default = no width specification)
ALIGN specifies table alignemt
           -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
CALIGN specifies global cell alignment
     -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
	Values are supplied with comma as delimiter.
	Defaults are right for -TH and right,top for -TV
	and left for -T2
           -COLOREVEN #xxxxxx
           -COLORODD #xxxxxx
      FieldName are fields to be used. If no FieldNames are specified
                then use @HTMLDISPLAY phrase if present else just display @ID
      leading + is stripped from fieldname before processing
Back to Index

HTMLDataEntry generates a data entry form for the specified file
              and fields. Calling sequence is:
HTMLDataEntry {TableOptions} {-NH} {-Tx|A} {-EC classname} {DICT} {RequiredOptions} FileName DataRecID FieldName ...
where -TV means display the fields in a two column table with
          field name in column 1 and entry control in column 2
      -TH  means display the fields horizontally in a 1 row table
           alternating between field name and entry control
      -T1 means display the fields in one column, rows alternate
          between names and controls
      -T2 means display the fields in two rows, top row displays
          names and bottom displays controls
      -T3 means display the name in a label tag followed by the controls
      -NH don't display headers
      if no option is specified, -TV is assumed
      -EC means add class="classname" to tag if that field's
          name is contained in the @ErrorFields argument.
      -ES means add span with class="classname" around tag(s) if that field's
          name is contained in the @ErrorFields argument.
      -EA means put argument @ErrorFIELDNAME=classname on argstring if 
          that field's name is contained in the @ErrorFields argument
          -EA is ignored unless -A specifed
      TableOptions is any of the following:
           -BORDER n (default = 0)
     -CELLSPACING n (default = 1)
           -CELLPADDING n (default = 2)
           -WIDTH xx{%} (default = no width specification)
           -ALIGN [left|center|right] (default = no alignment)
CALIGN specifies global cell alignment
           -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
              Values are supplied with comma as delimiter.
              Defaults are right for -TH, right,top for -TV
	and -T1 and center for -T2
           -COLORHEAD #xxxxxx
           -COLOREVEN #xxxxxx
           -COLORODD #xxxxxx
      RequiredOptions is one of the following:
            -RB fieldname - puts value of the field named fieldname
                             in a column before the label column
            -RA fieldname - puts value of field named fieldname
                             in a column after the label column
                 fieldname must be an Itype that generates a text value
                 such as "*" or an image tag
            -RI  fieldname - inserts prompt in middle of value of field named
                 fieldname. fieldname must be an Itype that generates a
                 value of the form xxxx@VMyyy. @VM is a value mark CHAR(253).
                 The prompt replaces the @VM.
                 So to make the prompts red, fieldname would be an Itype with
                 the value:    "<font color=red>":@VM:"</font>"
                 To place an asterisk after the prompt name (default if no
                 -Rx option is specified, Itype would be @VM:"*"
      FileName the file being updated
      DataRecID is the record to be updated. If @SELECT then
              see if there is a record ID in select list 1.
               If so ,then use it. If not or if command line
               value is '' then leave blank
               for user to fill in on DataWrite request
               if it has a value @ID then use the value of
               the @ID control in argstring
               if "&NEXT.AVAILABLE&" generate next available
      FieldName are fields to be used. If no FieldNames are specified
                then use @REVISE phrase if present, else just
                generate an @ID control. + before a fieldname specifies
                a REQUIRED field. (see -RA, -RB, -RI). If no -Rx is specified
                an asterisk "*" is suffixed to prompt name.
 If the argstring contains an argument name @ErrorFields then
 @ErrorFields value is fieldname[<br>fieldname]...
 if HTMLDataEntry finds a field named in the that argument, it checks the
 dictionary to see if field.ERROR exists. If it does, HTMLDataEntry
 substitutes that field and continues processing.
* mdj 170202 added -T3 to enclose field label in <label></label> tag, followed
* immediately by the form control for use in some responsive frameworks.
Back to Index

HTMLDataWrite uses values returned from a form generated by HTMLDataEntry
              to update a record in a file.
Calling sequence is:
        HTMLDataWrite [filename [ recid field ...]]
        field - specifies a field to be updated in the specified file. 
	  Field may be a data field name or a phrase, in which case the 
  value of the phrase is substituted for the phrase.
        For each specified field, HTMLDataWrite extracts value of the 
  argstring control named field.
        If only filename or no arguments are specified, 
        the record ID is taken from the @ID=id argstring value.
        If fields are not specified, then HTMLDataWrite processes all 
  the control=value pairs in argstring with control being the field 
	  name and value being the new data.
        A control name of the form WKOTHERWKnnnnn is treated as the free 
	  form input of the "OTHER" choice in a radio or check box control. 
  The WKOTHERWK is stripped and the control is processed as if it 
        were nnnnn=value.
        Control names of the form nnnnnnn<  >, which specify multivalued 
  field values are only processed when fields are not specified on 
        the command line. Use HTMLAssocWrite to process associations.
        Control names starting with @ are ignored unless specified on 
        the command line.
        If filename is not specified then HTMLDataWrite looks for argstring 
	  value @FileName=filename
        If @ID value is the null string then use &NEXT.AVAILABLE& if present 
        otherwise return an error.
        If there is a submit control named @DELETE in the argstring, the 
        record is deleted from the file unless there is a filename called 
  @FileName_DEL, in which case the record is copied there.
        The recommended way of deleting a record is to use a separate form 
        that calls a delete transaction.
        Field names with + prefix are stripped before processing
        @NEW.ROW and @NEW.TABLE are ignored
 
        if the dictionary contains a field named @IPADDRESS and the
        argstring has a value @IPADDRESS, the value is written to that field
Back to Index

HTMLDateArgs looks for @STARTDATE and @ENDDATE in argstring and sets defaults in they are not present
usage: HTMLDateArgs startdef enddef
where startdef and endded are the strings that indicate no date was entered.
if no start date is specified @STARTDATE is set to 1/1/0001
if no end date is specified @ENDDATE is set to today + 1
HTMLDateArgs is meant to be called in an ADDARGS HTMLForms segment type
Back to Index

HTMLDeleteZero deletes trailing lines that match a pattern from an association.
usage: HTMLDeleteZero [-Z zerotemplate] file recordID field ...
where the specified fields define the association.
      zerotemplate is an X item in the DICT of the specified file
          that defines what lines to delete. Field 2 of this record
          must have the same number of values as the association has fields.
          Each value contains either the @NULL value (char(128) or
          a value which defines a line to be deleted.
          The default pattern is a 0 or null string in field 1.
          To delete lines which have the string "-Select Value-" in the
          the first of three values and any value in values 2 and 3:
          the X item would look like:
          ITEM-NAME
          0001: X
          0002: -Select Value-|^128|^128
         where | is a value mark and ^128 is the NULL value.
          you may also specify a pattern as:
          value @svm [< | > | <= | >=]
                in which case the line is deleted if the value is
                < (or > or <= or >=) to the corresponding field value
                e.g., 0@svm>= specifes deleting any line with field
                containing a zero or negative #. 0>=fieldvalue
          or
          pattern @svm matches
               in which case, the line is deleted if the value MATCHES
               the specified pattern
Back to Index

HTMLDictDisplay generates the HTML for displaying a field
                based on the directions in the dictionary entry
                for that field.
HTMLDictDisplay(DataRec,DataRecID,openDict,DictID,HTMLLabel,HTMLTag)
where DataRec is the current data record being processed
      DataRecID is the record ID of DataRec
         if DataRecID has a @VM in it then this a call from HTMLTableDisplay
         for a BY.EXP report so treat multivalue fields as single value
         using the value specified by the second value in DataRecID
      openDict is an open file variable for the dictionary file
      DictID is the name of the field being processed
      HTMLLabel is used to return various information
      HTMTag is used to return the HTML tag sequence generated
        if HTMLTag = "%%NOREAD%%" then the dict record is already
        in HTMLLabel so it does not have to be read. Used by HTMLTableDisplay
Return values generated by HTMLDictEntry:
 0 - successful; HTMLTag contains the HTML statements to
     display the data entry form; HTMLLabel contains field label
     DictID contains the dictionary entry for that field
 1 - Dict entry was a phrase; the value of the phrase is in HTMLLabel
     with each token (field name) separated by a FM
-1 - Could not process field; reason message is in HTMLLabel
HTMLDictDisplay uses field 12 of the dictionary to specify
how a data entry is to be displayed
Field 12       Control Used
---------     ------------------------------------------------------
empty         data value is oconv'd
              if single valued field, no further processing
              if multivalued, @VM are replaced with <BR> sequence
PASSWORD	data is replaced with a field width of "*" characters
Back to Index

HTMLDictEntry reads a dictionary entry and prepares an HTML
              tag that can be used to enter data for that field
HTMLDictEntry(DataRec,DataRecID,openDict,DictID,HTMLLabel,HTMLTag)
where DataRec is the current data record being processed
      DataRecID is the record ID of DataRec
      openDict is an open file variable for the dictionary file
      DictID is the name of the field being processed
      HTMLabel is used to return field label
      HTMTag is used to return the HTML tag sequence needed
             to generate the form control,
             and to denote this call is for an association entry
             where each multivalue is considered a single value
             even though the dictionary entry is multi-valued
             (HTMLTag = 1)
return values generated by HTMLDictEntry:
 0 - successful; HTMLTag contains the HTML statements to
     generate the data entry form control, HTMLTag contains the field label
 1 - Dict entry was a phrase; the value of the phrase is in HTMLLabel
     with each token (field name) separated by a FM
-1 - Could not process field; reason message is in HTMLLabel
The Dict Name field (F4) is used to specify the label text
format is label[@SVMpos@TMdatalabel]
label is returned in HTMLLabel
datalabel is returned in HTMLTag together with form control html based on pos
     pos          HTMLTag format
      T           datalabel<br>controlhtml
      R           controlhtml&nbsp;datalabel
      B           controlhtml<br>datalabel
      L           datalabel&nbsp;controlhtml
HTMLDictEntry uses field 10 of the dictionary to specify
how a data entry control is to be built.
In the table below, the string before the first Mark (VM,SVM, or TM)
is the FormatType
For all format types, the initial value can be specified by specifying
 FORMATTYPE@TMinitialvalue. This initial value does not override the value in
an existing record.
Field 10       Control Used
---------     ------------------------------------------------------
empty         input control for single valued field, textarea for multivalued
INPUT@svmoncond@svmplaceholder input control
               (mainly used for initial value specification)
               oncond is oncondition
               placeholder generates placeholder attribute
               for oncond and initial value: INPUT@tmvvvv@svmOncond
               for placeholder:  INPUT@svm@svmplaceholder
INPUTM	input control - set maxlength to size
DRADIO@VM[group][@VMtext] creates a RADIO button in group using either
              the specified text or the data value if no text is specified
              as the button explanation. For example:
              DRADIO@VMAORB@VMChoice A -->  [] Choice A
              If data value is XXX then
              DRADIO@VMBGROUP -->  [] XXX
              The value is set to group if specified otherwise DataID is used
PASSWORD	use a password type input tag
RADIO@svm@smvoncond@VMvalue[@SMlabel]@VMvalue[@SMlabel]..   or
RADIO@svm@svmoncond@VMvalue[@TMlabel]@VMvalue[@TMlabel]..  (deprecated) or
RADIO@svmS@smvoncond@vmCmd   create RADIO buttons for specified values
              must be a single value field.
              If the data values have a Text Mark in them (SVM is allowed
              for backward compatibility), then the data before the TM is
              set as the value of the choice, and the data after the TM is
              used as the prompt for the choice.
              If data values are XXX and YYY then
              RADIO@VMXXX@TMChoiceA@VMYYY@TMChoiceB --> []Choice A []Choice B
              RADIO@VMXXX@VMYYY -->  [] XXX  [] YYY
              if RADIO@svmS is specified then the Cmd is executed.
              It must return the values in Select List 1.
              values are returned in Select List 1.
              If the returned values have a Text Mark in them,
              the value is the data before the TM and the label is after.
              The commmand is subject to command line substitution.
RADIOV...     same as RADIO but display choices vertically
CHECK@svm@svmoncond@VMvalue@VMvalue.. or
CHECK@svmS@svmoncond@vmCmd   create CHECK buttons for specified values
              must be a multivalue field
              Processing of CHECK@svmS and values with Text Marks in them
              is the same as for RADIO.
CHECKV...     same as CHECK but display choices vertically
SELECT[M][R][@SVMnn@SVMoncond]@VMcmd[@VMitype]  EXECUTE cmd and use output as
                                   SELECT list data
              cmd is subject to command substitution (see HTMLForms)
              before execution.
              cmd must return values in SELECT LIST 1
              If SELECTR or SELECTMR is specified the ID of the current
              record is appended to the VMcmd command line before executing.
              If no cmd is specified us data from field (execute Itype
              if field is an itype).
              In either case if the data contains a TM then use the
              characters before the TM as the prompt and the characters
              after as the value of each option
              nn specifies depth of generated SELECT tag - default=4
              if field is multivalued then generate a multiple select
              set to selected any values in data field that match select list
              if itype is specified, use itype to transform data values before
              setting them to selected
              SELECTM forces a multiple select for association line
              items (HTMLTag = 1)
              oncond - text specifying event handler options
TEXTAREA[@VMvalue1@VMvalue2@VMplaceholdertext] display as textarea with size=value1,
	wrap=value2; must be multivalued. Valid values for
		wrap are off, soft and hard.
              placeholder text becomes the value of the placeholder attribute
NULL		Display contents of field 4 without a form element
Hn		Create heading control using <Hn> tags
HFn		Create heading control using <font size=n> tags
STATIC[@VMtagopen@SMtagclose]	Display value of field as text only. use tagopen*               and tagclose to format the output using HTML
HIDDEN[@VMNODISPLAY]	Generate a hidden form element. If NODISPLAY is not
              specified then display field name and value as text.
              If NODISPLAY then do not display
DISPLAY	display value as text
CUSTOM@VMcmd  Execute "cmd" and put the output into HTMLTag
              Do command line substitution on cmd before executing
ASSOCDELETE   Create control tags for use by HTMLAssocEntry and
              HTMLAssocWrite to delete a row in an association.
              Used in an I-Type that generates text or image to go with
              the generated check box used to delete the row.
              if the I-type value contains <*> then the value
              is returned as is. No check box is generated
ASSOCEDIT     Create control tags for use by HTMLAssocEntry with -R
              option
              the generated check box used to delete the row.
UPFILE	create a file type input control - must be used with
  <form method="post" action="/bin/fup.wk?... enctype="multipart/form-data">
              form specification.
if F11 specifies that the data is to be written to another field
(DATA@vmfieldname), then the ControlName is set to that fieldname.
if @BOOTSTRAP=1 on argstring then don't use &nbsp; in button labels
Back to Index

HTMLDictRead reads the dictionary entries specified by the @REVISE
phrase in the specified file into a dynamic array, separated by @IM.
It also returns the width of the widest column header
The first dict entry returned is always @ID
Back to Index

HTMLDictWrite updates a field with a new value based on the format information
              in the dictionary for that field.
HTMLDictWrite(DataRec,DataRecID,openDict,DictID,FormData,flag)
where DataRec is the current data record
      DataRecID is the record ID of DataRec
      openDict is an open file variable for the dictionary file
      DictID is the name of the field being processed
      FormData is the data generated by the input form for this field
      flag is used to pass in initialization information and
      pass back error information
      if flag is 0, this is a new field and the old value should be
      deleted before processing; if it is 1 then this is a multi
      value field being added to.
return values are:
 0 - successful; DataRec contains the updated value.
-1 - error; error message in flag
if DictID has the form xxxxx<n> or xxxxx<n,m> then
          DICTWRITE uses xxxxx as the field name
          and writes the FormData as the nth value in the field
          or the mth subvalue in the nth value.
          if there are multiple values then the FormData is appended as
          the last subvalue in the nth value or the
          last sub-subvalue in the mth subvalue or the nth value.
          n = 0 means insert value as first value pushing existing
          values down.
          n = -1 means insert value as last value
          n = -2 used for multiple add as last value arguments

HTMLDictWrite uses field 11 of the dictionary to specify
how to turn the FormData into the new data value.
Field 11      Action
---------    ---------------------------------------------------------
empty        iconv the FormData and put into data field
PASSWORD     iconv the FormData and put into data field
SELECT@VMcmd   execute "cmd" with FormData as argument, results returned
             in select list 1
RADIO        iconv the FormData and put into data field
CHECK        iconv the FormData and append it to data field
DRADIO       put FormData into data field - no iconv
DATA@VMfieldname treat as if the field name was fieldname. This can be used
             in ITypes to write Itype generated data into a data field.
REQUIRED@VMItype@VMErrorMsg evaluate Itype. ErrorMsg replaces prompt when
             specified
DictID of the form WKQTYWKqname-pname-pvalue is a special control used to
pass quantity and product ID values in one control for shopping cart apps.
HTMLDictWrite treats this as two controls of the form:
        qname<-2>=FormData
        pname<-2>=pvalue
Back to Index

HTMLDirectoryList list files in specified Type 1 or 19 file
usage: HTMLDirectoryList [-D deleteTransaction] filename [pattern]
      where filename is the Type 1 or 19 file
      -D deleteTransaction specifies the WKCONTROL transaction to delete
         a record from this file
      pattern is a shell file selection pattern
HTMLDirectoryList generates a table displaying the
        FileName LastModifiedDate size
        the filename is a download link. 
        if -D is specified, it adds a link of the form:
        <a href="/bin/f.wk?deleteTransaction+@ID=name>(click here to delete)</a>
Back to Index

HTMLDataEntry generates a data entry form for the specified file
              and fields. Calling sequence is:
HTMLDataEntry {TableOptions} {-NH} {-Tx|A} {DICT} {RequiredOptions} FileName DataRecID FieldName ...
where -TV means display the fields in a two column table with
          field name in column 1 and entry control in column 2
      -TH  means display the fields horizontally in a 1 row table
           alternating between field name and entry control
      -T1 means display the fields in one column, rows alternate
          between names and controls
      -T2 means display the fields in two rows, top row displays
          names and bottom displays controls
      -NH don't display headers
      if no option is specified, -TV is assumed
      TableOptions is any of the following:
           -BORDER n (default = 0)
     -CELLSPACING n (default = 1)
           -CELLPADDING n (default = 2)
           -WIDTH xx{%} (default = no width specification)
           -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
CALIGN specifies global cell alignment
           -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
              Values are supplied with comma as delimiter.
              Defaults are RIGHT for -TH, RIGHT,TOP for -TV
	and -T1 and CENTER for -T2
           -COLORHEAD #xxxxxx
           -COLOREVEN #xxxxxx
           -COLORODD #xxxxxx 
      RequiredOptions is one of the following:
            -RB fieldname - puts value of the field named fieldname
                             in a column before the label column
            -RA fieldname - puts value of field named fieldname
                             in a column after the label column
                 fieldname must be an Itype that generates a text value
                 such as "*" or an image tag
            -RI  fieldname - inserts prompt in middle of value of field named
                 fieldname. fieldname must be an Itype that generates a
                 value of the form xxxx@VMyyy. @VM is a value mark CHAR(253).
                 The prompt replaces the @VM.
                 So to make the prompts red, fieldname would be an Itype with
                 the value:    "<font color=red>":@VM:"</font>"
                 To place an asterisk after the prompt name (default if no
                 -Rx option is specified, Itype would be @VM:"*"
      FileName the file being updated
      DataRecID is the record to be updated. If @SELECT then
              see if there is a record ID in select list 1.
               If so ,then use it. If not or if command line
               value is '' then leave blank
               for user to fill in on DataWrite request
               if it has a value @ID then use the value of
               the @ID control in argstring
               if "&NEXT.AVAILABLE&" generate next available
      FieldName are fields to be used. If no FieldNames are specified
                then use @REVISE phrase if present, else just
                generate an @ID control. + before a fieldname specifies
                a REQUIRED field. (see -RA, -RB, -RI). If no -Rx is specified
                an asterisk "*" is suffixed to prompt name.
 If the argstring contains an argument name @ErrorFields then
 @ErrorFields value is fieldname[<br>fieldname]...
 if HTMLDataEntry finds a field named in the that argument, it checks the
 dictionary to see if field.ERROR exists. If it does, HTMLDataEntry 
 substitutes that field and continues processing. 
Back to Index

HTMLDoMethod returns the output generated by executing the
requested method on the specified document
Back to Index

HTMLDoSelect executes a paragraph using select list entries as arguments
calling sequence: HTMLDoSelect {-R} n PARAGRAPH arg arg ...
where n is the number of the select list to print
where PARAGRAPH is a paragraph in VOC file to execute
and arg ... are additional parameters to pass to the PARAGRAPH
the first parameter is always the select list value
Back to Index

HTMLEchoArgs returns the POST argument=value pairs one to a line.
HTMLEchoArgs -T just returns the argument value pairs - no header, no <br>
Back to Index

HTMLEmployeeDirectory returns employee information
Back to Index

HTMLEncode executes a uniVerse command and encodes the output
usage: HTMLEncode command
command must be the first argument so if it has spaces it must be
enclosed in quotes
Back to Index

HTMLEntity converts all the HTML metacharacters
that are meant to be displayed as regular text into HTML Entities
usage: HTMLEntity(string)
Back to Index

HTMLEntitySub calls the HTMLEntity function to encode various special characters
usage(in itype): SUBR("HTMLEntitySub",strong)
Back to Index

HTMLEnv sends back an html document that details the environment
as seen by the uniVerse backend
usage: HTMLEnv {ALL{=x}} {ENV=envvar}
if ALL is specified then ENV returns additional information:
  WHO, ipcs
and it sleeps for x (default=10) seconds so it can test simultaneous connections
if ENV=envvar is specified, HTMLEnv returns one line:
     @envvar=value
where value is the value of the Environment Variable envvar
     if envvar has the value "HTTP_HOST_DOMAIN" then 
     return the domain part of HTTP_HOST (the last two fields separated by .)
Back to Index

HTMLError constructs an error message that contains the calling
program's name and the specified message surrounded by horizontal rules
It assumes that if RUN or RAID is used, the program file name is
specified as the second token  (i.e. no default to BP)
If VOC contains HTML.ERRORMSG PAragraph, it is executed instead of
HTMLErrorContact, WKErrorID is added as arg2
Back to Index

HTMLFile opens a sequential file for processing direct to the browser
Usage HTMLFile [-h "MIME-type" | -m mimefilename] [-NC] /full/path/to/file
use the "-h" flag to precede the output with HTMLTextHeader
or specify the mime-type, enclosed in quotes. Use the tilde(~)
between MIME strings to produce multi-line MIME headers.
      if -m mimefilename is specified, HTMLFile uses the ext of the filepath
      to look up the mime type in mimefilename. In most cases, the mime file
      can be a Q pointer to WK.MIME.TYPES in WebKit.
      if -NC is specified, HTMLFile outputs only the header - no content
Back to Index

HTMLFormGen generates a form page from the information in the WKCONTROL file
calling sequence is: HTMLFormGen forms.id
where forms.id is the id of the record in the WKCONTROL file that contains
the control information about how to construct the page.
The WKCONTROL file record contains the name of the uniVerse file that
contains the static html segments and a list of html segment file names
and uniVerse file names used to generate the form controls
The forms control information is specified as
            filename recordid field ...
where filename is the name a uniVerse file
      recordid is the record to update - specify as '' if new record
      field ... are the names of the fields to generate controls for
Back to Index

HTMLFormProc processes a form based on information in the WKCONTROL file
calling sequence is: HTMLFormProc forms.id 
where forms.id is the id of the record in the WKCONTROL file that contains
               the control information about how to process the form request
               The WKCONTROL file record contains the name of the uniVerse
               file that contains the static html segments and a list of
               html segment file names and uniVerse file names used to
               process the form controls
      standard  in may contain the POST arguments from the form
Back to Index

HTMLForms processes a form based on information in the WKCONTROL file
calling sequence is: HTMLForms {-NH} forms.id
where forms.id is the id of the record in the WKCONTROL file that contains
               the control information about how to process the form request
               The WKCONTROL file record contains the name of the uniVerse
               file that contains the static html segments and a list of
               html segment file names and uniVerse file names used to
               process the form controls
      standard in may contain the POST arguments from the form
      if so the argument string is put into a named common variable so
      it can be used by segments
  -NH  means do not generate any HTTP headers.
      if the FORM.FILE field in the WKCONTROL file contains a "&" character
      then TextSubstitution (see below) is performed before opening.
supported control segment types are:
   Type     Parameters
 ADDRGS    command to execute. Postargs are passed via named common
           strings of the form &xxx are replaced with the value of
           argstring variable named xxx before executing.
           Strings of the form &^xxx are replaced with UPCASE of value.
           Each line of output is placed on the front of argstring.
           Each line should be of the form nnnn or nnnn=xxxx
 ENCODE    command to execute - output is CGI encoded
 EXECUTE   command to execute, Post args are passed via named common
 REXECUTE  command to execute, Post args are passed via named common
           SegmentInfo subject to CommandLineSubstitute (see below)
 IEXECUTE  same as REXECUTE except command is chained to so all output
           is under control of command. Used for HTMLFile output
 OEXECUTE  same as REXECUTE except the output is generated real time
           rather than captured. Should be preceded by FLUSH
 GENID     command - name of a command that will generate on standard out
           a record ID for the incoming data.
 HEADER    HTTP header record to insert in output stream
	     Note: Use the character "|" or a sub-value mark to insert
           a carriage return on output. (Useful for MIME types)
           HEADER outputs a null line following header.
           SegmentInfo subject to CommandLineSubstitute (see below)
 HTML	     name of record in form file containing static html
 SHTML     name of record in form file. Each line is subject
           to TextSubstitution (see below)
           The SegmentInfo is subject to TextSubstitute.(See below)
 LITERAL   inline text to insert in output stream
	     Note: Use a sub-value mark to insert a carriage return on
            output. (Useful for MIME types)
           SegmentInfo subject to TextSubstitute (see below)
 FLUSH     flush the output stream. Like LITERAL except after the
           text is inserted in the output stream, the output is written
           to the server.
             (this does not work because the STDOUT pipe is usually buffered)
 REQUIRED  names of controls that must be present in argstring and contain
           non null value. If not then if ERROR transaction is specified,
           control is passed to it. Otherwise an error message is generated
           the list of missing field infro is put on the argstring
           as @ErrorMsg and the transaction is terminated.
 SAVEARGS  field number to save argstring in. For debugging, this will save
           the raw argstring in the field in record specified by @ID of
           file specified by @FILENAME
 VALIDATE  executes a validation routine and puts the value
           returned in the first line onto the argstring as @AuthLevel=n
           if value returned is 0, it executes the ErrorSegment
           Second and subsequent lines of output are put on the
           the argstring, as in ADDARGS.
           if no error segment, it issues an error message and aborts.
           SegmentInfo subject to CommandLineSubstitute (see below)
 VALIDATES same as validate but it does not issue an error message for 0
           If an ERROR transaction is specified for either VALIDATE or
           VALIDATES, then if the return is not a numeric > 0 then
           control is passed to the ERROR transaction, after putting
           @AuthLevel argument on the argstring.
 COOKIE    Specifies cookie parameters to be inserted in the header
           name=value;expires=dotw, dd-mon-yyyy hh:mm:ss GMT;path=path;
                       DOMAIN=domain; [secure]
           default domain is sending server, default path is path of doc
           default expires is life of browser session. GMT is only vald tz.
           @COOKIE.name=value is put on the argstring as well.
           The date can be specified as an interval from now by substituting
           WKEXPIRES=DATE for EXPIRES=date
           where:
              DATE=n [year{s} | month{s} | day{s}]
              DATE=n [hour{s} | minute{s} | second{s}]
              years|months|days are specified with time = current TOD
              years are calculated as 365.25 days
              months are calculated as 30.4375 days
              examples:
                 testcookie=blah; wkexpires=2 days; path=/bin
                 testcookie=; wkexpires=-1 hours (unset testcookie)
 BRANCH    switches to the transaction control returned by execution
           of the command in segment info. Command line substitution is
           performed on the segment info before execution
           If output of command is "", then control is passed to the
           next segment (no branch).
           if the segment info starts with "=", then the segment info is used
           as the branch target. (e.g., BRANCH =NEXT.STEP branches to NEXT.STEP)
 GOSUB     same as BRANCH but control returns to the next segment in this control
           after executing the specified transaction. May be used recursively.
 COMMENT   The segment is ignored. SegInfo can be used to comment.
CommandLineSubstitute:
           strings of the form &xxxx (&^xxxx) are replaced
           with the value of argstring variable xxxx (upcased
           value of argstring variable xxxx for &^xxxx)
           x is alphameric or . - _ characters
           if value contains spaces it is quoted before substitution.
           If xxxx is not in argstring or is empty, the string
           is deleted, unless the next character after xxxxx is ";"
           if next characters after xxxxx are "\&", they are deleted
           from output. This lets you substitute a value before a
           alphameric or one of the characters ".-_"
           E.g. If argstring contains Type=blue and
           SegmentInfo (or html segment) contains Filename=&Type\&.txt
           the output is Filename=blue.txt
 TextSubstitute:
           Same as CommandLineSubstitute except value is never quoted.
Back to Index

HTMLFormsD processes a form based on information in the WKCONTROL file
calling sequence is: HTMLFormsD {-NH} forms.id
where forms.id is the id of the record in the WKCONTROL file that contains
               the control information about how to process the form request
               The WKCONTROL file record contains the name of the uniVerse
               file that contains the static html segments and a list of
               html segment file names and uniVerse file names used to
               process the form controls
      standard in may contain the POST arguments from the form
      if so the argument string is put into a named common variable so
      it can be used by segments
  -NH  means do not generate any HTTP headers.
      if the FORM.FILE field in the WKCONTROL file contains a "&" character
      then TextSubstitution (see below) is performed before opening.
supported control segment types are:
   Type     Parameters
 ADDRGS    command to execute. Postargs are passed via named common
           strings of the form &xxx are replaced with the value of
           argstring variable named xxx before executing.
           Strings of the form &^xxx are replaced with UPCASE of value.
           Each line of output is placed on the front of argstring.
           Each line should be of the form nnnn or nnnn=xxxx
 ENCODE    command to execute - output is CGI encoded
 EXECUTE   command to execute, Post args are passed via named common
 REXECUTE  command to execute, Post args are passed via named common
           SegmentInfo subject to CommandLineSubstitute (see below)
 IEXECUTE  same as REXECUTE except command is chained to so all output
           is under control of command. Used for HTMLFile output
 OEXECUTE  same as REXECUTE except the output is generated real time
           rather than captured. Should be preceded by FLUSH
 GENID     command - name of a command that will generate on standard out
           a record ID for the incoming data.
 HEADER    HTTP header record to insert in output stream
	     Note: Use the character "|" or a sub-value mark to insert
           a carriage return on output. (Useful for MIME types)
           HEADER outputs a null line following header.
           SegmentInfo subject to CommandLineSubstitute (see below)
 HTML	     name of record in form file containing static html
 SHTML     name of record in form file. Each line is subject
           to TextSubstitution (see below)
           The SegmentInfo is subject to TextSubstitute.(See below)
 LITERAL   inline text to insert in output stream
	     Note: Use a sub-value mark to insert a carriage return on
            output. (Useful for MIME types)
           SegmentInfo subject to TextSubstitute (see below)
 FLUSH     flush the output stream. Like LITERAL except after the
           text is inserted in the output stream, the output is written
           to the server.
             (this does not work because the STDOUT pipe is usually buffered)
 REQUIRED  names of controls that must be present in argstring and contain
           non null value. If not then if ERROR transaction is specified,
           control is passed to it. Otherwise an error message is generated
           the list of missing field infro is put on the argstring
           as @ErrorMsg and the transaction is terminated.
 SAVEARGS  field number to save argstring in. For debugging, this will save
           the raw argstring in the field in record specified by @ID of
           file specified by @FILENAME
 VALIDATE  executes a validation routine and puts the value
           returned in the first line onto the argstring as @AuthLevel=n
           if value returned is 0, it executes the ErrorSegment
           Second and subsequent lines of output are put on the
           the argstring, as in ADDARGS.
           if no error segment, it issues an error message and aborts.
           SegmentInfo subject to CommandLineSubstitute (see below)
 VALIDATES same as validate but it does not issue an error message for 0
           If an ERROR transaction is specified for either VALIDATE or
           VALIDATES, then if the return is not a numeric > 0 then
           control is passed to the ERROR transaction, after putting
           @AuthLevel argument on the argstring.
 COOKIE    Specifies cookie parameters to be inserted in the header
           name=value;expires=dotw, dd-mon-yyyy hh:mm:ss GMT;path=path;
                       DOMAIN=domain; [secure]
           default domain is sending server, default path is path of doc
           default expires is life of browser session. GMT is only vald tz.
           @COOKIE.name=value is put on the argstring as well.
           The date can be specified as an interval from now by substituting
           WKEXPIRES=DATE for EXPIRES=date
           where:
              DATE=n [year{s} | month{s} | day{s}]
              DATE=n [hour{s} | minute{s} | second{s}]
              years|months|days are specified with time = current TOD
              years are calculated as 365.25 days
              months are calculated as 30.4375 days
              examples:
                 testcookie=blah; wkexpires=2 days; path=/bin
                 testcookie=; wkexpires=-1 hours (unset testcookie)
 BRANCH    switches to the transaction control returned by execution
           of the command in segment info. Command line substitution is
           performed on the segment info before execution
           If output of command is "", then control is passed to the
           next segment (no branch).
           if the segment info starts with "=", then the segment info is used
           as the branch target. (e.g., BRANCH =NEXT.STEP branches to NEXT.STEP)
 GOSUB     same as BRANCH but control returns to the next segment in this control
           after executing the specified transaction. May be used recursively.
 COMMENT   The segment is ignored. SegInfo can be used to comment.
CommandLineSubstitute:
           strings of the form &xxxx (&^xxxx) are replaced
           with the value of argstring variable xxxx (upcased
           value of argstring variable xxxx for &^xxxx)
           x is alphameric or . - _ characters
           if value contains spaces it is quoted before substitution.
           If xxxx is not in argstring or is empty, the string
           is deleted, unless the next character after xxxxx is ";"
           if next characters after xxxxx are "\&", they are deleted
           from output. This lets you substitute a value before a
           alphameric or one of the characters ".-_"
           E.g. If argstring contains Type=blue and
           SegmentInfo (or html segment) contains Filename=&Type\&.txt
           the output is Filename=blue.txt
 TextSubstitute:
           Same as CommandLineSubstitute except value is never quoted.
Back to Index


HTMLGenID generates the next ID for the specified file
* HTMLGenID generates the next ID for the specified file
* Calling sequence is: HTMLGenID [-F|X|S|D] [-A[idname]] idtype] filename [id]
*            -A specifies to generate output for use in an ADDARGS segment
*              which needs @ID=nnnn
*            -Aidname species an ID different from @ID
*                useful when there is an @ID for a different file already
*                on the argstring - returns idname=nnnn
*            -F  used with [id] to force the specified id to be created if it doesn't exist
*            -X  generate ID without writing anything
*            -S  Save the NewID generated to select list 1
*            idtype specifies the type of ID to generate
*                   -D generates an ID of the form DDDDD-TTTTT (date-time)
*                   -D9 generates an ID of the form DDDDD-TTTTTTTTT (date-time)
*                   -Pidprefix genearate an ID of the form idprefixDDDDD-TTTTT
*                   -Ndictentry generates a next available sequence
*                     using the information in the dictentry X item
*                   -Odictentry / -Edictentry same as -N but only uses odd/even
*                   -U use the upcased value of the control specified by
*                      argument as the ID
      *            -Rx generate random number ID with optional x number of chars
*                  default is -N
* for -D and -N:
*            filename is the name of the file
*            id - if id is specified and exists in filename then
*                 HTMLGenID just returns it, other wise it generates a newone
*                this allows HTMLGenID to be used in an ADDARGS segment
*                to conditionally create a new record.

*                if id = @SELECT then use the first item on SELECT list 1
*
matt
Back to Index

HTMLGetArg returns the single argument or argument pair from
an argument string.
The argument string possibly contains multiple argument names or
argument name, argument value pairs separated by @FM
if the argname is a number n then HTMLGetArg returns the nth arguement
pair. If argname is not a number then HTMLGetArg looks for an
argument with that name.
if the specified argument name does not appear in the argstring
return @NULL otherwise return the name or the name=value
multiple selection list boxes can put several argument name, value
pairs into the argument string that have the same argument name
if HTMLGetArg is called with an argument name, it returns all argument
or argument name, value pairs with that name, separated by @FM
unless the argument name starts with @ in which case it returns the first only
if argument name is @SUBMIT then HTMLGetArg returns the following depending
on the format of first argument starting with @SUBMIT
 argument format         returned
 @SUBMIT=xxxxxx          xxxxxx
 @SUBMIT.yyyyyy=xxxxxx   yyyyyy
 @SUBMIT.zzzzzz.x        zzzzzz
 @SUBMIT.zzzzzz.y        zzzzzz
This allows the form to contain multiple submit buttons or images, each
conveying a different action or value.
Back to Index

HTMLGetArgSub returns the value returned by HTMLGetArg
get the argument string
Back to Index

HTMLGetCookie extracts the cookie values from the EnvString 
and outputs strings of the form @COOKIE.name=value 
Used in ADDARGS HTMLForms segments to extract cookie information
usage: HTMLGetCookie [name [filename [cmd]]]
if no [name filename cmd] are specified, HTMLGetCookie just generates
an @COOKIE.name=value pair for every COOKIE in the input string
if there are cookies in the env that do not have a value, they are ignored
if [name filename cmd] are specified, HTMLGetCookie looks for a 
cookie named name. If no filename and cmd are specified, it returns
@COOKIE.name=value.
If filename is specified, if value exists as a record ID in filename
it returns @COOKIE.name=value otherwise it executes 
  cmd filename
and returns whatever comes back in Standard out as value in 
@COOKIE.name=value
if name and filename are specified without cmd, cmd defaults to
HTMLGenID -D
Back to Index

HTMLGetID @ID argument from a post argstring
and executes the specified command with @ID as its argument
Calling sequence is: HTMLGetID commnd
where:     command is a command to execute
Back to Index

HTMLGetPostargs returns the CGI argument string
the normal place for the arguments to come from is standard input.
on some machines, inputif has a 4K limit so the argstring is read
from the temporary file f.wk puts it in.
It also reads the environment variables and stores them in EnvString
The VOC entry HTML.TRACExxx controls whether GETPOSTARGS saves the
command environment or enters RAID
If HTML.TRACExxx exists and xxxx is the IP address of the invoking client
then the command and argstring are stored in HTML.LAST.CMDxxx in the VOC
If HTML.TRACExxx field 2 is * then trace all IPs
If field 3 has the VALUE "ON"
then enter the debugger just before going back to calling program
it puts any cookies on the argstring as @COOKIE.cookiename=value
Back to Index

HTMLGetPostargs returns the CGI argument string
the normal place for the arguments to come from is standard input.
on some machines, inputif has a 4K limit so the argstring is read
from the temporary file f.wk puts it in.
It also reads the environment variables and stores them in EnvString
The VOC entry HTML.TRACE controls whether GETPOSTARGS saves the
command environment or enters RAID
If HTML.TRACE exists and field 2 is the IP address of the invoking client
then the command and argstring are stored in HTML.LAST.CMD in the VOC
If field 3 has the VALUE "ON"
then enter the debugger just before going back to calling program
Back to Index

HTMLGetPostargs returns the CGI argument string
GETPOSTARGSD waits on stdin for file name poiting to the argstring tmp file
Back to Index

HTMLGetPostargs returns the CGI argument string
GETPOSTARGSD waits on stdin for file name poiting to the argstring tmp file
Back to Index

HTMLGridDisp formats a report using Bootstrap tags
Calling Sequence is:
HTMLGridDisplay {GridOptions} {-WKR wkreport} {-SF|SM|SE|NT|NH} {-TO} {-TT text} {-HT text} -HR n {DICT} FileName Fieldnames...
where -WKR indicates a call from HTMLReport - column headers contain
        links to sort on column
        use of WKR requires wkrup.gif and wkrdown.gif exist in WKIMAGES
        and are 13 x 13 pixel images.
        wkreport must be WKCONTROL transaction name or name
        plus arguments (e.g., WKC.TRAN+arg1=3&arg2=blah)
        It may also contain the explicit relative URL
        e.g., /bin/f.wk?wkc.tran+arg1=3&arg2=blah
        for HTMLReport calls the field may be specified as
        dfield|sfield where dfield is the field displayed, while
        the sort URLs use sfield.
      -SF means first in a series
      -SM means middle of a series
      -SE means last of a series
      -TO means display only the header and total rows
      -TT text supplies the text to be displayed in the first column
          if the total row (assumes at least one @TOTAL fieldname in fields)
          if first column is a totaled column the text is not displayed.
      -HT specifies the text to be displayed as the table's caption
      -HR specifies to repeat the header row every n rows
      -NT|NH specifies that the headers not be displayed
 GridOptions is any of the following:
           -BORDER n (default = 2)
           -CELLSPACING n (default = 1)
           -CELLPADDING n (default = 5)
           -NOEMPTY - don't display fields with null string value
           -WIDTH xx{%} (default = no width specification)
     ALIGN specifies table alignemt
           -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
CALIGN specifies global cell alignment
           -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
              Values are supplied with comma as delimiter.
              Defaults are RIGHT,TOP
           -COLOREVEN #xxxxxx
           -COLORODD  #xxxxxx (default = #FFFFFF)
           -COLORHEAD #xxxxxx
      FileName the file being displayed
      FieldName are fields to be used.
        for HTMLReport calls FieldName can be:
            #FieldName - don't sort on this column
            dFieldName|sFieldName - display dFieldName but sort on sFieldName
        @TOTAL FieldName - Total this column - FieldName must be a
        numeric field (D or I) and cannot be PHRASE name
        HTMLGridDisplay generates a row at the bottom that contains
        the total of that column.
      @ID(s) of records to be displayed are in select list 1
      If the select list contains value designators as a result of a by.exp select,
      HTMLGridDisplay uses the value number to select the value for each multivalued field.
Back to Index

HTMLGridOptions parses the table formatting arguments from the command line
function HTMLGridOptions(GridOptions,CellAlignment,HTMLOutput)
it returns the first non table formatting option it finds in the command line.
if an option value is missing (-BORDER with no n, e.g.), it returns -1 as it value
and the error message in HTMLOutput
It returns the GridOptions and CellAligment Options ready to be passed to HTMLTagGrid
      GridOptions are any of the following:
           -BORDER n (default = 0)
           -CELLSPACING n (default = 1)
           -CELLPADDING n (default = 5)
           -NOEMPTY - don't display fields with null string value
           -WIDTH xx{%} (default = no width specification)
                ALIGN specifies table alignemt
           -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
                CALIGN specifies global cell alignment
           -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
              Values are supplied with comma as delimiter.
              Defaults are RIGHT for -TH and RIGHT,TOP for -TV
           -COLOREVEN #xxxxxx
           -COLORODD #xxxxxx
           -COLORHEAD #xxxxxx
           -CLASS text
Back to Index

HTMLIndex generates a page of links from the information
in Select List 1
Calling sequence is: HTMLIndex type
where type indicates the format of the list and can be one of:
         UL - bulleted list
         DL - Definition List format
         TABLE - table format
         Hn - header paragraph format where n = 1-6
  if type is not specified, UL is the assumed
Index data is in Select List 1 in the form:
              index_link @SM index_description
Back to Index

HTMLLoadEmps loads the EMPLOYEES file
Back to Index

HTMLMail mails the output of the specified command to the
list of addressees specified.
There are two versions of HTMLMail, the newer one gets the to and from
addresses using HTMLGetArg. This allows the use of special characters,
like single quotes. @EMAILTO @EMAILFROM
usage:  HTMLMail [-d] [-s "subject"]  command
The old version reads them from the command line.
usage:  HTMLMail [-s "subject"] [-r "replyTo"] -l "addressees" command
where   subject is the subject of the message. Default is
  "WebKit Mail"
        addressees is a space delimited list of email recipients
        command is the command which will generate the body of the email
        the -l species that a separate mail should be sent to
        each recipient in the list of "addresses"
there is also a new syntax for specifying the HTML.LAST.CMD.
the old form (which is still supported) of HTML.LAST.CMD is:
 PA
 SH -c 'mhmail <<C2>>'
the new syntax is
X
mhmail "%Addresses%" -subject "%Subject%" -from "%ReplyTo%"
in either case the actual mail command format may vary.
if -d is specified, the temporary file is not deleted in WKSCRIPTS
Back to Index

HTMLManageList manipulates select lists
usage: HTMLManageList -S sl# filename recid fieldnum
 save the specified list as a field in the specified file,record
       HTMLManageList -SA sl# filename recid fieldnum
 append the specified list to a field in the specified file,record
       HTMLManageList -G sl# filename recid fieldnum
 create the specified list from the values in the  specified file,record,field
       HTMLManageList -C sl1 sl2 sl3
 combine sl1 and sl2 and put into sl3
       HTMLManageList -U sl1 sl2
 delete duplicates in sl1 so sl2 has unique values
Back to Index

HTMLMetaSend mails the output of the specified command to the
list of addressees specified.
There are two versions of HTMLMetaSend, the newer one gets the to and from
addresses using HTMLGetArg. This allows the use of special characters,
like single quotes. @EMAILTO @EMAILFROM
usage:  HTMLMetaSend [-s "subject"] [-r "replyTo"] "addressees" command
The old version reads them from the command line.
usage:  HTMLMetaSend [-s "subject"] [-r "replyTo"] "addressees" command
where   subject is the subject of the message. Default is
  "WebKit Mail"
        addressees is a space delimited list of email recipients
        command is the command which will generate the body of the email
Back to Index

HTMLMetaSend mails the output of the specified command to the
list of addressees specified.
There are two versions of HTMLMetaSend, the newer one gets the to and from
addresses using HTMLGetArg. This allows the use of special characters,
like single quotes. @EMAILTO @EMAILFROM
usage:  HTMLMetaSend [-s "subject"] [-r "replyTo"] "addressees" command
The old version reads them from the command line.
usage:  HTMLMetaSend [-s "subject"] [-r "replyTo"] "addressees" command
where   subject is the subject of the message. Default is
  "WebKit Mail"
        addressees is a space delimited list of email recipients
        command is the command which will generate the body of the email
Back to Index

HTMLMail mails the output of the specified command to the
list of addressees specified.
There are two versions of HTMLMail, the newer one gets the to and from
addresses using HTMLGetArg. This allows the use of special characters,
like single quotes. @EMAILTO @EMAILFROM
usage:  HTMLMail [-d] [-s "subject"]  command
The old version reads them from the command line.
usage:  HTMLMail [-s "subject"] [-r "replyTo"] -l "addressees" command
where   subject is the subject of the message. Default is
  "WebKit Mail"
        addressees is a space delimited list of email recipients
        command is the command which will generate the body of the email
        the -l species that a separate mail should be sent to
        each recipient in the list of "addresses"
there is also a new syntax for specifying the HTML.LAST.CMD.
the old form (which is still supported) of HTML.LAST.CMD is:
 PA
 SH -c 'mhmail <<C2>>'
the new syntax is
X
mhmail "%Addresses%" -subject "%Subject%" -from "%ReplyTo%"
in either case the actual mail command format may vary.
if -d is specified, the temporary file is not deleted in WKSCRIPTS
Back to Index

HTMLContinueMultiPart executes the specified command and appends the
multipart mixed replace boundary string to it.
The specified command must generate correct html including the header
Back to Index

HTMLStartMultiPart writes out the header for a multipart mixed doc
Back to Index

HTMLMultiMail  - send multipart emails. 
usage:  HTMLMail [-d] [-s "subject"]  command
The old version reads them from the command line.
usage:  HTMLMail [-s "subject"] [-r "replyTo"] -l "addressees" command
where   subject is the subject of the message. Default is
  "WebKit Mail"
        addressees is a space delimited list of email recipients
        command is the command which will generate the body of the email
        the -l species that a separate mail should be sent to
        each recipient in the list of "addresses"
there is also a new syntax for specifying the HTML.LAST.CMD.
the old form (which is still supported) of HTML.LAST.CMD is:
 PA
 SH -c 'mhmail <<C2>>'
the new syntax is
X
mhmail "%Addresses%" -subject "%Subject%" -from "%ReplyTo%"
in either case the actual mail command format may vary.
if -d is specified, the temporary file is not deleted in WKSCRIPTS
Back to Index

HTMLNextAvail returns the next available ID for a file
where  filename is the name of the file.
       file is an open file variable to data portion of the file
       NextAvailID is the ID of the next available record in the dict
       NextAvailRec is used to pass back the next available record
       as it was written back to the dictionary.
It reads the specified next available record from the dictionary of the 
specified file and extracts the next sequential ID from field 2
of the X record.
It tries to read that ID. If it can read it, it bumps the ID by 1
and tries until it gets an error reading the ID. It then bumps the
ID by one and writes back the next available record.
if there is an error the function returns a value of -1 and the
error message is in NextAvailRec
Back to Index

HTMLNextTag scans a string for an HTML Tag and returns pointers
to the tag in the string as well as the name of the tag
calling sequence: HTMLNextTag(UpcaseString,Pointer,TagStart,TagEnd)
where UpcaseString is the input string - it should be in all uppercase
      Pointer is the substring pointer of where the scan should begin
      TagStart returns the substring index of the first character
       of the Tag (the character after the <)
      TagEnd returns the substring index of the final ">" of the tag
the value of the function is the tag name (everything from the initial > to
the first space character.
If it doesn't find a Tag in the string the value returned is the null string
Back to Index

HTMLQuestionDisplay generates the HTML from input based on the
MQ.PANSET file of predefined questions.
  Usage HTMLQuestionDisplay PanelID AnsID [isPrint]
 where:
  PanelID - Identifier for questions
  AnsID - The ID of the answer record
  isPrint - Displays entry without tables when value is # 0
**************
Back to Index

HTMLQuestion generates the HTML for a form from the
MQ.PANSET file of predefined questions.
  Usage HTMLQuestion PanelID [Page] [QuestStart]
 where:
  FormsFile - File where templates are stored
  PanelID - Identifier for questions
  Page (default: 1)- Page to display
  QuestStart (default: 1)- Question number to start with
Questions are derived from MQ.PANSET
  display is determined by the following fields:
  PanelID - An identifier for this questionnaire
  SEQ - Position on the form
  LABEL - Text displayed as field prompt, except when TYPE is file
          then this field contains the directory name.
  TYPE - Type of form object
     TEXT - Single line text entry, use multivalues for more than one
            input per line, results in multivalued field
     TEXTAREA - Multi-line text area
     RADIO - Radio Buttons values are found in F7
     CHECK - Check Boxes values are found in F7
     DISPLAY - Display values as text only (column headings)
     FILE - The name of the file in the directory defined in F2
  SIZE - Size (width) of text entry field. default is 30
  LAYOUT - Specify how the data should be arranged using Fnnn.
           Options are:
     R|C - Rows or Columns
     nnn - Number of rows or columns
  VALUES - Values for RADIO and CHECK, the name of FILE, or the
           text preceding multiple input boxes (see TEXT)
  PAGE - Page number on which to display this field in SEQ order
**************
Back to Index

HTMLPerform executes a uniVerse command and returns the output
the command is passed as a single argument so it must be
enclosed in quotes if it has any white space
Back to Index

HTMLPrintSelect prints the entries in specified select list
This allows the SELECT SAVING.. to generate html without the report headers
calling sequence: HTMLPrintSelect [-R] n m
where n is the number of the select list to print
where m is either 1 (display selected count) or 0 (do not display)
      -R means display in reverse order
Back to Index

HTMLQBEEqual creates a query from selected field values
usage: HTMLQBEEqual filename
       argstring optionally contains @Filename=filename (the name of the file)
       and FIELDNAME=FIELDVALUE pairs
       The command line filename overrides any @Filename in the argstring
       controls that have the empty string as their value and
       controls that are not fields in the file are ignored.
HTMLQBEEqual constructs a query that returns the records that have the
specified values in the specified fields in Select List 1
if the client IP address matches the one in HTML.TRACE VOC entry,
HTMLQBEEqual stores the constructed RETRIEVE sentence in the
VOC entry HTML.QBEEQUAL
Back to Index

HTMLQBELike creates a query from selected field values
usage: HTMLQBELike [-OR_AND | -OR_OR | -AND_OR | -AND_AND] filename [fieldname] ...
     argstring contains (optionally) @Filename=filename (the name of the file)
     filename on command line overrides argstring filename
     and FIELDNAME=FIELDVALUE pairs
     if fieldname(s) are specified on the commmand line then only those
     arguments are treated as field names
     The options determine how the words/phrases within a field and
     the fields themselves are joined in the query. The default is -OR_AND
HTMLQBELike constructs a query that returns the records that have the
specified values in the specified fields in Select List 1
it ignores controls that have the null string specified as value in argstring.
or controls that are not fields in the file
The search terms can include strings of the form "...." "...."
the strings inside the "'s are to be treated as phrases
e.g., if the argstring is FIELD1=word+"a phrase"&FIELD2=another
then HTMLQBELike filename FIELD1 FIELD2 generates the select
          SELECT filename WITH (FIELD1 LIKE ...word...
              OR FIELD1 LIKE '..."a phrase"...'
              AND WITH (FIELD2 LIKE ...another...)
      HTMLQBELike -AND_AND filename FIELD1 FIELD2 generates the select
          SELECT filename WITH (FIELD1 LIKE ...word...
              AND FIELD1 LIKE '..."a phrase"...'
              AND WITH (FIELD2 LIKE ...another...)
if a search word starts with "[" then the comparison is anchored at the start
if a search word ends with "]" then the comparison is anchored at the end
[word] is the equivalent of an equal comparison
if we are tracing then
HTMLQBELike stores the constructed RETRIEVE sentence in the
VOC entry HTML.QBELIKExxx
where xxx is the remoteIP
Back to Index

HTMLQBELike creates a query from selected field values
usage: HTMLQBELike filename
     argstring contains (optionally) @Filename=filename (the name of the file)
     filename on command line overrides argstring filename
     and FIELDNAME=FIELDVALUE pairs
HTMLQBELike constructs a query that returns the records that have the
specified values in the specified fields in Select List 1
it ignores controls that have the null string specified as value in argstring.
Back to Index

HTMLQuizGen generates a multiple choice quiz
usage: HTMLQuizGen quizfilename [resultsFileID resultsFileName offset]
Input is in quiz file. Each record has the form
   Field 1 - question [@VM M | S]
   Field 2-n - choices
Record IDs have the form test-section-questionIdentifier
Records are passed in Select List 1
HTMLQuizGen generates a table of the questions followed by radio buttons
named questionIdentier.
if @VM M is specified after the question, generate a multiple check box
if @VM S is specified after the question, generate a select list
if @VM MS is specified after the question, generate a mulitple select list
if resultsFileName and resultsFileID are specified, HTMLQuizGen reads
the results record and sets the current answer as checked.
   resultsFileName is the name of the results file
   resultsFileID is the record
   offset is the field before the first answer
Back to Index

HTMLReferCheck serves the specified page if the HTTP_REFER value is
specified in a file named authreferer in the directory
containing the file. If the REFERER is not authorized
HTMLReferCheck looks for a page named nauthreferer in the
same directory and serves that. If that doesn't exist, it
sends back a Locate for the page /NotFound which should
result in the default Not Found message from the server.
If there is no authrefer file in the directory, the page is served
The path of the file requested is passed in PATH_INFO env variable.
There must be a cgi program setup that calls HTMLReferCheck.
E.g.  if the following sgi script is named check in cgi directory /bin
 #!/bin/sh
 # generalized script for invoking a uniVerse program to process
 # post method input from form
 WKPROD="*** put production WebKit Account Path Here ***"
 WKPREPROC="HTMLReferCheck"
 CGIBIN="$WKPROD/WKSCRIPTS"
 cd $WKPROD
 UVCMD="$WKPREPROC "
 TERM=dumb $CGIBIN/execuv "$UVCMD"
then to serve the page /private/page.html the URL would be
http://www.mmcom.com/bin/check/private/page.html
Back to Index

HTMLRemove reads a specified number of ID's stored in a named savedlist and
saves them to SLIST 1.
usage: HTMLRemove browselist numentries
where browselist is the name of a saved select list
      numentries is the number of entries to copy to SLIST 1 (default 1)
HTMLRemove copies numentries records from browselist, and saves them to SLIST 1 * for further processing.
Back to Index

HTMLReport generates a report from the information in the specified
record in the WKREPORT file
usage: HTMLReport [-SO|-D|-P|-C[D] reportcommand] [-N filename] [-USL] reportid {wkcontrolid|-} [-F displayfield] [ [-]sortfield ] ...
where  reportid is the ID of a report descriptor record WKREPORT
       wkcontrolid is the name of the wkcontrol transaction that
           will do the generated sorting links. This transaction
           must look for sort column in control named WKSortCol
           Specify wkcontrol id as - to skip generating col sort links
           wkcontrolID can either be a WKCONTROL file record ID or
           it can be the entire URL
           e.g., "test.report.demo" or "/ts-bin/f.wk?test.report.demo"
           in either case, you can supply additional arguments
            e.g.,    "test.report.demo+arg1=1&arg2=2"
           see REPORT.B for details
      sortfield is the name of field in the report to sort on
      - before field name indicates descending sort
      -D indicates download. The download format is specified by an
         IType in the DOWNLOAD.ITYPE field in the report descriptor
         wkcontrolid is ignored but argument place must be
         reserved by using - or any other token
      -P specifies Preformatted report (RETRIEVE) instead of HTMLTableDisplay
      -C[D] reportcommand specifes a custom report [download] command
      -F displayfield specifies an additional display field/phrase (to those
         in the FIELDS specification of the WKREPORT file.
      -SO do the select only.
      -N filename specifies a file containing IDs to NSELECT from the
         the original selection.
      -USL Use select list WKR.reportID instead of generating the select on
         the fly - if list does not exist, generate it first
         under the following conditions:
         if select list 1 is not empty, ignore the -USL option
         if the list does not exist, generate it with a SELECT
         that only uses the sort criteria specified in field 10 of the
         WKREPORT entry.
         If sort fields are specified on the command line and a -USL
         select list is used, do the GET.LIST followed by a
         SELECT statement that only does the sort, no selection.
      The selection criteria is specified in the association containing
      SELECTION.CONNECTOR SELECTION. SELECTION.CONNECTOR contains either
      AND or OR and the SELECTION field contains the selection phrase.
       e.g.      SELECTION         SELECTION.CONNECTOR
            WITH COLOR = "BLACK"          AND
            WITH SIZE = "BIG"
results in a selection criteria of WITH COLOR = "BLACK" AND WITH SIZE = "BIG"
The selection command is passed whatever is in SELECT LIST 1 so if there are
entries in Select List 1 then the selection is done from that set.
If there is nothing in Select List 1 then the selection is done from the
whole file.
Report Descriptor format
Field  Contents
  1    FILE - file used for the report
  2    FIELDS - may contain phrase or field definitions
              prepend a # to any field not to be sorted.
              for sortable fields, specifying dfield|sfield
              causes the sort URL to specify sfield while dfield is displayed
  3    TABLE.OPTIONS specifies the HTMLTableDisplay options
  4    SELECTION selection criteria (multivalued assoc with SELECTOR.CONNECTOR
  5    DESCRIPTION - report description
  6    HEADER - report header (html)
  7    DOWNLOAD.FIELDS - fields in the download file or
  7    DOWNLOAD.ITYPE - IType record in FILE that generates download records
  8    DOWNLOAD.HEADER - first record in download - usually specifies fields
  9    SELECTION.CONNECTOR (AND, OR , END) - connector for SELECTION
      the selection fields may contain parentheses.
 10    default sort fields - only used if no sort fields specified on cmd lin
Back to Index

HTMLReqField - checks for contents in fields specified. Missing or incorrect 
fields can be added to @ErrorMsg, along with custom messages per file. 
HTMLReqField -L FileName @ID Field1 Field2...
where -L 		list field names
default behavior changes &FieldName.REQ "class" in argstring to 'reqfld'
      for missing fields, reqfldfmt for incorrectly formatted fields.
FileName	File with required fields
	Field1 Field2..	Fields or PHrases of validated/required fields 
Data may be qualified using a variation on the MATCH keyword plus 
options for email and conditional contents
the syntax is
[fldAct|fldOpr|fldNum|fldVal]
fldAct is one of
	C	conditional
      where fldOpr is <, >, =, or #
            fldNum is the field number or name to compare
            fldVal is the value to test against
            [C|=|11|USA] field is required if F11 is USA
	E	Email string contains @ and two '.' delimited strs
	nX	matches n or more alpha or numeric vals	(0 is any)
	nA	matches n or more alpha vals (0 is any)
	nN	matches n or more numeric vals	(0 is any)
set the class to &FieldName.REQ to apply the reqfld class to an 
object
Set up xtypes to specify text to appear before, after, or replace
the default delimiter (comma)
Field 1 should look like:
X REQ [B|A|D] field 2 contains the replacement
Back to Index

HTMLRequired checks for the presence of specified controls in argstring
calling sequence is: HTMLRequired {-e emailfield} {-r emailfield restrictedfield} {-t timefield} {-d datefield} {-z zipfield} filename field ...
in a VALIDATE segment in WKCONTROL
where filename is the file containing the fields corresponding to the controls
               if filename is specified as - then all the fields are
               checked directly
               if filename is specified then field can be a phrase
     only control names prefixed by + are checked
               specifications such as @NEW.ROW are ignored
               as are controls that are not in file dictionary
     control names prefixed by $ are required and are additionally checked for no spaces
if -e emailfield is specified, HTMLRequired does some format checking
on the value in the control named emailfield
if -r emailfield restrictedfield is specified, HTMLRequired checks for
a match between the contents of emailfield and each item in
restrictedfield.
if -t timefield is specified HTMLRequired checks that the input is valid for
the corresponding dictionary's time conversion
if -d datefield is specified HTMLRequired checks that the input is valid for
the corresponding dictionary's date conversion
if -z zipfield is specified HTMLRequired checks that the input is either
5 or 9 digits or 5 digit - 4 digit
Back to Index

HTMLReturnSelectList returns the data in select list 1
as an application/x-savefile for saving as a file by the browser.
Syntax: HTMLReturnSelectList
Back to Index

HTMLRevise is a general data entry tool for uniVerse files.
It generates an input form for the specified record in the specified file
and then updates the record with the data entered.
Calling sequence is:
HTMLRevise FileName=filename [ID=recordID] [Field=field] ...
where filename is the name of the uniVerse file
      recordID is the record in the file to be updated
               if Record ID is not specified, REVISE generates the
               next available ID if the dictionary contains a
               &NEXT.AVAILABLE& record or leaves it blank to be
               entered by the user
      field specifies the fields to updated. field can be a field name
            or a phrase name. Phrases are interpreted recursively.
            if no field is specified, HTMLRevise uses @REVISE
Back to Index

HTMLReviseIn updates the file with the data supplied in the WKRevise Form
HTMLReviseIn FileName=filename Fields=datafields
where filename is the name of the uniVerse file -supplied via a hidden tag
      field specifies the fields that were updated. It is supplied
            via a hidden tag
Back to Index

HTMLRGBHex converts the decimal specification of RGB color to hex
Back to Index

HTMLSearch process the search terms specified on the search form
and then passes them to the specified command
calling sequence: HTMLSearch 
search form must contain the following arguments:
KeyWord=keyword string
SearchCommand=command to execute to generate search results (found on the
command line)
Back to Index

HTMLSelectList generates a select list tag to be inserted in a prepared form
usage: HTMLSelectList [-N ctlname] [-M] [-L "string"a| -C "cmd"] [-S "script"] selectioncmd [depth]
where selectioncmd is the uniVerse command to execute to generate the list
      depth is the depth of the generated list - default=4
      ctlname is the name of the form control (default is WKSelectList)
      -M specifies a multichoice select list
      -L specifies a literal string to put at the top of the list
         use ~ to indicate @TM and %%NULL%% to indicate an empty value
      -C specifies a command to execute. The results are prepended to
         the list produced by the selectioncmd
      -S "javacsript" specify the script (call) to put in for the 
           ondblClick event of the selectlist    
The selectcmd must produce 1) SELECT LIST 1 - values to be put into list
          if the select list entries contain a TextMark (ASCII 251) then
          the string after the @TM is used as the VALUE of the list item
          and the string before as the list text
          WKSelectList - the SELECT Tag containing the choices
Back to Index

HTMLSelectResponse handles input from the form generated by HTMLSelectList
usage: HTMLSelectResponse WKSelectRCmd 
The POST argument string must contain the following:
          WKSelectList - the SELECT Tag containing the choices
Back to Index

HTMLSLBrowse is used to break up long select list processing into smaller chunks
Usage: HTMLSLBrowse  {-A|-S|[-NOSUM] Action_URL} LISTID CurrentEntry StepVal
where:
     -NOSUM removes the n of nn from the summary above the table
     Action_URL is the URL to use in the select navigation buttons
       it must end in a simple WKCONTROL transaction name (no parameters).
     LISTID is the name of a select list in &SAVEDLISTS&
     CurrentEntry is the value of the (first) field displayed
     StepVal is the number of entries to display on each result page
     -A specifies this call is in a WKCONTROL ADDARGS 
        type transaction. It generates the following argument=value pairs:
        @RecCount - # records in list
        @CurrentStart - current entry value (as adjusted by SLBrowse)
        @CurrentEnd - Current Entry + StepVal - 1
        @PPageStart - CurrentEntry value for previous page
        @PPageEnd - CurrentEnd value for previous page
        @NPageStart - CurrentEntry value for next page
        @NPageEnd - CurrentEnd value for next page
        @LPageStart - Current Entry value for last page
     -S generates select list starting with CurrentEntry for StepVal entries
        and puts it into Select List 1
-U Use select list n instead of LISTID
Back to Index

HTMLSecurePayInterface interfaces with the SecurePay CreditCard processing website
Useage: HTMLSecurePayInterface [-A AVSREQ_Value] Merch_ID 
        In a Validate WKCONTROL Segment. 
URL for securepay as of 9/14/01: "https://www.securepay.com/secure1/index.asp"
Options: 
    -A AVSREQ_Value default AVSREQ=1
    !!!!! Note, for DEBUG (which means, leave the script) use a AVSREQ=DEBUG
    AVSREQ = 0  Set the AVSREQ to "0" when you do not want to do an AVS Check.
    AVSREQ = 1  Set the AVSREQ to "1" when you want a transaction authorization and a
                    Full AVS (both street address and zip code).
    AVSREQ = 2  Set the AVSREQ to "2" when you want an AVS only, Full AVS but do not 
                    authorize the Credit Card.
    AVSREQ = 3  Set the AVSREQ to "3" when you want Credit Card Authorization and 
                    Zip Code AVS Only.
    AVSREQ = 4  Set the AVSREQ to "4" when you want AVS with Zip Code only, do
                    not authorize the Credit Card.
Inputs: 
    MerchID - Merchant ID needed to submit to SecurePay
Argstring: [@SPName @SPNumber @SPType @SPMonth @SPYear @SPEmail @SPAmount ]
           
    Email      - Email of customer
    @SPAmount  - If no amount is given, 0 is assumed (for checking information)
                   (Might need to change this if they get charged by transaction). 
                   If amount is negative the Tr_Type = credit
Outputs:
    Positive - first line is a "1" and the name value sets: 
                     ReturnCode=Y           [ Y or N ]  
                     ApprovNum=705224       [ xxx = approval number ] 
                     CardResponse=APPROVAL  [ descriptive string (not meant for customer)]
                     AvsResponse=Y          [ AVS code response, see line 252 below ] 
                     VoidRecNum=xxx         [ xxx = number returned by S.P.]
    Negative - first line is a "0" and then @ErrorMsg="message why declined"
Back to Index

HTMLTableDisplay formats a report using TABLE tags
Calling Sequence is:
HTMLTableDisplay {TableOptions} {-WKR wkreport} {-SF|SM|SE|NT|NH} {-TO} {-TT text} {-HT text} -HR n {DICT} FileName Fieldnames...
where -WKR indicates a call from HTMLReport - column headers contain
        links to sort on column
        use of WKR requires wkrup.gif and wkrdown.gif exist in WKIMAGES
        and are 13 x 13 pixel images.
        wkreport must be WKCONTROL transaction name or name
        plus arguments (e.g., WKC.TRAN+arg1=3&arg2=blah)
        It may also contain the explicit relative URL
        e.g., /bin/f.wk?wkc.tran+arg1=3&arg2=blah
        for HTMLReport calls the field may be specified as
        dfield|sfield where dfield is the field displayed, while
        the sort URLs use sfield.
      -SF means first in a series
      -SM means middle of a series
      -SE means last of a series
      -TO means display only the header and total rows
      -TT text supplies the text to be displayed in the first column
          if the total row (assumes at least one @TOTAL fieldname in fields)
          if first column is a totaled column the text is not displayed.
      -HT specifies the text to be displayed as the table's caption
      -HR specifies to repeat the header row every n rows
      -NT|NH specifies that the headers not be displayed
 TableOptions is any of the following:
           -BORDER n (default = 2)
           -CELLSPACING n (default = 1)
           -CELLPADDING n (default = 5)
           -NOEMPTY - don't display fields with null string value
           -WIDTH xx{%} (default = no width specification)
     ALIGN specifies table alignemt
           -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
CALIGN specifies global cell alignment
           -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
              Values are supplied with comma as delimiter.
              Defaults are RIGHT,TOP
              if Align is set to DATA cell alignment depends on F5 in DICT
           -COLOREVEN #xxxxxx
           -COLORODD  #xxxxxx (default = #FFFFFF)
           -COLORHEAD #xxxxxx
      FileName the file being displayed
      FieldName are fields to be used.
        for HTMLReport calls FieldName can be:
            #FieldName - don't sort on this column
            dFieldName|sFieldName - display dFieldName but sort on sFieldName
        @TOTAL FieldName - Total this column - FieldName must be a
        numeric field (D or I) and cannot be PHRASE name
        HTMLTableDisplay generates a row at the bottom that contains
        the total of that column.
      @ID(s) of records to be displayed are in select list 1
      If the select list contains value designators as a result of a by.exp select,
      HTMLTableDisplay uses the value number to select the value for each multivalued field.
Back to Index

HTMLTableEntry creates form controls to update fields in multiple records
Calling Sequence is:
HTMLTableEntry {TableOptions} {-NOTEMPTY} {DICT} FileName Fieldnames...
      TableOptions is any of the following:
           -BORDER n (default = 2)
           -CELLSPACING n (default = 1)
           -CELLPADDING n (default = 5)
           -NOEMPTY - don't display fields with null string value
           -WIDTH xx{%} (default = no width specification)
ALIGN specifies table alignemt
           -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
CALIGN specifies global cell alignment
           -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
              Values are supplied with comma as delimiter.
              Defaults are right,top
           -COLOREVEN #xxxxxx
           -COLORODD #xxxxxx (default = #FFFFFF)
           -COLORHEAD #xxxxxx 
      FileName the file being displayed
      FieldName are fields to be used.
      @ID(s) of records to be processed are in Select List 2
            select list 2 is used because the generation of
            various input controls use Select List 1
 HTMLTableEntry generates control names of the form WKTEWK%@ID%FieldName
       where @ID is the record ID of the file and
             FieldName is the name of the field.
 obviously record IDs and fields processed may not have % in them.
 These controls are meant to be processed by HTMLTableWrite 
Back to Index

HTMLTableOptions parses the table formatting arguments from the command line
function HTMLTableOptions(TableOptions,CellAlignment,HTMLOutput)
it returns the first non table formatting option it finds in the command line.
if an option value is missing (-BORDER with no n, e.g.), it returns -1 as it value
and the error message in HTMLOutput
It returns the TableOptions and CellAligment Options ready to be passed to HTMLTagTable
      TableOptions are any of the following:
           -BORDER n (default = 0)
           -CELLSPACING n (default = 1)
           -CELLPADDING n (default = 5)
           -NOEMPTY - don't display fields with null string value
           -WIDTH xx{%} (default = no width specification)
                ALIGN specifies table alignemt
           -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
                CALIGN specifies global cell alignment
           -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
              Values are supplied with comma as delimiter.
              Defaults are RIGHT for -TH and RIGHT,TOP for -TV
           -COLOREVEN #xxxxxx
           -COLORODD #xxxxxx
           -COLORHEAD #xxxxxx
           -CLASS text
Back to Index

HTMLTableWrite updates records with the same value
usage: HTMLTableWrite filename {fieldname}
the records to be updated are in select list 1
the record IDs are put back in Select List 1 on completion
if fieldname is specified, then the value of the field is taken from the
argstring and placed in every specified record.
if field name is not specified, HTMLTableWrite looks for arguments of
the form WKTEWK%recordID%fieldname and uses them to update the specified
field of the specified record to the value.
Back to Index

HTMLTagBody returns the HTML ouput needed for generating
the start or the end of the heading for a document.
Back to Index

HTMLTagCheckBox returns a dynamic array containing the HTML ouput
needed for generating a CHECKBOX.
If checked is not the empty string then the CHECKED option is set
if checked has a second field it is an event handler
Back to Index

HTMLTagFormPost returns a dynamic array containing the HTML ouput
needed for generating a FORM with the POST method. 
Back to Index

HTMLTagTable returns a dynamic array containing a Bootstrap grid.
input parameters are:
Options - table attributes delimited by @FM, empty values are defaulted
    values: BORDER @FM CELLSPACING @FM CELLPADDING @FM WIDTH @FM ALIGNMENT
  defaults:   1            2               1            none      none
    values (cont): COLOREVEN @FM COLORODD @FM COLORHEAD @FM CLASS
  defaults:            none       #FFFFFF       none
Caption - caption information, default alignment is bottom
            caption text @FM alignment
TableData - rows are delimited by @FM, data cells within the rows by @VM
 A data cell can be a dynamic array that specifies the attributes
 as well as the values with the following format and defaults.
 The attribute information is first, followed by @SVM and then the data
  values (defaults are indicated in the line below the definition:
H(eading) @TM ALIGN @TM VALIGN @TM NOWRAP @TM COLSPAN @TM ROWSPAN @TM CLASS @SVM
 (data)       left      center      wrap        1           1
@TEXTRENDEROPTIONS -	if this option exists on the argstring, then
			do text rendering instead of using the table tag
@EXTRAOPTIONSTR - 	If this option exists on the argstring, then
			insert it's data value into the <tr> tag.
		This was added so you could insert things like
		onmouseover and stuff like that.
@EXTRAOPTIONSTD - 	If this option exists on the argstring, then
			insert it's data value into the <td> tag.
		This was added so you could insert things like
		onmouseover and stuff like that.
@TAGGRIDOPTIONS - 	Use this to define parameters for responsive formats
			frameworks like bootstrap or w3.css
Back to Index

HTMLTagHead returns the HTML ouput needed for generating
the start or the end of the heading for a document.
Back to Index

HTMLTagHeader returns the HTML ouput needed for generating
headings at the specified level
Back to Index

HTMLTagImage returns a dynamic array containing the HTML output
needed for generating a IMAGE.
Back to Index

HTMLTagLabel returns a dynamic array containing the HTML ouput
needed for generating a LABEL.
Back to Index

HTMLTagLi returns the HTML ouput
needed for generating list item.
Back to Index

HTMLTagLink - generates the HTML for a HREF LINK.
Back to Index

HTMLTagList generates HTML a bulleted ordered or unordered list from the 
data passed to it.
Calling sequence HTMLTagUL(listdata,flags)
Where listdata is a dynamic array containing the list items separated by 
field marks and flags is a string containing type of list (ol or ul) and 
followed by desired paramters for the list. - note: parameters not necessary
Back to Index

HTMLTagPassword returns the HTML for a PASWORD input form tag.
Back to Index

HTMLTagRadio returns the HTML for a RADIO BUTTON form tag.
checked can have an event handler as the second field
Back to Index

HTMLTagReset returns the HTML for a RESET button form tag.
Back to Index

HTMLTagSelect returns the HTML for a SELECT list tag.
if multi is MULTIPLE.SELECT then add the multiple
option to the SELECT tag
if multi has a second field, insert it as is in select tag - (event handler)
if any of the fields in selected match a field in items,
mark that selection as Selected
HTMLTagSelect checks the list option text and the value for selected matches
if the select list items contain a TextMark (ASCII 251) then
use the string after the @TM as the VALUE of the list option
and the string before it as the list option text. Otherwise
do not specify the VALUE keyword in the option tag
if argstring contains @BOOTSTRAP=1 then add class="form-control"
Back to Index

HTMLTagStrong returns the HTML for STRONG text. 
Back to Index

HTMLTagSubmit returns the HTML for a SUBMIT button form tag. 
Back to Index

HTMLTagTable returns a dynamic array containing an HTML
table.
input parameters are:
Options - table attributes delimited by @FM, empty values are defaulted
    values: BORDER @FM CELLSPACING @FM CELLPADDING @FM WIDTH @FM ALIGNMENT
  defaults:   1            2               1            none      none
    values (cont): COLOREVEN @FM COLORODD @FM COLORHEAD
  defaults:            none       #FFFFFF       none
Caption - caption information, default alignment is bottom
            caption text @FM alignment
TableData - rows are delimited by @FM, data cells within the rows by @VM
 A data cell can be a dynamic array that specifies the attributes
 as well as the values with the following format and defaults.
 The attribute information is first, followed by @SVM and then the data
  values (defaults are indicated in the line below the definition:
H(eading) @TM ALIGN @TM VALIGN @TM NOWRAP @TM COLSPAN @TM ROWSPAN @TM CLASS @SVM
 (data)       left      center      wrap        1           1
@TEXTRENDEROPTIONS -	if this option exists on the argstring, then 
			do text rendering instead of using the table tag
@EXTRAOPTIONSTR - 	If this option exists on the argstring, then 
			insert it's data value into the <tr> tag.
		This was added so you could insert things like
		onmouseover and stuff like that. 
@EXTRAOPTIONSTD - 	If this option exists on the argstring, then 
			insert it's data value into the <td> tag.
		This was added so you could insert things like
		onmouseover and stuff like that. 
Back to Index

HTMLTagTextArea returns a dynamic array containing the HTML output
for generating a TEXTAREA tag. The lines to go into the
TEXTAREA are passed as fields in the second parameter
if wrap has a second field it is placeholder text
if argstring contains @BOOTSTRAP=1 then add class="form-control"
Back to Index

HTMLTextInput returns a dynamic array containing the HTML ouput
needed for generating a Textinput tag
if size = :nn then set maxlength = nn as well as size.
name can have subvalues that specify an OnCondition and/or placeholder
in that case:  name@FMoncond@FMplaceholder 
if argstring contains @BOOTSTRAP=1 then add class="form-control"
Back to Index

HTMLTagUl returns the HTML ouput
needed for generating the start or the end of an unordered list
Back to Index

HTMLTagUL generates HTML bulleted list from the data passed to it
Calling sequence HTMLTagUL(listdata)
Where listdata is a dynamic array containing the list items separated by 
field marks.
Back to Index

HTMLTemplate is template for a general Form handling routine
Back to Index

HTMLTextAreaDisplay generates a textarea tag containing the specified record
Calling Sequence is: HTMLTextAreaDisplay
       arguments are passed in argstring
       @FileName is the name of the Universe file and RecordID is the
       @ID for the record.
Back to Index

HTMLTextAreaUpdate writes the contents of a textarea control to the specified record
Back to Index

HTMLTextHeader outputs the two line Content type/text html header
Back to Index

HTMLTraceMe sets the HTML.TRACExxxxxx voc entry to client IP address
it is self contained so it must be invoked with x.wk
where xxxxxx is the IP address
Back to Index

HTMLURLEncode encodes a string so it can be used as a URL
usage: HTMLURLEncode "string"
all spaces are converted to + and all other non alphamerics are
converted to %xx where xx is the ascii value of the character.
Conversions are done by HTMLCGIEncode
Back to Index

HTMLUVReport formats an SQL or RETRIEVE report as an HTML table
Calling Sequence is:
HTMLUVReport {TableOptions} "reportcmd"
where
      TableOptions is any of the following:
           -BORDER n (default = 2)
           -CELLSPACING n (default = 1)
           -CELLPADDING n (default = 5)
           -NOEMPTY - don't display fields with null string value
           -WIDTH xx{%} (default = no width specification)
ALIGN specifies table alignemt
           -ALIGN [LEFT|CENTER|RIGHT] (default = no alignment)
CALIGN specifies global cell alignment
           -CALIGN (Align,Valign,NoWrap,ColSpan,RowSpan)
              Values are supplied with comma as delimiter.
              Defaults are RIGHT,TOP
           -COLOREVEN #xxxxxx
           -COLORODD #xxxxxx (default = #FFFFFF)
      reportcmd is the name of the command to run.
      any records in Select List 1 is passed to the command in Select List 0
      The term width is set to 250. The report generated must fit in that
      width with a column spacing of at least 3. Use COL.SPACES to fix the
      column spacing to at least 3.
      Columns that contain wrapped data are not displayed correctly.
Back to Index

HTMLUVTCL Executes a uniVerse command and returns the output
Back to Index

HTMLValidate checks for a matching value in specified fields of a file
It is designed to be executed by the VALIDATE segment code in HTMLForms.
usage: HTMLValidate -L [-IGNORE string] filename @ID password field ...
where filename is the name of the file to check
      password is the actual password value
      @ID      is the record to check
      field ... are names of fields in file to compare the control value to.
      -IGNORE string tells HTMLValidate to silently ignore
              @ID failures if they match string. Default is ""
HTMLValidate outputs either a number which is the index of the field which
the control value matches, or an error message
For example, HTMLValidate -L FILE PASSWORD PW1 PW2 PW3
if the value of the PASSWORD argument on the command line matches PW1,
HTMLValidate outputs "1", if it doesn't match PW2 but matches PW2,
HTMLValidate outputs "2". If it doesn't match PW1, PW2, or PW3 it
outputs "0"
if no password or field is specified, HTMLValidate just checks to see if
the record exists and returns 1 if it does, 0 if it doesn't.
The auth level is appended to argstring as @AuthLevel by HTLMForms
obsolete usage: HTMLValidate filename control field ... 
      control is the name of the argument in argstring that
               contains the user supplied password value
      record ID is taken from @ID argstring control
Back to Index

HTMLVMtoBR converts Value marks in multi valued fields to HTML
line break tags for output.
Back to Index

HTMLWKControlFreeForm allows editing of a WKControl transaction in a textarea
usage: HTMLWKControlFreeFrom -{GEN | PROCESS} controlID
where GEN specifies to generate the textarea named WKCFF
      PROCESS specifies to update the control with contents of WKCFF textarea
      controlID - WKCONTROL ID
Back to Index

HTMLWKControl - displays WKCONTROL entries with links to relevent information
Calling Sequence is: HTMLWKControl [NoUpdate [entry] ]
       Where entry is the record id of an entry in the WKCONTROL file
      If it is not specified on the command line it is taken from
       the POST argument of a control named WKSelectList
       NoUpdate specifies display only
Back to Index

HTMLXEntity converts chars > char(128) to &#xxx`
usage: HTMXLEntity(string)
Back to Index
Revised: 06/01/2017