十進BASIC 第3掲示板

十進BASIC第3掲示板

十進BASICプログラミングについての質問や研究成果の公開にご利用ください。
メッセージ入力枠は右下をドラッグして拡大できます。 画像,URLは省略可能です。
編集/削除キーを入力しなくてもエラーにはなりませんが,何か適当な半角英数字4~8文字を指定してください。
特に,長文投稿の場合,プレビューで最後の行を確認しても,実際には途中で切れてしまうことがあるので,投稿後の確認が必要です。

日本語化 - しばっち

2025/04/13 (Sun) 07:56:22

日本語化

十進BASICを日本語表示します。

十進BASIC初心者向けにプログラム理解の補助のため
十進BASICの命令を日本語化して表示します。

但し、全ての命令や書き方に対応しているわけではありません。


このプログラムは単純な置換処理です。プログラム構造を解析しているわけではありません。
命令語を含んだ変数名や関数名などを誤変換する場合があります。

Paract Basic(並列処理関係)は未サポートです。


プログラムの処理上の都合により全て小文字に変換しています。


試しに変換してみた。(一部のみ)


開くダイアログ f$,"BASファイル|*.bas"
もし f$="" 成立なら 実行停止
ファイルを開く #1: 名前 f$
画面表示 f$
画面表示 繰り返し文字("-",60)
DO繰り返し
ラインファイル入力 1 ファイルが終わったら DOループ 脱出 :text$
もし 前方空白削除(text$)<>"" 成立なら
代入文 text$=changedeclaration$(text$) 注釈 宣言文変換
代入文 text$=changefunc$(text$) 注釈 関数変換
代入文 text$=changestate$(text$) 注釈 命令文変換
代入文 text$=changestate2$(text$) 注釈 命令文変換
IF文ここまで
画面表示 text$
LOOP ここまで
ファイルを閉じる #1
主プログラムここまで

