OV_SYSTEM_SERVICE

LANSA

OV_SYSTEM_SERVICE


Þ 注:組み込み関数の規則

基本的なシステム・サービスを実行します。

注:この組み込み関数は、アプリケーションへの影響を考慮した上でユーザーの責任において使用してください。明示的か暗黙的かを問わず、いかなる保証もありません。「免責事項」全文を参照してください。

ファンクション番号:

991

必要なDLL:

U_BIF991.DLL

 

各製品の対応

Visual LANSA for Windows

使用可

Visual LANSA for Linux

使用不可

LANSA/AD

使用不可

 

引数

番号

タイプ

必須/任意

説明

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

必要なシステム・サービスのタイプ

以下のいずれかの値として渡します。

START  別の(LANSA以外の)アプリケーションを実行します。

START_LANSA  別のLANSAアプリケーションの実行を開始します。

START_UNIQUE  別の(LANSA以外の)アプリケーションが開始されていない場合に実行します。

1

50

 

 

2

A

任意

要求サービス引数1

引数1の値
      この引数で渡す値:

START  開始するアプリケーション(.EXE)の名前

完全修飾名(すなわち、パス情報付き)を指定することも、.EXE名のみを指定することもできます。名前に.EXE接尾辞を付けない場合、.EXE接尾辞が自動的に追加されます。

START_LANSA  独立した別のシステム・プロセス/ジョブとして開始するLANSAプロセス、プロセスとファンクション、またはフォームの名前

この値は、必ずPROC=PPPPPPPPPPまたは以下の形式で渡します。

PROC=PPPPPPPPPP FUNC=FFFFFFFまたはFORM=OOOOOOOOOO

(ここで、PPPPPPPPPPはプロセス名、FFFFFFFはファンクション名、OOOOOOOOOはフォーム名)

いかなる場合も、この引数にX_RUNパラメータ以外のものを

含めないでください(例:PART=PPP、DBID=XXXX)。

START_UNIQUE  開始されていない場合に開始するアプリケーション(EXE)の名前。このサービスは、MS Windows環境でのみ使用できます。

完全修飾名(すなわち、パス情報付き)を使用しないでください。必ず.EXE名のみを使用してください。名前に.EXE接尾辞を付けない場合、.EXE接尾辞が自動的に追加されます。

注:引数1がSTARTまたはSTART_UNIQUE、引数2がLCOADM32またはLCOADM32.EXE (完全修飾パスなし)の場合、LANSA\Connect内でLCOADM32.EXEが検索されます。

1

256

 

 

3

A

任意

要求サービス引数2

引数1の値
      この引数で渡す値:

START  開始するアプリケーションに渡すパラメータ

LANSA  この引数は不要。指定した値はすべて無視される

START_UNIQUE  開始する必要がある場合にアプリケーションに渡すパラメータ

1

256

 

 

 

戻り値

番号

タイプ

必須/任意

説明

最小長

最大長

最小小数桁数

最大小数桁数

1

A

任意

基本戻りコード
OK = 完了した(正常)
ER = エラーが発生した

2

2

 

 

2

N

任意

拡張エラー・コード
これは、(使用可能な場合は)エラー処理またはエラー・レポートに役立つオペレーティング・システムのエラー・コードです。

 

 

 

 

3

リスト

任意

以下の値として返されます。
OK = 正常に完了した
ER = エラーが発生した
特定の引数1の値に対してのみ以下のように返されます。

START  返されない

START_LANSA  返されない

START_UNIQUE  返されない

 

 

 

 

 

以下のRDMLファンクションの例(L4Wの自由形式のファンクション・エディタにコピー/貼り付け可能)は、プログラム(EXE)名とそのプログラムに渡すパラメータを指定するよう要求します。その後、指定されたプログラムの実行開始が試行されます。

