eDocArrangementHelp

共通マクロ書式

日付書式
日付取得

{%DATE(?????)[XYZ]}

?????の部分には、日付を表す日付記号を記述します。日付記号は下記を参照してください。

日付記号

内容

yy

西暦の年を下 2 桁の数値で返します (00 ~ 99)。

yyyy

西暦の年を 4 桁の数値で返します (100 ~ 9999)。

m

月を表す数値を返します。1 桁の場合、先頭に 0 が付きません (1 ~ 12)。ただし、h や hhの直後に m を指定した場合、月ではなく分と解釈されます。

mm

月を表す数値を返します。1 桁の場合、先頭に 0 が付きます (01 ~ 12)。ただし、h や hhの直後に mm を指定した場合、月ではなく分と解釈されます。

d

日付を返します。1 桁の場合、先頭に 0 が付きません (1 ~ 31)。

dd

日付を返します。1 桁の場合、先頭に 0 が付きます (01 ~ 31)。

ddd

曜日を英語 (省略形) で返します (Sun ~ Sat)。

aaa

曜日を日本語 (省略形) で返します (日~土)。

aaaa

曜日を日本語で返します (日曜日~土曜日)。

g

年号の頭文字を返します (M、T、S、H、R)。

gg

年号の先頭の 1 文字を漢字で返します (明、大、昭、平、令)。

ggg

年号を返します (明治、大正、昭和、平成、令和)。

e

年号に基づく和暦の年を返します。1 桁の場合、先頭に 0 が付きません。

ee

年号に基づく和暦の年を 2 桁の数値を使って返します。1 桁の場合、先頭に 0 が付きます。

h

時間を返します。1 桁の場合、先頭に 0 が付きません (0 ~ 23)。

hh

時間を返します。1 桁の場合、先頭に 0 が付きます (00 ~ 23)。

n

分を返します。1 桁の場合、先頭に 0 が付きません (0 ~ 59)。

nn

分を返します。1 桁の場合、先頭に 0 が付きます (00 ~ 59)。

s

秒を返します。1 桁の場合、先頭に 0 が付きません (0 ~ 59)。

ss

秒を返します。1 桁の場合、先頭に 0 が付きます (00 ~ 59)。

/

日付の区切り記号

[]の部分は省略可能です。記述すると日付の加減算が行えます。

Xの部分には、「-」又は「+」が記述できます。日付を減算する場合は「-」、加算する場合は「+」を記述します。

Yの部分には、数字を記述できます。Zで示される単位についての値になります。

Zの部分には、単位を表す記号を記述できます。

年号「令和」は、WindowsUpdateで対応されている場合のみ使用できます。

単位記号

内容

q

四半期

m

月

y

年間通算日

d

日

w

週日

ww

週

h

時

n

分

s

秒

以下、マクロを実行した日時が 2019年5月1日 12時5分の場合

例1

「2019/05/01」を取得する場合

{%DATE(yyyy/mm/dd)}

例2

「2019/5/1」を取得する場合

{%DATE(yyyy/m/d)}

例3

「令和1年5月1日」を取得する場合

{%DATE(ggge年m月d日)}

例4

「190501」を取得する場合

{%DATE(yymmdd)}

例5

「2019/05/01 12:05」を取得する場合

{%DATE(yyyy/mm/dd hh:nn)}

例6

翌日の日付を取得する場合

{%DATE(yyyy/mm/dd)+1d}

例7

10時間前の日時を取得する場合

{%DATE(yyyy/mm/dd hh:nn)-10h}
日時加減算

{%DATE(日時,日付書式)[XYZ]}

日時には、日付(yyyy/mm/dd)又は、日時(yyyy/mm/dd hh:nn:ss)の形式で日付又は日時を指定します。日付を指定した場合、時刻は00:00:00が指定されたとみなします。

その他の書式は日付取得と同じです。日付取得では、システム日付から取得した日時しか処理できませんが、日付加減算では、1番目の引数に任意の日時を指定できます。

例1

「2012/12/19」の翌日を取得する場合

{%DATE_ADD(2012/12/19,yyyy/mm/dd)+1d}

例2

