Connect Direct UsersGuide40
Connect Direct UsersGuide40
for UNIX
User’s Guide
     Version 4.0
Connect:Direct for UNIX User’s Guide
Version 4.0
Second Edition
(c) Copyright 1999-2009 Sterling Commerce, Inc. All rights reserved. Additional copyright information is located in the release notes.
STERLING COMMERCE SOFTWARE
***TRADE SECRET NOTICE***
THE CONNECT:DIRECT SOFTWARE (“STERLING COMMERCE SOFTWARE”) IS THE CONFIDENTIAL AND TRADE SECRET
PROPERTY OF STERLING COMMERCE, INC., ITS AFFILIATED COMPANIES OR ITS OR THEIR LICENSORS, AND IS PROVIDED
UNDER THE TERMS OF A LICENSE AGREEMENT. NO DUPLICATION OR DISCLOSURE WITHOUT PRIOR WRITTEN PERMISSION.
RESTRICTED RIGHTS.
This documentation, the Sterling Commerce Software it describes, and the information and know-how they contain constitute the proprietary,
confidential and valuable trade secret information of Sterling Commerce, Inc., its affiliated companies or its or their licensors, and may not be used
for any unauthorized purpose, or disclosed to others without the prior written permission of the applicable Sterling Commerce entity. This
documentation and the Sterling Commerce Software that it describes have been provided pursuant to a license agreement that contains prohibitions
against and/or restrictions on their copying, modification and use. Duplication, in whole or in part, if and when permitted, shall bear this notice and
the Sterling Commerce, Inc. copyright notice. As and when provided to any governmental entity, government contractor or subcontractor subject
to the FARs, this documentation is provided with RESTRICTED RIGHTS under Title 48 52.227-19. Further, as and when provided to any
governmental entity, government contractor or subcontractor subject to DFARs, this documentation and the Sterling Commerce Software it
describes are provided pursuant to the customary Sterling Commerce license, as described in Title 48 CFR 227-7202 with respect to commercial
software and commercial software documentation.
These terms of use shall be governed by the laws of the State of Ohio, USA, without regard to its conflict of laws provisions. If you are accessing
the Sterling Commerce Software under an executed agreement, then nothing in these terms and conditions supersedes or modifies the executed
agreement.
Where any of the Sterling Commerce Software or Third Party Software is used, duplicated or disclosed by or to the United States government or a
government contractor or subcontractor, it is provided with RESTRICTED RIGHTS as defined in Title 48 CFR 52.227-19 and is subject to the
following: Title 48 CFR 2.101, 52.227-19, 227.7201 through 227.7202-4, FAR 52.227-14, and FAR 52.227-19(c)(1-2) and (6/87), and where
applicable, the customary Sterling Commerce license, as described in Title 48 CFR 227-7202 with respect to commercial software and commercial
software documentation including DFAR 252.227-7013, DFAR 252,227-7014, DFAR 252.227-7015 and DFAR 252.227-7018, all as applicable.
The Sterling Commerce Software and the related documentation are licensed either “AS IS” or with a limited warranty, as described in the Sterling
Commerce license agreement. Other than any limited warranties provided, NO OTHER WARRANTY IS EXPRESSED AND NONE SHALL BE
IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR USE OR FOR A PARTICULAR PURPOSE.
The applicable Sterling Commerce entity reserves the right to revise this publication from time to time and to make changes in the content hereof
without the obligation to notify any person or entity of such revisions or changes.
Connect:Direct is a registered trademark of Sterling Commerce. Connect:Enterprise is a registered trademark of Sterling Commerce, U.S. Patent
Number 5,734,820. All Third Party Software names are trademarks or registered trademarks of their respective companies. All other brand or
product names are trademarks or registered trademarks of their respective companies.
                                                                                                                                      CDUNXUG902
                                                                                                                    Contents
                Server Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          7
                    Process Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           7
                    Command Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               8
                    Session Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           8
                    File Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    8
                    Connect:Direct Secure+ Option for UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                        9
                User Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     9
                    Applications Programming Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                    9
                    Command Line Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               9
                    Sterling Control Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          10
                    Connect:Direct Browser User Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                     11
                Connect:Direct Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           12
                    Local and Remote Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               12
                    Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    12
                    Transmission Control Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 13
                    Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       13
                    Network Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      14
                    User Authorization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        15
                    Process Restart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       15
                    Archive Statistics Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         16
                    Sample Processes, Shell Scripts, and API Programs. . . . . . . . . . . . . . . . . . . . .                               17
                Connect:Direct Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       18
                    Connect:Direct for UNIX Configuration Files. . . . . . . . . . . . . . . . . . . . . . . . . . . .                       18
                    Connect:Direct for UNIX Directory Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . .                       19
                Connect:Direct Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               21
                    About This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         21
                    Task Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        22
                       VALIDATE_MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 112
                       VALIDATE_REPLY_MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                         113
                   User Exit Stop Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               113
                   Copy Control Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           113
               Exit Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   113
Glossary 115
Index 121
        Connect:Direct links technologies and moves all types of information between networked systems
        and computers. It manages high-performance transfers by providing such features as automation,
        reliability, efficient use of resources, application integration, and ease of use. Connect:Direct offers
        choices in communications protocols, hardware platforms, and operating systems. It provides the
        flexibility to move information among mainframe systems, midrange systems, desktop systems,
        and LAN-based workstations.
        Connect:Direct is based on client-server architecture. The Connect:Direct server components
        interact with the user interfaces (API, CLI, Connect:Direct Browser User Interface, and Sterling
        Control Center) to enable you to submit, execute, and monitor Connect:Direct statements and
        commands.
Server Components
        Connect:Direct has the following server components:
Process Manager
        The Process Manager (PMGR) is the daemon that initializes the Connect:Direct server
        environment. The PMGR provides the following functions:
        ✦ Initializes Connect:Direct
        ✦ Accepts connection requests from Connect:Direct client APIs and remote nodes
        ✦ Creates Command Manager and Session Manager child Processes to communicate with APIs
          and remote nodes
        ✦ Accepts requests from Command Managers and Session Managers when centralized
          Connect:Direct functions are required
        ✦ Stops Connect:Direct
         Note: Any application, including End User Applications (EUA), can run on any computer as long as it can
               connect to the PMGR.
Command Manager
        A Command Manager (CMGR) is created for every API connection that is successfully established.
        The number of Command Managers that a PMGR can create is system-dependent and limited by
        the number of file descriptors available for each UNIX Process. The number of file descriptors set
        up by the UNIX operating system may affect Connect:Direct operation. You must define enough
        file descriptors to handle the number of concurrent Connect:Direct sessions allowed, which can be
        as many as 999.
        The CMGR provides the following functions:
        ✦ Executes commands sent by the API and sends the results back to the API
        ✦ Carries out the Connect:Direct authentication procedure, in conjunction with the API, to
          determine access to Connect:Direct
        ✦ Interacts with the PMGR when executing commands
Session Manager
        The Session Manager (SMGR) is created and invoked by the PMGR when resources are available
        and either a Process is ready to run or a remote node requests a connection with a local node. The
        SMGR provides the following functions:
        ✦ Performs the necessary Connect:Direct work
        ✦ Acts as a primary node (PNODE) and initiates Process execution
        ✦ Acts as a secondary node (SNODE) to participate in a Process initiated by the PNODE
        When an SMGR is created to execute a Process submitted to a node, it creates the connection to the
        remote node. If the SMGR is started by the PMGR to execute local Processes, the SMGR runs each
        Process on this session until all Processes are completed.
        If an SMGR is created because a remote node initiated a connection, the SMGR completes the
        connection. If the SMGR is started by the PMGR to execute remote Processes, the SMGR executes
        remote Process steps supplied by the remote SMGR until the remote SMGR completes all of its
        Processes.
        The SMGR depends on the PMGR for Transmission Control Queue (TCQ) services and other
        centralized services. Refer to the Transmission Control Queue on page 13 for an overview of the
        TCQ.
File Agent
        Connect:Direct File Agent is a feature of Connect:Direct, which provides unattended file
        management. File Agent monitors watched directories to detect new files. When File Agent detects
        a new file, it either submits a default Process or evaluates the file using rules to override the default
        Process and to determine which Process to submit. You create rules to submit different Processes
        based on the following properties:
        ✦ Specific or partial file names
        ✦ File size
        ✦ System events
        You create the Processes used by File Agent on Connect:Direct; you cannot create them using File
        Agent.
        To achieve optimum performance, configure File Agent to communicate with the Connect:Direct
        node where it is installed. File Agent can be installed on UNIX, Windows, and z/OS operating
        systems. For information to help you plan how to implement File Agent, see the Managing Files
        with Connect:Direct File Agent chapter in your Connect:Direct administration guide or getting
        started guide. The Connect:Direct File Agent Help contains instructions for configuring File Agent.
User Interfaces
        Connect:Direct has the following user interfaces, which enable you to create, submit, and monitor
        Processes.
             Receive notification of data delivery events that occur or do not occur as scheduled
             Define rules that, based on processing criteria, can generate an alert, send an e-mail
                notification, generate a Simple Network Management Protocol (SNMP) trap to an
                Enterprise Management System (EMS), run a system command, or issue a server
                command
             Monitor for alerts, such as a server failure or a Process not starting on time
             Create service level criteria (SLCs) that define processing schedules, monitor Processes,
                files within Processes, and file transfers for compliance with these schedules, and generate
                alerts when the schedules are not met
        ✦ Analyze key operational metrics
        ✦ Create customized reports to document and analyze processing activity based on criteria you
          define
        ✦ Validate user authenticity for console-to-engine connections using one or more of four
          authentication methods, including password validation, host name identification, Windows
          domain, and TCP/IP address (or three methods in the case of the Web console, which does not
          support domain authentication)
        ✦ Identify additional Connect:Direct servers that may need to be monitored based on
          communications with a currently monitored server
        Sterling Control Center enhances operational productivity and improves the quality of service by:
        ✦ Ensuring that critical processing windows are met
        ✦ Reducing impact on downstream processing by verifying that expected processing occurs
        ✦ Providing proactive notification for at-risk business processes
        ✦ Consolidating information for throughput analysis, capacity planning, post-processing
          operational or security audits, and workload analysis
        ✦ Reducing the risk of errors associated with manual system administration, including
          eliminating individual server logon to view activity, and the need to separately configure each
          server for error and exception notifications
        Sterling Control Center is available for purchase as a separate product. Contact your Sterling
        Commerce representative to learn more about Sterling Control Center.
        To learn more about Connect:Direct Browser, see the documentation on the Connect:Direct
        Browser CD-ROM or available online from the Sterling Commerce Documentation Library.
Connect:Direct Concepts
        This section introduces concepts and definitions to help you understand system operations.
Processes
        The Connect:Direct Process language provides instructions for transferring files, running programs,
        submitting jobs on the adjacent node, and altering the sequence of Process step execution. You can
        include one or more steps in a Process. A Process consists of a Process definition statement (Process
        statement) and one or more additional statements. Parameters further qualify Process instructions.
        The following table lists Process statements and their functions:
         conditionals                Alters the sequence of Process execution based on the completion code of
                                     previous steps with the if, then, else, eif (end if), goto, and exit
                                     statements.
         run job                     Enables you to specify UNIX commands in a Process. The Process does
                                     not wait until the job has finished running before executing the next step in
                                     the Process.
         run task                    Enables you to specify UNIX commands in a Process. The Process waits
                                     until the job has finished running before executing the next step in the
                                     Process.
         submit                      Starts another Connect:Direct Process to either the local or remote node
                                     during execution of a Process.
Commands
        You use Connect:Direct commands to submit Processes to the TCQ. You can also use
        Connect:Direct commands to perform the following tasks:
        ✦ Manage Processes in the queue
        ✦ Monitor and trace Process execution
        ✦ Produce reports on Process activities
        ✦ Stop Connect:Direct operation
