# Cannot run a Natural RPC server under Attach Manager

**URL:** <https://techcommunity.softwareag.com/t/cannot-run-a-natural-rpc-server-under-attach-manager/291193>\
**Category:** Forum\
**Tags:** Adabas-Natural, Adabas, Natural, EntireX, Natural-on-Linux\
**Created:** [February 7, 2024, 3:01pm UTC](https://techcommunity.softwareag.com/t/cannot-run-a-natural-rpc-server-under-attach-manager/291193 "2024-02-07T15:01:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ian.Long2\_emp](https://avatars.discourse-cdn.com/v4/letter/i/919ad9/32.png) [@Ian.Long2\_emp](https://techcommunity.softwareag.com/u/Ian.Long2_emp)\
**Post date:** [February 7, 2024, 3:01pm UTC](https://techcommunity.softwareag.com/t/cannot-run-a-natural-rpc-server-under-attach-manager/291193/1 "2024-02-07T15:01:06Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ahweih](https://avatars.discourse-cdn.com/v4/letter/a/e0b2c6/32.png) [@ahweih](https://techcommunity.softwareag.com/u/ahweih)\
**Post date:** [February 7, 2024, 3:34pm UTC](https://techcommunity.softwareag.com/t/cannot-run-a-natural-rpc-server-under-attach-manager/291193/2 "2024-02-07T15:34:04Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Douglas\_Kelly](https://sea1.discourse-cdn.com/techcommunity/user_avatar/techcommunity.softwareag.com/douglas_kelly/32/102_2.png) [@Douglas\_Kelly](https://techcommunity.softwareag.com/u/Douglas_Kelly)\
**Post date:** [February 7, 2024, 4:04pm UTC](https://techcommunity.softwareag.com/t/cannot-run-a-natural-rpc-server-under-attach-manager/291193/3 "2024-02-07T16:04:11Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/techcommunity/original/3X/c/d/cd19967bb605d28a72d77eb83a1cae22f3df2eb8.svg) [@system](https://techcommunity.softwareag.com/u/system)\
**Post date:** [August 5, 2024, 4:04pm UTC](https://techcommunity.softwareag.com/t/cannot-run-a-natural-rpc-server-under-attach-manager/291193/4 "2024-08-05T16:04:46Z")

</div>

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