「2012/12/19 23:50:00」の2時間前を取得する場合

{%DATE_ADD(2012/12/19 23:50:00,yyyy/mm/dd)-2h}

例3

「2012/12/31 23:00:00」の2時間後をyyyy/mm/dd hh:nn:ssの形式で取得する場合

{%DATE_ADD(2012/12/31 23:00:00,yyyy/mm/dd hh:nn:ss)+2h}
和暦取得

{%CALENDAR_JP(年月日,結果格納先ユーザーデータ名[,和暦定義ファイル])}

和暦はDATEマクロでも取得できますが、元号が変わった場合の対応を考慮して、定義ファイル(CSV形式)から情報を取得して、変換する処理を提供します。定義ファイルに元号と開始年月日を記述することで将来の元号にも対応できます。

年月日には、和暦に変換したい日付(yyyymmdd)を指定します。

結果格納先ユーザーデータ名には結果を格納するユーザーデータの名前を指定します。和暦の情報は以下のキーで取得できます。

キー

内容

元号

指定した年月日の元号(令和,平成,昭和,大正,明治)

元号記号

指定した年月日の元号記号(R,H,S,T,M)

年

指定した年月日の和暦の年

月

指定した年月日の和暦の月

日

指定した年月日の和暦の日

本マクロは和暦定義ファイルを参照して処理しています。和暦定義ファイルは省略可能です。省略した場合は、eDocArrangementのインストールフォルダにある「Wareki.ini」を参照します。指定した場合は指定したファイルを読み込みます。和暦定義ファイルは以下のフォーマットでデータを作成してください。(「Wareki.ini」も参考にしてください。)

項目1

項目2

項目3

開始年月日

元号

元号記号

和暦定義ファイルはカンマ区切りとします。ヘッダ行は記述せず1行目から定義してください。また、日付は降順(新しい日付が上)に定義してください。

例1

「2016/03/03」の和暦(元号 + 年)を取得する場合

{%CALENDAR_JP(20160303,和暦)}
{%GET_USER_DATA(和暦,元号)}{%GET_USER_DATA(和暦,年)}

例2

今日の日付の和暦(元号記号 + 年 + 月 + 日)を取得する場合

{%CALENDAR_JP({%DATE(yyyymmdd)},和暦)}
{%GET_USER_DATA(和暦,元号記号)}{%GET_USER_DATA(和暦,年)}{%GET_USER_DATA(和暦,月)}{%GET_USER_DATA(和暦,日)}
営業日取得

{%BUSINESS_DATE(日付,前営業日(BEFORE)、翌営業日(AFTER)または日数指定,祝祭日ユーザーデータ名,休日ユーザーデータ名)}

本マクロは、2営業日後や、1営業日前などの、指定した日付からの営業日日数を計算した日付を取得する機能(機能1)と、指定した休日日付の翌営業日、または前営業日を取得する機能(機能2)を利用できます。

日付には、yyyy/mm/dd、yyyy/m/dなどの形式で日付を指定します。

2番目の引数について、

機能1では、未来日付の営業日日数を指定する場合は、正の整数を、過去日付の営業日日数を指定する場合は、負の整数を指定します。(例 2営業日後は2、1営業日前は-1)

日付に祝祭日又は休日を指定し、0を指定した場合は、AFTER(翌営業日)を指定した場合と同じになります。

機能2では、翌営業日を指定する場合はAFTERを、前営業日を指定する場合はBEFOREを指定します。どちらを指定した場合でも、指定した日付が営業日の場合は、指定した日付をそのまま返却します。

祝祭日ユーザーデータ名には、CSVファイル読み込みマクロ(CSV_FILE_READ)で読み取ったCSVデータの格納ユーザーデータ名を指定します。

祝祭日CSVファイルは、キーに祝祭日の日付が格納されていれば、他はどんなデータでもかまいません。日付の形式は、yyyy/mm/dd又は、yyyy/m/dに対応しています。

おすすめは、内政府が公開している祝祭日CSVデータです。以下のページからダウンロードできます

内政府 国民の休日について

https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html

このページの「平成31年(2019年)及び令和2年(2020年)の「国民の祝日」」というタイトルの最後にダウンロードのリンクがあります。(タイトル、CSVのリンクは変わる可能性があります。)

