外部のスクリプト(UWSファイル)を取り込みます。
UWSファイル名は読み込み元のファイルからの絶対パス・相対パスを指定します。
ネットワーク上のファイルを指定する場合は\\に続けてパスを記述します。例えば、\\192.168.3.23\Public\UWSC\FUNCTIONS.uwsなど。
PUBLICで宣言した変数は、呼び出し先でも使うことができます。
呼び出し先でPUBLICで宣言した変数を呼び出し元で使うこともできます。
引数は起動時パラメータを参照。
- 構文
- CALL UWSファイル名
CALL UWSファイル名.uws( xxx, xxx, … )
- 引数
- 戻り値
使い方
カレントディレクトリのファイルを呼び出す
カレントディレクトリにあるFUNCTIONS.uwsを呼び出します。同じディレクトリであればファイル名のみで呼び出すことができます。
CALL FUNCTIONS.uws
絶対パスで指定
呼び出すファイルの絶対パスが固定されている場合は、絶対パスで指定することができます。呼び出し元のファイルが移動してもエラーが発生することなく開くことができます。
CALL D:\Programs\UWSC\FUNCTIONS.uws
パスにスペースがある場合はパスをダブルクォーテーションで囲んでも囲まなくても大丈夫です。
CALL D:\Program Files\UWSC\FUNCTIONS.uws
CALL "D:\Program Files\UWSC\FUNCTIONS.uws"
起動時パラメータを指定
CALL FUNCTIONS.uws(1, 2)
起動時パラメータを指定する際、パスのダブルクォーテーションは不要です。
CALL D:\Program Files\UWSC\FUNCTIONS.uws(123, 456) // この書き方は大丈夫
CALL "D:\Program Files\UWSC\FUNCTIONS.uws"(123, 456) // この書き方はエラー
呼び出されたファイルからPARAM_STRでアクセスできます。第一引数はPARAM_STR[0]、第二引数はPARAM_STR[1]、…のように第n引数はPARAM_STR[n-1]に格納されます。
自作関数を別ファイルで一元管理
何度も使う自作関数はメインルーチンの下に書くのではなく、別ファイルにまとめておくとプログラムを書くたびに記述する必要がなくなり管理が楽になります。
修正をする場合も読み込むファイル(以下の例だとFUNCTIONS.uws)のファイルを修正するだけで済みます。
CALL文関数 (自作関数)を是非ご活用ください。
-
- main.uws
- FUNCTIONS.uws
以下の例は同じフォルダにあるFUNCTIONS.uwsを呼び出しています。
- main.uws
- FUNCTIONS.uws
// 自作関数の呼び出し
CALL FUNCTIONS.uws
DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.Navigate("http://www.google.jp")
BusyWait(IE) // FUNCTIONS.uwsで定義されているのでBusyWaitが使える
//////////////////////////////////////////////////
// 【引数】
// IE : IEオブジェクト
// 【戻り値】
//
//////////////////////////////////////////////////
PROCEDURE BusyWait(Var IE)
SLEEP(0.500)
DIM t = GETTIME()
TRY
REPEAT
DIM tm = GETTIME() - t
FUKIDASI("BusyWait:" + tm)
SLEEP(0.010)
IF tm >= 60 THEN BREAK
UNTIL !IE.Busy AND IE.readyState = 4
EXCEPT
IE = getIEObj(-1)
PRINT IE.document.URL + " のIEオブジェクトを取得しました。"
BusyWait(IE)
ENDTRY
FUKIDASI()
FEND
//////////////////////////////////////////////////
// 【引数】
// 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定
// 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得)
// 【戻り値】
// Internet Explorerオブジェクト
//////////////////////////////////////////////////
FUNCTION getIEObj(str, flg = FALSE)
DIM Shell = CREATEOLEOBJ("Shell.Application")
SELECT CHKNUM(str)
CASE TRUE
DIM cnt = 0
SELECT TRUE
CASE str > 0
FOR n = 0 TO Shell.Windows.Count - 1
TRY
IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN
cnt = cnt + 1
IFB str = cnt THEN
RESULT = Shell.Windows.Item(n)
EXIT
ENDIF
ENDIF
EXCEPT
ENDTRY
NEXT
CASE str < 0
FOR n = Shell.Windows.Count - 1 TO 0 STEP -1
TRY
IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN
cnt = cnt + 1
IFB ABS(str) = cnt THEN
RESULT = Shell.Windows.Item(n)
EXIT
ENDIF
ENDIF
EXCEPT
ENDTRY
NEXT
CASE str = 0
FOR n = 0 TO Shell.Windows.Count - 1
TRY
IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1
EXCEPT
ENDTRY
NEXT
RESULT = cnt
EXIT
SELEND
CASE FALSE
DIM t = GETTIME()
REPEAT
FOR n = 0 TO Shell.Windows.Count - 1
TRY
DIM targetObj = Shell.Windows.Item(n)
IFB targetObj.Name = "Internet Explorer" THEN
SELECT flg
CASE TRUE
IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN
RESULT = Shell.Windows.Item(n)
EXIT
ENDIF
CASE FALSE
IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN
RESULT = Shell.Windows.Item(n)
EXIT
ENDIF
SELEND
ENDIF
EXCEPT
ENDTRY
NEXT
UNTIL GETTIME() - t >= 5
SELEND
RESULT = ERR_VALUE
FEND