tcl7.xjp $B$H(B tcl8.0jp $B$NHs8_49$*$h$S%9%/%j%W%H:F%3%s%Q%$%k$KH<$&I{:nMQ(B

						m-hirano@sra.co.jp


  tcl8.0 $B$N(B On the fly bytecode compile $B5!G=$N$?$a$K!"(Btcl7.xjp $B$H(B 
tcl8.0jp $B$N4V$K$O!"(BinternalCode $B$X$N4A;z%3!<%I<+F0JQ495!G=2s$j$KHs8_49(B
$B$,@8$8$^$7$?!#$^$?!"(Beval, uplevel, source $BEy$N!"<B9TCf$K%9%/%j%W%H$N:F(B
$B%3%s%Q%$%k$r0z$-5/$3$9%3%^%s%I$N;HMQ$b(B internalCode $B$X$N4A;z%3!<%I<+F0(B
$BJQ495!G=$K$h$jM-32$JI{:nMQ$r@8$8$5$;$k$3$H$,$"$j$^$9!#(B

  $B$3$N%I%-%e%a%s%H$O$=$NHs8_49ItJ,$HI{:nMQ$K$D$$$F@bL@$9$k$b$N$G$9!#FI(B
$B<T$,(B tcl7.xjp $B$N(B kanji internalCode $B%3%^%s%I$N;HMQK!$H?6Iq$K4X$7$F$"$k(B
$BDxEYCN<1$r;}$C$F$$$k$3$H$rA0Ds$H$7$F$$$^$9!#(B

  $B$A$J$_$K!"4A;z%3!<%I$N0c$$$r0U<1$7!"(Btcl7.xjp $B$N(B internalCode $B$X$N4A(B
$B;z%3!<%I<+F0JQ495!G=$KMj$i$J$$%9%/%j%W%H$r=q$$$F$$$kJ}!9$K$O!"Hs8_49It(B
$BJ,$O$"$^$j5$$K$J$i$J$$$G$7$g$&!#(B


1.	$BHs8_49ItJ,(B

1.1.	$B>INc(B
  
  $B0J2<$N$h$&$J%9%/%j%W%H$,$"$k$H$7$^$9!#(B

	1	kanji internalCode JIS
	2	set jis $B$"$$$&$($*(B
	3	kanji internalCode SJIS
	4	set sjis $B$"$$$&$($*(B
	5	kanji internalCode EUC
	6	set euc $B$"$$$&$($*(B
	7	foreach i "$jis $sjis $euc" {
	8		puts [ kanji code $i ]
	9	}
	10	set l [ list $jis $sjis $euc ]
	11
	12	kanji internalCode EUC
	13	foreach i "JIS SJIS EUC" {
	14		kanji internalCode $i
	15		set idx [ kanji lsearch $l $B$"(B* ]
	16		puts $idx
	17	}

  tcl7.xjp $B$G>e5-$r<B9T$9$k$H!"%$%s%?%i%/%F%#%V%b!<%I!"Hs%$%s%?%i%/%F%#(B
$B%V%b!<%I$H$b$K!"(B

	JIS
	SJIS
	EUC
	0
	1
	2

  $B$N=PNO$,F@$i$l$^$9!#(Btcl8.0jp $B$G<B9T$9$k$H!"%$%s%?%i%/%F%#%V%b!<%I$G(B
$B$O!"(B

	JIS
	SJIS
	EUC
	2
	2
	2

  $BHs%$%s%?%i%/%F%#%V%b!<%I$G$O!"(B

	EUC
	EUC
	EUC
	0
	0
	0

  $B$H$J$j$^$9(B(SunOS 4.1.x $B$N>l9g(B)$B!#(B


1.2.	$B@bL@(B

  tcl8.0jp $B$G$J$<$3$N$h$&$J$3$H$,5/$-$k$+$H$$$&$H!"(B

	$B4A;z$r4^$`B(CM$,%3%s%Q%$%k$5$l$k;~$K$O!"8=:_$N(B internalCode $B$X(B
	$B%3!<%IJQ49$5$l$k!#$=$N8e!":F%3%s%Q%$%k$,5/$-$J$$8B$j!"%3%s%Q%$(B
	$B%k$5$l$?B(CM$O%3!<%IJQ49$5$l$J$$!#(B
  
  $B$H$$$&<BAu$K$7$?$+$i$G$9(B($BN)$A>e$2;~$N%G%U%)%k%H!#(B2.2. $B$G8e=R$9$kJ}K!(B
$B$G%3%s%Q%$%k;~$N(B internalCode $B$X$N%3!<%IJQ49$r40A4$K6X;_$G$-$^$9(B)$B!#(B

# internalCode $B$N?6Iq$K4X$7$F(B tcl7.xjp $B$H$N8_49$rJ]$D$K$O!"%P%$%H%3!<(B
# $B%I<B9TItJ,$K<j$rF~$l$J$1$l$P$J$i$J$/$F(B($BB?J,K\Ev(B)$B!"$3$l$,$a$s$I$/$5$$!"(B
# $B$+$D<B9T%Q%U%)!<%^%s%9$,Mn$A$k$N$,L\$K8+$($F$$$k$+$i$3$&$$$&;EMM$K(B
# $B$7$?!"$H$$$&$N$,K\2;$G$9!#(B

  tcl8.0jp $B$G$N%$%s%?%i%/%F%#%V%b!<%I$HHs%$%s%?%i%/%F%#%V%b!<%I$G$N7k(B
$B2L$N0c$$$O!"$3$N<BAu$H!"0J2<$NM}M3$G@8$8$^$9!#(B

  $BHs%$%s%?%i%/%F%#%V%b!<%I$G$O!"%9%/%j%W%H%U%!%$%k$r:G=i$KA4It%3%s%Q%$(B
$B%k$7$?8e$G!"%P%$%H%3!<%I$N<B9T$r3+;O$7$^$9(B(tcl8.0 $B$N85!9$N<BAu(B)$B!#$7$?(B
$B$,$C$F!"(B

	kanji internalCode XXX $B$N5-=R$,$"$C$F$b!"%3%s%Q%$%k$O$5$l$k$,!"(B
	$BEvA3D>$A$K<B9T$5$l$J$$$N$G!"%3%s%Q%$%k;~$K$O(B internalCode $B$OJQ(B
	$B2=$7$J$$!#(B

  $B$3$H$K$J$j$^$9!#(B

  $B0lJ}%$%s%?%i%/%F%#%V%b!<%I$G$O!"(B1 $B9TFI$_9~$`Kh$K%3%s%Q%$%k$7!"%P%$%H(B
$B%3!<%I$r<B9T$7$^$9(B($B$3$l$b(B tcl8.0 $B$N85!9$N<BAu(B)$B!#$7$?$,$C$F!"(B

	kanji internalCode XXX $B$N%3%s%Q%$%k!&<B9T$N8e$N4A;z$r4^$`B(CM(B
	$B$N%3%s%Q%$%k$K$O!"@_Dj$7$?(B internalCode $B$,D>$A$K8zNO$rH/4x$9$k!#(B

  $B$3$H$K$J$j$^$9!#$3$N$h$&$J(B internalCode $B$NJQ2=$N%?%$%_%s%0$,!"%$%s%?(B
$B%i%/%F%#%V%b!<%I$HHs%$%s%?%i%/%F%#%V%b!<%I$N7k2L$N0c$$$r@8$_=P$7$F$$$k(B
$B$o$1$G$9!#(B


1.3.	$B2r7hK!(B:eval $B$r;H$&(B

  internalCode $B$r@_Dj$7$?8e$K!"4A;z$r4^$`B(CM$r:F%3%s%Q%$%k$5$;$k!"$D(B
$B$^$j!"(B

	$B4A;z$r4^$`B(CM$r;}$D%3%^%s%I$r!"(Beval $B%3%^%s%I$r2p$7$F<B9T$5$;$k!#(B

  $B$3$H$G(B tcl7.xjp $B$H8_49$K$J$j$^$9!#(Btcl8.0 $B$N<BAu$G$O!"(Beval $B%3%^%s%I$O(B
$BEO$5$l$?0z?t$r:F%3%s%Q%$%k!&<B9T$7$^$9!#(B

  $B<B:]$K>e5-%9%/%j%W%H$r=q49$($k$H!"(B

	1	kanji internalCode JIS
	2	eval set jis $B$"$$$&$($*(B
	3	kanji internalCode SJIS
	4	eval set sjis $B$"$$$&$($*(B
	5	kanji internalCode EUC
	6	eval set euc $B$"$$$&$($*(B
	7	foreach i "$jis $sjis $euc" {
	8		puts [ kanji code $i ]
	9	}
	10	set l [ list $jis $sjis $euc ]
	11
	12	kanji internalCode EUC
	13	foreach i "JIS SJIS EUC" {
	14		kanji internalCode $i
	15		set idx [ eval kanji lsearch {$l} $B$"(B* ]
	16		puts $idx
	17	}

  $B$N$h$&$K$J$j$^$9!#(B


2. 	$BI{:nMQ(B

  1.3. $B$G$O(B eval $B$K$h$k%9%/%j%W%H$N:F%3%s%Q%$%k$G@Q6KE*$K(B internalCode 
$B$X$N%3!<%IJQ49$r3hMQ$7$^$7$?!#$7$+$7!"(BinternalCode $B$X$N%3!<%IJQ49$,M-(B
$B32$JI{:nMQ$r@8$`$3$H$b$"$j$^$9!#(B


2.1.	$B>INc(B

  $B$"$k%W%m%7%8%c(B

	proc Foo { x } { .... }

  $B$,!"(Bunknown $B%W%m%7%8%c$G(B auto_load $B$5$l$k$h$&$K(B tclIndex $B$r5-=R$7$F(B
$B$$$?$H$7$^$9!#$^$?!"%9%/%j%W%HFb$G:G=i$KEP>l$9$k$N(B Foo $B$NMQK!$,!"(B

	Foo \x95\x5c

  $B$N$h$&$K!"%P%C%/%9%i%C%7%e%(%9%1!<%W$G5-=R$7$?B(CM$,!"$?$^$?$^4A;z%3!<(B
$B%I$H$7$F@5$7$$%7!<%1%s%9(B($B$3$NNc$G$O(B SJIS $B$G(B '$BI=(B' $B$NJ8;z$K$J$k(B)$B$K$J$k$h(B
$B$&$J$b$N$@$C$?$H$7$^$9!#(B

  \x95\x5c $B$H$$$&%P%C%/%9%i%C%7%e%(%9%1!<%W$O!"(B"Foo \x95\x5c" $B$H$$$&J8(B
$B;zNs$N%3%s%Q%$%k;~$K!"FbItE*$K%P%$%J%j!"$D$^$j(B SJIS $B$N(B '$BI=(B' $B$KCV49$5$l(B
$B$^$9(B(tcl8.0 $B$N85!9$N<BAu(B)$B!#(B

  $B$5$F!"(B"Foo \x95\x5c" $B$N8F$S=P$7$O(B unknown $B%W%m%7%8%c$G9T$o$l$^$9!#<B(B
$B:]$K$O(B proc Foo { x } { .... } $B$r4^$`%U%!%$%k$r(B source $B$7!"(Buplevel $B%3(B
$B%^%s%I$G(B "Foo \x95\x5c" $B$r8F$S=P$7$^$9!#(B

  $B$3$N$H$-(B uplevel $B%3%^%s%I$O(B "Foo $BI=(B" $B$H$$$&J8;zNs$r%3%s%Q%$%k$9$k$3(B
$B$H$K$J$j$^$9!#$J$<$J$i!"$9$G$K(B \x95\x5c $B$O(B "Foo \x95\x5c" $B$H$$$&J8;zNs(B
$B$N%3%s%Q%$%k;~$K(B SJIS $B$N(B '$BI=(B' $B$KCV49$5$l$F$$$k$N$G!"(B"Foo $BI=(B" $B$,(B 
unknown $B%W%m%7%8%c$N0z?t$H$7$F;H$o$l$k$+$i$G$9!#(B

  $B$3$N%3%s%Q%$%k$K$h$j!"(Btcl8.0jp $B$ODL>o$N(B SJIS $B$N(B '$BI=(B' $B$H2r<a$7!"(B
internalCode $B$X$N%3!<%IJQ49$r9T$C$F$7$^$$$^$9!#(B

  $B$b$7$3$N;~$N(B internalCode $B$,(B SJIS $B$b$7$/$O(B ANY $B$@$C$?>l9g$OLdBj$O$J(B
$B$$$N$G$9$,!"Nc$($P(B SunOS 4.1.x $B$N%G%U%)%k%H$G$"$k(B EUC $B$G$"$C$?$H$7$^$7$g(B
$B$&!#$3$N>l9g$O7k2LE*$K(B \x95\x5c $B$,(B EUC $B$N(B '$BI=(B' $B$G$"$k(B \xc9\xbd $B$KJQ49(B
$B$5$l$F(B Foo $B$N0z?t$KEO$5$l$k$3$H$K$J$j$^$9!#$7$+$b!"$3$N(B unknown $B%W%m%7(B
$B%8%c$K$h$k(B uplevel $B%3%^%s%I$G$N%3%s%Q%$%k$O!"0lHV:G=i$N(B Foo $B$N8F$S=P$7(B
$B$N;~$K$7$+5/$3$j$^$;$s$+$i!"(B

	Foo \x95\x5c
	Foo \x95\x5c

  $B$N$h$&$J%9%/%j%W%H$,$"$k$H!"(B

	Foo \xc9\xbd
	Foo \x95\x5c

  $B$,<B9T$5$l$F$7$^$$!"F1$8CM$r(B Foo $B$N0z?t$K;HMQ$7$F$b!":G=i$N8F$S=P$7(B
$B$H$=$l0J9_$N8F$S=P$7$H$G7k2L$,0[$J$k$H$$$&!"BgJQ4qL/$J>u67$K4Y$j$^$9!#(B


2.2.	$B2r7hK!(B:$B%3%s%Q%$%k;~$N%3!<%IJQ49$N6X;_(B

  $B$3$NLdBj$r2sHr$9$k$?$a$K!"8=>u$N(B tcl8.0jp $B$N(B $B<BAu$G$O!"(B
$tcl_library/init.tcl $B$G(B unknown $B%W%m%7%8%c$rCV$-49$($F!"(Bunknown $B%W%m(B
$B%7%8%c$,H/@8$5$;$k%3%s%Q%$%k$N;~$K$O(B internalCode $B$X$N%3!<%IJQ49$r6X;_(B
$B$9$k$h$&$K$7$F$$$^$9!#(B

  source, uplevel, eval ($B$=$NB>$N%3%^%s%I$G$b5/$-$k$+$bCN$l$^$;$s$,!"(B
$B%=!<%9%3!<%I0J30$N%I%-%e%a%s%H$,L5$$$N$GL$D4::(B)$BEy$K$h$k%3%s%Q%$%k;~$N(B 
internalCode $B$X$N%3!<%IJQ49$r6X;_$9$k$K$O!"(B

	kanji convertWhenCompile no

  $B$r!"%3%s%Q%$%k$K$h$k(B internalCode $B$X$N%3!<%IJQ49$,5/$-$FM_$7$/$J$$>l(B
$B=j$KA^F~$7$^$9!#(B

	kanji convertWhenCompile yes

  $B$H$9$k$3$H$G!"%3%s%Q%$%k;~$N(B internalCode $B$X$N%3!<%IJQ49$r2DG=$K$G$-(B
$B$^$9!#(B

  $B$3$l$i$rE,@Z$K;H$$J,$1$k$3$H$G!"M-32$JI{:nMQ$KBP1~$G$-$^$9!#(B

# tcl8.0 $B$N%*%j%8%J%k%3!<%I$N%Q!<%5(B/$B%P%$%H%3!<%I@8@.ItJ,$rE,@Z$K=q49$((B
# $B$k$3$H$G$bBP1~=PMh$k$O$:$G$9$,!"JQ99ItJ,$,B?$=$&$J$N$G;_$a$F$^$9(B ^^;
# $B$^!"!V%P%$%H%3!<%I@8@.$N%Q%U%)!<%^%s%9$H$N(B trade off $B$r9M$($F!W$H$$(B
# $B$&$b$C$H$b$i$7$$M}M3$r0l1~IU$1$F$*$-$^$7$g$&(B B)

  $B$^$?!"$b$&$*5$$E$-$G$7$g$&$,!"4A;z$r4^$s$@JQ?tL>!"4X?tL>Ey$b!"(Beval 
$BEy$N:F%3%s%Q%$%k$K$h$k(B internalCode $B$X$N%3!<%IJQ49$K$h$C$F1F6A$r<u$1$^(B
$B$9!#4A;z$r4^$s$@4X?tL>!"JQ?tL>$r;H$C$F$$$k;~$K!"$"$^$jGI<j$K(B 
internalCode $B$r@ZBX$($k$H!";W$o$L6lO+$r$9$k$3$H$,$"$k$G$7$g$&!#(B


3.	$B4A;zJ8;zNs%Q!<%8%s%0$N40A4$J6X;_(B

  $B>l9g$K$h$C$F$O!"A4$F$N%G!<%?$r4A;z$H$7$F07$C$FM_$7$/$J$$>l9g$,$"$j$^(B
$B$9!#FC$K!"$$$o$f$k%P%$%J%j%G!<%?$K(B regsub, subst $B$r;H$C$FJ#;($JJ8;zNs(B
$BJQ49$r9T$$!"$=$l$r(B eval $B$XEO$9$h$&$J>l9g$G$9!#(B

$B$3$N$h$&$J>l9g!"(B

	kanji scanKanjiToken no

  $B$H$9$k$3$H$G<B8=$G$-$^$9!#N)$A>e$2;~$N%G%U%)%k%H$O(B

	kanji scanKanjiToken yes

  $B$K$J$C$F$$$^$9!#I,MW$K1~$8$F@ZBX$($F;HMQ$7$F2<$5$$!#(B

  $BDL>o%G%U%)%k%H$N$^$^$GBg>fIW$G$9$,!"FC$K3$30@=$N%9%/%j%W%H$r;HMQ$7$F(B
$B$$$k>l9g$K(B subst $B$G(B error $B$,=P$?$j$9$k$N$J$i!"@ZBX$($F$_$k$H8z2L$,$"$k(B
$B$+$b$7$l$^$;$s!#(B

  scanKanjiToken $B$,(B no $B$N>l9g!"(Btcl8.0jp $B$N%Q!<%5ItJ,$O$[$\40A4$K(B 
tcl8.0 $B$H8_49$K$J$j$^$9!#$D$^$j!"F|K\8l$K4X$7$F%Q!<%5$O2?$b$7$J$/$J$j(B
$B$^$9!#FC$K(B JIS $B%3!<%I$r07$&%9%/%j%W%H$O2uLG>uBV$K$J$k$G$7$g$&!#(B

  $B$A$J$_$K8=:_$N;EMM$G$O!"(BconvertWhenCompile $B$O%$%s%?!<%W%j%?(B(interp 
$B%3%^%s%I$G@8@.$5$l$?%$%s%?!<%W%j%?(B)$BKh$KJL$G$9$,!"(BscanKanjiToken $B$O%W%m(B
$B%;%9A4BN$KGH5Z$7$^$9!#(B
  