Command Function
         change process                Changes the status and modifies specific characteristics of a nonexecuting
                                       Process in the TCQ.
        For example, the following command submits the Process called onestep to the TCQ with a hold
        status of yes:
Network Map
        During the transfer of data, the Connect:Direct server where the Process is submitted is the primary
        node and the secondary node is the remote node (partner). Connect:Direct identifies the remote
        nodes that the local node is able to communicate with through the use Connect:Direct network map
        (or netmap).
        The network map includes the names of all the remote nodes that the Connect:Direct local node can
        communicate with, the paths to contact those remote nodes, and characteristics of the sessions for
        communication.
        The remote Connect:Direct nodes also have network maps for their remote nodes. The following
        sample displays the corresponding network map entries of UNIX-Dallas, z/OS-Miami, and
        UNIX-Houston:
                                                     Remote Nodes:
                                                     z/OS-Miami
                                                     UNIX-Houston
User Authorization
        Connect:Direct can authorize local and remote users to perform certain Connect:Direct tasks. In
        order to use Connect:Direct, each user must have a record defined in the user authorization file,
        called userfile.cfg. Each local user must have a record in the user authorization file, and remote
        users may be mapped to a local user ID in a proxy relationship.
        To provide a method of preventing an ordinary user from gaining root access through
        Connect:Direct for UNIX, a second access file called the Strong Access Control (SACL) file is
        created when you install Connect:Direct and is named sysacl.cfg. The root:deny.access parameter,
        which is specified in the sysacl.cfg file, allows, denies, or limits root access to Connect:Direct for
        UNIX. If the SACL file is deleted or corrupted, access to Connect:Direct is denied to all users.
        For more information about specifying user authorizations in the userfile.cfg and the sysacl.cfg
        files, see Maintaining Access Information Files in the Connect:Direct for UNIX Administration
        Guide.
Process Restart
        Several facilities are provided for Process recovery after a system malfunction. The purpose of
        Process recovery is to resume execution as quickly as possible and to minimize redundant data
        transmission after a system failure. The following Connect:Direct facilities are available to enable
        Process recovery:
        ✦ Process step restart—As a Process runs, the steps are recorded in the TCQ. If a Process is
          interrupted for any reason, the Process is held in the TCQ. When you release the Process to
          continue running, the Process automatically begins at the step where it halted.
        ✦ Automatic session retry—Two sets of connection retry parameters are defined in the remote
          node information record of the network map file: short-term and long-term. If you do not
          specify a value for these parameters in the remote node information record, default values are
          used from the local.node entry of the network map file. The short-term parameters allow
          immediate retry attempts. Long-term parameters are used after all short-term retries are
          attempted. Long-term attempts assume that the connection problem cannot be fixed quickly
          and retry attempts occur after a longer time period, thus saving the overhead of connection
          retry attempts.
        ✦ Checkpoint restart—This feature is available with the copy statement.
            Checkpoint restart can be explicitly configured within a copy step through the ckpt parameter.
            Refer to the Connect:Direct Processes Web site at
            http://www.sterlingcommerce.com/documentation/processes/processhome.html. If it is not
            configured in the copy step, it can be configured in the Initparms through the ckpt.interval
            parameter. (See Maintaining the Initialization Parameters File in the Connect:Direct for
            UNIX Administration Guide for more information on this parameter.)
        ✦ Run Task restart—If a Process is interrupted when a run task on an SNODE step is executing,
          Connect:Direct attempts to synchronize the previous run task step on the SNODE with the
          current run task step. Synchronization occurs in one of the following ways:
             If the SNODE is executing the task when the Process is restarted, it waits for the task to
                complete, and then responds to the PNODE with the task completion status. Processing
                continues.
             If the SNODE task completes before the Process is restarted, it saves the task results.
                When the Process is restarted, the SNODE reports the results, and processing continues.
            If synchronization fails, Connect:Direct reads the restart parameter in the run task step or the
            initialization parameters file to determine whether to perform the run task step again. The
            restart parameter on the run task step overrides the setting in the initialization parameter.
            For example, if the SNODE loses the run task step results due to a Connect:Direct cold restart,
            Connect:Direct checks the value defined in the restart parameter to determine whether to
            perform the run task again.
             Note: Run task restart works differently when Connect:Direct runs behind a connection load balancer.
                   For more information on the considerations you need to know when running Connect:Direct in
                   a load balancing environment, see the Connect:Direct for UNIX Release Notes, Connect:Direct
                   for UNIX Administration Guide, and the Connect:Direct for UNIX Getting Started Guide.
        ✦ Interruption of Process activity when the SNODE is a Connect:Direct for UNIX node—When
          the SNODE is a Connect:Direct for UNIX node and the PNODE interrupts Process activity by
          issuing a command to suspend Process activity, deleting an executing Process, or when a link
          fails or an I/O error occurs during a transfer, the Process is placed in the Wait queue in WS
          status.
            If Process activity does not continue, you must manually delete the Process from the TCQ.
            Refer to the Connect:Direct for UNIX User’s Guide for command syntax and parameter
            descriptions for the delete process command.
             Note: You cannot issue a change process command from the SNODE to continue Process activity;
                   the Process can only be restarted by the PNODE, which is always in control of the session.
After files are restored, the statistics records can be viewed using the select statistics command.
cpunx.cd copy
sbunx.cd submit
        The following table displays the file names of sample shell scripts. Modify the shell scripts as
        required.
send.sh send
recv.sh receive
         apicheck.C                       Same as apicheck.c, except that it is compiled with one of the C++
                                          compilers listed in the Connect:Direct for UNIX User’s Guide.
         exit_skeleton.C                  Same as exit_skeleton_c, except that it is compiled with one of the C++
                                          compilers listed in the Connect:Direct for UNIX User’s Guide.
         exit_sample.c                    This is the same program as the skeleton user exit program, except that
                                          the security exit is demonstrated with code that approximates
                                          PassTicket functionality.
         sdksample.C                      This program exercises various commands using the SDK interface to
                                          Connect:Direct for UNIX.
Connect:Direct Files
        This section describes the configuration files, illustrates the directory structure of Connect:Direct,
        and lists the individual files that are installed.
         Initialization parameters file   Provides information to the server to use at start up. During the
                                          installation, you identify the settings necessary for the initialization
                                          parameters file.
         User authorization information   Contains the local user information and remote user information record
         file                             types. You customize this file during installation to map remote user IDs
                                          to local user IDs and create remote user information records in the user
                                          authorization information file.
         Strong access control file       Improves the security of Connect:Direct for UNIX and allows, denies, or
                                          limits root access control. This file is created when you install
                                          Connect:Direct. If the file is deleted or corrupted, access to
                                          Connect:Direct is denied to all users.
         Network map file                 Describes the local node and other Connect:Direct nodes in the network.
                                          You can define a remote node record for each node that Connect:Direct
                                          for UNIX communicates with.
         Server authentication key file   Verifies client API connection requests. Only verified clients are granted
                                          a connection.
         Client configuration file        Identifies the port and host name used by a client to connect to
                                          Connect:Direct.
         Client authentication key file   Identifies Connect:Direct servers that a Connect:Direct client connects
                                          to. You can have multiple entries for multiple servers.
Note: The secure+ directory is available only when Secure+ Option is purchased and installed.
d_dir/
                                                                                                stats
                                                                                                traces
src/
                    lib/
                             README                cfg/
      bin/                   apicheck.c                            security/        secure+/     include/      xlate/    man1/          SACL/
                             example
                             files
                                             cliapi/                            certificates/
             ndmapi.a                                                                           ndmapi.h
             libcd2g.so (not HP)                                                                user_exit.h             ndmmsg.1
             libcd2g.sl (HP only)                                               trusted.txt     user_exit2.h            ndmxlt.1
             libcdsna.so (not HP)                                                               cdunxsdk.h              ndmpmgr.1
             libcdsna.sl (HP only)                                             export/                                  cdpmgr.1
             libcdsnpsna.so                  ndmapi.cfg
             libcdsp.so
             libcdspsrvr.so                                                    import/                                                 sysacl.cfg
             libcdspsssl.so                                cd_node/
                                                                               log/                         default_recv.xlt
                                                                                                            default_send.xlt
     ndmcmgr                                                                    locks/
     cdpmgr                                                                                                                    cdcust
     ndmpmgr                                                                                                                   ttlflst1.0
     ndmsmgr                                                                    nodes/                                         svcflst1.0
     ndmcli                                                                                                                    cliflst1.0
     direct                                                                                                                    cdver
     ndmproc                                                          keys.client                                              cdsnacfg (AIX LU6.2 only)
     ndmproc.awk                                                      keys.server                                              snaver.sh (AIX LU6.2 only)
     ndmstat                                                                                                                   tcq_convert
     ndmstat.awk                                                                                                               template (Brixton SNA only)
     ndmmsg                                                                                                                    diskfree
     ndmxlt                                                                                                                    diskfree.so
     ndmauths                                             cliapi
                                                          initparm.cfg                                                         hostid.sh
     ndmauthc                                                                                                                  snmpflst1.0
     apnotify                                             netmap.cfg
                                                          userfile.cfg                                                         cfg.convert
     cdcustrpt                                                                                                                 spcust_sample1.sh
     cdsacomp                                             msgfile.cfg
                                                          msgfile.idx                                                          spcust_sample2.sh
     cdstatm                                                                                                                   spcust_sample3.sh
     cfgcheck                                             license.key
     ndmumgr
     cdmsgutil
     initcnvt
     statarch.sh
     statrestore.sh
     sample.cd
     ndmview
     ndmview.awk
     initcnvt
     Install.bin
     lcu.jar
     lcu.sh
     ohj-jewt.jar (Secure+ only)
     runjar.jar (Secure+ only)
     SecureOHelp.jar (Secure+ only)
     SPAdmin.jar (Secure+ only)
     spadmin.sh (Secure+ only)
     SPCli.jar (Secure+ only)
     CPCliMessages.properties (Secure+
     only)
     spcli.sh (Secure+ only)
     Cipher.txt (Secure+ only)
     help4.jar (Secure+ only)
Note: See the following figure to view the work directory for a node.
        A d_dir/work/cd_node directory is created for each node. The following figure displays the work
        directory for multiple nodes and illustrates the working files created for each node, such as TCQ
        files:
d_dir/
                                                                           work/
                     ndm/
Connect:Direct Documentation
         Note: See the previous figure for details on the ndm directory structure.
See Connect:Direct for UNIX Release Notes for a complete list of the product documentation.
Task Overview
        The following table guides you to the information required to perform Connect:Direct tasks:
Task Reference
         Understanding the parameters required to invoke the        Chapter 2, Controlling and Monitoring Processes
         Command Line Interface (CLI) to submit Processes
         and commands
         Understanding the TCQ and the commands necessary           Chapter 3, Process Queuing
         to manage Processes in the queue
         Understanding function calls necessary to write custom     Chapter 5, Writing Custom Programs
         programs to use with Connect:Direct
         Understanding user exits and user exit function calls to   Chapter 6, Writing User Exits
         use with Connect:Direct
        This chapter provides instructions on using the Command Line Interface (CLI) to submit Processes
        and commands.
         Note: You can also use the Connect:Direct Browser User Interface to perform some of the procedures in
               this chapter. To learn more about the Connect:Direct Browser, see the user’s guide on the
               Connect:Direct Browser CD-ROM or available online from the Sterling Commerce Documentation
               Library.
             Note: You must set the NDMAPICFG environment variable before you can execute the
                     cfgCheck utility. For more information about cfgCheck, see Validating Configuration
                     Files on page 83.
 In the C shell:
                      $ NDMAPICFG=d_dir/ndm/cfg/cliapi/ndmapi.cfg
                      $ export NDMAPICFG