内政府 国民の休日CSVファイルのダウンロード

https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv

このCSVファイルは以下のようになっています。

国民の祝日・休日月日,国民の祝日・休日名称
1955/1/1,元日
1955/1/15,成人の日
1955/3/21,春分の日
・
・
2020/9/22,秋分の日
2020/11/3,文化の日
2020/11/23,勤労感謝の日

この場合、1列目が日付になっていますので、CSVファイル読み込みマクロ(CSV_FILE_READ)で読み込む場合は、以下のようになります。

#祝祭日CSV読み込み
{%CSV_FILE_READ({%GET_G(TopFolder)}\90_System\10_マスタ\holiday.csv,祝祭日,1)}

休日ユーザーデータ名は、休日の曜日をキーにセットしたユーザーデータを指定します。以下のような記述になります。

#休日指定
{%SET_U(休日,土,)}
{%SET_U(休日,日,)}

以下、カレンダーが以下のような場合の例となります。

02/07(金)
02/08(土)
02/09(日)
02/10(月)
02/11(火) 建国記念の日
02/12(水)

例1

営業日取得の例

#祝祭日CSV読み込み
{%CSV_FILE_READ({%GET_G(TopFolder)}\90_System\10_マスタ\holiday.csv,祝祭日,1)}

#休日指定
{%SET_U(休日,土,)}
{%SET_U(休日,日,)}

#翌営業日取得
{%LOG_OUT({%BUSINESS_DATE(2020/02/08,AFTER,祝祭日,休日)})} 

結果
2020/02/10

#前営業日取得
{%LOG_OUT({%BUSINESS_DATE(2020/02/08,BEFORE,祝祭日,休日)})} 

結果
2020/02/07

#営業日を指定した場合は、指定した営業日がそのまま返却される
{%LOG_OUT({%BUSINESS_DATE(2020/02/07,AFTER,祝祭日,休日)})} 

結果
2020/02/07

#2営業日後の日付を取得
{%LOG_OUT({%BUSINESS_DATE(2020/02/08,2,祝祭日,休日)})}

結果
2020/02/12

#2営業日前の日付を取得
{%LOG_OUT({%BUSINESS_DATE(2020/02/12,-2,祝祭日,休日)})}

結果
2020/02/10

#休みの日で0営業日後を指定した場合はAFTERと同じ結果になる
{%LOG_OUT({%BUSINESS_DATE(2020/02/11,0,祝祭日,休日)})}

結果
2020/02/12
ファイル名書式
ファイル名取得

{%FILE_NAME}

処理中のファイル名を返却します。

例1

処理中のファイル名を表示する。(D:\Temp\Test.xdwの場合)

{%MSGBOX({%FILE_NAME})}

表示される内容「Test.xdw」
ベースファイル名取得

{%BASE_FILE_NAME}

処理中のファイル名(拡張子を除いた名前)を返却します。

例1

処理中のファイル名(拡張子を除いた名前)を表示する。(D:\Temp\Test.xdwの場合)

{%MSGBOX({%BASE_FILE_NAME})}

表示される内容「Test」
フォルダパス取得

{%FOLDER_PATH}

処理中のファイルのフォルダパスを返却します。最後に\がつきます。

例1

処理中のファイルのフォルダパスを表示する。(D:\Temp\Test.xdwの場合)

{%MSGBOX({%FOLDER_PATH})}

表示される内容「D:\Temp\」
フォルダ名取得

{%FOLDER_NAME}

処理中のファイルが格納されているフォルダ名を返却します。ドライブの直下にあるファイルを対象とした場合はドライブ名 + ":" が返却されます。(「C:\Test.xdw」の場合は「C:」)

例1

処理中のファイルのフォルダ名を表示する。(D:\Temp\Test.xdwの場合)

{%MSGBOX({%FOLDER_NAME})}

表示される内容「Temp」
フルパスファイル名取得

{%FILE_FULL_PATH}

処理中のフルパスファイル名を返却します。

例1

処理中のフルパスファイル名を表示する。(D:\Temp\Test.xdwの場合)

