Launch a batch execution request

The following subprogram launches the execution of a V6 batch request from V7 native code.

Main principles of a V6 batch task

A V6 batch task is associated with an X3 function that executes an action using the Standard processing template. A criteria window with associated masks is then defined. You need to provide all the required parameters for the batch task execution by filling in all the fields for these masks.

For these reasons, calling the ASYRMNGTREQ.CRERQT subprogram requires you to define the mask fields by filling in the corresponding values.

Subprogram definition

The API is called with the corresponding funprog:

Func ASYRMNGTREQ.CRERQT(ACTX,FOLD,USER,TASK,DAT,TIM,ARYPAR,ARYVAL,NBPAR,REQUEST,MESSAGE)

The parameters are the following:
* ACTX is the current context.
* FOLD is the folder name.
* USER is the user code for execution.
* TASKis the task name.
* DATis the date of the requested execution, and TIM is a string containing the requested time with the hh:mm or hhmm format.
* ARYPAR is an array of string containing the name of the fields to be filled in the parameter mask. The value of the corresponding parameter is given in string format at the same index on the array ARYVAL. The number of parameters is given by the integer value NBPAR.

The string format for ARYVAL values is the following:
* A string containing digits for local menus (for example "12").
* A string containing a numeric representation for integer or decimals (for example "-2" or "3.1415926").
* A string containing a date in YYYYMMDD format (for example "19590529").
* If you expect a string or a clob to exceed 250 characters, you can have several successive entries in ARYPAR with the same variable name and split the string values into chunks of 250 characters or less. The different values will be concatenated to get the complete parameter value.

The value returned by this API is 0 if the request has been successfully launched. In this case, REQUEST returns the request id. If an error occurs, the value returned will be different from 0, and the MESSAGE value will return the corresponding error message.

This API can be launched from inside a running database transaction. No log file is created.

Example

# Create a request in folder X3 to revalidate the current folder today at 23:00
Funprog VALID_MY_FOLDER
Local Integer ASTATUS , NBPAR , REQUESTID
Local Char TBPAR(30)(1..10) , TBVAL(250)(1..10) , TIM(8) , MESSAGE(250) , TACHE(30) , DOSSIER(30) , USER(10)
Local Date DAT
  DAT = date$
  TIM = "23:00"
  TASKNAME = "VALDOS"
  FOLDER = "X3"
  USER = GACTX.USER
  NBPAR  = 1 : TBPAR(NBPAR) = "DOSSIER(0)" : TBVAL(NBPAR) = GACTX.AFOLDER
  NBPAR += 1 : TBPAR(NBPAR) = "NBDOS"      : TBVAL(NBPAR) = "1"
  NBPAR += 1 : TBPAR(NBPAR) = "TRADIF"     : TBVAL(NBPAR) = "1"
  NBPAR += 1 : TBPAR(NBPAR) = "VALDIF"     : TBVAL(NBPAR) = "2"
  ASTATUS = func CRERQT(GACTX,FOLDER,USER,TASKNAME,DAT,TIM,TBPAR,TBVAL,NBPAR,REQUESTID,MESSAGE)
  If ASTATUS=0
    MESSAGE="Request #"+num$(REQUESTID)+" launched successfully"
  Else
    MESSAGE="Error #"+num$(ASTATUS)+": "+MESSAGE
  Endif
End MESSAGE