FUNCTION OPTIONS(*DIRECT);
DEFINE FIELD(#OV_PGM) TYPE(*CHAR) LENGTH(50) LABEL('Program');
DEFINE FIELD(#OV_PARMS) TYPE(*CHAR) LENGTH(50) LABEL('Parameters') INPUT_ATR(LC);
DEFINE FIELD(#OV_RETC) TYPE(*CHAR) LENGTH(2) LABEL('Return Code');
DEFINE FIELD(#OV_ERRN) TYPE(*DEC) LENGTH(7) DECIMALS(0) LABEL('Error Code');
**********;
BEGIN_LOOP;
REQUEST FIELDS(#OV_PGM #OV_PARMS (#OV_RETC *OUT) (#OV_ERRN *OUT));
USE BUILTIN(OV_SYSTEM_SERVICE) WITH_ARGS(START #OV_PGM #OV_PARMS) TO_GET(#OV_RETC #OV_ERRN);
IF COND('#OV_RETC = OK');
MESSAGE MSGTXT('Program started');
ELSE;
MESSAGE MSGTXT('Error detected when attempting to start program');
ENDIF;
END_LOOP;

 

以下のRDMLファンクションの例は、最大100行のテキストを指定するよう要求します。指定された行はファイルに転送され、作成されたファイルに対してEPM (OS/2)またはノートパッド(Windows)ソース行エディターが開始されます。

FUNCTION OPTIONS(*DIRECT);
DEFINE FIELD(#OV_TEMP) TYPE(*CHAR) LENGTH(20) LABEL('Temp File Name') DEFAULT('C:\TEMP.TXT');
DEFINE FIELD(#OV_EDITOR) TYPE(*CHAR) LENGTH(20) LABEL('Editor Name');
IF COND('*CPUTYPE = OS2');
CHANGE FIELD(#OV_EDITOR) TO(EPM);
ELSE;
CHANGE FIELD(#OV_EDITOR) TO(NOTEPAD);
ENDIF;
DEFINE FIELD(#OV_RETC) TYPE(*CHAR) LENGTH(2) LABEL('Return Code');
DEFINE FIELD(#OV_TEXT) TYPE(*CHAR) LENGTH(70) COLHDG('Text Details');
DEF_LIST NAME(#OV_LISTD) FIELDS(#OV_TEXT);
DEF_LIST NAME(#OV_LISTW) FIELDS(#OV_TEXT) TYPE(*WORKING) ENTRYS(100);
**********;
INZ_LIST NAMED(#OV_LISTD) NUM_ENTRYS(100) WITH_MODE(*CHANGE);
MESSAGE MSGTXT('Type in lines of text to be edited');
REQUEST BROWSELIST(#OV_LISTD);
SELECTLIST NAMED(#OV_LISTD) GET_ENTRYS(*NOTNULL);
ADD_ENTRY TO_LIST(#OV_LISTW);
ENDSELECT;
USE BUILTIN(TRANSFORM_LIST) WITH_ARGS(#OV_LISTW #OV_TEMP C B Y) TO_GET(#OV_RETC);
USE BUILTIN(OV_SYSTEM_SERVICE) WITH_ARGS(START #OV_EDITOR #OV_TEMP);

 

以下のRDMLファンクションの例は、プログラム(.EXE)名とそのプログラムに渡すパラメータを指定するよう要求します。その後、指定されたプログラムの実行開始が試行されます。アプリケーションは、STARTまたはSTART_UNIQUEオプションを使用して開始できます。これにより、すでにアクティブになっているプログラムを開始するときに、これらのオプションの違いを確認できます。

FUNCTION OPTIONS(*DIRECT);
DEFINE FIELD(#OV_PGM) TYPE(*CHAR) LENGTH(50) LABEL('Program') DEFAULT('NOTEPAD.EXE');
DEFINE FIELD(#OV_PARMS) TYPE(*CHAR) LENGTH(50) LABEL('Parameters') INPUT_ATR(LC);
DEFINE FIELD(#OV_RETC) TYPE(*CHAR) LENGTH(2) LABEL('Return Code');
DEFINE FIELD(#OV_ERRN) TYPE(*DEC) LENGTH(7) DECIMALS(0) LABEL('Error Code');
DEFINE FIELD(#OV_REQUST) TYPE(*CHAR) LENGTH(20) LABEL('Start Type') DEFAULT(START_UNIQUE);
**********;
BEGIN_LOOP;
REQUEST FIELDS(#OV_REQUST #OV_PGM #OV_PARMS (#OV_RETC *OUT) (#OV_ERRN *OUT));
BEGINCHECK;
VALUECHECK FIELD(#OV_REQUST) WITH_LIST(START START_UNIQUE) MSGTXT('Request value must be START or START_UNIQUE');
ENDCHECK;
USE BUILTIN(OV_SYSTEM_SERVICE) WITH_ARGS(#OV_REQUST #OV_PGM #OV_PARMS) TO_GET(#OV_RETC #OV_ERRN);
IF COND('#OV_RETC = OK');
MESSAGE MSGTXT('Program started or it is already started');
ELSE;
MESSAGE MSGTXT('Error detected when attempting to start program');
ENDIF;
END_LOOP;