clear
;ユーザ定義シンボルdefineのテスト
echo $_FILE

undef -all

list ;-d
;define abc?
;#exit

define NONE						;空値
define バイト		12				;バイト値
define ワード		1234				;ワード値
define ダブルワード	12345678			;ダブルワード値
define a12345678901234		$バイト	;OK 15文字
define _12345678901234		$バイト	;OK
define 123456789012345		$バイト	;NG 識別子が不正な形式
define 0
define 9
define A
define Z
define a
define z
define _
define _0

;未定義変数->""（list -d でwarning表示）
echo $x $xyz

;識別子がない->文字列をそのまま残す（list -d でwarning表示）
echo $  $1 	 $123



define 空白
define 空　白		;全角空白が含まれる
define A12$34


define q1	"abc		;引用符が閉じていない
define q2	'abc		;引用符が閉じていない
define q3	$qqq;
define q4 	@abc();
define q5	$
define q6	$;
define q7	$a
define q8	$a;
define q9	$-
define q10	$-;
define q11	$　		;全角空白
define q12	$　;		;全角空白

define z1	$123　abc	;全角空白
define z2	@_123　abc()	;全角空白
define z3	$123-$abc	;
define z4	@_123　abc()-@abc()	;
define z5	$qqq-@abc()	;
define z6	-@abc()-$qqq	;
define z7 @abc()
define z8 @abc()abc@byte();
define z9 @abc()\
		$abc  \
		@byte();

define z10 ""
define z11 ";";
define z12 "123\n\""
define z13 "123\n\"";
define z14 "123\n\"	;閉じていない
define z15 "123\n\";	;閉じていない

define z21 (
define z22 (;
define z23 (		;閉じていない
define z24 (;		;閉じていない
define z25 ()		;
define z26 ();		;
define z27 (１２３(1+$2)) 123	;
define z28 ("abc", @aa(1,$2,)) abc;	;

define z30 @		;()がない
define z31 @;		;()がない
define z32 @+		;()がない
define z33 @+;		;()がない
define z34 @abc		;()がない
define z35 @abc;	;()がない
define z36 @abc(	;閉じていない
define z37 @abc(;	;閉じていない
define z38 @abc(+	;閉じていない
define z39 @abc(+;	;閉じていない
define z40 @abc()+	;
define z41 @abc()+;	;

define z50	e:\ 
define z51	e:\;
define z52	"e:\"
define z53	"e:\";
define z54	"e:\\"
define z55	"e:\\";


define a1234567890123456789012345678901234567890	$バイト	;ユーザ定義シンボルが長すぎる
define _１２３４５６７８９０１２３４５６７８９０	$バイト	;ユーザ定義シンボルが長すぎる
define １２３４５６７８９　１２３４５６７８９０	$バイト	;不正な文字、全角空白を含む
define １２３４５６７８９,				$バイト	;不正な文字
define １２３４５６７８９(				$バイト	;不正な文字
define $１２３４５６７８９				$バイト	;不正な文字
define @１２３４５６７８９				$バイト	;不正な文字
define \１２３４５６７８９				$バイト	;不正な文字
define １２３４５６７８９\				$バイト	;不正な文字
define １２３４５６７８９					;OK
define _１２３４５６７８９					;OK
define _１２３４５６７８９~					;NG
define str1		"12345" 'abcdsf'
define str2		"12345 \"ABC\" ; \n" 'abcdsf \'123\' ; \n'
define str3 		"123
define str4		1000 ^b 10 '123
define str5		"123"'abc'
define ab+cd
define -123

define	p1	@inc(10, $バイト)
define	p2	@inc(10, $バイト
echo $p1

define _FILE
define _FILE; comment
define _FILE	; comment

 define bb 	@byte($バイト)
 define ww	@word($ワード) 	
 define dd	@dword($ダブルワード)

 define b1 	@byte($b1)
 define ww	@word($ワード) 	
 define dd	@dword($ダブルワード)

echo $NONE
echo $NONE	;空
echo $バイト
echo $バイト	;バイト値
print $バイト	;バイト値
trace $バイト	;バイト値

echo $abcdef	;未定義
echo $a　bc	;不正な文字(全角空白)

echo $b1	;循環参照


		define abc
		define abc
		define abc?
		define abc"
		define abc'd
		definee cdf

define 循環	$バイト $ワード $循環	"abcd"	;
echo $循環

define dup1	$バイト $ワード $dup $バイト

define dup	$dup1	;循環参照(展開時に検出）

;cout s1

echo $dup1			;循環参照
echo $バイト $dup1		;循環参照

undef dup
define dup	$dup
echo $dup			;循環参照

undef dup
undef dup1
define dup	$バイト $ワード $dup $バイト	;循環参照(展開時に検出）
define dup1	$バイト $ワード $dup $ダブルワード
echo $dup1		;循環参照

define dup2	$dup1
echo $dup2		;循環参照

define dup10	$dup10
define dup11	$dup10
define dup12	$dup11
define dup13	$dup12
echo $バイト $dup13




echo A= $バイト , 	B= $バイト , 	C= $バイト
echo A= ($バイト-1) , 	B= ($バイト + 	$バイト)

echo A= $バイト , B= $バイト, C=$バイト*2	;OK　$<id>の前後に空白はなくてもよい

echo $abc $abc
echo $ワード @byte($ワード) @byte($ワード) @byte(@word($ダブルワード))

echo @byte($ワード, $ワード)
echo @byte( 10 ,20, 30 )

echo $str1 $str2
echo $str1$str2; comment
echo $str1+$str2
echo &$$str1


echo $abc
echo $abc?
echo $abc"
echo $abc'd
echo $ $$ $# $1 $2 $* $空白	$空　白;
echo 1$A 2
echo "123"$バイト   $バイト"abc"

print $バイト = $バイト
print \$バイト = $バイト	;マクロをエスケープ

print "\$バイト" "$バイト" $バイト


echo @ @@ @# @1 @2 @* @空白	@空　白;
echo # ## #@ #1 #2 #* #空白	#空　白;

echo () (()) (@#) ($1) (@空白)	((@空　白));

define BYTE	@byte
echo $BYTE(1234)

;define

