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)の名前 START_LANSA 独立した別のシステム・プロセス/ジョブとして開始するLANSAプロセス、プロセスとファンクション、またはフォームの名前 PROC=PPPPPPPPPP いかなる場合も、この引数に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 開始するアプリケーションに渡すパラメータ START_LANSA この引数は不要。指定した値はすべて無視される START_UNIQUE 開始する必要がある場合にアプリケーションに渡すパラメータ | 1 | 256 |
戻り値
番号 | タイプ | 必須/任意 | 説明 | 最小長 | 最大長 | 最小小数桁数 | 最大小数桁数 |
|---|---|---|---|---|---|---|---|
1 | A | 任意 | 基本戻りコード OK = 完了した(正常) | 2 | 2 | ||
2 | N | 任意 | 拡張エラー・コード これは、(使用可能な場合は)エラー処理またはエラー・レポートに役立つオペレーティング・システムのエラー・コードです。 | ||||
3 | リスト | 任意 | 以下の値として返されます。 OK = 正常に完了した 特定の引数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