{%MSGBOX({%FILE_FULL_PATH})}

表示される内容「D:\Temp\Test.xdw」
ファイル番号取得

{%FILE_NO}

処理中のファイル番号を返却します。

総ファイル数取得

{%TOTAL_FILE_COUNT}

処理中のファイルの合計数を返却します。

ページ番号取得

{%PAGE_NO}

処理中のページ番号を返却します。(マクロ実行で、ページ単位の処理にした場合に使用できます。)

設定名取得

{%SETTING_NAME}

処理中の設定名を返却します。

処理名取得

{%PROC_NAME}

処理中の処理名を返却します。このマクロは処理のパネルに記述された場合のみ、取得できます。それ以外の場所に記述した場合は、空文字が返却されます。

処理ファイル変更

{%CHANGE_FILE(フルパスファイル名)}

一時的に処理中のファイルを変更します。通常、DocuWorksAPI系の処理は、現在処理中のファイルに対して処理が行われます。

よって、現在処理中のファイル以外のファイルを処理できません。本マクロは、現在処理中のファイル以外のファイルを対象にDocuWorksAPI系のマクロを実行したい場合に、一時的に対象ファイルを変更する目的で使用します。

処理中のファイルをすり替えるので目的のマクロを記述したら直ぐに、{%PUT_BACK_FILE}マクロで元の状態に戻してください。

なお、処理中ファイルの変更中は、読み取り結果系のマクロが使用できません。読み取り結果は、ファイル名によって情報が分類され保存されていますので、処理中ファイル変更中は正しくデータを取得することが出来なくなります。

本マクロは、マクロ実行処理内でのみ動作します。また、処理中ファイルの変更が有効になるのは、マクロ実行処理が終了するまでになります。

例1

一時的に処理中のファイルを「X0001_A4P.xdw」に変更し、BMPファイルにイメージ変換を行い、すぐに処理中のファイルを元に戻します。

{%CHANGE_FILE(C:\Home\図面\2009\09\X0001_A4P.xdw)}
{%DW_OUTPUT_BMP_IMAGE(C:\Home\\System\bmp\{%BASE_FILE_NAME}.bmp,300,MONO,1)}
{%PUT_BACK_FILE}
処理ファイル復元

{%PUT_BACK_FILE}

CHANGE_FILEマクロで一時的に変更した処理中のファイルを元に戻します。使用例はCHANGE_FILEマクロを参照してください。

外部マクロ読み込み

{%LOAD_MACRO(ファイル名)}

テキストファイルに記述されたマクロを読み込み、実行します。

例1

「D:\Home\Macro\TypeA.txt」に記述されたマクロを読み込み実行する。

{%LOAD_MACRO(D:\Home\Macro\TypeA.txt)}
文字列書式
空白削除

{%TRIM(文字列)}

引数文字列の先頭と末尾の連続するスペースを削除します。

例1

マクロと結果

{%TRIM( abc )} -> "abc"
左部分文字列抽出

{%LEFT(文字列,文字数)} {%LEFT_B(文字列,バイト数)}

引数文字列の左から指定文字数分抽出します。

例1

マクロと結果

{%LEFT(abc,2)} -> "ab"

SJISに置き換えてバイト数指定で抽出を行う場合は、{%LEFT_B(文字列,バイト数)}を使用します。

文字列抽出

{%MID(文字列,開始位置,文字数)} {%MID_B(文字列,開始位置,バイト数)}

引数文字列の開始位置から文字数分抽出します。文字数は省略可能。省略した場合は、文字数指定無し、つまり開始位置以降、全てとなります。

例1

マクロと結果

{%MID(abc,2,1)} -> "b"
{%MID(abc,2)} -> "bc"

SJISに置き換えてバイト数指定で抽出を行う場合は、{%MID_B(文字列,開始位置,バイト数)}を使用します。

文字長取得

{%LEN(文字列)} {%LEN_B(文字列)}

マクロ書式の説明

例1

引数文字列の文字数を取得します。

{%LEN(abc)} -> "3"

SJISに置き換えてバイト数で文字数取得を行う場合は、{%LEN_B(文字列)} を使用します。

文字列置換

