+----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|番号|0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|
+----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|8240|・|・|・|・|・|・|・|・|・|・|・|・|・|・|・|0|
|8250|1|2|3|4|5|6|7|8|9|・|・|・|・|・|・|・|
|8260|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|
|8270|Q|R|S|T|U|V|W|X|Y|Z|・|・|・|・|・| |
|8280|・|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|
|8290|p|q|r|s|t|u|v|w|x|y|z|・|・|・|・|ぁ|
|82A0|あ|ぃ|い|ぅ|う|ぇ|え|ぉ|お|か|が|き|ぎ|く|ぐ|け|
|82B0|げ|こ|ご|さ|ざ|し|じ|す|ず|せ|ぜ|そ|ぞ|た|だ|ち|
|82C0|ぢ|っ|つ|づ|て|で|と|ど|な|に|ぬ|ね|の|は|ば|ぱ|
|82D0|ひ|び|ぴ|ふ|ぶ|ぷ|へ|べ|ぺ|ほ|ぼ|ぽ|ま|み|む|め|
|82E0|も|ゃ|や|ゅ|ゆ|ょ|よ|ら|り|る|れ|ろ|ゎ|わ|ゐ|ゑ|
|82F0|を|ん|・|・|・|・|・|・|・|・|・|・|・| | | |
+----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|番号|0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|
+----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|8340|ァ|ア|ィ|イ|ゥ|ウ|ェ|エ|ォ|オ|カ|ガ|キ|ギ|ク|グ|
|8350|ケ|ゲ|コ|ゴ|サ|ザ|シ|ジ|ス|ズ|セ|ゼ|ソ|ゾ|タ|ダ|
|8360|チ|ヂ|ッ|ツ|ヅ|テ|デ|ト|ド|ナ|ニ|ヌ|ネ|ノ|ハ|バ|
|8370|パ|ヒ|ビ|ピ|フ|ブ|プ|ヘ|ベ|ペ|ホ|ボ|ポ|マ|ミ| |
|8380|ム|メ|モ|ャ|ヤ|ュ|ユ|ョ|ヨ|ラ|リ|ル|レ|ロ|ヮ|ワ|
|8390|ヰ|ヱ|ヲ|ン|ヴ|ヵ|ヶ|・|・|・|・|・|・|・|・|Α|
|83A0|Β|Γ|Δ|Ε|Ζ|Η|Θ|Ι|Κ|Λ|Μ|Ν|Ξ|Ο|Π|Ρ|
|83B0|Σ|Τ|Υ|Φ|Χ|Ψ|Ω|・|・|・|・|・|・|・|・|α|
|83C0|β|γ|δ|ε|ζ|η|θ|ι|κ|λ|μ|ν|ξ|ο|π|ρ|
|83D0|σ|τ|υ|φ|χ|ψ|ω|・|・|・|・|・|・|・|・|・|
|83E0|・|・|・|・|・|・|・|・|・|・|・|・|・|・|・|・|
|83F0|・|・|・|・|・|・|・|・|・|・|・|・|・| | | |
+----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|番号|0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|
+----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
このSJISコード一覧から全角の英数字は、
数字文字が「0x824F〜0x8258」、
英大文字が「0x8260〜0x8279」、
英小文字が「0x8281〜0x829A」の範囲です。
//------------------------------------------------------------------------------
// 全角英数字の半角変換 by 科学太郎
//==============================================================================
// 新規作成日:2017-09-17 (日) 20:00:00
// 最終更新日:2017-09-17 (日) 20:28:00
//------------------------------------------------------------------------------
// @URL(http://hsp.tv/play/pforum.php?mode=all&num=81349)→「全角英数字のみを半角変換」
// @URL(https://msdn.microsoft.com/ja-jp/library/cc448045.aspx)→「IsDBCSLeadByte」
//------------------------------------------------------------------------------
#include "Kernel32.as"
//--------------------------------------
// メイン部
//--------------------------------------
*Init
ank1="0123456789"
ank2="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ank3="abcdefghijklmnopqrstuvwxyz"
*Main
screen 0,640,480,SCREEN_NORMAL|SCREEN_FIXEDSIZE
syscolor 15:boxf:color:title "全角英数字の半角変換 by 科学太郎"
;変換
ZenToHanSample
;結果
mes s1
mes s2
stop
//--------------------------------------
// 文字変換のサンプル
//--------------------------------------
#deffunc ZenToHanSample
sdim s1:s1="0123:ABCDEF:abcdef:0123:ABCDEF:abcdef:あいうえお:アイウエオ"
sdim s2,1024
dim sn
repeat strlen(s1)
c=peek(s1,cnt)
IsDBCSLeadByte c
;半角
if(stat==0){
poke s2,sn,c:sn++
continue
}
;全角
d=peek(s1,cnt+1)
k=(c<<8)|d
if($824F<=k)and(k<=$8258):poke s2,sn,peek(ank1,k-$824F):sn++:continue(cnt+2) ;数字文字
if($8260<=k)and(k<=$8279):poke s2,sn,peek(ank2,k-$8260):sn++:continue(cnt+2) ;英大文字
if($8281<=k)and(k<=$829A):poke s2,sn,peek(ank3,k-$8281):sn++:continue(cnt+2) ;英小文字
;その他
poke s2,sn,c:sn++
poke s2,sn,d:sn++
continue(cnt+2)
loop
poke s2,sn,$00 ;NULL文字
return
//------------------------------------------------------------------------------
// End of sample213(全角英数字の半角変換).hsp
//------------------------------------------------------------------------------
↑
このような感じで自力で文字変換することになります。
低速ですが変換は出来ます。
もしも、高速処理を求めてる場合は HSP を使わないか、
変換処理だけを DLL ファイル化して HSP で呼び出すしか方法がないでしょう。