2. Type the following command to invoke Connect:Direct CLI. Type options as required:
            Refer to the following table for a description of the command options and sample command
            entries:
             -n name     Identifies the host name of the        Connect:Direct host name      $ direct -n hostname
                         computer where the Connect:Direct
                         server (PMGR) is running.
                         Note: Invoking direct with -p or
                               -n overrides the settings
                               in the ndmapi.cfg file.
             -p nnnnn    Identifies the communications port     1024–65535. The format        $ direct -p 2222
                         number for the Connect:Direct          is nnnnn.
                         node.
                         Note: Invoking direct with -p or
                               -n overrides the settings
                               in the ndmapi.cfg file.
               Note: If you experience problems with job control, contact your system administrator for suggestions
                     on additional UNIX commands to use.
Command Description
         !#n             Set the number of commands to store in the history buffer. The default history buffer size is
                         50 commands.
Command Overview
        You control and monitor Connect:Direct Processes using the following commands:
         change process      cha pro         Changes the status and modifies specific characteristics, of a
                                             nonexecuting Process in the TCQ.
delete process del pro Removes a nonexecuting Process from the TCQ.
flush process flush pro Removes an executing Process from the TCQ.
stop stop Stops Connect:Direct and returns control to the operating system.
         select process      sel pro         Monitors both executing Processes and Processes waiting for
                                             execution. You can specify the search criteria and the form in which
                                             the information is presented.
         select statistics   sel stat        Retrieves information from the statistics file. You can specify the
                                             search criteria and the form in which the information is presented.
         view process        view pro        View a Process in the TCQ where the local node is the Pnode.
                                             View process can only display Processes running on the local node
                                             since only the Pnode has the information required to display a
                                             Process.
Note: The CMGR currently limits the size of a Process file to 60K bytes.
Parameter Abbreviations
        The following table lists valid abbreviations for commonly used parameters:
Parameter Abbreviation
detail det
quit q
recids rec
release rel
pnumber pnum
sunday sun
monday mon
tuesday tue
wednesday wed
thursday thu
friday fri
saturday sat
today tod
tomorrow tom
Command Syntax
        Use the same command syntax for commands typed at the CLI prompt or used as the command text
        parameter for an ndmapi_sendcmd() function. Refer to Writing Custom Programs on page 89, for
        details on function calls. The following conventions are used when typing commands:
        ✦ When selecting a password or user ID, do not use Connect:Direct keywords.
        ✦ Be aware that user names and file names are case sensitive.
        ✦ Type an individual command keyword in uppercase, lowercase, or mixed-case characters.
        ✦ Terminate all commands with a semicolon (;).
        ✦ When typing commands, type the entire command name or type the first three characters or
          abbreviate specific parameters. Refer to the table on page 27 for a list of abbreviations.
        ✦ Do not abbreviate Process statements and parameters.
        ✦ File names, group names, user IDs, and passwords are variable length strings and can be any
          length.
        ✦ A Connect:Direct node name is 1–16 characters long. The name of a record in the netmap
          describing a remote node is typically the remote Connect:Direct node name, but can be any
          string 1–256 characters long. You can also specify a remote node name as an IP address or
          hostname and a port number or port name.
Generic
        When the word generic is specified as a parameter value in a syntax definition, provide a string that
        can include the asterisk (*) and question mark (?) characters. These characters provide a pattern
        matching or wildcard facility for parameter values. The asterisk matches zero or more characters,
        and the question mark matches any single character. The following sample illustrates the use of the
        asterisk and question mark characters:
PNAME = A?PROD5*
        The generic Process name specified in the previous sample shows a specification that matches all
        Processes beginning with the letter A, followed by any single character in position two with the
        string PROD5 in positions three through seven. The asterisk takes the place of zero or more
        characters beginning in position eight.
Lists
        When (list) is a parameter value, you can specify multiple parameter values by enclosing the group
        in parentheses and separating each value with a comma. A list can also include generic values. The
        following command illustrates a list:
Submitting a Process
        Use the submit command to make Processes available for execution and to enable the software to
        interpret the Process statements contained in the specified files.
         file            The name of the Process file. The file name can       file name including the path name
                         include a path name indicating the location of the
                         Process.
                         This parameter must be the first parameter.
         maxdelay        How long the submit command waits for the               unlimited | hh:mm:ss | 0
                         submitted Process to complete execution. This           unlimited—Waits until the Process
                         parameter is useful when the command is issued          completes execution.
                         by a shell script. When this parameter is specified,
                                                                                 hh:mm:ss—Waits for an interval no
                         the script waits until the Process completes before
                                                                                 longer than the specified hours,
                         it continues execution. The return code of the
                                                                                 minutes, and seconds.
                         Process is stored in the $? variable if you are
                         using the Bourne or Korn shell and in $status           0—Waits until the Process completes
                         variable if you are using the C shell, which the        execution. If you specify maxdelay=0,
                         shell script can use to test the results of Process     you get the same results as when you
                         execution. If you do not specify maxdelay, no           specify maxdelay=unlimited.
                         delay occurs.
                         If the time interval expires, the submit command
                         returns a warning status code and message ID to
                         the issuing Process or CLI/API. The Process is
                         not affected by the time interval expiration and
                         executes normally.
         newname         A new Process name that overrides the name in           A name up to 256 characters long
                         the submitted Process.
         pacct           A string containing information about the PNODE.        “pnode accounting data” up to 256
                         Enclose the string in double quotation marks.           characters
         prty            The priority of the Process in the Transmission         1–15, where fifteen is the highest
                         Control Queue (TCQ). A Process with a higher            priority. The default is 10.
                         priority is selected for execution before a Process
                         with a lower priority. The prty value does not affect
                         the priority during transmission.
         sacct           Specifies accounting data for the SNODE. Setting       “snode accounting data” up to 256
                         this value in the submit statement overrides any       characters. Enclose the string in
                         accounting data specified in Process.                  double quotation marks.
         snode           Identifies the name of the secondary node. Setting   name | host name | nnn.nnn.nnn.nnn
                         this value overrides the snode value in the          or
                         Process statement. The snode parameter is            nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnn
                         required either on the submit command or             n:nnnn[;port name | nnnnn]]
                         Process statement.                                   name—Specifies the node name of
                                                                              the remote node. The secondary node
                                                                              name corresponds to an entry in the
                                                                              network map file.
                                                                              host name—Specifies the name of the
                                                                              host computer where the remote
                                                                              Connect:Direct node is running.
                                                                              nnn.nnn.nnn.nnn or
                                                                              nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnn
                                                                              n:nnnn —Specifies the IP address of
                                                                              the remote node in IPv4 or IPv6
                                                                              format: nnn.nnn.nnn.nnn (IPv4) or
                                                                              nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnn
                                                                              n:nnnn (IPv6).
                                                                              [;port number |nnnnn]—Identifies the
                                                                              communications port. You can only
                                                                              use this parameter with the host name
                                                                              or IP address parameters. The nnnnn
                                                                              value is a decimal number from
                                                                              1,024–65,535.
                                                                              For more information on specifying IP
                                                                              addresses and host names, see the
                                                                              Specifying IP Addresses, Host
                                                                              Names, and Ports appendix in the
                                                                              Connect:Direct for UNIX
                                                                              Administration Guide.
         startt          Identifies the date, day, and time to start the       [date | day] [,hh:mm:ss [am | pm]]
                         Process. Connect:Direct places the Process in the     date—Specifies the day (dd), month
                         Timer queue in WS (Waiting for Start Time) status.    (mm), and year (yy), which you can
                         The date, day, and time are positional parameters.    code as mm/dd/yyyy or mm-dd-yyyy.
                         If you do not specify date or day, a comma must       If you only specify date, the time
                         precede time.                                         defaults to 00:00:00, which indicates
                         Do not code the startt parameter when you             midnight. The current date is the
                         specify retain=initial.                               default.
                                                                               day—Specifies the day of the week.
                                                                               Values are today, tomorrow,
                                                                               yesterday, monday, tuesday,
                                                                               wednesday, thursday, friday, saturday,
                                                                               and sunday.
                                                                               hh:mm:ss [am | pm]—Specifies the
                                                                               time of day in hours (hh), minutes
                                                                               (mm), and seconds (ss). You can
                                                                               specify the hour in either 12- or
                                                                               24-hour format. If you use 12-hour
                                                                               format, then you must specify am or
                                                                               pm. The default is the 24-hour format.
                                                                               The default value is 00:00:00, which
                                                                               indicates midnight.
                                                                               If you specify only the day value, the
                                                                               time defaults to 00:00:00. This means
                                                                               that if you submit a Process on
                                                                               Monday, with monday as the only
                                                                               startt parameter, the Process does
                                                                               not run until the following Monday at
                                                                               midnight.
        Because retain=yes is specified in this sample, the Process is retained in the TCQ after execution.
        The Process starts next Monday at 00:00:00 and runs every Monday thereafter. Process accounting
        data is specified for the PNODE. See Chapter 3, Process Queuing, for additional information about
        the TCQ.
Because startt is specified, the Process executes on the first day of January 2008 at 11:45 a.m.
        Because tracel is specified and the pnode parameter is included, an SMGR and COMM full trace
        is performed on the Process. Trace information is written to the default file SMGR.TRC.
        command with hold=yes. Connect:Direct then places the Process in the Hold queue in HO status.
        You can release the Process for execution at a later time.
        You can set tracing for an existing Process by setting the tracel parameter to 1, 2, or 4. You can turn
        off tracing for a Process by setting trace1 to 0.
        Specify at least one of the following search criteria parameters:
         snode               Locate the Process to be changed    remote node specification | generic | (list)
                             by the secondary node name. This    remote node specification—Identifies a specific
                             parameter can be used to specify    remote node name.
                             a specific remote node, a generic
                                                                 generic—Specifies a nonspecific value for the
                             value for matching remote node
                                                                 remote node name. This generic value,
                             names (using pattern matching),
                                                                 containing pattern-matching characters,
                             or a list of multiple remote node
                                                                 evaluates to a list of zero or more remote node
                             names.
                                                                 names.
                             The secondary node name
                                                                 list—Specifies a list of remote node
                             typically contains the 1–16
                                                                 specifications. Enclose the list in parentheses,
                             character remote Connect:Direct
                                                                 and separate each value with a comma.
                             node name, but can be any string
                             up to 256 alphanumeric
                             characters long. You can also
                             specify a remote node name as an
                             IP address or hostname and a
                             port number.
                             For more information on
                             specifying IP addresses and host
                             names, see the Specifying IP
                             Addresses, Host Names, and
                             Ports appendix in the
                             Connect:Direct for UNIX
                             Administration Guide.
The optional parameters for the change process command are the following:
         newsnode            Specifies a new remote node name         new remote node specification
                             to assign to the Process.
         prty                Changes the priority of the Process    1–15, where 15 is the highest priority. If you do
                             on the TCQ. Connect:Direct uses        not specify prty, the default is 10.
                             the prty parameter for Process
                             selection. A Process with a higher
                             priority is selected for execution
                             before a Process with a lower
                             priority. The prty value does not
                             affect the priority during
                             transmission.
        The following command changes the remote node name for the Process named cdproc to a new
        remote node, paris:
