8.105 GET_PROCESS_LIST

LANSA内部データベースからプロセスとその記述のリストを取得して、呼び出し元のRDMLファンクションに可変長の作業リストで戻します。

この BIF は、8.2 開発環境のみで使用される組み込み関数です。

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

ポジショニング・プロセスの値。戻されたリストは、ディレクトリの中で、この引数で渡された値よりも大きく、かつ一番近い名前のプロセスから始まります。

1

10

 

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

L

必須

プロセス情報を含める作業リスト

リストは以下のエントリー数を越えてはいけません。
Windowsで32767項目
IBM iで9999項目

呼び出し元のRDMLファンクションは、項目の長さの合計が正確に60バイトの作業リストを提供しなければなりません。

戻されるそれぞれのリスト項目は、次のような形式にする必要があります。

開始 - 終了   説明

1 - 10   プロセス名

11 - 50   記述

51 - 60   <<将来の拡張用>>

60

60

 

 

2

A

任意

戻されたリストの最後のプロセス。通常、この値は次にこの組み込み関数を呼び出す時にポジショニング用の引数として使用されます。

1

10

 

 

3

A

任意

戻りコード

OK = プロセス詳細のリスト(満載または一部)が戻された。リストに戻された以上のプロセスは存在しない

OV = リスト(満載)が戻された。ただしリストに収まらなかったプロセスがさらに存在する。通常、スタイル・リストを表示する時に、この値を使ってページに次のプロセスがあることを示す

NR = リストは空で戻された。リストの最後のプロセスがブランクで戻される

2

2

 

 

 

この組み込み関数を使用すれば、夜間のジョブで一連のプロセスをコンパイルするプログラムを作成することができます。

FUNCTION OPTIONS(*DIRECT)
DEFINE FIELD(#STARTPRC) REFFLD(#PROCESS) DESC('Start Search with:')
DEFINE FIELD(#LASTPRC) REFFLD(#PROCESS) DESC('Last retrieved:')
DEFINE FIELD(#SPARE) REFFLD(#PROCESS)
OVERRIDE FIELD(#STD_INSTR) COLHDG('Name (Description)')
OVERRIDE FIELD(#STD_CMPAR) DESC('Return Code (OV,OK or NR)')
DEF_LIST NAME(#PRCLST) FIELDS(#PROCESS #PARTDESC #SPARE) TYPE(*WORKING) ENTRYS(14)
DEF_LIST NAME(#BRWLST) FIELDS((#STD_INSTR *NOID))

CHANGE FIELD(#LASTPRC #STD_CMPAR) TO(*BLANKS)

BEGIN_LOOP
REQUEST FIELDS(#STARTPRC #LASTPRC (#STD_CMPAR *OUT)) IDENTIFY(*DESC) BROWSELIST(#BRWLST)
IF COND('#lastprc *ne #blanks')
CHANGE FIELD(#STARTPRC) TO(#lastprc)
ENDIF
CLR_LIST NAMED(#PRCLST)
USE BUILTIN(GET_PROCESS_LIST) WITH_ARGS(#STARTPRC) TO_GET(#PRCLST #LASTPRC #STD_CMPAR)
CASE OF_FIELD(#STD_CMPAR)
WHEN VALUE_IS('= OV')
CLR_LIST NAMED(#BRWLST)
SELECTLIST NAMED(#PRCLST)
USE BUILTIN(BCONCAT) WITH_ARGS(#PROCESS '(' #PARTDESC ')') TO_GET(#STD_INSTR)
ADD_ENTRY TO_LIST(#BRWLST)
ENDSELECT
WHEN VALUE_IS('= OK')
MESSAGE MSGTXT('No more matching process names')
CHANGE FIELD(#LASTPRC) TO(#BLANKS)
WHEN VALUE_IS('= ER')
MESSAGE MSGTXT('No process names matching search')
ENDCASE
END_LOOP