POS

構文
POS( 探す文字, 探される文字列, [n個目] )
引数
探す文字
探したい文字列
探される文字列
探される文字列
n個目
nを指定するとn個目の文字位置を返す(マイナス値で指定すると後ろからサーチ)
戻値

見つかった位置 (1から)

(見つからなければゼロを返す)

(大文字,小文字の区別はしません)

※ANSI(バイト)処理の場合は POSB

文字列が存在するかを調べる

IF POS(探す文字列, 探される文字列) <> 0 THEN
	存在するときの処理
ELSE
	存在しないときの処理
ENDIF

プログラム実行例

無線LANのインターフェイス情報を取得

HASHTBL LAN

str = SPLIT(DOSCMD("netsh wlan show interface"), "<#CR>")

FOR n = 0 TO UBound(str)
	IFB POS(":", str[n]) THEN
		arr = SPLIT(str[n], ":")
		LAN[TRIM(arr[0])] = TRIM(arr[1])
	ENDIF
NEXT

DIM items[] = "名前", "説明", "GUID", "物理アドレス", "状態", + _
				"SSID", "BSSID", "ネットワークの種類", "無線の種類", "認証", + _
				"暗号", "接続モード", "チャネル", "受信速度 (Mbps)", "送信速度 (Mbps)", + _
				"シグナル", "プロファイル", "ホストされたネットワークの状態"

FOR item IN items
	PRINT item + ":" + LAN[item]
NEXT

//////////////////////////////////////////////////
// 【引数】
//   配列 : 上限値を求める配列 
// 【戻値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(array[])
	RESULT = RESIZE(array)
FEND
結果
名前:ワイヤレス ネットワーク接続
説明:Intel(R) WiFi Link 1000 BGN
GUID:***
物理アドレス:74
状態:接続されました
SSID:***
BSSID:18
ネットワークの種類:インフラストラクチャ
無線の種類:802.11n
認証:WPA2-パーソナル
暗号:CCMP
接続モード:自動接続
チャネル:10
受信速度 (Mbps):72
送信速度 (Mbps):72
シグナル:80%
プロファイル:***
ホストされたネットワークの状態:利用不可

ユーザー名を取得

HASHTBL ENV

DIM str = SPLIT(DOSCMD("SET"), "<#CR>")

FOR n = 0 TO UBound(str)
	IFB POS("=", str[n]) THEN
		arr = SPLIT(str[n], "=")
		ENV[TRIM(arr[0])] = TRIM(arr[1])
	ENDIF
NEXT

PRINT ENV["USERNAME"]

//////////////////////////////////////////////////
// 【引数】
//   配列 : 上限値を求める配列 
// 【戻値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(array[])
	RESULT = RESIZE(array)
FEND
解説
  1. 1行目
    HASHTBL ENV
    
    連想配列ENVを宣言します。環境を表すEnvironmentの略です。
  2. 3行目
    DIM str = SPLIT(DOSCMD("SET"), "<#CR>")
    
    コマンドプロンプトでSETコマンドを実行し環境変数を取得します。その結果を改行毎にstr配列に格納します。str[0]=1行目、str[1]=2行目、str[n]=n+1行目、…という風に格納されます。
  3. 5行目
    FOR n = 0 TO UBound(str)
    
    変数nが0からstr配列の要素数分処理を繰り返します。str配列の要素数はSETコマンドの出力結果の行数-1となります。
  4. 6-9行目
    	IFB POS("=", str[n]) THEN
    		arr = SPLIT(str[n], "=")
    		ENV[TRIM(arr[0])] = TRIM(arr[1])
    	ENDIF
    
    もしstr[n]に"="が含まれていたら、"="を区切り文字列としてarr配列に格納します。arr[0]にstr[n]の"="より前の文字列、arr[1]にstr[n]の"="より後の文字列が格納されます。その後、arr[0]をキー、arr[1]を値として連想配列ENVに格納します。簡単に説明すると、str[n]の"="より前の文字列をキー、"="より後を値として連想配列を作成しています。
  5. 12行目
    PRINT ENV["USERNAME"]
    ENV["USERNAME"]の値を出力します。

デフォルトプリンターを取得

CONST ssfPRINTERS = 4

DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace(ssfPRINTERS)
DIM FolderItems = Folder.Items

HASHTBL iColumn

FOR n = 0 TO 350
	iColumn[Folder.GetDetailsOf(EMPTYPARAM, n)] = n
NEXT

FOR n = 0 TO FolderItems.Count - 1
	DIM FolderItem = FolderItems.Item(n)
	DIM PrinterName = Folder.GetDetailsOf(FolderItem, iColumn["名前"])
	FOR i = 0 TO FolderItem.Verbs.Count - 1
		IF POS("通常使うプリンターに設定", FolderItem.Verbs.Item(i).Name) <> 0 THEN CONTINUE 2
	NEXT
	PRINT PrinterName
	BREAK
NEXT
結果
Brother DCP-J963N Printer