Deleting a Process
        Use the delete process command to remove a nonexecuting Process from the TCQ.
        You select the Process to delete by Process name, Process number, secondary node name,
        submitter, or any combination of the search criteria parameters. Specify at least one of the following
        search criteria parameters:
         snode         Identify the Process to delete by   remote node specification | generic | (list)
                       the secondary node name. This       remote node specification—Identifies a specific remote
                       parameter can be used to specify    node name.
                       a specific remote node, a generic
                                                           generic—Specifies a nonspecific value for the remote
                       value for matching remote node
                                                           node name. This generic value, containing
                       names (using pattern matching),
                                                           pattern-matching characters, evaluates to a list of zero
                       or a list of multiple remote node
                                                           or more remote node names.
                       names.
                                                           list—Specifies a list of remote node specifications.
                       The secondary node name
                                                           Enclose the list in parentheses, and separate each
                       typically contains the 1–16
                                                           value with a comma.
                       character remote Connect:Direct
                       node name, but can be any string
                       up to 256 alphanumeric
                       characters long. You can also
                       specify a remote node name as
                       an IP address or hostname and a
                       port number.
                       For more information on
                       specifying IP addresses and host
                       names, see the Specifying IP
                       Addresses, Host Names, and
                       Ports appendix in the
                       Connect:Direct for UNIX
                       Administration Guide.
        The following command deletes all nonexecuting Processes submitted by user ID cduser on node
        dallas:
         snode           Locate the Process to remove     remote node specification | generic | (list)
                         by the secondary node name.      remote node specification—Identifies a specific remote
                         This parameter can be used       node name.
                         to specify a specific remote
                                                          generic—Specifies a nonspecific value for the remote
                         node, a generic value for
                                                          node name. This generic value, containing
                         matching remote node names
                                                          pattern-matching characters, evaluates to a list of zero or
                         (using pattern matching), or a
                                                          more remote node names.
                         list of multiple remote node
                         names.                           list—Specifies a list of remote node specifications.
                                                          Enclose the list in parentheses, and separate each value
                         The secondary node name
                                                          with a comma.
                         typically contains the 1–16
                         character remote
                         Connect:Direct node name,
                         but can be any string up to
                         256 alphanumeric characters
                         long. You can also specify a
                         remote node name as an IP
                         address or hostname and a
                         port number.
                         For more information on
                         specifying IP addresses and
                         host names, see the
                         Specifying IP Addresses, Host
                         Names, and Ports appendix in
                         the Connect:Direct for UNIX
                         Administration Guide.
Following are the optional parameters for the flush process command:
The following command flushes all executing Processes named “Rome” from the Execution queue:
The following command flushes all executing Processes on node alma submitted by user ID jones:
Stopping Connect:Direct
        Use the stop command to initiate an orderly Connect:Direct shutdown sequence or forcibly
        terminate the software. After running the stop command, no new Processes are allowed to run and
        no new connections with remote systems are established. Commands can be issued and users can
        sign on until the server terminates.
        You can specify the force, immediate, quiesce, or step parameters with the stop command.
         Note: The force parameter is required when running Connect:Direct with the LU6.2 feature on any
               supported platform other than AIX.
Parameter Description
force Forcibly terminates Connect:Direct and returns control to the operating system.
         immediate        Begins an immediate, but orderly shutdown of all activity and terminates Connect:Direct.
                          The software terminates connections, writes statistics records, closes files, and shuts
                          down.
         quiesce          Runs all executing Processes to completion before shutting down Connect:Direct. No
                          new Processes are started. This is the default value.
         step             Shuts down Connect:Direct after all currently executing Process steps are complete. The
                          software writes statistics records, closes files, and shuts down. All active Processes are
                          retained in the TCQ. Processes restart when the software is re-initialized.
        The following command forcibly terminates Connect:Direct and returns control to the operating
        system:
stop force;
         snode          View the Process by the             remote node specification | generic | (list)
                        secondary node name. This           remote node specification—Identifies a specific
                        parameter can be used to specify    remote node name.
                        a specific remote node, a generic
                                                            generic—Specifies a nonspecific value for the remote
                        value for matching remote node
                                                            node name. This generic value, containing
                        names (using pattern matching),
                                                            pattern-matching characters, evaluates to a list of zero
                        or a list of multiple remote node
                                                            or more remote node names.
                        names.
                                                            list—Specifies a list of remote node specifications.
                        The secondary node name
                                                            Enclose the list in parentheses, and separate each
                        typically contains the 1–16
                                                            value with a comma.
                        character remote Connect:Direct
                        node name, but can be any string
                        up to 256 alphanumeric
                        characters long. You can also
                        specify a remote node name as
                        an IP address or hostname and a
                        port number.
                        For more information on
                        specifying IP addresses and host
                        names, see the Specifying IP
                        Addresses, Host Names, and
                        Ports appendix in the
                        Connect:Direct for UNIX
                        Administration Guide.
         submitter      Locate the Processes to view by     (node specification, userid) | generic | (list)
                        the node specification (the         node specification, userid—Specifies the node
                        Connect:Direct node name) and       specification (the Connect:Direct node name) and user
                        user ID of the Process owner. The   ID.
                        length of this parameter is
                                                            generic—Specifies a nonspecific value for node
                        unlimited.
                                                            specification and user ID. This generic value,
                                                            containing pattern-matching characters, evaluates to a
                                                            list of zero or more node specifications and user IDs.
                                                            list—Specifies a list of node specification and user ID
                                                            pairs. Enclose the list in parentheses, and separate
                                                            each value with a comma.
         snode           Locate the Process by the           remote node specification | generic | (list)
                         secondary node name. This           remote node specification—Identifies a specific
                         parameter can be used to specify    remote node name.
                         a specific remote node, a generic
                                                             generic—Specifies a nonspecific value for the remote
                         value for matching remote node
                                                             node name. This generic value, containing
                         names (using pattern matching),
                                                             pattern-matching characters, evaluates to a list of zero
                         or a list of multiple remote node
                                                             or more remote node names.
                         names.
                                                             list—Specifies a list of remote node specifications.
                         The secondary node name
                                                             Enclose the list in parentheses, and separate each
                         typically contains the 1–16
                                                             value with a comma.
                         character remote Connect:Direct
                         node name, but can be any string
                         up to 256 alphanumeric
                         characters long. You can also
                         specify a remote node name as
                         an IP address or hostname and a
                         port number.
                         For more information on
                         specifying IP addresses and host
                         names, see the Specifying IP
                         Addresses, Host Names, and
                         Ports appendix in the
                         Connect:Direct for UNIX
                         Administration Guide.
         submitter       Locate the Processes to select       (node specification, userid) | generic | (list)
                         by the node specification (the       node specification, userid—Specifies the node
                         Connect:Direct node name) and        specification (the Connect:Direct node name) and user
                         user ID of the Process owner.        ID.
                         The length of this parameter is
                                                              generic—Specifies a nonspecific value for node
                         unlimited.
                                                              specification and user ID. This generic value,
                                                              containing pattern-matching characters, evaluates to a
                                                              list of zero or more node specifications and user IDs.
                                                              list—Specifies a list of node specification and user ID
                                                              pairs. Enclose the list in parentheses, and separate
                                                              each value with a comma.
The following command displays a short report for the specified Process number:
            ===================================================================================
                                        SELECT PROCESS
            ===================================================================================
            PROCESS NAME NUMBER    USER    SUBMITTER NODE      QUEUE       STATUS
            -----------------------------------------------------------------------------------
            -
            PR01          9        root    cd.unix.pj          EXEC        EX
            ===================================================================================
The following command displays a detailed report for the specified Process number:
            ===================================================================================
                                         SELECT PROCESS
            ===================================================================================
            Process Name    => pr01           Class         => 9
            Process Number => 9               Priority      => 8
            Submitter Node => cd.unix.pj      PNODE         => cd.unix.pj
            Submitter       => sub1           SNODE         => cd.unix.pj
            Retain Process => no              Header Type   => p
         snode         Locate the statistics file record   remote node specification | generic | (list)
                       by the secondary node name.         remote node specification—Identifies a specific remote
                       This parameter can be used          node name.
                       to specify a specific remote
                                                           generic—Specifies a nonspecific value for the remote node
                       node, a generic value for
                                                           name. This generic value, containing pattern-matching
                       matching remote node names
                                                           characters, evaluates to a list of zero or more remote node
                       (using pattern matching), or a
                                                           names.
                       list of multiple remote node
                       names.                              list—Specifies a list of remote node specifications. Enclose
                                                           the list in parentheses, and separate each value with a
                       The secondary node name
                                                           comma.
                       typically contains the 1–16
                       character remote
                       Connect:Direct node name,
                       but can be any string up to
                       256 alphanumeric characters
                       long. You can also specify a
                       remote node name as an IP
                       address or hostname and a
                       port number.
                       For more information on
                       specifying IP addresses and
                       host names, see the
                       Specifying IP Addresses, Host
                       Names, and Ports appendix in
                       the Connect:Direct for UNIX
                       Administration Guide.
         submitter     Locate the statistics records to   (node specification, userid) | generic | (list)
                       select by the node                 node specification, userid—Specifies the node
                       specification (the                 specification (the Connect:Direct node name) and user ID.
                       Connect:Direct node name)
                                                          generic—Specifies a nonspecific value for node
                       and user ID of the Process
                                                          specification and user ID. This generic value, containing
                       owner. The character length of
                                                          pattern-matching characters, evaluates to a list of zero or
                       the parameter is unlimited.
                                                          more node specifications and user IDs.
                                                          list—Specifies a list of node specification and user ID pairs.
                                                          Enclose the list in parentheses, and separate each value
                                                          with a comma.
        The following section illustrates sample detailed and summary reports generated by the select
        statistics command.
Sample output that describes all Process steps in summary form is displayed in the following table:
           ===================================================================================
                                      SELECT STATISTICS
           ===================================================================================
           P RECID LOG TIME              PNAME PNUMBER STEPNAME CCOD FDBK MSGID
           -----------------------------------------------------------------------------------
           P PSTR 08/10/2008 09:10:39    PR01 9                 0         XSMG200I
           P IFED 08/10/2008 09:10:44    PR01 9                 0         XSMG405I
           P CTRC 08/10/2008 09:10:44    PR01 9                 0         XSMG405I
           P IFED 08/10/2008 09:10:45    PR01 9                 4         XSMG400I
           P RTED 08/10/2008 09:10:45    PR01 9                 0         XSMG400I
           P IFED 08/10/2008 09:10:45    PR01 9                 4         XSMG400I
           P CTRC 08/10/2008 09:10:45    PR01 9                 0         XSMG405I
           P CTRC 08/10/2008 09:10:45    PR01 9                 8         XSMG405I
           P CTRC 08/10/2008 09:10:45    PR01 9                 8         XSMG405I
           ===================================================================================
        To avoid lengthy search times when issuing the select statistics command, archive or delete
        statistics files regularly. Also, use the startt and stopt parameters to bracket the desired stats as
        closely as possible. Execution of a Process generates multiple statistics records. Connect:Direct
        closes the current statistics file and creates a new statistics file every midnight. It can also close the
        current file before midnight if the file size exceeds the value set for the file.size initialization
        parameter. The default file size is 1 megabyte.
        Statistics files are in the d_dir/work/cd_node directory. Names of the statistics file are in the format
        Syyyymmdd.ext, where yyyy indicates year, mm indicates month, and dd indicates day. The
        extension (ext) begins as 001. The extension is incremented by one each time a new statistics file
        is created in a single day.
        The following sample trace commands performs a level 2 trace on the Session Manager for the node
        called ath3500ry and writes the output to the file Smgp.trc:
        A partial sample trace output is illustrated in the following section. A trace identifies the Process ID
        and the function, the month and day, and the time in microseconds. The first column contains the
        Process ID. Column two indicates the month and day in the form of MM/DD. Column three
        indicates the time in the form of HH:MM:SSSS. The last column indicates the function. An arrow
        pointing to the right indicates the function was entered. An arrow pointing to the left indicates the
        function was exited.
        Some of the functions are indented, which indicates nesting. An indented arrow indicates that the
        function was called by the preceding function.
           ===================================================================================
           498    05/18 15:13:0104    cm_sendcmd_1 entered.
           498    05/18 15:13:0206     -> ndm_error_destroy
                                     <- ndm_error_destroy: ok
           498    05/18 15:13:0506     -> ndm_error_create
                                     <- ndm_error_create: ok
           498    05/18 15:13:0708     ndm_cmds_free entered.
                                     ndm_cmds_free exited.
           498    05/18 15:13:0801     ->ndm_parser_jdi
           498    05/18 15:13:0806     -> ndm_error_create
                                      <- ndm_error_create: ok
           498    05/18 15:13:0916      ->Parser: SELPRO
           498    05/18 15:13:0926       ->bldexp
                                       <-bldexp: Null argument value,
                                              don’t add.
           498    05/18 15:13:1116       ->bldexp
           498    05/18 15:13:1136        -> ndm_crit_comp
           498    05/18 15:13:1155         ->compile
                                         <-compile
                                        <- ndm_crit_comp: Handle
                                       <-bldexp: ok
                                   .
                                   .
                                   .
           ===================================================================================
