Contact Us!


This subroutine is a front-end router routine that evaluates the format param and then redirects to a make table routine specific to that format.  For example, if the format param is set to ‘odt’, the this routine will redirect to bpi.make.tabtable.odt().  The routine accepts inbound arrays and generates a odt tab delimited table structure that may be inserted into a document using normal placeholder tag replacement techniques.

Subroutine Syntax

CALL bpi.make.tabtable( in, out, format, verbose, status, message







Inbound array wgere each @AM denotes a linebreak and each @VM denotes a tab



same as in except @AM and @VM are converted to the internal markup that is appropriate for the value passed by the format param.



Document type (odt is default)



Level of verbosity



@FALSE for normal operation, otherwise integer indicating error



message associated with error


Example Integration Code

myTable = \\
verbose = 0
myTable<1> = \ColumnA_line1\:@VM:\ColumnB_line1\:@VM:\ColumnC_line1\ ; * define first row of tab table
myTable<2> = \ColumnA_line2\:@VM:\ColumnB_line2\:@VM:\ColumnC_line2\ ; * define second row of tab table
CALL bpi.make.tabtable(myTable, myTableODT,\odt\,verbose,status,message) ; * produce odt formatted tab table
bpi.set.tagval2(tags,vals,\\,\%tabTable%\, myTableODT, \\, vector) ; * assign to a tag placeholder


Use in a template

With the table structure assigned to a tag, you simply place the tag into the template wherever you wish for the tab delimited table to be inserted.   You can also assign a odt tab table structure into a repeating table by using the normal repeat group technique used for normal table-based templating.  In this case, you must ensure that tab stops are properly set within the cell into which the tab delimited table tag will be inserted.

Note: Tab-delimited tables are unlike normal tables.  In tab delimited tables, if the content of a column is too long and it overruns the tab stop intended for the column(s) to its right, the alignment of the columns can be impacted.   In some cases, tab-stop overrun is desired.  This allows for data in a left column to extend into columns to the right.  However, if you wish to preserve alignment of the columns, you must ensure that the tab-stops do not become overrun.  This usually involves truncating the length of data for each column so that it cannot overrun a tab stop to the column's right.