CALL文

本ページには広告が含まれています。

外部のスクリプト(UWSファイル)を取り込みます。

UWSファイル名は読み込み元のファイルからの絶対パス・相対パスを指定します。

ネットワーク上のファイルを指定する場合は\\に続けてパスを記述します。例えば、\\192.168.3.23\Public\UWSC\FUNCTIONS.uwsなど。

PUBLICで宣言した変数は、呼び出し先でも使うことができます。

呼び出し先でPUBLICで宣言した変数を呼び出し元で使うこともできます。

引数は起動時パラメータを参照。

構文
CALL UWSファイル名
CALL UWSファイル名.uws( xxx, xxx, … )
引数
戻り値

使い方

カレントディレクトリのファイルを呼び出す

カレントディレクトリにあるFUNCTIONS.uwsを呼び出します。同じディレクトリであればファイル名のみで呼び出すことができます。

UWSC
CALL FUNCTIONS.uws

絶対パスで指定

呼び出すファイルの絶対パスが固定されている場合は、絶対パスで指定することができます。呼び出し元のファイルが移動してもエラーが発生することなく開くことができます。

UWSC
CALL D:\Programs\UWSC\FUNCTIONS.uws

パスにスペースがある場合はパスをダブルクォーテーションで囲んでも囲まなくても大丈夫です。

UWSC
CALL D:\Program Files\UWSC\FUNCTIONS.uws
UWSC
CALL "D:\Program Files\UWSC\FUNCTIONS.uws"

起動時パラメータを指定

UWSC
CALL FUNCTIONS.uws(1, 2)

起動時パラメータを指定する際、パスのダブルクォーテーションは不要です。

UWSC
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)のファイルを修正するだけで済みます。

全自作関数 (自作関数)を是非ご活用ください。

    • main.uws
    • FUNCTIONS.uws

以下の例は同じフォルダにあるFUNCTIONS.uwsを呼び出しています。

  • main.uws
  • FUNCTIONS.uws
UWSC
// 自作関数の呼び出し
CALL FUNCTIONS.uws

DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.Navigate("http://www.google.jp")
BusyWait(IE) // FUNCTIONS.uwsで定義されているのでBusyWaitが使える
UWSC
//////////////////////////////////////////////////
// 【引数】
//   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