Cannot run a Natural RPC server under Attach Manager

Product
Natural 9.1.4
EntireX Version 10.8.0.7
EntireX Attach Manager Version 10.8.7
Red Hat LInux

trying to use Attach Manager to manage the instances of a RPC server that is manually started now and works fine. but if we start it in attach manager we get this message

2024-02-06 10:03:38 Checking ETB031:1971:TCP, CST2AST/CARESVS/CALLNAT
2024-02-06 10:03:38 0 active server, 1 active attach manager, 0 pending conversa
tions
2024-02-06 10:03:38 Seems to be a One-Way server, take PendingConv into account
2024-02-06 10:03:38 Adjusted PendingStarts: 0 LastActive, 0 IsActive, 1 → 1 Pen
dingStarts
2024-02-06 10:03:38 0 LastPendCnv, 0 CurrPendCnv, 0 ConvDone
2024-02-06 10:03:38 0 active server, 1 active attach manager, 0 pending conversa
tions
2024-02-06 10:03:38 Waiting …

is there something we need to do to get this to work or will the server need to be rewritten
i am not a developer and have no idea, opened a ticket and got told what a one way server was but no help in resolving this so any assistance will be appreciated.

the program
0010***********************************************************************
0020*
0030* This CARES Entire-X server program can send multiple replies to a
0040* single request. It accepts as input a message from a client program
0050* in the form: FUNC(a20) DATA(a30000)
0060* It sends back the requested data in blocks of 30K and then ends the
0070* conversation
0080*
0090***********************************************************************
0100define data
0110local using CR0003A1 /* BROKER parameters
0120local using EQUATES /* BROKER variables
0130local using CR0002A1 /* Send and Receive Buffers
0140local using IV0004A1 /* IVR-CARES Subprogram Table
0150local using IV0003L1 /* IVR-CARES-LOG
0160local
0170**
018001 USR1053L
0190 02 inputs
0200 03 env-variable (a80)
0210 02 outputs
0220 03 char-string (a253)
0230 03 redefine char-string
0240 04 environment (a4)
0250 03 redefine char-string
0260 04 hostname (A7)
0270 03 response (i04)
0280**
029001 environment (a4)
030001 redefine environment
0310 02 #env(a2)
032001 #save-conv-id (a16)
033001 #tmp-id-pgm (a8)
034001 #diary-isn (n11)
035001 #this-pgm (a8)
0360end-define
0370**
0380if device eq ‘BATCH’ and
0390 data gt 0
0400 input #diary-isn
0410end-if
0420

0430
Get the Environment
0440*
0450env-variable := ‘APPUSER’
0460callnat ‘USR1053N’ USR1053L
0470#environment := usr1053l.environment
0480*
0490* Set up the EntireX broker service to be used
0500*
0510assign #diagnostic = true
0520assign server-class = ‘CST2AST’
0530assign server-name = ‘CARESVS’
0540assign service = ‘VS0666P1’
0550examine #env and translate into upper
0560* decide on first value of #env
0570* value ‘QA’ broker-id := ‘localhost:1972’
0580* value ‘UA’ broker-id := ‘localhost:1973’
0590* none broker-id := ‘localhost:1971’
0600* end-decide
0610*
0620broker-id := ‘localhost:1971’
0630*
0640* ------------------------------------------
0650* Setup the static control block assignments
0660* ------------------------------------------
0670*
0680assign aci-type = 1 /* must always be 1
0690assign aci-version = 3 /* version of control block used
0700assign user-id = USER
0710assign token = ’ ’
0720assign wait = ‘30M’ /
wait 30 Minutes
0730assign send-len = 30020
0740assign receive-len = 30020
0750assign return-len = 20
0760assign errtext-len = 40
0770assign conversation-status = 0
0780assign store-message = 0
0790assign message-status = 0
0800assign att-del-count = 0
0810assign unit-of-work-status = 0
0820assign unit-of-work-time = ’ ’
0830assign unit-of-work-id = ’ ’
0840assign unit-of-work-user-status = ’ ’
0850assign unit-of-work-status-persistance = 0
0860
0870
0880****************************************************************
0890* Logon to broker. If an error is returned, logoff and stop
0900****************************************************************
0910assign option = null
0920assign function = logon
0930perform CALL-BROKER
0940if error-code ne ‘00000000’
0950 perform BROKER-LOGOFF
0960 terminate 70
0970end-if
0980
0990****************************************************************
1000* Register the service. if an error is returned, logoff and stop
1010****************************************************************
1020assign function = register
1030perform CALL-BROKER
1040if error-code ne ‘00000000’
1050 perform BROKER-LOGOFF
1060 terminate 71
1070end-if
1080
1090****************************************************************
1100* Receive the request and act accordingly
1110****************************************************************
1120r1. repeat
1130
1140 fetch return ‘ADA3009’ /* a do nothing call - this reads one cif
1150/* record to avoid an adabas timeout error
1160
1170 assign wait = ‘30M’
1180 assign option = NULL
1190 assign conv-id = ‘NEW’
1200 assign function = RECEIVE
1210 perform CALL-BROKER
1220 if error-code = ‘00740074’ /* service time out due to no requests
1230 then
1240 escape top
1250 end-if
1260 if error-code ne ‘00000000’
1270 then
1280 perform BROKER-LOGOFF
1290 terminate 72
1300 end-if
1310
1320 assign #save-conv-id = conv-id
1330*
1340* If a STOP request is sent, reply to the message and stop the
1350* server
1360*
1370 if substr(#receive-control-info,1,4) = ‘STOP’
1380 move ‘OK’ to #send-control-info
1390 move ‘STOPPING SERVICE’ to #send-data
1400 assign function = send
1410 assign option = eoc
1420 assign wait = ‘NO’
1430 assign conv-id = #save-conv-id
1440 perform CALL-BROKER
1450 perform BROKER-LOGOFF
1460 stop
1470 end-if
1480*
1490* Call the appropriate subprograms to send the requested data
1500*
1510 reset IV0004A1
1520 IV0004A1.srm-func := ‘GET’
1530 IV0004A1.srm-id := #receive-control-info
1540 CALLNAT ‘IV0004N1’ IV0004A1
1550 move IV0004A1.srm-natpgm to #tmp-id-pgm
1560**
1570 IF IV0004A1.srm-fdbk eq ‘OK’
1580 callnat #tmp-id-pgm
1590 CR0002A1
1600 CONTROL-BLOCK-ARRAY()
1610 SEND-BUFFER(
)
1620 RECEIVE-BUFFER()
1630 ERROR-TEXT
1640 DIAGNOSTIC-SWITCH
1650 escape top
1660 end-if
1670

1680* If the request was not STOP or a valid function
1690* on the generic table, return an error to the client
1700*
1710 move ‘NOTOK’ to #send-control-info
1720 move ‘INVALID MESSAGE’ to #send-data
1730 assign function = send
1740 assign option = eoc
1750 assign wait = ‘NO’
1760 assign conv-id = #save-conv-id
1770 perform CALL-BROKER
1780end-repeat
1790
1800*
1810* Subroutine to deregister and logoff from EntireX broker.
1820*
1830define subroutine BROKER-LOGOFF
1840assign option = null
1850assign function = deregister
1860perform CALL-BROKER
1870assign function = logoff
1880perform CALL-BROKER
1890end-subroutine
1900
1910*
1920* Subroutine to call EntireX broker and write to Log File
1930*
1940INCLUDE IV0003C1 /* Call Broker and Write to Log File
1950
1960ON ERROR
1970 perform BROKER-LOGOFF
1980 #this-pgm := *program
1990 fetch #this-pgm
2000END-ERROR
2010end

lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq List: IV0003C1 qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x 0010 ******************************************************************** x
x 0020 * x
x 0030 * Copycode: IV0003C1 x
x 0040 * x
x 0050 * Function: Call ‘BROKER’ - Receive / Send Messages. x
x 0060 * Create a log entry for Receive/Send messages x
x 0070 * (IVR/Cares) / (LINK\4) as well as other calls to BROKER x
x 0080 * x
x 0090 * Author: JHamid x
x 0100 * x
x 0110 * Date: 04July2011 x
x 0120 * x
x 0130 * Modifications: x
x 0140 *********************************************************************** x
x 0150 * log# CSR# Date Programmer Description x
x 0160 * ---- ---- ----- ---------- ------------------------------------ x
x 0170 * #00 26663 Jul,2011 J.Hamid New Module x
x 0180 * #01 26663 Sep,2011 D.Appelman Do not log timeout error x
x 0190 *********************************************************************** x
x 0200 * x
x 0210 DEFINE SUBROUTINE CALL-BROKER x
x 0220 *********************************** x
x 0230 CALL ‘BROKER’ CONTROL-BLOCK-ARRAY() x
x 0240 #SEND-BUFFER x
x 0250 #RECEIVE-BUFFER x
x 0260 ERROR-TEXT x
x 0270 #DIAGNOSTIC x
x 0280 PERFORM CREATE-LOG x
x 0290 END-SUBROUTINE x
x 0300 * x
x 0310 DEFINE SUBROUTINE CREATE-LOG x
x 0320 *********************************** x
x 0330 IF ERROR-CODE EQ ‘00740074’ /
#01 x
x 0340 ESCAPE ROUTINE /* #01 x
x 0350 END-IF /* #01 x
x 0360 RESET ICL x
x 0370 PERFORM TRANSLATE-FUNCTION x
x 0380 PERFORM TRANSLATE-OPTION x
x 0390 ICL.IC-LOG-DT := *DATN x
x 0400 MOVE EDITED *TIMX (EM=HHIISST) TO x
x 0410 ICL.IC-LOG-TIME x
x 0420 ICL.IC-CONVERSATION-ID := CONV-ID x
x 0430 IF #SEND-CONTROL-INFO = ‘NOTOK’ x
x 0440 ICL.IC-MSG-ERROR := #SEND-DATA x
x 0450 END-IF x
x 0460 ICL.IC-SERVER-CLASS := SERVER-CLASS x
x 0470 ICL.IC-SERVER-NAME := SERVER-NAME x
x 0480 ICL.IC-SERVICE := SERVICE x
x 0490 ICL.IC-CLIENT-USER-ID := CLIENT-USER-ID x
x 0500 ICL.IC-ENTIREX-RET-CODE := ERROR-CODE x
x 0510 ICL.IC-NATURAL-PGM := *PROGRAM x
x 0520 ICL.IC-NATURAL-ERROR := *ERROR x
x 0530 IF *ERROR GT 0 x
x 0540 ICL.IC-PGM-LINE-NUMBER := *ERROR-LINE x
x 0550 ELSE x
x 0560 ICL.IC-PGM-LINE-NUMBER := 0 x
x 0570 END-IF x
x 0580 STORE ICL x
x 0590 END TRANSACTION x
x 0600 END-SUBROUTINE x
x 0610 * x
x 0620 DEFINE SUBROUTINE TRANSLATE-FUNCTION x
x 0630 ************************************ x
x 0640 DECIDE ON FIRST VALUE OF FUNCTION x
x 0650 VALUE 1 x
x 0660 ASSIGN ICL.IC-MSG-STATUS := ‘SEND’ x
x 0670 ICL.IC-MSG-COMMAND := #SEND-CONTROL-INFO x
x 0680 VALUE 2 x
x 0690 ASSIGN ICL.IC-MSG-STATUS := ‘RECEIVE’ x
x 0700 ICL.IC-MSG-COMMAND := #RECEIVE-CONTROL-INFO x
x 0710 VALUE 6 x
x 0720 ASSIGN ICL.IC-MSG-STATUS := ‘REGISTER’ x
x 0730 VALUE 7 x
x 0740 ASSIGN ICL.IC-MSG-STATUS := ‘DEREGISTER’ x
x 0750 VALUE 9 x
x 0760 ASSIGN ICL.IC-MSG-STATUS := ‘LOGON’ x
x 0770 VALUE 10 x
x 0780 ASSIGN ICL.IC-MSG-STATUS := ‘LOGOFF’ x
x 0790 NONE x
x 0800 IGNORE x
x 0810 END-DECIDE x
x 0820 END-SUBROUTINE x
x 0830 * x
x 0840 DEFINE SUBROUTINE TRANSLATE-OPTION x
x 0850 ********************************** x
x 0860 DECIDE ON FIRST VALUE OF OPTION x
x 0870 VALUE 5 x
x 0880 ASSIGN ICL.IC-MSG-STATUS := ‘EOC’ x
x 0890 NONE x
x 0900 IGNORE x
x 0910 END-DECIDE x
x 0920 END-SUBROUTINE x
x 0930 * x
this is the program

There is an issue opened with R&D for this.

If your ACI server (it is not an RPC server) is working fine when started manually, then what is in your EXXATM.cfg - particularly the “Command” setting? I don’t see your Default.log listing showing any attempts (“CreateProcessAndExecCmd”) to actually start the requested server.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.