Process Queuing
        This chapter contains information about the Transmission Control Queue (TCQ), which includes
        the following:
        ✦ A description of the TCQ
        ✦ Connect:Direct activity scheduling
        ✦ Progression of a Process through the TCQ, including status values for the Wait, Execution,
          Hold, and Timer queues
Command Definition
         change process          Change the status and modify specific characteristics of a nonexecuting Process
                                 in the TCQ.
delete process Remove a nonexecuting Process from the Wait, Timer, and Hold queues.
select process Monitor Processes in the TCQ, including those Processes that are executing.
         None of the scheduling   Wait                The Process remains in the Wait queue until
         parameters specified                         Connect:Direct establishes a session with the remote
                                                      node. After a session is established, the Process moves
                                                      to the Execution queue.
         retain=yes               Hold                A copy of the Process executes once, unless you specify
                                                      a startt parameter value. Specify a day or time or both for
                                                      the Process to start.
         retain=no                Wait (if no other   The Process remains in the Wait queue until
                                  parameters are      Connect:Direct establishes a session with the remote
                                  specified)          node. The default is no.
         retain=initial           Hold                A copy of the Process remains in the Hold queue and
                                                      executes every time the Process Manager is initiated.
         retain=yes and hold=no   Hold                A copy of the Process remains in the Hold queue to be
         or hold=call                                 executed when released.
         hold=yes                 Hold                You can execute the Process by specifying the change
                                                      process command with the release parameter.
         hold=call                Hold                The Process remains in the queue until the remote node
                                                      starts a session with the local node or another Process
                                                      starts a session with that remote node.
         startt                   Timer               When the scheduled day or time occur, the Process is
                                                      moved to the Wait queue.
       Each Process in the TCQ has an associated status value. Each status value has a unique meaning
       that is affected by the logical queue in which the Process is placed. Status values for each queue are
       shown in the tables in the following sections. You can use the select process command to examine
        that status of Processes in the TCQ. For example, the following command displays all Processes in
        the TCQ with execution status:
                               Processes automatically
                               deleted after completion
                                                           submit
                                                           submit retain=no
                                                           submit hold=no
                                     Wait
                                                           submit startt=(day,date,time)
                                                           comm error retry
                                    Timer                  file allocation error
                                                           CRC checking error
                                                           submit retain=initial
                                                           submit retain=yes
                                     Hold                  submit hold=yes
                                                           submit hold=call
       PE status are waiting for Process start messages to be exchanged between the local node and the
       remote node. Processes usually have PE status assigned for a very short period of time.
       After a Process successfully completes, it is automatically deleted from the Execution queue. A
       flush process command with hold=yes moves a Process from the Execution queue and places it in
       the Hold queue. When a session is interrupted, the Process moves from the Execution queue to the
       Timer queue if retry values are specified. If connection is not made before the retry values are
       exhausted or if retry values are not specified, the action taken depends on the
       conn.retry.exhaust.action parameter. By default, the Process moves to the Hold queue.
       The following table shows the status values for the Execution queue:
Status Comment
        PE                  Pending Execution is the initial queue status when a Process is submitted with
                            maxdelay=0.
Status Comment
         WC             This status indicates the Process is ready to execute as soon as possible, but no
                        session is available. Other Processes may be executing with the SNODE, and no other
                        sessions are available. This Process runs as soon as a new session is created or an
                        existing session becomes available.
         WR             This status indicates that the Process is in retry status. The number of retries and
                        intervals between retries is specified in the network map.
         WA             This status indicates the initial queue status when a Process is submitted without a hold
                        or retain value. This Process is ready to execute as soon as possible.
WS This status indicates that the Process is waiting for the PNODE to continue the session.
Status Comment
         WR          Retry indicates that the Process is in retry status. The number of retries and intervals between
                     retries is specified in the network map.
         WS          Wait for Start Time status indicates that the Process was submitted with a start time or date
                     that has not expired. When startt is reached, the Process is placed in the Wait queue for
                     scheduling for execution.
         HR          Held Retain indicates that the Process was submitted with retain=yes or retain=initial specified
                     and has already executed. The Process can be released later by a change process
                     command with release specified.
         WC          This status indicates the Process is ready to execute as soon as possible, but no session is
                     available. Other Processes may be executing with the SNODE, and no other sessions are
                     available. This Process runs as soon as a new session is created or an existing session
                     becomes available.
       Processes are placed in the Hold queue by a submit command with retain=initial, retain=yes, or
       hold=yes parameters specified. Processes submitted with hold=call also are placed in the Hold
       queue. Processes are moved from the Timer queue to the Hold queue by a change process
       command with hold=yes specified. Additionally, Processes are moved from the Execution queue
       to the Hold queue by a flush process command with hold=yes specified.
       Processes are moved from the Hold queue to the Execution queue by a change process command
       with the release parameter specified.
       The following table shows the status values for the Hold queue:
Status Comment
         HC             Held for Call indicates that the Process was submitted with hold=call specified. A
                        session started from either node causes the Process to be moved to the Wait queue in
                        WC status. The Process is placed in the Execution queue when the Process is selected
                        for execution.
         HI             Held Initially indicates that the Process was submitted with hold=yes specified. The
                        Process can be released later by a change process command with release or hold=no
                        specified.
HE Held due to error specifies that a session error or other abnormal condition occurred.
         HR             Held Retain indicates that the Process was submitted with retain=yes or retain=initial
                        specified and has already executed. The Process can be released later by a change
                        process command with release specified.
         HS             Held for Suspension indicates that the operator issued a flush process command with
                        hold=yes specified. The Process can be released later by a change process command
                        with release specified.
        Connect:Direct for UNIX provides tools and utilities to assist you in the following tasks:
        ✦ Working With Translation Tables
        ✦ Accessing Connect:Direct Messages
        ✦ Using License Key File Notification
        ✦ Precompressing/Decompressing Files Using the Standalone Batch Compression Utility
        ✦ Validating Configuration Files
        ✦ Generating a Configuration Report
        Each byte stores the character value for the target character set. The source character set is used as
        an index into the table. For example, an ASCII blank (Hex 20) would locate the byte at offset Hex
        20 in the translation table. If the byte at location Hex 20 contains Hex code 40, that would translate
        to an EBCDIC code indicating a blank character.
The parameters for the ndmxlt command are listed in the following section:
         -ssourcefile       The path and file name of the translation table             Path and name of translation
                            source file. If no value is specified, input is read from   table
                            STDIN.
         -ooutputfile       The path and file name of the translation table             Path and name of translation
                            output file.                                                output file
         -rradix             The radix or base of the source file input data. All      x|d|o
                             numeric values whether from command line options          x—Hexadecimal. This is the
                             or input data are interpreted based on the radix          default.
                             setting.
                                                                                       d—Decimal
                                                                                       o—Octal
                                                                                       The default is x.
         -ffiller            A filler byte value. The entire table is initialized to   Any keyboard character, number,
                             this value before the input data is scanned and           or special character, plus control
                             applied to the table.                                     characters entered using a
                                                                                       preceding slash.
                                                                                       For example, “\0” is null.
         -m                  The path and file name of a model translation table.      Path and file name of the model
                             If specified, the model table is read in and then the     translation table
                             input data is scanned and applied to the table. This
                             capability permits creating a number of different
                             tables that are variations from a single base table
                             without having to specify all 256 bytes of input data
                             for each table.
        This section provides examples of how to create a translation table or modify an existing translation
        table.
                    #
                    # Change the lowercase characters to uppercase.
                    offset=61
                    C1 C2 C3 C4 C5 C6 C7 C8 C9 D1 D2 D3 D4 D5 D6 D7
                    D8 D9 E2 E3 E4 E5 E6 E7 E8 E9
6. To use this translation table, add the following sysopts parameter to the copy statement:
                #
                # Change the lowercase characters to uppercase.
                offset=61
                C1 C2 C3 C4 C5 C6 C7 C8 C9 D1 D2 D3 D4 D5 D6 D7
                D8 D9 E2 E3 E4 E5 E6 E7 E8 E9
4. To use this translation table, add the following sysopts parameter to the copy statement:
        To specify a customized table for data translation, include the following sysopts subparameter in
        the copy statement, where pathname/filename identifies the translation table:
Diagnostics
        The following table displays the error messages that are generated by ndmxlt:
XxxxnnnI
Where:
            X Indicates Connect:Direct
            xxx is a 3-character Connect:Direct component identifier
            nnn is a 3-digit decimal number
            I is the standard, though not required, suffix
message id [long.text detailed message explanation] [mod.name issuing module name] short.text message summary
         mod.name              The name of the source module issuing the message        Source module name
                               ID.
            XCPS008I:\ :mod.name=NUSMCP00.C:\
            :short.text=File is not VB datatype.:\
            :long.text=File is not variable block. Change sysopts datatype to\
            either binary or text to transfer this file.\
            \nSYSTEM ACTION-> the copy step failed and CD processing\
            continued with the next process step.\
            \nRESPONSE-> change the sysopts datatype to either\
            binary or text.:\
        Following are the parameters for the ndmmsg command. If you do not specify an l or s parameter,
        both short and long text are displayed.
Parameter Description
              rc=&rc
              fdbk=&fdbk
              mod.name=NUCMRG00.C
              func.name=ndmapi_sendcmd
              short.text=CMGR RPC call returns NULL
              long.text=The ndmapi_sendcmd RPC call made by the API to the CMGR returns a NULL
              pointer. There is probably an RPC error.
              ndm.action=None
              user.action=First, check if the ndmcmgr is still running; it could have been killed
              accidently. If so, then abort the current CLI and restart the CLI. If the same
              problem occurs again, try to increase the value of wait time (if set) in the API
              configuration file (ndmapi.cfg).
apnotify [ -t timeout ] [ -f ]
Parameter Description
-t Set this timeout value to any positive single digit number to wait for a server response.
The following examples illustrate sample output for the apnotify command:
            #apnotify
            License file update: new license file accepted.
            #apnotify -t
            Response from Connect:Direct PMGR timed out.
            Suggestion: Try again with a higher timeout.
            #apnotify
            License file update: license file last updated on Fri Aug 6 08:46:28 2003
            No changes to the license file since the last update were detected.
            A license file reread can be forced by doing an "apnotify -f".
                -s
                -a
        ✦ If you precompress a file with the cdsacomp utility on a Connect:Direct for UNIX node, then
          you cannot specify a checkpoint interval in your Connect:Direct Process if you decompress
          the file as it is received by the remote node.
        ✦ When you are copying a precompressed file to z/OS without :precomp=yes: (for deferred
          decompression):
                The Copy operation must specify DCB information for the destination file. The physical
                   block size of the destination file on Connect:Direct for z/OS must match the logical block
                   size of the precompressed source file on Connect:Direct for UNIX.
                The logical block size of the source file defaults to 27920 unless overridden by the -b
                   parameter.