外部 関数定義 changedeclaration$(text$) 注釈 宣言文変換
もし 前方空白削除(text$)="" 成立なら
代入文 changedeclaration$=""
関数定義 脱出
IF文ここまで
代入文 p=文字列検索(text$,文字コード(34))
もし p>0 成立なら
代入文 p2=文字列検索(text$,文字コード(34),p+1)
代入文 changedeclaration$=changedeclaration$(text$(1:p-1))&text$(p:p2)&changedeclaration$(text$(p2+1:文字列長(text$)))
関数定義 脱出
IF文ここまで
代入文 r1=文字列検索(text$,"rem ")
代入文 r2=文字列検索(text$,"!")
もし r1>0 成立なら
代入文 text$=transform$(text$,"rem ","注釈")
IF文ここまで
もし r2>0 成立なら
代入文 text$=transform$(text$,"!","注釈")
IF文ここまで
代入文 r3=文字列検索(text$,"注釈")
もし r3>0 成立なら
代入文 changedeclaration$=changedeclaration$(text$(1:r3-1))&text$(r3:文字列長(text$))
関数定義 脱出
IF文ここまで
DO繰り返し
代入文 l=文字列検索(text$," (")
もし l>0 成立なら 代入文 text$=transform2$(text$," (","(") 不成立なら DOループ 脱出 注釈 「SQR (」を「SQR(」へ
LOOP ここまで
DO繰り返し
代入文 l=文字列検索(text$," ,")
もし l>0 成立なら 代入文 text$=transform2$(text$," ,",",") 不成立なら DOループ 脱出
LOOP ここまで
DO繰り返し
代入文 l=文字列検索(text$," :")
もし l>0 成立なら 代入文 text$=transform2$(text$," :",":") 不成立なら DOループ 脱出
LOOP ここまで
DO繰り返し
代入文 l=文字列検索(text$," #")
もし l>0 成立なら 代入文 text$=transform2$(text$," #","#") 不成立なら DOループ 脱出
LOOP ここまで
代入文 text$=小文字化(text$) 注釈 全て小文字に変換
読み込みリセット
DO繰り返し
データが尽きたら DOループ 脱出 :a$,b$
代入文 l=文字列検索(text$,a$)
もし l>0 成立なら 代入文 text$=transform$(text$,a$,b$)
LOOP ここまで
代入文 changedeclaration$=text$
注釈 DATA "rem ","注釈 "
注釈 DATA "!","注釈 "
データ文 "randomize","乱数列初期化"
データ文 "dim ","配列宣言"
データ文 "declare ","宣言文"


以下略
---------------------------------------------------------------------------------
FILE GETOPENNAME F$,"BASファイル|*.bas"
IF F$="" THEN STOP
OPEN #1:NAME F$
PRINT F$
PRINT REPEAT$("-",60)
DO
LINE INPUT #1,IF MISSING THEN EXIT DO:TEXT$
PRINT CHANGE$(TEXT$)
LOOP
CLOSE #1
END

EXTERNAL FUNCTION CHANGE$(TEXT$)
IF LTRIM$(TEXT$)="" THEN
LET CHANGE$=""
EXIT FUNCTION
END IF
LET P=POS(TEXT$,CHR$(34))
IF P>0 THEN
LET P2=POS(TEXT$,CHR$(34),P+1)
LET CHANGE$=CHANGE$(TEXT$(1:P-1))&TEXT$(P:P2)&CHANGE$(TEXT$(P2+1:LEN(TEXT$)))
EXIT FUNCTION
END IF
LET R1=POS(TEXT$,"rem ")
LET R2=POS(TEXT$,"!")
LET R3=POS(TEXT$,"REM ")
IF R1>0 THEN
LET TEXT$=TRANSFORM$(TEXT$,"rem ","注釈")
END IF
IF R2>0 THEN
LET TEXT$=TRANSFORM$(TEXT$,"!","注釈")
END IF
IF R3>0 THEN
LET TEXT$=TRANSFORM$(TEXT$,"REM ","注釈")
END IF
LET R3=POS(TEXT$,"注釈")
IF R3>0 THEN
LET CHANGE$=CHANGE$(TEXT$(1:R3-1))&TEXT$(R3:LEN(TEXT$))
EXIT FUNCTION
END IF
DO
LET L=POS(TEXT$," (")
IF L>0 THEN LET TEXT$=TRANSFORM2$(TEXT$," (","(") ELSE EXIT DO
LOOP
DO
LET L=POS(TEXT$," ,")
IF L>0 THEN LET TEXT$=TRANSFORM2$(TEXT$," ,",",") ELSE EXIT DO
LOOP
DO
LET L=POS(TEXT$,", ")
IF L>0 THEN LET TEXT$=TRANSFORM2$(TEXT$,", ",",") ELSE EXIT DO
LOOP
DO
LET L=POS(TEXT$," :")
IF L>0 THEN LET TEXT$=TRANSFORM2$(TEXT$," :",":") ELSE EXIT DO
LOOP
DO
LET L=POS(TEXT$,": ")
IF L>0 THEN LET TEXT$=TRANSFORM2$(TEXT$,": ",":") ELSE EXIT DO
LOOP
DO
LET L=POS(TEXT$," #")
IF L>0 THEN LET TEXT$=TRANSFORM2$(TEXT$," #","#") ELSE EXIT DO
LOOP
LET TEXT$=LCASE$(TEXT$) ! 全て小文字に変換
LET TEXT$=CHANGEDECLARATION$(TEXT$) ! 宣言文変換
LET TEXT$=CHANGEFUNC$(TEXT$) ! 関数変換
LET TEXT$=CHANGEFUNC2$(TEXT$) ! 関数変換
LET TEXT$=CHANGESTATE$(TEXT$) ! 命令文変換
LET CHANGE$=CHANGESTATE2$(TEXT$) ! 命令文変換
!!LET CHANGE$=CHANGESTATE2$(CHANGESTATE$(CHANGEFUNC2$(CHANGEFUNC$(CHANGEDECLARATION$(LCASE$(TEXT$))))))
END FUNCTION

EXTERNAL FUNCTION CHANGEDECLARATION$(TEXT$) !宣言文変換
RESTORE
DO
READ IF MISSING THEN EXIT DO:A$,B$
LET L=POS(TEXT$,A$)
IF L>0 THEN LET TEXT$=TRANSFORM$(TEXT$,A$,B$)
LOOP
LET CHANGEDECLARATION$=TEXT$
!DATA "rem ","注釈 "
!DATA "!","注釈 "
DATA "randomize","乱数列初期化"
DATA "dim ","配列宣言"
DATA "declare ","宣言文"
DATA "program ","プログラム名"
DATA "public ","広域"
DATA "numeric ","数値変数を宣言"
DATA "string ","文字変数を宣言"
DATA "option angle radians","ラジアンモード"
DATA "option angle degrees","度数モード"
DATA "option arithmetic native","2進モード"
DATA "option arithmetic decimal_high","1000桁モード"
DATA "option arithmetic complex","複素数モード"
DATA "option arithmetic rational","有理数モード"
DATA "option character byte","バイト単位モード"
DATA "option character kanji","漢字モード"
DATA "option base","添え字下限指定"
END FUNCTION

EXTERNAL FUNCTION CHANGEFUNC$(TEXT$) ! 関数変換
RESTORE
DO
READ IF MISSING THEN EXIT DO:A$,B$
DO
LET L=POS(TEXT$,A$)
IF L>0 AND POS(" +-*/=()<>,;^:",TEXT$(L-1:L-1))>0 THEN LET TEXT$=TRANSFORM2$(TEXT$,A$,B$) ELSE EXIT DO ! 1つ手前の文字が「 +-*/=()<>,;^:」なら
LOOP
LOOP
LET CHANGEFUNC$=TEXT$
DATA "abs(","絶対値("
DATA "acos(","逆余弦("
DATA "asin(","逆正弦("
DATA "atn(","逆正接("
DATA "arg(","偏角("
DATA "bitand(","論理積("
DATA "bitor(","論理和("
DATA "bitnot(","論理反転("
DATA "bitxor(","排他的論理和("
DATA "blen(","バイト長("
DATA "len(","文字列長("
DATA "ceil(","最小の整数("
DATA "re(","実部("
DATA "im(","虚部("
DATA "conj(","共役複素数("
DATA "intsqr(","整数化平方根("
DATA "intlog2(","整数化2を底とする対数("
DATA "sqr(","平方根("
DATA "sin(","正弦("
DATA "cos(","余弦("
DATA "tan(","正接("
DATA "csc(","余割("
DATA "sec(","正割("
DATA "cot(","余接("
DATA "exp(","指数("
DATA "log(","自然対数("
DATA "log2(","2を底とする対数("
DATA "log10(","常用対数("
DATA "int(","最大の整数("
DATA "ip(","整数部("
DATA "fp(","小数部("
DATA "complex(","複素数("
DATA "ord(","文字コード("
DATA "mod(","余り("
DATA "round(","丸めた値("
DATA "sgn(","符号("
DATA "bstr$(","文字化("
DATA "bval(","数値化("
DATA "str$(","文字化("
DATA "chr$(","文字コード("
DATA "mid$(","部分文字列("
DATA "val(","数値化("
DATA "pos(","文字列検索("
DATA "repeat$(","繰り返し文字("
DATA "using$(","書式化("
DATA "ip(","整数部("
DATA "fp(","小数部("
DATA "remainder(","余り("
DATA "truncate(","四捨五入("
DATA "angel(","角度("
DATA "sinh(","双曲線正弦("
DATA "cosh(","双曲線余弦("
DATA "tanh(","双曲線正接("
DATA "eps(","差の絶対値の大きい方("
DATA "max(","大きい方("
DATA "min(","小さい方("
DATA "deg(","度へ変換("
DATA "rad(","ラジアンへ変換("
DATA "fact(","階乗("
DATA "comb(","二項係数("
DATA "perm(","順列の数("
DATA "lcase$(","小文字化("
DATA "ucase$(","大文字化("
DATA "ltrim$(","前方空白削除("
DATA "rtrim$(","後方空白削除("
DATA "subst$(","部分文字列("
DATA "left$(","始めの文字列("
DATA "right$(","末尾の文字列("
DATA "getkeystate(","キーの状態("
DATA "dot(","内積("
DATA "confirm$(","選択待ち("
DATA "numer(","分子("
DATA "denom(","分母("
DATA "gcd(","最大公約数("
DATA "lbound(","添え字の下限("
DATA "ubound(","添え字の上限("
DATA "maxsize(","要素数の上限("
DATA "size(","全要素数("
DATA "det(","行列式("
DATA "winhandle(","ハンドル値("
DATA "byte$(","8ビット非負整数イメージ("
DATA "dword$(","32ビット非負整数イメージ("
DATA "word$(","16ビット非負整数イメージ("
DATA "packdbl$(","倍精度実数イメージ("
DATA "unpackdbl(","倍精度実数値("
DATA "pixelx(","問題座標xに対応するピクセルx座標("
DATA "pixely(","問題座標yに対応するピクセルy座標("
DATA "worldx(","ピクセルx座標を問題座標に変換("
DATA "worldy(","ピクセルy座標を問題座標に変換("
DATA "problemx(","ピクセルx座標を問題座標に変換("
DATA "problemy(","ピクセルy座標を問題座標に変換("
DATA "colorindex(","色指標("
DATA "inv(","逆行列("
DATA "con(","添え字の上限を変更して全要素を1にする"
DATA "zer(","添え字の上限を変更して全要素を0にする"
DATA "idn(","単位行列を代入"
DATA "trn(","転置行列("
DATA "cross(","外積("
DATA "files(","ファイル名リスト("
END FUNCTION

EXTERNAL FUNCTION CHANGEFUNC2$(TEXT$) ! 関数変換2 "("がつかないもの
RESTORE
DO
READ IF MISSING THEN EXIT DO:A$,B$
DO
LET L=POS(TEXT$,A$)
IF L>0 AND (TEXT$(L+LEN(A$):L+LEN(A$))="" OR POS(" !+-*/=);,^<>",TEXT$(L+LEN(A$):L+LEN(A$)))>0) AND POS(" +-*/=()<>,;^:",TEXT$(L-1:L-1))>0 THEN LET TEXT$=TRANSFORM2$(TEXT$,A$,B$) ELSE EXIT DO
LOOP
LOOP
LET CHANGEFUNC2$=TEXT$
DATA "rnd","乱数"
DATA "maxnum","最大の正の数"
DATA "time$","現在時刻"
DATA "date$","現在日時"
DATA "time","経過秒数"
DATA "date","現在日時"
DATA "pi","円周率"
DATA "zer","配列に0を代入"
DATA "con","配列に1を代入"
DATA "idn","単位行列を代入"
DATA "nul$","空文字列"
END FUNCTION

EXTERNAL FUNCTION CHANGESTATE$(TEXT$) !SET ASK
RESTORE
DO
READ IF MISSING THEN EXIT DO:A$,B$
DO
LET L=POS(TEXT$,A$)
IF L>0 THEN LET TEXT$=TRANSFORM$(TEXT$,A$,B$) ELSE EXIT DO
LOOP
LOOP
LET CHANGESTATE$=TEXT$
DATA "set area style index","塗りつぶし方"
DATA "set area style","塗りつぶし方"
DATA "ask pixel size","画素数"
DATA "ask bitmap size","画素数読み出し"
DATA "set bitmap size","画素数設定"
DATA "ask area color","領域色取得"
DATA "ask character pending","先行入力バッファサイズ"
DATA "set color mix","パレット設定"
DATA "ask color mix","パレット読み出し"
DATA "set line color","ライン色設定"
DATA "set point color","点色設定"
DATA "set area color","領域色設定"
DATA "set color mode","カラーモード設定"
DATA "ask color mode","カラーモード取得"
DATA "ask area color","エリア色指標取得"
DATA "ask line color","線色指標取得"
DATA "ask line style","線種取得"
DATA "set line width","線の太さ設定"
DATA "ask line width","線の太さ取得"
DATA "ask point color","点色指標取得"
DATA "ask point style","点スタイル取得"
DATA "set point style","点スタイル設定"
DATA "set directory","カレントディレクトリ設定"
DATA "ask directory","カレントディレクトリ取得"
DATA "ask pixel array","各画素の色指標"
DATA "ask pixel value","色指標取得"
DATA "ask text color","テキストの色指標取得"
DATA "set text color","テキストの色指標設定"
DATA "set text height","テキストの高さ設定"
DATA "ask text height","テキストの高さ取得"
DATA "set text font","フォント設定"
DATA "set text justify","文字列基準位置設定"
DATA "ask text justify","文字列基準位置取得"
DATA "set text angle","テキストの角度設定"
DATA "ask test angle","テキストの角度取得"
DATA "set text background","文字背景設定"
DATA "ask text background","文字背景取得"
DATA "set window","ウィンドウ設定"
DATA "ask window","ウィンドウ取得"
DATA "set beam mode","描点の状態設定"
DATA "ask beam mode","描点の状態取得"
DATA "set draw mode hidden","ビットマップメモリーにのみ描画"
DATA "set draw mode explicit","内部ビットマップを画面に反映"
DATA "set draw mode overwrite","上書きモード"
DATA "set draw mode mask","減色混合"
DATA "set draw mode merge","加色混合"
DATA "set draw mode xor","二度書きすると戻る XOR"
DATA "set draw mode notxor","二度書きすると戻る NOTXOR"
DATA "set viewport","描画領域設定"
DATA "set margin","出力幅"
DATA "set zonewidth","出力欄の幅"
DATA "set#","ファイルポインター"
END FUNCTION

EXTERNAL FUNCTION CHANGESTATE2$(TEXT$) ! コマンド変換
RESTORE
DO
READ IF MISSING THEN EXIT DO:A$,B$
DO
LET L=POS(TEXT$,A$)
IF L>0 THEN LET TEXT$=TRANSFORM$(TEXT$,A$,B$) ELSE EXIT DO
LOOP
LOOP
LET CHANGESTATE2$=TEXT$
DATA "let ","代入文"
DATA " and","と"
DATA " or","又は"
DATA "not","否定"
DATA "file getname ","開くダイアログ"
DATA "file getopenname","開くダイアログ"
DATA "file getsavename","保存ダイアログ"
DATA "file splitname","ファイル名分割"
DATA "file rename","ファイル名変更"
DATA "file delete","ファイル削除"
DATA "file list","ファイル名リスト"
DATA "open","ファイルを開く"
DATA "close","ファイルを閉じる"
DATA "erase","ファイル消去"
DATA "rectype internal","内部形式"
DATA "organization stream","流れ編成"
DATA "mat print","配列PRINT表示"
DATA "mat write","配列WRITE表示"
DATA "mat read","配列データ読み込み"
DATA "mat redim","配列再定義"
DATA "write#","ファイルWRITE書き出し"
!DATA "write #","ファイルWRITE書き出し"
DATA "assoc print","印刷"
DATA "print#","ファイルPRINT書き出し"
!DATA "print #","ファイルPRINT書き出し"
DATA "print","画面表示"
DATA "exit for","FORループ脱出"
DATA "exit function","関数定義 脱出"
DATA "exit sub","副プログラム 脱出"
DATA "exit do","DOループ 脱出"
DATA "exit picture","絵定義 脱出"
DATA "exit handler","例外処理区 脱出"
DATA "call ","副プログラム 呼び出し"
DATA "clear","画面消去"
DATA "stop","実行停止"
DATA "for ","FOR繰り返し"
DATA " to ","から"
DATA " step","間隔"
DATA "next ","FORループここまで"
DATA "character input#","1文字読み込み"
!DATA "character input #","1文字読み込み"
DATA "character input prompt","1文字入力"
DATA "character input","1文字入力"
!DATA "line input #","ラインファイル入力"
DATA "line input#","ラインファイル入力"
DATA "line input","ライン入力"
DATA "mat line input","文字列配列入力"
DATA "mat input","配列入力"
DATA "access outin","読み書きモード"
DATA "access input","読み込みモード"
DATA "access out","書き込みモード"
DATA "input prompt","入力文"
DATA "input#","ファイル読み込み"
!DATA "input #","ファイル読み込み"
DATA "input","入力文"
DATA ",skip rest","余りを無視する"
DATA "pointer begin","ファイル先頭へ"
DATA "pointer end","ファイル末尾へ"
DATA "pointer same","直前に読み込んだ行へ"
DATA "read if missing then","データが尽きたら"
!DATA ", if missing then","ファイルが終わったら"
DATA ",if missing then","ファイルが終わったら"
!DATA ": if missing then","ファイルが終わったら"
DATA ":if missing then","ファイルが終わったら"
DATA "then","成立なら"
DATA "elseif","不成立なら もし"
DATA "case else","上記以外なら"
DATA "else","不成立なら"
DATA "end if","IF文ここまで"
DATA "end when","例外処理ここまで"
DATA "end select","選択ここまで"
DATA "end sub","副プログラムここまで"
DATA "end function","関数定義ここまで"
DATA "end picture","絵定義ここまで"
DATA "if ","もし"
DATA "do","DO繰り返し"
DATA "loop","LOOP ここまで"
DATA "until","成立するまで"
DATA "while","成立している間"
DATA "def","関数定義"
DATA "use","下記を使う"
DATA "function ","関数定義"
DATA "sub ","副プログラム定義"
DATA "picture ","絵定義"
DATA "draw grid0","格子描画"
DATA "draw axes0","軸描画"
DATA "draw grid","格子描画"
DATA "draw axes","軸描画"
DATA "draw ","図形描画"
DATA "end","主プログラムここまで"
DATA "randomize","乱数列初期化"
DATA "external","外部"
DATA "pause","一時停止"
DATA "wait delay","休止"
DATA "set echo","エコー表示"
DATA "name","名前"
DATA "break","実行中断"
DATA "trace on","追跡可"
DATA "trace off","追跡無効"
DATA "select case","選択"
DATA "case ","照合項目"
DATA "cause exception","例外発生"
DATA "chain","basファイル起動"
DATA "locate choice","数値選択"
DATA "locate value","スライドバー"
DATA "excute","外部プログラム起動"
DATA "when exception in","例外処理"
DATA "data","データ文"
DATA "read","データ文読み込み"
DATA "restore","読み込みリセット"
DATA "debug on","デバッグ活性"
DATA "debug off","デバッグ不活性"
DATA "goto","行番号へ移動"
DATA "gosub","行番号へ移動して戻る"
DATA "return","gosubの次へ戻る"
DATA "mat plot cells","領域塗りつぶし"
DATA "mat plot points","配列点描画"
DATA "mat plot lines","配列線描画"
DATA "mat plot area","配列エリア描画"
DATA "mat ","行列式"
DATA "using","書式指定"
DATA "merge","プログラム追加"
DATA "mouse poll","マウス入力"
DATA "flood","塗りつぶし"
DATA "paint","塗りつぶし"
DATA "plot area","塗りつぶし"
DATA "plot lines","直線描画"
DATA "plot points","点描画"
DATA "plot text","文字描画"
DATA "plot label","文字描画"
DATA "plot bezier","ベジェ曲線"
DATA "get point","座標入力"
DATA "gload","画像ファイル読み込み"
DATA "gsave","画像ファイル保存"
DATA "assign","dll登録"
DATA "playsound","サウンドファイル再生"
DATA "play","関連付けファイル"
DATA "swap ","値交換"
DATA "beep","ビープ音"
DATA "local","局所変数"
END FUNCTION

EXTERNAL FUNCTION TRANSFORM$(A$,B$,C$)
LET N=POS(A$,B$)
IF N>0 THEN
LET L$=LEFT$(A$,N-1)
LET R$=RIGHT$(A$,LEN(A$)-LEN(B$)-N+1)
LET A$=L$&" "&C$&" "&R$
END IF
LET TRANSFORM$=A$
END FUNCTION

EXTERNAL FUNCTION TRANSFORM2$(A$,B$,C$)
LET N=POS(A$,B$)
IF N>0 THEN
LET L$=LEFT$(A$,N-1)
LET R$=RIGHT$(A$,LEN(A$)-LEN(B$)-N+1)
LET A$=L$&C$&R$
END IF
LET TRANSFORM2$=A$
END FUNCTION

名前
件名
メッセージ
画像
メールアドレス
URL
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.