CALL

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

絶対パス・相対パスどちらでも呼び出すことができます。

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

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

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

使い方

自作関数を別ファイルで一元管理

何度も使う自作関数はメインルーチンの下に書くのではなく、別ファイルにまとめておくとプログラムを書くたびに記述する必要がなくなり管理が楽になります。

修正をする場合も読み込むファイル(以下の例だとFUNCTIONS.uws)のファイルを修正するだけで済みます。

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

    • 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

処理ごとにファイルを分ける