cdsacomp
         -i                     Specify the input file to precompress or              full or relative path of input file
                                decompress. This argument is required.
         -o                     Specify the output file to save. If the output file   full or relative path of output file
                                already exists, it is overwritten. This argument is
                                required.
         -z                   Use this option with “-m compress” to override         level, window, memory
                              default compression values. This argument is           level—Compression level. The
                              optional.                                              range is 1–9. The default is 1.
                              When decompressing, the values used during                 1—Provides the least
                              compression are used.                                      compression, but is the
                                                                                         fastest.
                                                                                         9—Provides the most
                                                                                         compression, but is the
                                                                                         slowest.
                                                                                     window—The size of the
                                                                                     compression window and history
                                                                                     buffer. Increasing the window
                                                                                     increases the compression, but
                                                                                     uses more virtual memory. The
                                                                                     range is 9–15. The default is 13.
                                                                                     memory—The amount of virtual
                                                                                     memory to allocate. The range is
                                                                                     1–9. The default is 4.
                                                                                         1—Uses the least virtual
                                                                                         memory.
                                                                                         9—Uses the most virtual
                                                                                         memory.
         -x                   Use this option to translate the file.                 full path to translate table file |
                              If this parameter is not specified, the file is not    relative path to translate table file
                              translated.
                              This parameter is mutually exclusive with
                              -codepage.
         -p                   Use this option to specify codepages for file          source codepage, destination
                              conversion. Default is no codepage translation.        codepage
                              This parameter is mutually exclusive with -xlate.
         -h                   Use this option to display online help for the        No values are available for this
                              utility.                                              parameter.
        In this example, the source file is a text file named source.file which is precompressed into a
        destination file named compressed.file. The file is translated using the default translation table,
        /home/cd/ndm/xlate/def_send.xlt. Trailing blanks are stripped. Default settings for ZLIB tuning,
        checkpoint interval and block size are used.
           cdsacomp -m   compress
                    -d   text
                    -i   source.file
                    -o   compressed.file
                    -x   /home/cd/ndm/xlate/def_send.xlt
                    -s   y
           cdsacomp -m   compress
                    -d   text
                    -i   zzz.txt
                    -o   zzz.sac
                    -p   EBCDIC-US,ASCII
        In this example, the source file is a binary file named source.file which is precompressed into a
        destination file named compressed.file. Default settings are used for parameters that are not
        specified.
          cdsacomp -m compress
                   -d binary
                   -infile source.file
                   -outfile compressed.file
        In this example, the source file is a precompressed text file named compressed.file which is
        decompressed into a destination file named dest.file. The file is translated using the default
        translation table, /home/cd/ndm/xlate/def_recv.xlt. Default settings are used for parameters that are
        not specified.
          cdsacomp -m   decompress
                   -d   text
                   -i   compressed.file
                   -o   dest.file
                   -x   /home/cd/ndm/xlate/def_recv.xlt
cdsacomp -h
Example—Decompressing the File on the Remote Node During the Copy Step
        The “precomp=yes” parameter is used when the file was compressed by the cdsacomp utility prior
        to this Process. The file is transferred by this Process as a pre-compressed file. It is then
        decompressed by special processing as it is received on the remote node.
           step01 copy
           from
           (
           file=/home/cd/upload/compressed.file
           sysopts=”:precomp=yes:”
           pnode
           )
           to
           (
           file=/home/cd/download/decompressed.file
           snode
           disp=rpl
           )
pend;
        The precompressed file is copied to the z/OS node with PNODE sysopts of “datatype=binary”. The
        destination file is not decompressed. The DCB settings of the original precompressed file are
        preserved on the z/OS node. The specified checkpoint interval will be used during the file transfer.
        The file can be decompressed with the z/OS cdsacomp utility.
           step01 copy
           from
           (
           file=/home/cd/upload/compressed.file
           sysopts=”:datatype=binary:”
           pnode
           )
chkpt=2M
           to
           (
           file=upload.compressed.file
           dcb=(blksize=27920, lrecl=0, dsorg=ps, recfm=u)
           snode
           disp=(new,catlg)
           )
pend;
         Note: The Strong Access Control File (sysacl.cfg) will be validated only when the user running the
               Configuration Checking Utility is a root user.
        By default, cfgCheck is run with no arguments and attempts to find all five of the configuration files
        in the current working directory. If all of the Connect:Direct components are not installed, then
        some of the files will not be found. For example, if the Command Line Interface (CLI) is installed
        but the Connect:Direct server is not installed, only the ndmapi.cfg file will exist in the installation
        directory. Therefore, only the ndmapi.cfg file will be validated. When cfgCheck is run with no
        arguments, the utility will report that the other configuration files were not found.
         Note: Before you can execute cfgCheck, you must set the NDMAPICFG environment variable.
               For more information, see Starting the CLI on page 23.
$ cfgCheck -v -h -f filename.cfg
The arguments for the cfgCheck command are listed in the following table:
Arguments Description
         No arguments        When no arguments are specified and cfgCheck is run by a non-root user, it searches
         (default)           the cfg/ directory for the following configuration files: initparm.cfg, netmap.cfg,
                             userfile.cfg, and ndmapi.cfg. When a root user runs cfgCheck, the utility also
                             searches the SACL/ directory to locate the sysacl.cfg file.
         -f filename.cfg     Specifies a configuration file name to validate, where filename is the name of one of
                             the configuration files. You can specify multiple -f arguments. When the -f argument is
                             used, cfgCheck will not automatically search for other configuration files from the file
                             specified.
                             Note: To validate the sysacl.cfg file, you must have root access or have effective
                                   permissions of root.
$ cdcustrpt
          Note: Default values are computed by the utility based on the location and name of the installed
                Connect:Direct for UNIX and are provided in brackets “[ ]”. Press Enter to accept the default values.
        2. Type the full path where Connect:Direct is installed and press Enter.
        3. Type the full path and name for the report that will be generated and press Enter.
        4. The report is generated in the location you specified, and any error messages are displayed as
           shown in the following example:
              % cdcustrpt
              Enter full path of Connect:Direct destination
              directory:[/sci/users/jbrown1/cd40]:
              Enter full path and name for this support report
              file:[/sci/users/jbrown1/cd40/etc/cd.support.rpt]:
              ls: /sci/users/jbrown1/cd40/ndm/SACL: Permission denied
              cdcustrpt ended
        In this example, the user does not have root access, so the Strong Access Control File (sysacl.cfg)
        can not be accessed. The following example shows an excerpt from a sample report:
          ###########################################################################
          #######     Connect:Direct for UNIX 4.0.00 configuration report     #######
          ###########################################################################
          Connect:Direct for UNIX Version 4000, Build 00, IBM/RS6000 AIX, Fix date: 01OCT2007
          Install directory: /sci/users/jbrown1/cd40
          Local Node name: jb_aix40
          =========================================================
          =====   Begin: Environment and system information   =====
          =========================================================
          Disk usage:
          Filesystem    512-blocks      Free %Used    Iused %Iused       Mounted on
          /dev/hd4          262144     64216   76%     2479       4%     /
          /dev/hd2         8126464   2708688   67%    37802       4%     /usr
          /dev/hd9var       262144     18448   93%       613      2%     /var
          /dev/hd3          786432    363600   54%       424      1%     /tmp
          /dev/fwdump       524288    507752    4%        17      1%     /var/adm/ras/platform
          /dev/hd1          262144    216520   18%       167      1%     /localhome
          /proc                  -         -    -          -      -      /proc
          /dev/hd10opt      524288     52168   91%     3688       6%     /opt
          /dev/fslv00    121634816 13629040    89%   264984      15%     /sci
          scidalnis01:/export/nis01 1677670392 512499192     70%            0    -1% /home/nis01
          Memory statistics:
          System Configuration: lcpu=4 mem=3824MB
             name=.Local
             baserecord=brown_aix38
             type=l
             protocol=tls
             override=n
             authtimeout=120
             stsenablesig=n
             stsenableautoupdate=n
             stslimitexportversion=y
             stsenableenc=y
             stsencalgs=(ideacbc128,tdescbc112,descbc56)
             stsauthlocalkey=0305.095A.44E3.BD87.F476.45E8.09B1.FCCA.45ED.67B0.01AD
             stsprevauthkeyexpdatetime=
             stssiglocalkey=0204.BABA.613D.2FA5.AAE6.0BD4.5847.B610.A17F.C7DD.0AA2
             stsprevsigkeyexpdatetime=
             ssltlsseaenable=n
             seacertvaldef=
             ssltlstrustedrootcertfile=/home/nis01/jbrown1/CertificateWizard/cert.crt
             ssltlscertfile=/home/nis01/jbrown1/CertificateWizard/athena.selfsigned.keycert.txt
             ssltlsenablefipsmode=n
             ssltlsenableclientauth=n
             ssltlsenablecipher=(TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA)
          ====================================================================================
          Begin: /sci/users/jbrown1/swift31/ndm/SwiftNet/Version3/cfg/CDSwiftnet.cfg
          ====================================================================================
          =====   Content of
          /sci/users/jbrown1/swift31/ndm/SwiftNet/Version3/cfg/CDSwiftnet.cfg =====
          o
          # Connect:Direct UNIX for SWIFTNet 3.1.00 configuration file.
          #
          [Directory.Info]
          CD.HomeDir="/sci/users/jbrown1/swift31"
          CDSwiftnet.HomeDir="/sci/users/jbrown1/swift31/ndm/SwiftNet/Version3"
          # Concatenate the RequestorDN and ResponderDN to these directories for the Request
          Handler.
          Reception.Dir="/sci/users/jbrown1/reception"
          Download.Dir="/sci/users/jbrown1/download"
          [Log.Info]
          #Log.MaxSize="1048576"
          Log.MaxSize="35000"
          Log.MaxVersions="5"
          [connection.info]
          # Connection information for Connect:Direct's API port. (Used when forwarding files to
          the back office.)
          Comm.Info="spyglass;10102"
          Userid="jbrown1"
          Passwd="********"# this is a test
          #ClientInfo="/sci/users/jbrown1/swift31/ndm/SwiftNet/Version3/program/<Encrypted
          userid/password file generated by the LCU>"
        The Connect:Direct Application Programming Interface (API) allows you to write custom
        programs in either C or C++ to use with Connect:Direct. With the C functions or the C++ classes,
        you can create programs to perform the following tasks:
        ✦ Establish a connection to the Connect:Direct server
        ✦ Disconnect from the server
        ✦ Receive command responses from the server
        ✦ Send commands to the server
        This chapter describes the format of the Connect:Direct API functions and classes and provides
        samples of their use. Sample programs are provided that use the Connect:Direct API functions and
        classes to issue commands and receive responses from the Connect:Direct server.
       Use the commands defined in the following table to compile a custom C++ program using the C++
       API calls:
AIX
Sun
HP
HP-Itanium
Linux
       To build a C++ program using the C API calls, such as the apicheck.C sample program, replace the
       sdksample.C parameter with the name of the C++ program and rename the output file parameter,
       -o sdksample, to the name of the output file you want to create such as apicheck.
AIX
Sun
HP
HP-Itanium
Linux
LinuxS390
         Note: Although the JNI is supported, the Connect:Direct Java Application Interface is recommended for
               Java programs that invoke the services of Connect:Direct.
         Note: The environment variable NDMAPICFG must be set to the pathname of the client configuration
               file. Refer to Starting the CLI on page 23 for instructions on setting the environment variable.
