読み取りデータ書式
|
シンボル情報取得書式
|
配信先取得書式
|
処理結果取得書式
|
ユーザデータ書式
|
グローバルデータ書式
|
プラグインデータ書式
|
日付書式
|
ファイル名書式
|
文字列書式
|
数学書式
|
制御書式
|
実行書式
|
データベース書式
|
DocuWorksAPI書式
|
ブラウザフォーム書式
?????の部分には、日付を表す日付記号を記述します。日付記号は下記を参照してください。
日付記号 | 内容 |
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分の場合
{%DATE(yyyy/mm/dd)}
{%DATE(yyyy/m/d)}
{%DATE(ggge年m月d日)}
{%DATE(yymmdd)}
{%DATE(yyyy/mm/dd hh:nn)}
{%DATE(yyyy/mm/dd)+1d}
{%DATE(yyyy/mm/dd hh:nn)-10h}
日時には、日付(yyyy/mm/dd)又は、日時(yyyy/mm/dd hh:nn:ss)の形式で日付又は日時を指定します。日付を指定した場合、時刻は00:00:00が指定されたとみなします。
その他の書式は日付取得と同じです。日付取得では、システム日付から取得した日時しか処理できませんが、日付加減算では、1番目の引数に任意の日時を指定できます。
{%DATE_ADD(2012/12/19,yyyy/mm/dd)+1d}
{%DATE_ADD(2012/12/19 23:50:00,yyyy/mm/dd)-2h}
{%DATE_ADD(2012/12/31 23:00:00,yyyy/mm/dd hh:nn:ss)+2h}
日時には、日付(yyyy/mm/dd等)又は、日時(yyyy/mm/dd hh:nn:ss等)の形式で日付又は日時を指定します。指定された日時が日時として認識できる場合は、Trueを認識できない場合はFalseを返却します。
{%IF({%IS_DATE(2020/12/32)}=True, {%LOG_OUT(日付正常)} , {%LOG_OUT(日付不正)} )} --------- 結果 日付不正
和暦はDATEマクロでも取得できますが、元号が変わった場合の対応を考慮して、定義ファイル(CSV形式)から情報を取得して、変換する処理を提供します。定義ファイルに元号と開始年月日を記述することで将来の元号にも対応できます。
年月日には、和暦に変換したい日付(yyyymmdd)を指定します。
結果格納先ユーザーデータ名には結果を格納するユーザーデータの名前を指定します。和暦の情報は以下のキーで取得できます。
キー | 内容 |
元号 | 指定した年月日の元号(令和,平成,昭和,大正,明治) |
元号記号 | 指定した年月日の元号記号(R,H,S,T,M) |
年 | 指定した年月日の和暦の年 |
月 | 指定した年月日の和暦の月 |
日 | 指定した年月日の和暦の日 |
本マクロは和暦定義ファイルを参照して処理しています。和暦定義ファイルは省略可能です。省略した場合は、eDocArrangementのインストールフォルダにある「Wareki.ini」を参照します。指定した場合は指定したファイルを読み込みます。和暦定義ファイルは以下のフォーマットでデータを作成してください。(「Wareki.ini」も参考にしてください。)
項目1 | 項目2 | 項目3 |
開始年月日 | 元号 | 元号記号 |
和暦定義ファイルはカンマ区切りとします。ヘッダ行は記述せず1行目から定義してください。また、日付は降順(新しい日付が上)に定義してください。
{%CALENDAR_JP(20160303,和暦)}
{%GET_USER_DATA(和暦,元号)}{%GET_USER_DATA(和暦,年)}
{%CALENDAR_JP({%DATE(yyyymmdd)},和暦)}
{%GET_USER_DATA(和暦,元号記号)}{%GET_USER_DATA(和暦,年)}{%GET_USER_DATA(和暦,月)}{%GET_USER_DATA(和暦,日)}
本マクロは、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データです。以下のページからダウンロードできます
このページの「平成31年(2019年)及び令和2年(2020年)の「国民の祝日」」というタイトルの最後にダウンロードのリンクがあります。(タイトル、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(水)
#祝祭日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
処理中のファイル名を返却します。
{%MSGBOX({%FILE_NAME})}
表示される内容「Test.xdw」
処理中のファイル名(拡張子を除いた名前)を返却します。
{%MSGBOX({%BASE_FILE_NAME})}
表示される内容「Test」
処理中のファイルのフォルダパスを返却します。最後に\がつきます。
{%MSGBOX({%FOLDER_PATH})}
表示される内容「D:\Temp\」
処理中のファイルが格納されているフォルダ名を返却します。ドライブの直下にあるファイルを対象とした場合はドライブ名 + ":" が返却されます。(「C:\Test.xdw」の場合は「C:」)
{%MSGBOX({%FOLDER_NAME})}
表示される内容「Temp」
処理中のフルパスファイル名を返却します。
{%MSGBOX({%FILE_FULL_PATH})}
表示される内容「D:\Temp\Test.xdw」
処理中のファイル番号を返却します。
処理中のファイルの合計数を返却します。
処理中のページ番号を返却します。(マクロ実行で、ページ単位の処理にした場合に使用できます。)
処理中の設定名を返却します。
処理中の処理名を返却します。このマクロは処理のパネルに記述された場合のみ、取得できます。それ以外の場所に記述した場合は、空文字が返却されます。
一時的に処理中のファイルを変更します。通常、DocuWorksAPI系の処理は、現在処理中のファイルに対して処理が行われます。
よって、現在処理中のファイル以外のファイルを処理できません。本マクロは、現在処理中のファイル以外のファイルを対象にDocuWorksAPI系のマクロを実行したい場合に、一時的に対象ファイルを変更する目的で使用します。
処理中のファイルをすり替えるので目的のマクロを記述したら直ぐに、{%PUT_BACK_FILE}マクロで元の状態に戻してください。
なお、処理中ファイルの変更中は、読み取り結果系のマクロが使用できません。読み取り結果は、ファイル名によって情報が分類され保存されていますので、処理中ファイル変更中は正しくデータを取得することが出来なくなります。
本マクロは、マクロ実行処理内でのみ動作します。また、処理中ファイルの変更が有効になるのは、マクロ実行処理が終了するまでになります。
{%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}
CHANGE_FILEマクロで一時的に変更した処理中のファイルを元に戻します。使用例はCHANGE_FILEマクロを参照してください。
テキストファイルに記述されたマクロを読み込み、実行します。
{%LOAD_MACRO(D:\Home\Macro\TypeA.txt)}
引数文字列の先頭と末尾の連続するスペースを削除します。
{%TRIM( abc )} -> "abc"
引数文字列の左から指定文字数分抽出します。
{%LEFT(abc,2)} -> "ab"
SJISに置き換えてバイト数指定で抽出を行う場合は、{%LEFT_B(文字列,バイト数)}を使用します。
引数文字列の右から指定文字数分抽出します。
{%RIGHT(abc,2)} -> "bc"
SJISに置き換えてバイト数指定で抽出を行う場合は、{%RIGHT_B(文字列,バイト数)}を使用します。
引数文字列の開始位置から文字数分抽出します。文字数は省略可能。省略した場合は、文字数指定無し、つまり開始位置以降、全てとなります。
{%MID(abc,2,1)} -> "b"
{%MID(abc,2)} -> "bc"
SJISに置き換えてバイト数指定で抽出を行う場合は、{%MID_B(文字列,開始位置,バイト数)}を使用します。
マクロ書式の説明
{%LEN(abc)} -> "3"
SJISに置き換えてバイト数で文字数取得を行う場合は、{%LEN_B(文字列)} を使用します。
引数文字列から検索文字を検索し、置換文字に置換します。検索文字が複数見つかった場合も全て置換します。
検索文字や、置換文字に、改行コードやタブコードを指定する場合は、下記のキーワードを使用します。
キーワード | 内容 |
vbCrLf | 改行ラインフィード |
vbCr | 改行 |
vbLf | ラインフィード |
vbTab | タブ |
{%REPLACE(abcde,c,x)} -> "abxde"
{%REPLACE(abcabc,bc,x)} -> "axax"
{%REPLACE({%N_DATA(QRコード読み取り1.name)},vbCrLf,)}
正規表現(perl互換)で文字列置換を行います。対象文字列を正規表現で検索して、マッチした文字列を置換文字列で置換します。結果は戻り値として返却します。
gオプションを指定することで、すべてのマッチする文字を置換できます。
オプション文字の意味は以下の通りです。
オプション | 内容 |
g | マッチする文字列が複数ある場合に、全て置換する。 |
i | 大文字、小文字を区別しない。 |
m | 文字列を複数行として扱う。 |
正規表現の詳細についてはPerlの参考書等を参照願います。
{%LOG_OUT({%FILE_FULL_PATH})} # \そのものをマクロで指定する場合はマクロのエスケープと正規表現の # エスケープが必要なので\を4個書く {%LOG_OUT({%REGEX_REPLACE(\\\\,,{%FILE_FULL_PATH},g)})} 結果 D:\Test\Test.xdw D:TestTest.xdw
{%LOG_OUT({%FILE_NAME})} {%LOG_OUT({%REGEX_REPLACE([^.]+$,tif,{%FILE_NAME},i)})} 結果 Test.Xdw Test.tif
値を書式に従って整形します。
{%FORMAT(5,000)} -> "005"
{%FORMAT(005,0)} -> "5"
{%FORMAT(2004/10/01,mm/dd)} -> "10/01"
区切り文字が入った文字列を、引数の区切り文字により、分割することができます。
分割結果はユーザデータに格納されます。
内容はユーザデータのキーに項目番号(1〜)を指定することで参照できます。
また、分割数は、キーに「Count」を指定することで参照できます。
{%SPLIT(山田-19-男,-,分割結果)}
ユーザデータに格納されたデータは、ユーザデータ名、キーを指定することにより、検索することができます。
{%SPLIT(田中-女-90,-,分割結果)}{%MSGBOX({%GET_USER_DATA(分割結果,Count)})}
{%MSGBOX({%GET_USER_DATA(分割結果,1)})}
{%MSGBOX({%GET_USER_DATA(分割結果,2)})}
{%MSGBOX({%GET_USER_DATA(分割結果,3)}メッセージボックスには、
3
田中
女
90
と順に表示されます。
区切り文字が「,」である場合には、入力する区切り文字を「\,」としてください。
{%LOOP L1 {%SPLIT(東京\,13,\,,地名)}{%GET_USER_DATA(地名,Count)}(
{%MSGBOX({%GET_USER_DATA(地名,[L_IDX(L1)])})}
)}
メッセージボックスには、
東京
13
と順に表示されます。
ユーザデータに格納された値を連結文字で連結します。
{%SET_USER_DATA(果物,1,りんご)} {%SET_USER_DATA(果物,2,みかん)} {%SET_USER_DATA(果物,3,すいか)} {%MSGBOX({%JOIN(果物,\,)})} 結果 りんご,みかん,すいか
正規表現(perl互換)で文字列の一部分を取得します。正規表現には必ず一組の()を記述してください。()の中の正規表現にマッチする文字が返却されます。
オプション文字の意味は以下の通りです。
オプション | 内容 |
i | 大文字、小文字を区別しない。 |
m | 文字列を複数行として扱う。 |
正規表現の詳細についてはPerlの参考書等を参照願います。
{%MSGBOX({%REGEX_CAPTURE((\d+)$,{%BASE_FILE_NAME})})}
「Test001」の場合は、「001」が取得されます。
{%MSGBOX({%REGEX_CAPTURE(([^\\\\]+)\\\\[^\\\\]+$,{%FILE_FULL_PATH})})}
\のエスケープがマクロと、正規表現で働くので、2重にエスケープしています。\そのものを正規表現にしたい場合には、上記の例のように\\\\と記述します。
「D:\東京支店\第一営業部\請求書001.xdw」の場合、「第一営業部」が取得されます。
{%MSGBOX({%REGEX_CAPTURE(NO(\d+),{%BASE_FILE_NAME},i)})}
ファイル名の中の「NO」の後ろの数字を取得します。iオプションを指定していますので、大文字小文字を区別せず、「no」や「No」でも対象となります。
「No001_Test」の場合、「001」が取得されます。
正規表現(perl互換)で文字列検索を行います。結果は引数で指定された結果格納用ユーザデータに格納します。
引数の正規表現にマッチする文字を結果格納用のユーザーデータに格納します。gオプションを指定することで、複数のマッチした文字を取得できます。
オプション文字の意味は以下の通りです。
オプション | 内容 |
g | マッチする文字列が複数ある場合に、全て結果に格納する。 |
i | 大文字、小文字を区別しない。 |
m | 文字列を複数行として扱う。 |
正規表現の詳細についてはPerlの参考書等を参照願います。
{%REGEX_MATCH(\d+,数量3 金額1200,result,g)} #-- {%LOOP L1 {%GET_USER_DATA_COUNT(result)}( {%LOG_OUT({%GET_U(result,[L_IDX(L1)])})} )} 結果 3 1200
文字列の変換処理を行います。
文字列に変換したい文字を指定します。
変換種類には、以下の変換種類の番号を指定します。番号を足し算して複数指定することも可能です。(例「小文字を大文字 + 全角を半角」は1+8で9を指定)
変換種類 | 内容 |
1 | 小文字を大文字に変換します。 |
2 | 大文字を小文字に変換します。 |
3 | 各単語の先頭文字を大文字に変換します。 |
4 | 半角文字を全角文字に変換します。 |
8 | 全角文字を半角文字に変換します。 |
16 | ひらがなをカタカナに変換します。 |
32 | カタカナをひらがなに変換します。 |
#小文字を大文字 {%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+2)} -> "3"
{%CALC(3*(2+1))} -> "9"
引数の数値を小数点の位置で四捨五入します。
{%ROUND(12.3,0)} -> "12"
引数の数値を小数点の位置で切り捨てします。
{%ROUND_DOWN(12.5,0)} -> "12"
引数の数値を小数点の位置で切り上げします。
{%ROUND_UP(12.3,0)} -> "13"
数値1を数値2で割った余りを返却します。
{%MOD(199,100)}
結果
99
条件を判定し、条件に合致する場合は真の値を返却し、合致しない場合は偽の値を返却します。条件の比較記号は、>,<,=,>=,<=,!=が使用可能です。条件の左辺、右辺が両方とも数字の場合、数値としての比較を行います。それ以外は文字比較になります。条件や、真の値、偽の値には、各種書式を入れ子で記述することが可能です。
カンマそのものを条件や値に記述したい場合は、「\,」と記述します。
比較式の左辺と右辺が数値の場合は数値として比較しますが、その際の数値判定は以下のようになります。
実際のところ比較式を数値とみなしたい場合は少ないと思います。確実に文字列として比較したい場合は、比較式の左辺と右辺の先頭にXなどの文字を付加して比較するとよいです。例えば以下のようになります。
{%IF(X{%GET_USER_DATA(wk,data1)}=X{%GET_USER_DATA(wk,data2)},True,False)}
また、LOOPマクロとIFマクロは特殊な処理方式を行っています。一般的なスクリプトと異なる部分があります。詳細は マクロの処理方式と分割について をご覧ください。
{%IF({%DATE(dd)}>20,{%DATE(yymm)+1m},{%DATE(yymm)})}
現在の日付が2004年2月20日の場合、0402となります。
現在の日付が2004年2月21日の場合、0403となります。
文字列を繰り返し回数分展開します。名前には任意の文字列を指定します。文字列には、改行が含まれても問題ありません。
文字列には、以下の特殊キーワードが使用できます。
[L_IDX(名前)]
L_IDXキーワードは、LOOPマクロの引数文字列中に使用すると、ループの展開時に、インデックスに置換します。名前には、LOOPマクロで指定した名前と同じ名前を指定します。
[L_IDX_R(名前)]
L_IDX_Rキーワードは、LOOPマクロの引数文字列中に使用すると、ループの展開時に、逆インデックス(例 ループ回数が3の場合、3→2→1)に置換します。名前には、LOOPマクロで指定した名前と同じ名前を指定します。
LOOPマクロは実行時に指定された回数分展開しますので、LOOP内の文字列、回数によっては展開される文字列が大量になります。大量になった場合、マクロが正常に処理されず、異常終了するなどの問題が発生する可能性があります。
LOOPマクロは展開後のデータが少量のデータ(多くて1KB程度)で使用するようお願いします。ループ回数が多くなる場合は、スクリプト実行を利用してください。
また、LOOPマクロとIFマクロは特殊な処理方式を行っています。一般的なスクリプトと異なる部分があります。詳細は マクロの処理方式と分割について をご覧ください。
{%LOOP L1 3(
Msgbox "[L_IDX(L1)]"
)}
展開される内容
Msgbox "1"
Msgbox "2"
Msgbox "3"
LOOPマクロを入れ子に記述した場合、最も内側のループから展開を行う為、ループマクロの引き数にL_IDXキーワードを使用することができません。例えば、例2のマクロは動作しますが、例3のマクロは動作いたしません。
{%LOOP Week 4(
{%LOOP Day 7(
W[L_IDX(Week)],D[L_IDX(Day)]
)}
)}
{%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)])})}
)}
)}