{%REPLACE(文字列,検索文字,置換文字)}

引数文字列から検索文字を検索し、置換文字に置換します。検索文字が複数見つかった場合も全て置換します。

検索文字や、置換文字に、改行コードやタブコードを指定する場合は、下記のキーワードを使用します。

キーワード

内容

vbCrLf

改行ラインフィード

vbCr

改行

vbLf

ラインフィード

vbTab

タブ

例1

マクロと結果

{%REPLACE(abcde,c,x)} -> "abxde"
{%REPLACE(abcabc,bc,x)} -> "axax"

例2

QRコードから取得した名前付きデータに含まれる改行コードを削除する場合

{%REPLACE({%N_DATA(QRコード読み取り1.name)},vbCrLf,)}
文字列書式整形

{%FORMAT(値,書式)}

値を書式に従って整形します。

例1

マクロと結果

{%FORMAT(5,000)} -> "005"
{%FORMAT(005,0)} -> "5"
{%FORMAT(2004/10/01,mm/dd)} -> "10/01"
文字列分割

{%SPLIT(文字列,区切り文字,ユーザデータ名)}

区切り文字が入った文字列を、引数の区切り文字により、分割することができます。
分割結果はユーザデータに格納されます。
内容はユーザデータのキーに項目番号(1~)を指定することで参照できます。
また、分割数は、キーに「Count」を指定することで参照できます。

例1

文字列「山田-19-男」を、区切り文字「-」で分割し、ユーザデータ名「分割結果」として、ユーザデータに保管する場合

{%SPLIT(山田-19-男,-,分割結果)}

ユーザデータに格納されたデータは、ユーザデータ名、キーを指定することにより、検索することができます。

例1

文字列「田中-女-90」を、区切り文字「-」で分割し、ユーザデータ名「分割結果」として、ユーザデータに保管し、その結果をメッセージボックスに表示する場合