Use the following Connect:Direct API functions for C and C++ programs:
            error control structure keeps track of the current and total number of errors. You can move
            through the errors by using the next pointer in error entry blocks.
        The following code defines the ERROR_H structure:
        The following table describes the parameters for the ndmapi_connect() or ndmapi_connect_c()
        function:
         ndm_portname        A pointer to the host port number. If this parameter is not             Pointer
                             specified, the environment variable TCPPORT is checked. If no
                             value is specified, the value of the tcp.port in the CLI/API
                             configuration file is checked. If no value is specified, the default
                             value 1363 is used.
Following are the return codes for the ndmapi_connect() or ndmapi_connect_c() function:
         NDM_ERROR            A session was not established with the server. Consult the error structure for
                              detailed error status.
The following sample function illustrates the use of ndmapi_connect() to connect to the sun1 host:
void ndmapi_disconnect
ndmapi_disconnect ();
int32 ndmapi_recvresp ERROR_H error int32 * resp_length, char * resp_buffer, int32 * resp_moreflag
         resp_length      A pointer to the length, in bytes, of the           Pointer to number of bytes returned or
                          application buffer to receive the response. The     0 if you no longer want to receive
                          API sets this parameter to the number of bytes      responses. Setting this field to zero
                          returned.                                           purges all queued responses.
         resp_buffer      A pointer to the application buffer that receives   A local buffer, with a size greater than
                          the command or submit response. This buffer         or equal to that set by resp_length and
                          should allocate 4096 bytes.                         filled in by ndmapi_recvresp() or
                          The format of resp_buffer is a free-form text       ndmapi_recvresp_c().
                          record structure. Field names are four              The CLI passes the resp_buffer to
                          characters long and all uppercase. The data         AWK for parsing. Valid values include:
                          can be any length and can include blanks. The       ADMN—Connect:Direct administrator
                          structure is:                                       name
                             field name=data | field name=data
                             |...                                             ADPH—Connect:Direct administrator
                                                                              phone number
                          For example:
                             SUBM = username | PNUM = 12 | PNAM               CCOD—Completion code
                             = proc1 |...                                     CKPT—Checkpoint
                                                                              CLAS—Class
                                                                              DBYW—Bytes written
                                                                              DBYX—Bytes received
                                                                              DCOD—Destination completion code
                                                                              DDAY—Submit date
                                                                              DDS1—Destination disposition 1
                                                                              DDS2—Destination disposition 2
                                                                              DDS3—Destination disposition 3
                                                                              DESC—Connect:Direct administrator
                                                                              description
                                                                              DFIL—Destination file
                                                                              DMSG—Destination message ID
                                                                              DNVL—Destination number of
                                                                              volumes
                                                                              DRCW—Records written
                                                                              DRUX—RUs received
                                                                              DVOL—Destination volume array
                                                                              ECMP—Extended compression ON or
                                                                              OFF
