Thanks David.  This doesn't work, however.  I run a program in DesignBais
using UniObjects.  In this program I execute a phantom.  In the phantom
program I have to initialize some variables.  This code is in an include
every program uses.  So, in the include I test if the running program is a
phantom and if it is then I initialize a few critical common variables.

Port# 4 is the initial program while port# 6 is the phantom.  Here's what I
get from the various variables.

2 Dev (0)-> AE _PH_ *

3 record(s) selected.

< 1 > Top of "designbais35286_3872" in "_PH_", 8 lines, 222 characters.
*--: p
001: @USER.TYPE---: 1
002: @TTY---------: Console
003: PORT.NO------: 6
004: SYSTEM(48)---: _PH_\designbais35286_3872
005: ...Entry DEV_DESIGNBAIS_6_1487035287.txt
006: ...Entry DEV_DESIGNBAIS_6_1487035288.txt
008: PHANTOM process 3872 has completed.
Bottom.
*--: ex
Quit "designbais35286_3872" in file "_PH_" unchanged.
< 2 > Top of "O_designbais" in "_PH_", 5 lines, 136 characters.
*--: p
001: E:\DataTrust\Dev\_PH_\O_designbais established
002: @USER.TYPE---: 1
003: @TTY---------: udcs
004: PORT.NO------: 4
005: SYSTEM(48)---: _PH_\designbais35286
Bottom.
*--: ex
Quit "O_designbais" in file "_PH_" unchanged.
< 3 > Top of "O_designbais.1" in "_PH_", 22 lines, 557 characters.
*--: p
001:
002: --- 09/16/2008  09:48:06 ---------------
003: E:\DataTrust\Dev\_PH_\O_designbais established
004: @USER.TYPE---: 1
005: @TTY---------: udcs
006: PORT.NO------: 4
007: SYSTEM(48)---:
008: --- 09/16/2008  09:48:08 ---------------
009: E:\DataTrust\Dev\_PH_\O_designbais established
010: @USER.TYPE---: 1
011: @TTY---------: udcs
012: PORT.NO------: 4
013: SYSTEM(48)---: _PH_\designbais35286
014: @USER.TYPE---: 1
015: @TTY---------: udcs
016: PORT.NO------: 4
017: SYSTEM(48)---: _PH_\designbais35286
018: @USER.TYPE---: 1
019: @TTY---------: udcs
020: PORT.NO------: 4
021: SYSTEM(48)---: _PH_\designbais35286
022: --- 09/16/2008  09:48:11 ---------------
Bottom.
*--:

As you can see, both the phantom on port# 6 and the original program on
port# 4 has data returned by SYSTEM(48).  I think DesignBais turns COMO ON
when it runs everything in order to log program activity, which greatly
assists debugging, then turns it off when complete.  So this isn't a
solution.

It would be nice if UD supplied some kind of system variable that could be
relied upon since as we convert our application to DesignBais, we find
ourselves doing more and more processing as phantoms.

Presently, our solution is to do the following:

*
** Determine if the running program is a phantom.
ListOfUsers = LISTUSER()
IsPhantom   = 0
uHigh       = DCOUNT(ListOfUsers, @AM)
FOR UserCnt = 1 TO uHigh
   UserLine = ListOfUsers<UserCnt>
   UserPort = UserLine<1,1>
   IF UserPort = PORT.NO THEN
      IsPhantom = (OCONV(UserLine<1,5>, 'MCU') = 'PHANTOM')
      EXIT
   END
NEXT UserCnt

...which seems to work everywhere I've tested it.

Thanks again,

Bill

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of David A. Green
Sent: Tuesday, September 16, 2008 7:18 AM
To: [email protected]
Subject: RE: [U2] [UD] Determining if program running as a phantom

Try using SYSTEM(48). A Phantom process will have a COMO file.

Thanks,
David A. Green
www.dagconsulting.com
(480) 813-1725


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Bill Haskett
Sent: Monday, September 15, 2008 7:54 PM
To: [email protected]
Subject: [U2] [UD] Determining if program running as a phantom

I'm having a bit of a problem figuring out how to tell, within a program, if
it is running as a phantom.  It was my impression that @USER.TYPE would be
set to '1' if the program was running as a phantom.  However, if I run a
program from a UniObjects connection @USER.TYPE is always set to '1'.  It
doesnt matter I test this within the main program that EXECUTEs a phantom
or within the phantomed program.   If I test @TTY then it returns 'udcs'
from within the main program or Console from within the phantomed program
(I hate to think this is how I determine if a program is running as a
phantom ).


If I execute the LISTUSER() function then the line properly shows the user
type as a 'phantom'.


The 'phantomed' process.

*--: p
001: @USER.TYPE-: 1
002: @TTY-------: Console
003: PORT.NO----: 6
004: LISTUSER()-: 12251621976152myuser2phantom2pts/12Console210:33:322Sep 15
2008
005: 2263221976152myuser2udt2pts/22192.168.1.51216:41:202Sep 15 2008
006: 32383621976152myuser2udt2pts/32192.168.1.51215:11:522Sep 15 2008
007: 42358421976402designbai2udt2pts/42udcs219:30:062Sep 15 2008
008: 52337621976152myuser2udt2pts/52192.168.1.51215:31:312Sep 15 2008
009: 62238821976402designbai2phantom2pts/62Console219:30:532Sep 15 2008
010: ...Entry DEV_DESIGNBAIS_6_1486970254.txt
011: ...Entry DEV_DESIGNBAIS_6_1486970255.txt
013: PHANTOM process 2388 has completed.
Bottom.

The process executing the above phantomed job
*--: p
001: E:\DataTrust\Dev\_PH_\O_designbais established
002: @USER.TYPE-: 1
003: @TTY-------: udcs
004: PORT.NO----: 4
005: LISTUSER()-: 12251621976152myuser2phantom2pts/12Console210:33:322Sep 15
2008
006: 2263221976152myuser2udt2pts/22192.168.1.51216:41:202Sep 15 2008
007: 32383621976152myuser2udt2pts/32192.168.1.51215:11:522Sep 15 2008
008: 42358421976402designbai2udt2pts/42udcs219:30:062Sep 15 2008
009: 52337621976152myuser2udt2pts/52192.168.1.51215:31:312Sep 15 2008

I've resorted to parsing the results of LISTUSER() to get what appears to be
the correct information.  Does anyone know of an easier alternative.

Thanks,

Bill Haskett
Advantos Systems, Inc.
4370 La Jolla Village Drive, Suite 400
San Diego, CA  92122
(  760-944-5570 x3000 (CA)
(  360-923-4838 (WA)
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to