あなたの考えは正しいと思います。(TACL では) プロセスの作成時間を取得する適切な方法がないように思われるため、ステータス コマンドの出力を処理する必要があります。これは OUTV パラメータとして変数を取らないので、ファイルを使用して、TACL ではなくそこで処理を行うことができます。
両方のタイムスタンプを #CONTIME が提供するスペース区切りのリストに変換し、次にそれらをユリウスのタイムスタンプに変換しました (以下を参照)。
これはおそらく、PROCESS_GETINFOLIST_ を呼び出して作成タイムスタンプを直接取得できる (たとえば) C で行う方がはるかに簡単です。OSS シェルでのタイムスタンプの処理が改善されているため、OSS シェルで実行する方が簡単かもしれません。
?TACL ROUTINE
#FRAME
#PUSH tempfile
#SET tempfile XXTEMPXX
[#DEF MakeTimeList ROUTINE |BODY|
#FRAME
#PUSH month day year time hour min sec centi milli
SINK [#ARGUMENT/VALUE month/WORD]
SINK [#ARGUMENT/VALUE day/WORD]
SINK [#ARGUMENT COMMA]
SINK [#ARGUMENT/VALUE year/NUMBER]
SINK [#ARGUMENT/VALUE hour/NUMBER]
SINK [#ARGUMENT/VALUE min/NUMBER]
SINK [#ARGUMENT/VALUE sec/NUMBER]
SINK [#ARGUMENT/VALUE centi/NUMBER]
[#CASE [month]
|January| #SET month 1
|February| #SET month 2
|March| #SET month 3
|April| #SET month 4
|May| #SET month 5
|June| #SET month 6
|July| #SET month 7
|August| #SET month 8
|September| #SET month 9
|October| #SET month 10
|November| #SET month 11
|December| #SET month 12
]
#SET milli [#CHARGET centi 4 TO 6]
#SET centi [#CHARGET centi 1 TO 3]
#RESULT [year] [month] [day] [hour] [min] [sec] [centi] [milli]
#UNFRAME
]
#PUSH start now lines line pos process
SINK [#ARGUMENT/VALUE process/ PROCESSNAME]
[#IF NOT [#PROCESSEXISTS [process]] |THEN|
#OUTPUT [process] does not exist
]
status/out [tempfile]/[process],detail
edit [tempfile];cqab/:/ /a;cqab/./ /a;exit
filetovar [tempfile] lines
SINK [#PURGE [tempfile]]
#SET pos [#LINEFIND lines 1 Process Creation Time]
[#IF pos > 1 |THEN|
#SET line [#LINEGET lines [pos]]
#SET start [#CHARGET line 23 TO [#CHARCOUNT line]]
#SET start [MakeTimeList [start]]
#SETMANY start, [#COMPUTETIMESTAMP [start] ]
#SETMANY now, [#COMPUTETIMESTAMP [#CONTIME [#TIMESTAMP]] 0]
#OUTPUT [#COMPUTE ([now] - [start])/1000000] seconds have elapsed
]
#UNFRAME