NDM_ERROR An error occurred. Consult the error structure for detailed error status.
         cmd_text        A pointer to the null-terminated text string that specifies the        Pointer to a text
                         command to send to Connect:Direct. The command text must be            string
                         followed by a semicolon and terminated with a null.
                         When you use the submit=filename command from the API,
                         ensure that you allocate enough storage for the Process text. The
                         text of the Process submitted is returned in the text string
                         associated with this parameter when the function completes. If you
                         do not allocate enough storage for the Process text, a core dump
                         can result.
         resp_moreflag   A pointer to the flag that indicates that more responses are pending   Pointer to a flag
                         for the command just executed. Invoke ndmapi_recvresp() or
                         ndmapi_recvresp_c() to retrieve the extra responses.
         sendcmd_data     Provides the caller with some information about the user request.       Information
                          Because parsing of command text occurs at the CMGR, the End             about the user
                          User Application (EUA) has no way to identify the command that          request
                          was submitted, unless it generated the text.
         cmd_name         A pointer to a string with the name of the command submitted. The       Pointer to name
                          CLI uses this pointer to display completion messages. This field        of command
                          enables you to display unique completion messages without any
                          knowledge of a specific command in the EUA.
         cmd_id           A four-byte identifier of the command that was found in the             Four-byte
                          command text. Following are the four-byte identifiers:                  identifier
                             /**************Command IDs*******************/
                             #define CHANGE_PROCESS 0x43484750 /* "CHGP" */
                             #define DELETE_PROCESS 0x44454c50 /* "DELP"*/
                             #define FLUSH_PROCESS 0x464c5350 /* "FLSP" */
                             #define SELECT_PROCESS 0x53454c50 /* "SELP"*/
                             #define SELECT_STATISTICS 0x53454c53 /* "SELS" */
                             #define SUBMIT       0x5355424d /* "SUBM" */
                             #define TRACE_API 0x41504920 /* "API " */
                             #define TRACE_CMGR 0x434d4752 /* "CMGR" */
                             #define TRACE_SMGR 0x534d4752 /* "SMGR" */
                             #define TRACE_PMGR 0x504d4752 /* "PMGR" */
                             #define TRACE_COM 0x434f4d4d /* "COMM"*/
                             #define TRACE        0x54524143 /* "TRAC" */
                             #define STOPNDM      0x53544F50    /* "STOP" */
                          The CLI uses these identifiers to ensure that rules are being
                          followed. For instance, if an ndmapi_sendcmd returns with the
                          resp_moreflag set and the cmd_id is not SELECT_STATISTICS or
                          SELECT_PROCESS, the CLI generates an error.
         data1, data2,    For future expansion. data1 is used with the submit command to
         and data3        return the Process number. data2 is used with the submit command
                          to return the result of the Process (0, 4, 8, or 16)
         Note: The environment variable NDMAPICFG must be set to the pathname of the client configuration
               file. Refer to Starting the CLI on page 23 for instructions on setting the environment variable.
       To use the ConnectDirectSession class, your application must include the cdunxsdk.h header file
       provided in the installation and must link with the ndmapi.a file. Following is a sample
       ConnectDirectSession class program:
           #include "cdunxsdk.h"
           #include <iostream.h>
           #include <string.h>
           void getError(ConnectDirectSession& cdSess);
           main()
           {
               ConnectDirectSession cdSess;
               char processText[16384];
                 if (cdSess.SessionINF->Connect() == CD_SUCCESS)
                 {
                     strcpy(processText,"submit maxdelay=unlimited sdksample process snode=SNODENAME
           ");
                     strcat(processText,"copy00 copy from (file=sample.txt pnode)");
                     strcat(processText,"              to (file=sample.000 snode disp=rpl) ;");
                   if (cdSess.SessionINF->SendCommand(processText) == CD_SUCCESS)
                   {
                   printf("%s completed, pnumber = %ld.\n",
                       cdSess.SessionINF->GetCommandName(),
                      cdSess.SessionINF->GetProcessNumber());
           sprintf(processText, "SELECT STATISTICS PNUMBER=%ld DETAIL=YES ;",
           cdSess.SessionINF->GetProcessNumber());
           (cdSess.SessionINF->SendCommand(processText) == CD_SUCCESS)
                       {
                }
                        else
                            {
                             getError(cdSess);
                        }
                    }
                          else
                          {
                        getError(cdSess);
                   }
                cdSess.SessionINF->DisConnect();
                   }
                   else
                   {
                        getError(cdSess);
                   }
            }
            void getError(ConnectDirectSession& cdSess)
            {
                if (cdSess.SessionINF->GetFirstError())
                {
                    printf("\nError Message: %s",    cdSess.SessionINF->GetMsgID());
                    printf("\nError Feedback: %d",   cdSess.SessionINF->GetFeedBackCode());
                    printf("\nError RC:       %d",   cdSess.SessionINF->GetReturnCode());
                    printf("\nError SUBST:    %s\n", cdSess.SessionINF->GetSubstitute());                         }
                while(cdSess.SessionINF->GetNextError())
                   {
                       printf("\nError Message: %s",     cdSess.SessionINF->GetMsgID());
                       printf("\nError Feedback: %d",    cdSess.SessionINF->GetFeedBackCode());
                       printf("\nError RC:       %d",    cdSess.SessionINF->GetReturnCode());
                       printf("\nError SUBST:    %s\n", cdSess.SessionINF->GetSubstitute());
                         }
            }
         GetResponseLength    Returns the length of the previously        void          Length of the response
                              received response buffer.                                 buffer from the
                                                                                        previously issued call.
         GetCurrentError      Moves the error data pointer to the         void          TRUE—If successful
                              current error in the list.                                FALSE—If no current
                                                                                        error exists.
         GetNextError         Moves the error data pointer to the         void          TRUE—If successful
                              next error in the list.                                   FALSE—If no more
                                                                                        errors are found.
         GetPreviousError     Moves the error data pointer to the         void          TRUE—If successful
                              previous error in the list.                               FALSE—If no previous
                                                                                        error exists.
         GetFirstError        Moves the error data pointer to the first   void          TRUE—If successful
                              error in the list.                                        FALSE—If no error is
                                                                                        found.
         GetLastError           Moves the error data pointer to the last   void           TRUE—If successful,
                                error in the list.                                        otherwise FALSE.
         GetMsgID               Retrieves the message of the current       void           Return Value: Pointer
                                error data block.                                         to a message ID if data
                                You must call one of the                                  block is value.
                                GetXXXXError methods before calling
                                this method in order to retrieve the
                                proper results.
         GetReturnCode          Returns the Connect Direct return          void           One of the valid
                                code.                                                     Connect:Direct return
                                                                                          code: 1,4,8,16.
         DisplayError           Displays the current error chain to an     Parameters:    Return Value: Returns
                                output location.                           Pointer to a   the highest error found
                                                                           file I/O       in the error chain or -1
                                                                           structure.     on error.
#include <stdio.h>
           // Error enumeration.
           typedef enum CDErrorCode
           {
               CD_SUCCESS = 0,
               CD_FAILURE = -1
} CDErrorCode;
           // <<Interface>>
           class CDSession
           {
           public:
               // Communication methods...
               virtual CDErrorCode Connect(void) = 0;
               virtual CDErrorCode Connect(char *IpAddress, char *IpPort) = 0;
               virtual CDErrorCode DisConnect(void) = 0;
               virtual CDErrorCode SendCommand(char *CmdText) = 0;
               virtual CDErrorCode ReceiveResponse(void) = 0;
           class ConnectDirectSession
           {
           public:
               // Interface classes
               CDSession *SessionINF;
                ConnectDirectSession();
                ~ConnectDirectSession();
           };
The user exit API functions allow you to write custom programs to use with Connect:Direct.
         Note: exit_skeleton.c and exit_skeleton.C contain working examples of all three exits and can be
                 made with the make_exit_c and make_exit_C make files.
Program Description
         File Open Exit      Connect:Direct sends a message to this user exit program to open the source or
                             destination file during processing of the copy statement. The File Open Exit opens the
                             source file and identifies the file descriptor. This exit can perform any sort of
                             processing to file names or directory names. It can also redirect the open request to
                             other files as needed.
                             The File Open Exit program (named “exit_skeleton” in this example) must be owned
                             by root and the setuid bit must be set. Use the following commands:
                             % chown root exit_skeleton
                             % chmod u+s exit_skeleton
         Security Exit       The Security Exit enables you to implement your own security system or provide
                             access to a third-party security system.
Program Description
         Statistics Exit       The Statistics Exit is a notification to the user exit program after any record is written
                               to the statistics file. Whenever a statistics record is written to the statistics file, an
                               exact copy is passed to this exit.
         exit_child_init()     exit_child_init_c()       Use this function as the first line in a user exit program to
                                                         initialize communications between Connect:Direct and the
                                                         user exit program.
         recv_exit_msg()       recv_exit_msg_c()         Used by both Connect:Direct and the user exit program to
                                                         receive a message from the other Process. The receive exit
                                                         messages wait for a response from the other Process.
         send_exit_file()      send_exit_file_c()        The user exit program uses this function when it has opened
                                                         a file for Connect:Direct. This function uses underlying UNIX
                                                         methods to pass an open file descriptor. from one Process to
                                                         another.
         send_exit_msg()       send_exit_msg_c()         Both Connect:Direct and the user exit program use this
                                                         function to send a message to the other Process. Send
                                                         messages are followed with a receive message to get the
                                                         response from the other Process.
         logfile        The name of the log or trace file that is opened for use by the     Name of log file or trace
                        user exit programs. Because the file open and security exit are     file
                        started by SMGR, which is running as root, the exits also run
                        as root. Running the exits as root can cause problems with file
                        permissions of the log file, so logfile enables you to easily
                        change owner or permissions on the file. See the sample exit
                        in d_dir/ndm/src/exit_skeleton.c for more details.
        Following are the return codes for the exit_child_init() or exit_child_init_c() function. Return
        codes for the function are defined in ndmapi.h.
         GOOD_RC             Communications between Connect:Direct and the user exit program were
                             successfully initialized.
         ERROR_RC            Communications between Connect:Direct and the user exit program could not be
                             initialized.
         exit_flag        A flag to specify the recipient ID. The only valid value a user     EXIT_PROGRAM
                          exit program can use is EXIT_PROGRAM.
         msg_type         A pointer to the name of the received message. Messages are         Pointer to message
                          requests from Connect:Direct and the associated response
                          from the user exit program.
        Following are the return codes for recv_exit_msg()or recv_exit_msg_c(). Return codes for the
        function are defined in ndmapi.h.
         ERROR_RC                     An error occurred and the message was not received successfully. Possible
                                      causes include: Connect:Direct terminated, an invalid value used for the
                                      exit_flag parameter, or the receiving buffer not large enough to hold the
                                      message received.
         exit_flag        A flag to specify the sender ID. The only valid value a user exit        EXIT_PROGRAM
                          program can use is EXIT_PROGRAM.
         fd               The file descriptor of a file that the user exit program opened in the   File descriptor
                          place of Connect:Direct, similar to one returned by the open(2)
                          function.
        Following are the return codes for send_exit_file() or send_exit_file_c(). Return codes for the
        function are defined in ndmapi.h.
         ERROR_RC            An error occurred and the file descriptor was not sent successfully. Possible causes
                             include: Connect:Direct terminated, an invalid value used for the exit_flag or fd
                             parameters, or the last message sent was not send_exit_msg.
         exit_flag        A flag to specify the sender ID. The only valid value a user    EXIT_PROGRAM
                          exit program can use is EXIT_PROGRAM.
send_buf A pointer to the memory location of the message to be sent. Pointer to message
        Following are the return codes for send_exit_msg() or send_exit_msg_c(). Return codes for the
        function are defined in ndmapi.h.
         ERROR_RC              An error occurred and the message was not sent successfully. Possible causes
                               include: Connect:Direct terminated or an invalid value is used for the exit_flag or
                               msg_type parameters.
FILE_OPEN_OUTPUT_MSG
        During the copy statement process, Connect:Direct sends a FILE_OPEN_OUTPUT_MSG to the
        user exit program to open the destination file. The FILE_OPEN_OUTPUT_MSG contains:
        ✦ The open function oflag parameter (for example, O_CREAT|O_RDWR|O_TRUNC)
        ✦ The open function mode parameter, which controls file permissions
FILE_OPEN_OUTPUT_REPLY_MSG
        The user exit program sends a reply message to the Connect:Direct FILE_OPEN_OUTPUT_MSG.
        The FILE_OPEN_OUTPUT_REPLY_MSG contains:
        ✦ Status value of zero for successful or non zero for failure
        ✦ Status text message (if status value is failure, status text message is included in the error
          message)
        ✦ Pipe pid (for pipe I/O, the UNIX process ID of the shell process that is performing the shell
          command for pipe I/O)
        ✦ Actual file name opened (to be used in statistics log messages)
        If the status value is zero for successful, the user exit program must immediately call
        send_exit_file() or send_exit_file_c() to send the file descriptor of the opened file to
        Connect:Direct.
FILE_OPEN_INPUT_MSG
        During the copy statement Process, Connect:Direct sends a FILE_OPEN_INPUT_MSG to the user
        exit program to open the source file. The FILE_OPEN_INPUT_MSG contains:
        ✦ The open function oflag parameter (for example, O_RDONLY)
        ✦ The open function mode parameter, which controls file permissions
        ✦ UNIX user ID that will own the file
        ✦ UNIX group ID that will own the file
        ✦ UNIX user name
        ✦ A copy of the Connect:Direct copy control block
        ✦ A copy of the Connect:Direct parsed sysopts structure (the copy control block contains the
          actual raw version from the Process)
FILE_OPEN_INPUT_REPLY_MSG
        This message type is used when the user exit program sends a reply message to the Connect:Direct
        FILE_OPEN_INPUT_MSG. The FILE_OPEN_INPUT_REPLY_MSG contains:
        ✦ Status value of zero for success or non zero for failure
        ✦ Status text message (if status value is failure, status text message is included in the error
          message)
        ✦ Pipe pid (for pipe I/O, the UNIX process ID of the shell process that is performing the shell
          command for pipe I/O)
        ✦ Actual file name opened (used in statistics log messages)
         Caution:    If the security exit is used, Connect:Direct relies on it for user ID authentication. If the security
                     exit is not implemented correctly, the security can be compromised.
GENERATE_MSG
        Connect:Direct sends a generate message to the user exit program at the start of a session to
        establish a security environment. The PNODE sends the GENERATE_MSG to the security exit to
        determine a user ID and security token to use for authentication on the SNODE. The
        GENERATE_MSG contains:
        ✦ Submitter ID
        ✦ PNODE ID
        ✦ PNODE ID password, if user specified one
        ✦ SNODE ID
        ✦ SNODE ID password, if user specified one
        ✦ PNODE name
        ✦ SNODE name
GENERATE_REPLY_MSG
        The user exit program sends a reply message to Connect:Direct. The GENERATE_REPLY_MSG
        contains:
        ✦ Status value of zero for success or non zero for failure
        ✦ Status text message (if status value is failure, status text message is included in the error
          message)
        ✦ ID to use for security context on the SNODE side (may or may not be the same ID as in the
          generate message)
        ✦ Security token used in conjunction with ID for security context on the SNODE side
VALIDATE_MSG
        Connect:Direct sends a validate message to the user exit program. The SNODE sends the
        VALIDATE_MSG to the security exit to validate the user ID and security token received from the
        PNODE. The VALIDATE_MSG contains:
        ✦ Submitter ID
        ✦ PNODE ID
        ✦ PNODE ID password, if user specified one
        ✦ SNODE ID
VALIDATE_REPLY_MSG
        The user exit program sends a reply message to the Connect:Direct VALIDATE_MSG. The
        VALIDATE_REPLY_MSG contains:
        ✦ Status value of zero for success or non zero for failure
        ✦ Status text message (if status value is failure, status text message is included in the error
          message)
        ✦ ID used for security context
        ✦ Security token to use in conjunction with ID for security context
Note: You can access the log files through the normal printf() and fprintf (stderr,...) functions.
The log files are located in the installed (d_dir) working directory:
.../d_dir/work/cd_node
Client
         A program that makes requests of the Connect:Direct server and accepts the server's responses.
Connect:Direct
         The family of data transfer software products that distributes information and manages production
            activities among multiple data centers.
Connect:Direct Node
           Any computer/workstation running Connect:Direct.
Connect:Direct Process
           A series of statements, which can be predefined and stored in a directory, submitted through the API
               to initiate Connect:Direct for UNIX activity. Examples of Process functions are copying files
               and running jobs.
daemon
           The long-running process that provides a service to a client. The PMGR is the Connect:Direct for
              UNIX daemon.
Diagnostic Commands
           Connect:Direct commands that assist in the diagnosis of Connect:Direct software problems.
Execution Queue
           A logical queue in the TCQ. A Process in the Execution Queue can be transferring data to or from
               a remote Connect:Direct node or it can be waiting for a connection to the remote
               Connect:Direct node before it can perform its tasks.
File Agent
        An application program and component of Connect:Direct. It scans specified directories searching
           for the presence of a file. When a file appears in a watched directory, Connect:Direct either
           submits a Process or performs the action specified by the rules for the file.
Hold Queue
        A logical queue in the TCQ. Processes in the Hold Queue are waiting for operator intervention
            before they move to the Wait Queue for scheduling.
Monitoring Commands
        Connect:Direct commands that allow you to display information from the statistics file and the TCQ
           about Connect:Direct Process execution results.
Session
           A connection between two Connect:Direct nodes.
Timer Queue
        A logical queue in the TCQ. Processes on the Timer Queue are waiting for a start time before they
            move to the Wait Queue for scheduling.
Wait Queue
        A logical queue in the TCQ. Processes on the Wait Queue are waiting on a connection to or from
            the remote Connect:Direct node.
ndmapi_recvresp() function
  description 94
                                                                          P
  example 98                                    -p nnnnn parameter, direct command 25
  resp_buffer parameter 95, 96, 97              pacct parameter 31
  resp_length parameter 95
  resp_moreflag parameter 97                    Parameters, scheduling for the TCQ 64
  TRUNCATED return code 97                      PE status value 66
ndmapi_sendcmd() function 98                    pmgr parameter, trace command 61
  cmd_id parameter 99
                                                PMGR, description 7
  cmd_name parameter 99
  cmd_text parameter 98                         pname parameter
  description 98                                  change process command 38, 42, 45, 48, 53
  resp_moreflag parameter 98                      delete process command 41
  ret_data parameter 99                         pnodeid parameter, submit command 31
  sendcmd_data parameter 99
                                                pnumber parameter
ndmmsg                                            change process command 38, 42, 46, 48, 53
  description 74                                  delete process command 42
  message ID format 73
  message id format 73                          Process restart, overview 15
  message record format 74                      Process statements, listed 12
  overview 73
                                                Process, samples 17
  parameter, -l 75
  parameter, -s 75                              prty parameter
  parameters, -f 75                               change process command 40
  using to display message text 73                submit command 31
ndmxlt
  creating translation tables 70                                          Q
  errors generated 73
                                                queue parameter 46, 48
  modifying translation tables 70
                                                Queues
ndmxlt command parameters
                                                 execution 65
  -ffiller 71
                                                 hold 67
  -m 71
                                                 timer 67
  -ooutputfile 70
                                                 wait 66
  -rradix 71
  -ssourcefile 70                               quiesce parameter 45
ndmxlt utility, and the copy statement 72
Network map file
                                                                          R
 description 14                                 -r parameter, direct command 26
newname parameter, submit command 31            reccat parameter 53
newsnode parameter, change process command 39   recids parameter 54
                                                recv_buf_len parameter 108
                         O                      recv_exit_msg() function
-ooutputfile parameter, ndmxlt 70                 description 107
                                                  ERROR_RC return code 108, 109
Operational control commands 27
                                                  exit_flag parameter 107, 108, 109
                                                  GOOD_RC return code 108, 109
                                                  msg_type parameter 107, 109
                          W
WA status value 66
Wait queue 66
WC status value 66, 67
Wildcard facility 29
WR status value
 timer queue 67
 wait queue 66
WS status value 66, 67
                          X
-x parameter, direct command 25
XXLT001I error number, translation table 73
XXLT002I error number, translation table 73
XXLT003I error number, translation table 73
XXLT004I error number, translation table 73
XXLT005I error number, translation table 73
XXLT006I error number, translation table 73
XXLT007I error number, translation table 73
XXLT008I error number, translation table 73
                          Z
-z parameter, direct 26