The CA XCOM Data Transport for LUW Exits allow users to specify customize processing, by means of a batch script, before or after sending or receiving a file transfer request. For example, you can use the xcompre exit to:
* validate all locally and remotely initiated transfers before they begin
* customize CA XCOM parameters
FILE_OPTION
LOCAL_FILE
REMOTE_FILE
CARRIAGE_CONTROL_CHARACTERS
REMOVE_TRAIL_BLANKS
* Call Windows or other 3rd party utilities and/or API's for additional processing.
This optional exit is invoked by specifying the XPRECMD parameter in XCOM.GLB:
XPRECMD:
The name of the command file used for user-defined pre-allocation processing, for both locally and remotely initiated transfers. Specify this parameter in XCOM.GLB to invoke the pre-allocation exit xcompre. A sample command file is provided in %XCOM_HOME%\xcompre.bat.
If XPRECMD is set when the XCOMD CA XCOM Scheduler service is invoked, the pre-allocation exit will be active for locally and remotely initiated transfers. This gives the system administrator additional capabilities to control access, such as allowing only a particular user to perform a transfer, or only allowing transfers to or from a particular directory.
Customization is useful. For example, where the remote user does not specify the true file name, and the local system uses a database to map the specified name to the true local name as in certain email applications. Or, an incoming transfer specifies a certain file name, but the administrator of the local system that is receiving the file wants to place the data into a different file, depending on the user ID of the sender. The script retrieves parameter values and if desired, changes the values using the -p option.
You can also call other Windows and 3rd party utilities. For example write an entry to the Windows event log.
Note: The -p option, as shown in the sample script, is intended only for use with the xcompre exit and is not supported with the xcomqm command line options. The pre-allocation exit is invoked after CA XCOM Data Transport receives the CA XCOM Data Transport header from the partner, but before the transfer commences.
The sample XCOMPRE script, xcompp.bat, is installed during the installation of CA XCOM Data Transport for Windows and can be found in your site’s installation directory. In this sample script:
- The only LOCAL file transfers permitted are ones that do not specify %XCOM_HOME%\config\xcom.reject.
- The only REMOTE file transfers permitted are ones that do not have xcomv31 in USERID.
- If %XCOM_HOME%\config\xcom.force is in the LOCAL_FILE, the -p option is used to specify the values to use for LOCAL_FILE,
REMOTE_FILE, and FILE_OPTION.
- Write informational message to the Windows event log
echo off
REM /**********************************************************************/
REM /* */
REM /* ccccccccc aaaaaaaaa */
REM /* ccccccccccccc aaaaaaaaaaaaa ----------------------------- */
REM /* cccccccccccccccaaaaaaaaaaaaaaa C A X C O M (TM) */
REM /* ccccccccccccccccccaaa aaaaaa */
REM /* ccccccc cccccca aaaaa D A T A */
REM /* ccccccc aaaaa */
REM /* cccccc aaaaaaaaaaaaaaa T R A N S P O R T (R) */
REM /* cccccc aaaaaaaaaaaaaaaaa */
REM /* cccccc aaaaaaaaaaaaaaaaaa ----------------------------- */
REM /* cccccc aaaaaa aaaaa */
REM /* ccccccc caaaaa aaaaa */
REM /* ccccccc ccaaaaa aaaaa */
REM /* ccccccccccccccaaaaaa aaaaaa */
REM /* ccccccccccccccaaaaaaaaaaaaaaaaaa */
REM /* ccccccccccccc aaaaaaaaaaa aaaaa */
REM /* ccccccccc aaaaaaaa aaaaa */
REM /* */
REM /**********************************************************************/
REM /* */
REM /* Sample Code Notice v2.3 */
REM /* */
REM /* Copyright (c) 2012 CA. All rights reserved. */
REM /* */
REM /* This software and all information contained therein is */
REM /* confidential and proprietary and shall not be duplicated, used, */
REM /* disclosed or disseminated in any way without the express written */
REM /* permission of CA. All authorized reproductions must be marked */
REM /* with this language. */
REM /* */
REM /* TO THE EXTENT PERMITTED BY APPLICABLE LAW, CA PROVIDES THIS */
REM /* SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, INCLUDING WITHOUT */
REM /* LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANT-ABILITY, FITNESS FOR */
REM /* A PARTICULAR PURPOSE OR NON-INFRINGEMENT. IN NO EVENT WILL CA BE */
REM /* LIABLE TO THE END USER OR ANY THIRD PARTY FOR ANY LOSS OR DAMAGE, */
REM /* DIRECT OR INDIRECT, FROM THE USE OF THIS MATERIAL, INCLUDING */
REM /* WITHOUT LIMITATION, LOST PROFITS, BUSINESS INTERRUPTION, GOODWILL, */
REM /* OR LOST DATA, EVEN IF CA IS EXPRESSLY ADVISED OF SUCH LOSS OR */
REM /* DAMAGE. */
REM /* */
REM /*--------------------------------------------------------------------*/
REM /* */
REM /* XCOMPRE.bat */
REM /* */
REM /*--------------------------------------------------------------------*/
rem This procedure is invoked by the CA-XCOM Data Transport
rem transaction program for all locally and remotely initiated transfers
rem before they begin.
rem For production version, disable the ECHO and PAUSE statements
rem by changing YES to NO in the following set command.
set use_echo=NO
set xcomqm="%XCOM_HOME%\xcomqm"
set local_reqno=%1
rem local request number/tid (000000 if unassigned)
shift
set initiator=%1
rem LOCAL or REMOTE
shift
set transfer_type=%1
rem JOB, REPORT or FILE
shift
set direction=%1
rem SEND or RECEIVE
shift
set restarting=%1
rem RESTARTING or FIRST_TRY
shift
set start_time=%1
rem transfer start date/time
shift
set end_time=%1
rem transfer end date/time
shift
set remote_system=%1
rem remote system id
shift
set remoteuser=%1
rem Remote user
shift
set remote_reqno=%1
rem Remote request Number
shift
set group=%1
rem REMOTE initiated only: transferGroup name
shift
set sysdata=%1
rem REMOTE initiated UNIX only: System Dependent User Data
shift
set xferdata=%1
rem REMOTE initiated UNIX only: Transfer Dependent User Data
shift
set ident=%1
rem REMOTE initiated UNIX only: Ident
shift
set tmp_file=%1
rem Local temporary file name
shift
set file=%1
rem Local file name
shift
set remote_file=%1
rem Remote file name
shift
set carriage_flag=%1
rem Carriage return / packing flag
shift
set code_flag=%1
rem Code flag
shift
set compression=%1
rem Compression flag
shift
set carriagecontrol=%1
rem Carriage Control Characters flag
if NOT /%use_echo%/ == /YES/ GOTO SKIP_ECHO
echo xcompre
echo Common parameters:
echo local_reqno: %local_reqno%
echo initiator: %initiator%
echo transfer_type: %transfer_type%
echo direction: %direction%
echo restarting: %restarting%
echo start_time: %start_time%
echo end_time: %end_time%
echo remote_system: %remote_system%
echo remoteuser: %remoteuser%
echo remote_reqno: %remote_reqno%
echo group: %group%
echo sysdata: %sysdata%
echo xferdata: %xferdata%
echo ident: %ident%
echo tmp_file: %tmp_file%
echo file: %file%
echo remote_file: %remote_file%
echo carriage_flag: %carriage_flag%
echo code_flag: %code_flag%
echo compression: %compression%
echo cariage controle %carriagecontrol%
pause
:SKIP_ECHO
rem PREPROCESS HERE !
if /%initiator%/ == /"LOCAL"/ GOTO XCOMPRE_LOCAL
if /%initiator%/ == /"REMOTE"/ GOTO XCOMPRE_REMOTE
GOTO XCOMPRE_END
:XCOMPRE_LOCAL
if /%use_echo%/ == /YES/ echo XCOMPRE_LOCAL
rem The following two if statements are case-sensitive. To make them not case-sensitive
rem a "/I" must follow the word "if" as if /I /%file%/ == ......
if /%file%/ == /"%XCOM_HOME%\config\xcom.reject"/ GOTO XCOMPRE_REJECT
if NOT /%file%/ == /"%XCOM_HOME%\config\xcom.force"/ GOTO XCOMPRE_END
%xcomqm% -p%local_reqno% LOCAL_FILE=c:\xcomnt\config\xcom.glb REMOTE_FILE=c:\temp\test.txt FILE_OPTION=CREATE
GOTO XCOMPRE_END
:XCOMPRE_REMOTE
if /%use_echo%/ == /YES/ echo XCOMPRE_REMOTE
rem The following two if statements are case-sensitive. To make them not case-sensitive
rem a "/I" must follow the word "if" as if /I /%file%/ == ......
if /%remoteuser%/ == /"xcomv31"/ GOTO XCOMPRE_REJECT
if NOT /%file%/ == /"%XCOM_HOME%\config\xcom.force"/ GOTO XCOMPRE_END
%xcomqm% -p%local_reqno% LOCAL_FILE=c:\tmp\test.txt REMOTE_FILE=c:\xcomnt\config\xcom.glb FILE_OPTION=CREATE
rem Process trailing blanks removal
if /%xferdata%/ == /"REMOVETRBL"/ GOTO XCOMPRE_RMVTRBL
%xcomqm% -p%local_reqno% REMOVE_TRAIL_BLANKS=NO
rem write an entry to the windows event log
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO CA-XCOM /D "XCOMPRE REMOVE_TRAIL_BLANKS=NO"
GOTO XCOMPRE_END
:XCOMPRE_RMVTRBL
%xcomqm% -p%local_reqno% REMOVE_TRAIL_BLANKS=YES
rem write an entry to the windows event log
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO CA-XCOM /D "XCOMPRE REMOVE_TRAIL_BLANKS=YES"
GOTO XCOMPRE_END
:XCOMPRE_REJECT
if /%use_echo%/ == /YES/ echo XCOMPRE_REJECT
%xcomqm% -p%local_reqno% TRANSFER=REJECT
rem write an entry to the windows event log
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO CA-XCOM /D "XCOMPRE TRANSFER=REJECT"
:XCOMPRE_END
if /%use_echo%/ == /YES/ echo XCOMPRE_END
exit
The sample XCOMPRE script, xcompp.sh, is installed during the installation of CA XCOM Data Transport for Linux/UNIX and can be found in your site’s installation directory. In this sample script:
The following is the sample xcompre script.
#!/bin/sh
# @(#)xcompre.sh
# This procedure is invoked by the Unicenter CA-XCOM Data Transport
# transaction program for all locally and remotely initiated transfers
# before they begin.
tid=$1
echo $1 > /tmp/$tid.tidlog
# required for HPUX-10
if [ `uname` = 'HP-UX' ]
then PATH=/opt/xcom/bin:$PATH
fi
xcomqm -g$tid |grep USERID > /tmp/$tid.userlog
'egrep' 'payroll|finance' /tmp/$tid.userlog
if [ $? -ne 0 ]
then
exit 100
else
xcomqm -p$tid LOCAL_FILE=/u/jc/test/000040.local \
REMOTE_FILE=abcdefg \
FILE_OPTION=CREATE \
2>&1 > /tmp/$tid.errlog
exit 0
fi
Windows Documentation Reference on How to Use the Pre Allocation Script