RXS_StartComposeEngine()

This subprocedure initializes the compose engine with a specific template file. This is utilized primarily to build XML but could be used to build any type of character data.

Subprocedure Prototype

D RXS_StartComposeEngine...
D                 PR                  Extproc('RXS_StartComposeEngine')
D                                     Opdesc
 
D   ComposeDS                         Likeds(RXS_ComposeDS_t)
D                                     Options(*Varsize)

Pass in an RXS_ComposeDS_t to control how the composition engine functions.

Example Code

*--------------------------------------------------------------
* This example code initializes the composition engine for the EXAMPLE template and 
*  configures it with the procedure address for the Template procedure.
*--------------------------------------------------------------
H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

 /copy QRPGLECPY,RXSCB
 /copy QRPGLETPL,EXAMPLE

D ComposeDS       DS                  LikeDS(RXS_ComposeDS_t)
 /free
  RXS_ResetDS( ComposeDS : RXS_DS_TYPE_COMPOSE );
  ComposeDS.TemplateProcedure = %Paddr(Template);
  RXS_StartComposeEngine( ComposeDS );

  *INLR = *ON;
 /end-free

P Template        B
D                 PI
D  p                                  Like(RXS_TEMPLATE_PARM)
 /copy QRPGLETPL,EXAMPLE
P                 E
*--------------------------------------------------------------
* This example code initializes the composition engine for the EXAMPLE template and 
*  configures it with the procedure address for the Template procedure. It also
*  sets configuration values to trim whitespace from template lines and to
*  omit line control characters.
*--------------------------------------------------------------
H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

 /copy QRPGLECPY,RXSCB
 /copy QRPGLETPL,EXAMPLE

D ComposeDS       DS                  LikeDS(RXS_ComposeDS_t) 
 /free
  RXS_ResetDS( ComposeDS : RXS_DS_TYPE_COMPOSE );
  ComposeDS.TemplateProcedure = %Paddr(Template);
  ComposeDS.TrimTemplateLines = RXS_YES;
  ComposeDS.OmitLineControls = RXS_YES;
  RXS_StartComposeEngine( ComposeDS );

  *INLR = *ON;
 /end-free

P Template        B
D                 PI
D  p                                  Like(RXS_TEMPLATE_PARM)
 /copy QRPGLETPL,EXAMPLE
P                 E
*--------------------------------------------------------------
* This example code initializes the composition engine for the EXAMPLE template and 
*  configures it with the procedure address for the Template procedure. It also
*  sets a configuration value to skip composing lines on which there are
*  uncomposed varaibles.
*--------------------------------------------------------------
H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

 /copy QRPGLECPY,RXSCB
 /copy QRPGLETPL,EXAMPLE

D ComposeDS       DS                  LikeDS(RXS_ComposeDS_t) 
 /free
  RXS_ResetDS( ComposeDS : RXS_DS_TYPE_COMPOSE );
  ComposeDS.TemplateProcedure = %Paddr(Template);
  ComposeDS.OmitUncomposedLines = RXS_YES;
  RXS_StartComposeEngine( ComposeDS );

  *INLR = *ON;
 /end-free

P Template        B
D                 PI
D  p                                  Like(RXS_TEMPLATE_PARM)
 /copy QRPGLETPL,EXAMPLE
P                 E
*--------------------------------------------------------------
* This example code initializes the composition engine for the EXAMPLE template and 
*  configures it with an IFS file containing a template file.
*--------------------------------------------------------------
H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

 /copy QRPGLECPY,RXSCB

D ComposeDS       DS                  LikeDS(RXS_ComposeDS_t) 
 /free
  RXS_ResetDS( ComposeDS : RXS_DS_TYPE_COMPOSE );
  ComposeDS.Stmf = '/www/RXS/templates/geturi2.tpl';
  RXS_StartComposeEngine( ComposeDS );

  *INLR = *ON;
 /end-free

Data Structures

D RXS_ComposeDS_t...
D                 DS                  Qualified Template Inz
 
D   ReturnedErrorInfo...
D                                     Like(RXS_ReturnedErrorInfoDS_t) Inz
 
D   DataStructureType...
D                                5I 0 Inz(RXS_DS_TYPE_COMPOSE)

Internal use only

D   OnErrorMessageType...
D                                5I 0
 
D   TemplateProcedure...
D                                 *   Procptr

Pointer to the address of the subprocedure that will compose the XML or other character based content.

D   LogFile                           Like(RXS_Var1Kv_t)

IFS location where a log file will be created during composition.

D   Stmf                              Like(RXS_Var1Kv_t)

IFS location where a dynamically processed template file is located. If specified, the TemplateProcedure option is ignored.

D   LogFileAppend...
D                                 N   Inz(RXS_NO)

Determines whether to append the data to the log file (RXS_YES), or to overwrite the log file (RXS_NO). Default: RXS_NO

D   UseStmfCCSID                  N

Determines whether to compose all characters in the CCSID of the Stmf (RXS_YES), or to use the CCSID of the current job (RXS_NO).

Default Value: RXS_NO

D   Initialize                    N   Inz(RXS_YES)

Determines whether to initialize the engine (RXS_YES), or to leave any previous configuration and composed content in place (RXS_NO).

Default Value: RXS_YES

D   LargeTemplate...
D                                 N   Inz(RXS_NO)

Determines whether to allow templates up to 256K in length (RXS_YES), or to use 64K (RXS_NO).

Default Value: RXS_NO

D   OmitLineControls...
D                                 N   Inz(RXS_NO)

Determines whether to strip the line controls from the end of each template line (RXS_YES), or to leave line controls in place (RXS_NO).

Default Value: RXS_NO

D   TrimTemplateLines...
D                                 N   Inz(RXS_NO)

Determines whether to trim leading and trailing spaces from the start and end of each template line (RXS_YES), or to leave all spaces in place (RXS_NO). Note that spaces are only trimmed from template content and not from content passed via RXS_ComposeVariable().

Default Value: RXS_NO

D   OmitUncomposedLines...
D                                 N   Inz(RXS_NO)

Determines whether to omit template lines with variables that have not been composed by RXS_ComposeVariable() (RXS_YES), or to compose all template lines (RXS_NO).

Default Value: RXS_NO