{%SPLIT(田中-女-90,-,分割結果)}
            
              {%MSGBOX({%GET_USER_DATA(分割結果,Count)})}
{%MSGBOX({%GET_USER_DATA(分割結果,1)})}
{%MSGBOX({%GET_USER_DATA(分割結果,2)})}
{%MSGBOX({%GET_USER_DATA(分割結果,3)}
            
            
              メッセージボックスには、

3
田中
女
90

と順に表示されます。

区切り文字が「,」である場合には、入力する区切り文字を「\,」としてください。

例1

文字列「東京,13」を区切り文字「,」で分割し結果をループマクロで分割された個数分、内容を順に表示する。

{%LOOP L1 {%SPLIT(東京\,13,\,,地名)}{%GET_USER_DATA(地名,Count)}(
{%MSGBOX({%GET_USER_DATA(地名,[L_IDX(L1)])})}
)}

メッセージボックスには、

東京
13

と順に表示されます。
文字列連結

{%JOIN(ユーザデータ名,連結文字)}

ユーザデータに格納された値を連結文字で連結します。

例1

ユーザデータ名「果物」に格納されている値をカンマ区切りで連結する場合

{%SET_USER_DATA(果物,1,りんご)}
{%SET_USER_DATA(果物,2,みかん)}
{%SET_USER_DATA(果物,3,すいか)}
{%MSGBOX({%JOIN(果物,\,)})}

結果
りんご,みかん,すいか
正規表現文字列抽出

{%REGEX_CAPTURE(正規表現,文字列,オプション)}

正規表現(perl互換)で文字列の一部分を取得します。正規表現には必ず一組の()を記述してください。()の中の正規表現にマッチする文字が返却されます。

オプション文字の意味は以下の通りです。

オプション

内容

i

大文字、小文字を区別しない。

m

文字列を複数行として扱う。

正規表現の詳細についてはPerlの参考書等を参照願います。

例1

拡張子を除いたファイル名の末尾の数字を取得する場合

{%MSGBOX({%REGEX_CAPTURE((\d+)$,{%BASE_FILE_NAME})})}

「Test001」の場合は、「001」が取得されます。

例2

フルパスファイル名からファイル名の一つ上のフォルダ名を取得する場合

{%MSGBOX({%REGEX_CAPTURE(([^\\\\]+)\\\\[^\\\\]+$,{%FILE_FULL_PATH})})}

\のエスケープがマクロと、正規表現で働くので、2重にエスケープしています。\そのものを正規表現にしたい場合には、上記の例のように\\\\と記述します。

「D:\東京支店\第一営業部\請求書001.xdw」の場合、「第一営業部」が取得されます。

例3

NO又はno又はNo又はnOの後ろの数字を取得する場合

{%MSGBOX({%REGEX_CAPTURE(NO(\d+),{%BASE_FILE_NAME},i)})}

ファイル名の中の「NO」の後ろの数字を取得します。iオプションを指定していますので、大文字小文字を区別せず、「no」や「No」でも対象となります。

「No001_Test」の場合、「001」が取得されます。
文字列変換

{%STR_CONV(文字列,変換種類)}

文字列の変換処理を行います。

文字列に変換したい文字を指定します。

変換種類には、以下の変換種類の番号を指定します。番号を足し算して複数指定することも可能です。(例「小文字を大文字 + 全角を半角」は1+8で9を指定)

変換種類

内容

1

小文字を大文字に変換します。

2

大文字を小文字に変換します。

3

各単語の先頭文字を大文字に変換します。

4

半角文字を全角文字に変換します。

8

全角文字を半角文字に変換します。

16

ひらがなをカタカナに変換します。

32

カタカナをひらがなに変換します。

例1

文字の変換例。

#小文字を大文字
{%LOG_OUT({%STR_CONV(abc,1)})} -> ABC
{%LOG_OUT({%STR_CONV(abc,1)})} -> ABC

#大文字を小文字
{%LOG_OUT({%STR_CONV(ABC,2)})} -> abc
{%LOG_OUT({%STR_CONV(ABC,2)})} -> abc

#先頭文字を大文字
{%LOG_OUT({%STR_CONV(abc def,3)})} -> Abc Def

#半角を全角
{%LOG_OUT({%STR_CONV(abc,4)})} -> abc
{%LOG_OUT({%STR_CONV(アイウ,4)})} -> アイウ

#全角を半角
{%LOG_OUT({%STR_CONV(abc ,8)})} -> abc
{%LOG_OUT({%STR_CONV(アイウ,8)})} -> アイウ

#ひらがなをカタカナ
{%LOG_OUT({%STR_CONV(あいう,16)})} -> アイウ

#カタカナをひらがな
{%LOG_OUT({%STR_CONV(アイウ,32)})} -> あいう
{%LOG_OUT({%STR_CONV(アイウ,32)})} -> アイウ

#小文字を大文字 + 全角を半角
{%LOG_OUT({%STR_CONV(abc,9)})} -> ABC
{%LOG_OUT({%STR_CONV(abc,9)})} -> ABC

#カタカナをひらがな + 半角を全角
{%LOG_OUT({%STR_CONV(アイウ,36)})} -> あいう

#矛盾したパラメータ
{%LOG_OUT({%STR_CONV(abc ,12)})} -> エラー
数学書式
計算

{%CALC(計算式)}

引数の数式を計算します。数式には、四則演算を表記できます。

例1

マクロと結果

{%CALC(1+2)} -> "3"
{%CALC(3*(2+1))} -> "9"
四捨五入

{%ROUND(数値,小数点の位置)}

引数の数値を小数点の位置で四捨五入します。

例1

マクロと結果

{%ROUND(12.3,0)} -> "12"
切り捨て

{%ROUND_DOWN(数値,小数点の位置)}

引数の数値を小数点の位置で切り捨てします。

例1

マクロと結果

{%ROUND_DOWN(12.5,0)} -> "12"
切り上げ

{%ROUND_UP(数値,小数点の位置)}

引数の数値を小数点の位置で切り上げします。

例1

マクロと結果

{%ROUND_UP(12.3,0)} -> "13"
剰余

{%MOD(数値1,数値2)}

数値1を数値2で割った余りを返却します。

例1

199を100で割った余りを求める場合

{%MOD(199,100)}

結果
99
制御書式
条件式

{%IF(条件,真の値,偽の値)}

条件を判定し、条件に合致する場合は真の値を返却し、合致しない場合は偽の値を返却します。条件の比較記号は、>,<,=,>=,<=,!=が使用可能です。条件の左辺、右辺が両方とも数字の場合、数値としての比較を行います。それ以外は文字比較になります。条件や、真の値、偽の値には、各種書式を入れ子で記述することが可能です。

カンマそのものを条件や値に記述したい場合は、「\,」と記述します。

比較式の左辺と右辺が数値の場合は数値として比較しますが、その際の数値判定は以下のようになります。

  • 数値の有効範囲はVB6のCurrency型と同じで、-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807となります。

  • 123E-4や1D3などのの指数を表した文字がある場合は文字列とみなします。(EとDのみ)

  • 123+や456-などの末尾に符号がついている場合は文字列とみなします。

  • 123+や456-などの末尾に符号がついている場合は文字列とみなします。

  • カンマが含まれている場合は文字列とみなします。

  • 全角の数字は数値とみなします。

実際のところ比較式を数値とみなしたい場合は少ないと思います。確実に文字列として比較したい場合は、比較式の左辺と右辺の先頭にXなどの文字を付加して比較するとよいです。例えば以下のようになります。

{%IF(X{%GET_USER_DATA(wk,data1)}=X{%GET_USER_DATA(wk,data2)},True,False)}

また、LOOPマクロとIFマクロは特殊な処理方式を行っています。一般的なスクリプトと異なる部分があります。詳細はマクロの処理方式と分割についてをご覧ください。

例1

現在の日が20日より後の場合、翌月を返却し、20日以前の場合は、当月を返却する場合

{%IF({%DATE(dd)}>20,{%DATE(yymm)+1m},{%DATE(yymm)})}

現在の日付が2004年2月20日の場合、0402となります。
現在の日付が2004年2月21日の場合、0403となります。
繰り返し式

{%LOOP 名前 繰り返し回数(文字列)}

文字列を繰り返し回数分展開します。名前には任意の文字列を指定します。文字列には、改行が含まれても問題ありません。

文字列には、以下の特殊キーワードが使用できます。

[L_IDX(名前)]

L_IDXキーワードは、LOOPマクロの引数文字列中に使用すると、ループの展開時に、インデックスに置換します。名前には、LOOPマクロで指定した名前と同じ名前を指定します。

[L_IDX_R(名前)]

L_IDX_Rキーワードは、LOOPマクロの引数文字列中に使用すると、ループの展開時に、逆インデックス(例 ループ回数が3の場合、3→2→1)に置換します。名前には、LOOPマクロで指定した名前と同じ名前を指定します。

LOOPマクロは実行時に指定された回数分展開しますので、LOOP内の文字列、回数によっては展開される文字列が大量になります。大量になった場合、マクロが正常に処理されず、異常終了するなどの問題が発生する可能性があります。
LOOPマクロは展開後のデータが少量のデータ(多くて1KB程度)で使用するようお願いします。ループ回数が多くなる場合は、スクリプト実行を利用してください。

また、LOOPマクロとIFマクロは特殊な処理方式を行っています。一般的なスクリプトと異なる部分があります。詳細はマクロの処理方式と分割についてをご覧ください。

例1

マクロと結果

{%LOOP L1 3(
Msgbox "[L_IDX(L1)]"
)}

展開される内容
Msgbox "1"
Msgbox "2"
Msgbox "3"

LOOPマクロを入れ子に記述した場合、最も内側のループから展開を行う為、ループマクロの引き数にL_IDXキーワードを使用することができません。例えば、例2のマクロは動作しますが、例3のマクロは動作いたしません。

例2

マクロと結果

{%LOOP Week 4(
  {%LOOP Day 7(
    W[L_IDX(Week)],D[L_IDX(Day)]
  )}
)}

例3

マクロと結果

{%LOOP L1 {%SYMBOL_COUNT(アノテーション読み取り1)}(
  {%LOOP L2 {%GET_USER_DATA(分割データ[L_IDX(L1)],Count)}(
    {%LOG_OUT({%GET_USER_DATA(分割データ[L_IDX(L1)],[L_IDX(L2)])})}
  )}
)}