==================================== 944BASIC リファレンス マニュアル ==================================== 2002/10/13 版 このマニュアルは、944さん作成の 2002/2/2版リファレンス、 2002/9/19版コマンド一覧 をもとに作成しています。 ただし、記載事項の誤り、不具合等 の文責は kaol(kaol@officeww.com) にあります。 記載事項の誤り、不具合、改善案、 苦情、その他ご意見は、 kaol(kaol@officeww.com) までご連絡ください。 なお、このマニュアルを使用した ことで、いかなる損害または障害 が発生しても、責任は一切負えま せん。自己責任であることを了解 のうえ、ご利用ください。 また、サンプルコードは自由に複 写/変更して活用することができ ます。利用の際に、断り書きや連 絡は不要です。 - 目 次 - ======= 全般 ======= ◆ 用例(説明) ‥ コマンドの記入方法 ◆ 変数(説明) ‥ 式の値や数値、文字列を格納するところ ◆ 配列(説明) ‥ 番号のついた変数 ◆ マルチステートメント(説明) ‥ マルチステートメント(複数コマンド対応) ◆ 式(説明) ‥ 演算や各種処理、または数値や変数 ◆ 文字列(説明) ‥ 文字データ ◆ 数値(説明) ‥ 数値 ◆ 画面(説明) ‥ 画像の表示に使う3つの画面 ◆ スプライト(説明) ‥ 画像の切り出しと配置 ◆ ファイル名(説明) ‥ ファイル重複の回避や、ジャンル分けを行うためのファイル名 ◆ ジャンル(説明) ‥ ファイル名に使用するジャンルわけ ======= 演算子 ======= ◆ 演算子 ‥ 式の中で使用できる演算子 ======= 制御 ======= ◆ 行番号 ‥ ジャンプ先の行番号指定 ◆ * (ラベル) ‥ ジャンプ先のラベル指定 ◆ : ‥ マルチステートメント(複数コマンド対応) ◆ REM 944BASIC ‥ プログラムの定義 ◆ END ‥ プログラムの終了 ◆ IF .. THEN .. ELSE .. ‥ 条件による制御 ◆ IFBLK .. ELSEIF .. ELSE .. ENDIF ‥ 条件による制御(ブロック構造対応) ◆ GOTO ‥ 指定行へのジャンプ ◆ GOSUB ‥ 一時的に指定行にジャンプ ◆ RETURN ‥ GOSUB行の次行に戻る ◆ FOR 変数=.. TO .. STEP .. ‥ 繰り返し処理 ======= 一般 ======= ◆ REM ‥ コメントの記入 ◆ LET ‥ 式の値を変数に代入 ◆ = ‥ 式の値を変数に代入 ◆ DIM ‥ 配列の定義 ◆ DIM (定義時に初期値を代入) ‥ 配列の定義(同時に値を設定) ◆ SORT ‥ 配列内の要素を並べ替え ◆ SHUFFLE ‥ 配列内の要素を不規則な順番に並べ替え(シャッフル) ◆ CALC ‥ 計算式による値の算出 ◆ WAIT ‥ 100ms単位の処理待ち ◆ SYNC ‥ ZAURUS OSへ制御を戻す ◆ FASTTICK ‥ 10ms単位の割込み間隔指定 ◆ SYSCNT ‥ システムカウントの取得(100ms単位) ◆ SCREEN ‥ 画面サイズと位置の指定 ◆ MOVEAREA ‥ 常駐ソフトの移動可能範囲を指定 ◆ EVENT ‥ イベント割込みの有無を指定 ◆ EVENTNO ‥ 割込みイベント番号の取得 ◆ RUN ‥ 他BASICソフトの起動 ◆ INCLUDE ‥ 他のアプリケーションを後に連結 ◆ COMMAND ‥ BASICコマンドを実行 ◆ CPUCLOCK ‥ CPUクロックの設定 ◆ GETCPUCLOCK ‥ CPUクロックモードの取得(0-3) ◆ WORKLIST ‥ 変数リストの表示 ======= 文字表示 ======= ◆ PRINT ‥ 値の表示 ◆ LOCATE ‥ 表示位置(桁、行)の指定 ◆ GCURSOR ‥ 表示座標の指定 ◆ FONT ‥ フォントの指定 ◆ HEADER ‥ ヘッダー表示 ◆ FOOTER ‥ フッター表示 ======= 描画 ======= ◆ CLS ‥ 画面全体のクリア ◆ COLORFG ‥ 描画色の指定 ◆ COLORBG ‥ 背景色の指定 ◆ HSV ‥ HSV値による色の指定 ◆ LINE ‥ 直線の描画 ◆ BOX ‥ 四角形の描画 ◆ BOXFILL ‥ 塗りつぶし四角形の描画 ◆ BOXCIRCLE ‥ 角丸四角形の描画 ◆ CIRCLE ‥ 楕円の描画 ◆ PSET ‥ 点の描画 ◆ PAINT ‥ 囲まれた範囲の塗りつぶし ◆ POINT ‥ 画面指定座標の色を取得(16ビット値) ======= 画像表示 ======= ◆ SETPAGE ‥ 画面の書き込みページ指定 ◆ JPEG ‥ JPEG画像の表示 ◆ BITMAP ‥ ビットマップファイルの表示 ◆ SAVEBITMAP ‥ ビットマップファイルの保存 ◆ GCOPY ‥ 裏画面から表画面に画像転送表示 ◆ BOXMOVE ‥ 表画面上の転送表示 ◆ GETPIXMAP ‥ 表画面を裏画面へ取り込む ◆ SPRITE ‥ スプライトの定義 ◆ REFRESH ‥ スプライトの実表示/画面のリフレッシュ ◆ BG ‥ 背景画像(BG)の表示 ◆ PATTERN ‥ 配列からパターン表示 ◆ SPSEARCH ‥ スプライトの検索 ◆ SPCOLLISION ‥ スプライト衝突検索 ======= UI ======= ◆ INPUT ‥ 文字列の入力 ◆ KEYWAIT ‥ 任意キーの入力待ち ◆ MENU ‥ メニューの表示 ◆ MENUNO ‥ メニュー内の項目番号の取得 ◆ MESSAGE ‥ 文字列のポップアップ表示 ◆ YESNO ‥ はい、いいえを確認し取得 ◆ INKEY ‥ 1文字キー入力 ◆ PADA ‥ 決定キーの入力 ◆ PADB ‥ 逆送りキーの入力 ◆ PADC ‥ 順送りキーの入力 ◆ PADX ‥ 左右スクロールキーの入力 ◆ PADY ‥ 上下スクロールキーの入力 ◆ PADONA ‥ 決定キーのオン入力 ◆ PADONB ‥ 逆送りキーのオン入力 ◆ PADONC ‥ 順送りキーのオン入力 ◆ PADONX ‥ 左右スクロールキーのオン入力 ◆ PADONY ‥ 上下スクロールキーのオン入力 ◆ PEN ‥ ペン入力の状態の取得 ◆ PENX ‥ ペン入力のX座標の取得 ◆ PENY ‥ ペン入力のY座標の取得 ◆ PENV ‥ ペン入力の絶対X座標の取得 ◆ PENW ‥ ペン入力の絶対Y座標の取得 ======= 日時 ======= ◆ DATE ‥ 今日の日付の取得 ◆ TIME ‥ 現在の時刻の取得 ◆ GETMONTH ‥ 指定した日付の月の日数を算出 ◆ GETDATE ‥ 指定した日付に日数を増減した日付を算出 ◆ GETDATEDIF ‥ 日付1と日付2の日数差を算出 ◆ GETWEEK ‥ 日付に対する曜日を取得 ======= 数値 ======= ◆ INT ‥ 値を整数に変換 ◆ SGN ‥ 符号の算出 ◆ HEX ‥ 式に対する16進数の文字列を取得 ◆ HEXTODEC ‥ 16進数の文字列を10進数に変換 ◆ ABS ‥ 絶対値の算出 ◆ RND ‥ 乱数値の取得 ◆ RNDRG ‥ 開始から終了迄の範囲内乱数取得 ◆ RANDOMIZE ‥ 乱数発生の初期値設定 ◆ PI ‥ 円周率の取得 ◆ SIN ‥ サイン値の算出 ◆ COS ‥ コサイン値の算出 ◆ TAN ‥ タンジェント値の算出 ◆ ATAN ‥ アークタンジェント値の算出 ◆ ATAN2 ‥ アークタンジェント値の算出(座標指定) ◆ SINAG ‥ サイン値の算出(角度指定) ◆ COSAG ‥ コサイン値の算出(角度指定) ◆ TANAG ‥ タンジェント値の算出(角度指定) ◆ ATANAG ‥ アークタンジェント値の算出(角度指定) ◆ ATAN2AG ‥ アークタンジェント値の算出(座標指定、角度) ◆ SQR ‥ 平方根(スクエア値)の算出 ======= ファイル操作 ======= ◆ LOADTEXT ‥ テキスト読込 ◆ LOADCSV ‥ CSV読込 ◆ SAVETEXT ‥ テキストへセーブ ◆ SAVECSV ‥ CSVへセーブ ◆ FILESEARCH ‥ パターンに一致するファイル名の取得 ◆ FILECOPY ‥ ファイルのコピー ◆ FILEMOVE ‥ ファイルの移動 ◆ FILEDELETE ‥ ファイルの削除 ◆ SETDIRECTORY ‥ カレントディレクトリの設定 ◆ GETDIRECTORY ‥ カレントディレクトリの取得 ◆ DIRSEARCH ‥ パターンに一致するディレクトリ名の取得 ◆ DIRMAKE ‥ ディレクトリの作成 ◆ GETREADCNT ‥ 見つかったファイル数、データ数の取得 ======= 他ソフト操作 ======= ◆ APL ‥ 本体アプリとMOREソフトの起動 ◆ SETPEN ‥ 自動ぺン操作(MODE:0-3) ◆ OUTPUT ‥ 他のソフトへ文字を書き込み ======= 音声 ======= ◆ BEEP ‥ ビープ音の出力 ◆ EFFECT ‥ 効果音の出力 ◆ WAVE ‥ WAVE音源の再生 ◆ WAVESTOP ‥ WAVE再生の停止 ◆ GETWAVESTATUS ‥ WAVE再生状態の取得(0-2) ======= 機種情報 ======= ◆ GETMODELNO ‥ モデル番号を取得 ◆ GETROMVER ‥ ROMバージョンを取得 ◆ GETPATCHVER ‥ パッチバージョンを取得 ◆ GETMODEL ‥ モデル名を取得 ======= 電源 ======= ◆ POWEROFF ‥ 電源を切断 ◆ SETBATOFFCNT ‥ バッテリーオフカウント設定(100ms) ◆ SETACOFFCNT ‥ 電源オフカウント設定(100ms) ◆ GETBATTERY ‥ バッテリー状態を取得 ◆ GETACADAPTOR ‥ ACアダプタの接続状態を取得 ◆ GETBATOFFCNT ‥ バッテリパワーオフ時間の取得 ◆ GETACOFFCNT ‥ ACアダプタパワーオフ時間の取得 ======= 文字列 ======= ◆ CHR ‥ 式の値に対する文字を取得 ◆ ASC ‥ 指定した文字の文字コードを取得 ◆ LEN ‥ 文字列の長さを取得 ◆ STRCMP ‥ 文字列の比較 ◆ STR ‥ 明示的に文字列として扱う ◆ STRCAT ‥ 文字列連結 ◆ STRING ‥ 繰返した文字列を取得 ◆ INSTR ‥ 文字列1内に文字列2のある位置を取得 ◆ LEFT ‥ 文字列を左から取得 ◆ MID ‥ 文字列を途中から取得 ◆ RIGHT ‥ 文字列を右から取得 ────────────────── § 全般 ━━━━━━━━━━━━━━━━━━ ────────────────── 用例(説明) … コマンドの記入方法 [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 944BASICのコマンド記入方法 ◆ 説  明 ◆ 944BASICの英語コマンドは、半角の英大文字(ABC...)で記述します。日本語のコマンドも使用できるようになる予定ですが、現時点では正式サポートではありません。 コマンドは単独で実行できるものと、コマンドの後にパラメータを指定するものの2種類があります。コマンドとパラメータの間には半角のスペースを1つ入れます。パラメータを複数指定できるコマンドでは、, (カンマ)で区切って記述します。 また、一部のコマンドは、実行すると値を返します。このようなコマンドを関数と呼びます。関数にもパラメータが必要なものがあります。その場合は、( ) 内にパラメータを指定します。このとき、関数と ( ) の間にはスペースを空けないようにしてください。 行の先頭には、半角のスペースで空白を入れることができます。適当な間隔で字下げすることで、プログラムを読みやすくすることができます。 ,(カンマ) や : (マルチステートメント)の前後には、スペースを入れることができます。ただし、演算子(+、-、*、=など)の前後に空白を入れることはできません。 また、適宜空行を入れてプログラムを読みやすくすることもできます。 ◆ 注意事項 ◆ 日本語のコマンドも使用できるようになる予定ですが、現時点では正式サポートではありません。日本語コマンドは、全角で入力しますが、スペースに全角スペースを使うことはできません。 ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'コマンドの記入例' REM コメントはREM以降に記述 A=1: B=5 : REM コロンを使用すると、1行に複数のコマンド REM 演算子(=や*)の前後にはスペースを入れない FOR I=A TO B C=C*I : REM 行の先頭にスペースを入れて字下げが可能 NEXT I PRINT '1から5の階乗は、'; PRINT C; PRINT 'です。' KEYWAIT ────────────────── 変数(説明) … 式の値や数値、文字列を格納するところ [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 変数=式 ◆ 説  明 ◆ 変数は、式の値や数値、文字列を格納するところです。 変数=式(または、LET 変数=式)と記述することで、変数に文字列や数値、式の値が代入されます。 数値を格納する変数と文字列を格納する変数に表記上の区別はありません(ほかのBASIC言語のように、文字列変数に$を付ける必要はありません)。どちらも半角の英数字による変数名を使用します。 ただし、プログラムでの処理上、文字列と数値の区別は重要です。文字列の変数と数値変数は表記からは区別できないため、注意してください。 特に指定がなければ、変数は数値が格納されているものとして扱われます。 たとえば、変数Aに文字列変数Bの値を代入する場合は、変数Bが文字列であることを明示するために、A=STR(B)とします。A=Bとすると、Aには0が代入されます。 変数内での数値の精度は倍精度です。 ◆ 注意事項 ◆ 変数名には、半角31文字までの英数字を使用してください。ただし、先頭の文字はアルファベットで始める必要があります。また、944BASICのコマンドと同じ名前の変数は使用できません。 文字列を代入するには、その文字列を ' ' または " " で囲んで記述します。変数に格納できる最大文字数は255文字(半角)です。 ◆ 関連項目 ◆ =、LET、文字列、数値 ◆ サンプル ◆ REM 944BASIC '変数' REM 変数の使用例 A=900 B=44 A=A+B PRINT A REM 文字列を変数に代入 B='BASIC' A=STR(A) REM 文字列を結合 A=STRCAT(A,B) PRINT A KEYWAIT ────────────────── 配列(説明) … 番号のついた変数 [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ DIM 変数(式) ◆ 説  明 ◆ 配列は、変数に番号(添え字)を付けて、複数の変数をグループのように扱うための仕組みです。共通点や関連性のあるデータを管理しやすくなります。 配列には次元という考え方があり、より複雑な構造(表構造や3次元表構造)のデータを管理できます。944BASICの配列では、次元を3次元まで使用できます。 ◆944BASICでの2次元配列のイメージ 0 1 2 0 (0-0), (1-0), (2-0) 1 (0-1), (1-1), (2-1) 2 (0-2), (1-2), (2-2) ◆ 注意事項 ◆ 配列の要素(配列を構成する1つ1つの変数)数は、プログラム全体で最大4096です。 配列の1要素に格納できる最大文字数は255文字(半角)です。 配列名には、半角31文字までの英数字を使用してください。ただし、先頭の文字はアルファベットで始める必要があります。 文字列を表すには、その文字列を ' ' または " " で囲んで記述します。配列の1要素に格納できる最大文字数は255文字(半角)です。 ◆ 関連項目 ◆ DIM ◆ サンプル ◆ REM 944BASIC '2次元配列の代入' REM 2次元配列の代入 DIM B(3,3) REM 配列に代入 B(0,0)=0,0,0,0 B(0,1)=0,1,2,1 B(0,2)=0,3,1,0 B(0,3)=0,0,0,0 REM 配列の内容を表示 FOR I=0 TO 3 FOR J=0 TO 3 LOCATE I,J PRINT B(I,J) NEXT J NEXT I KEYWAIT ────────────────── マルチステートメント(説明) … マルチステートメント(複数コマンド対応) [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ コマンド:コマンド ◆ 説  明 ◆ 1行に複数のコマンドを記述する場合に使用します。IF ... THEN の THEN 以降に複数の文を記述する場合や、プログラムの見通しをよくする場合に使用します。 ただし、あまり多用すると、プログラムが読みにくくなるため、注意が必要です。 ◆ 注意事項 ◆ FOR〜NEXT、またはINKEY、MENUなどの入力系のコマンドでは、マルチステートメントを使用しないでください。不具合の原因となります。 これ以外のコマンドでも、マルチステートメントの後部で使用すると、正常に実行されない場合があります。 ◆ 関連項目 ◆ : ◆ サンプル ◆ ────────────────── 式(説明) … 演算や各種処理、または数値や変数 [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 例: A+B 例: A 例: SIN(A)*20 ◆ 説  明 ◆ このマニュアルの書式部分で「式」と示しているところは、演算や各種処理、または数値や変数などを指しています(演算式に限りません)。 ◆ 注意事項 ◆ 演算式では、不要なスペースを使用しない方が安全です。 × 1 + 2 ○ 1+2 不要なスペースが原因で、演算結果が正しくならない可能性があります。 ◆ 関連項目 ◆ ◆ サンプル ◆ ────────────────── 文字列(説明) … 文字データ [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 例: A='文字列' 例: B=STR(A) ◆ 説  明 ◆ 944BASICでは、変数で文字列と数値を扱う際に、従来のBASICとは異なる配慮が必要です。 第一に、変数の見た目上、文字列変数と数値変数の区別がありません。 第二に、変数の操作では、文字列の入っている変数でも、一部の処理を除いて数値として扱われます(数字以外の文字列の入った変数は0になります)。 第三に、文字列が数字(半角)の場合、型変換を行わなくても、数値として扱われます。 文字列を代入するには、その文字列を ' ' または " " で囲んで記述します。変数に格納できる最大文字数は255文字(半角)です。 変数に文字列変数を代入するにはSTRを使用すること、文字列の結合にはSTRCATを使用することに注意してください。また、文字列の比較には、STRCMPを使用します。 ◆ 注意事項 ◆ ' を文字列として、変数に代入するには、A="'" のように、" "で囲んで代入します。 " の場合は、A='"' のように、' 'で囲んで代入します。 256文字以上の文字列を変数に代入すると、256文字以降の文字が正しく代入されなかったり、不具合が発生する可能性があります。 ◆ 関連項目 ◆ 変数 ◆ サンプル ◆ REM 944BASIC '数値と文字列' A='900' B='44' C=A+B PRINT C : REM 944と表示 C=STRCAT(A,B) PRINT C : REM 90044と表示 A='九四四' B=A PRINT B : REM 0と表示 B=STR(A) PRINT B : REM 九四四 と表示 KEYWAIT ────────────────── 数値(説明) … 数値 [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 例: A=1234 ◆ 説  明 ◆ 944BASICでは、数値の演算処理を倍精度で行っています。数値変数の精度も倍精度になります。 944BASICでは、変数で文字列と数値を扱う際に、従来のBASICとは異なる配慮が必要です。 第一に、変数の見た目上、文字列変数と数値変数の区別がありません。 第二に、変数の操作では、文字列の入っている変数でも、一部の処理を除いて数値として扱われます(数字以外の文字列の入った変数は0になります)。 第三に、文字列が数字(半角)の場合、型変換を行わなくても、数値として扱われます(従来のBASICのVAL関数のような処理は不要です)。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ 変数 ◆ サンプル ◆ REM 944BASIC '数値と文字列' A='900' B='44' C=A+B PRINT C : REM 944と表示 C=STRCAT(A,B) PRINT C : REM 90044と表示 A='九四四' B=A PRINT B : REM 0と表示 B=STR(A) PRINT B : REM 九四四 と表示 KEYWAIT ────────────────── 画面(説明) … 画像の表示に使う3つの画面 [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 例: SETPAGE 2 ◆ 説  明 ◆ 944BASICでは、画像の表示や描画を行うために、3種類の画面(ページ)を使用します。 0ページは、実際に表示を行う画面です(表画面)。 1ページは、表示の準備を行うための画面です(裏画面)。 2ページは、スプライトやBGに加工する画像(テクスチャ)を読み込むための、テクスチャ画面です。 ページを指定するには、画像表示や描画を行うコマンドの前で、SETPAGEを実行します。SETPAGEを使用しなかった場合は、既定値として 0 ページ(表画面)に描画します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SETPAGE ◆ サンプル ◆ ────────────────── スプライト(説明) … 画像の切り出しと配置 [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 例: SPRITE NO,PNO,X1,Y1,X2,Y2,V,W,MX,MY ◆ 説  明 ◆ 944BASICでは、画像の一部分(または全部)を切り出し、その画像を自由な位置に表示することができます。 このような画像処理技術や、切り出した画像そのもを指して、スプライトと呼びます。 スプライトには1つ1つに番号を指定します。スプライトが重なる場合は、番号の若いものほど手前に表示されます。 また、純黒(RGB値が 0,0,0)は透明色として扱われ、後ろの画像(背景や重なっているスプライト)が透けて表示されます。 ◆ 注意事項 ◆ 切り出し元の画像をテクスチャと呼びます。テクスチャは、テクスチャ専用のページに読み込むと(SETPAGE 2を事前に実行)、利用者の目に触れずに加工することができます。 ◆ 関連項目 ◆ SPRITE、REFRESH ◆ サンプル ◆ REM 944BASIC 'SIN サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 COLORBG 0,0,0:COLORFG 255,255,255:CLS OFFSET=120 FOR X=0 TO 240 Y=SIN(X/20)*120+OFFSET SPRITE 1,1,1, X,Y, 96,0, 16,16 REFRESH XX,YY, XX,YY, 16,16 REFRESH X,Y, X,Y, 16,16 XX=X: YY=Y NEXT X KEYWAIT ────────────────── ファイル名(説明) … ファイル重複の回避や、ジャンル分けを行うためのファイル名 [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 例: ABCOSMP0.BAS ◆ 説  明 ◆ 944BASICでは、ファイル名の付け方にルールがあります。このルールには、次のような目的があります。 ・ファイル重複の回避 ・ジャンルの自動振り分け ・開発者の特定 ・削除ルール ファイル名は、半角英数字で 8文字+3文字の形式を使用し、次のルールに従って決定してください。 ABC O SMP 1 .BAS 開発者コード-ジャンル-ソフト名-バージョン-拡張子 ・開発者コード 944BASICのソフトを公開するには、開発者コードを登録する必要があります(登録については、944BASICホームページを参照してください)。登録後に通知された英数字3文字を使用します。 ・ジャンル 所定のジャンル分けに従って、アルファベット1文字を指定します。ジャンル分けの詳細については、「ジャンル(説明)」の項を参照してください。 ・ソフト名 英数字3文字を指定します。ソフトの略記などを使って、できるだけわかりやすい名前を付けてください。 ・バージョン 基本的には、数字1文字を指定します。βレベルの場合は0、正式版で1以降の数字を目安に使用してください。 ・拡張子 .BASを使用します。これ以外の拡張子は使用しないでください。 ◆ 注意事項 ◆ ファイル名を8桁にしておかないと、ファイル操作に関係するコマンドなどが、正しく動作しない場合があります。 ファイルサイズは、最大128KBまでです。 ◆ 関連項目 ◆ ジャンル ◆ サンプル ◆ ────────────────── ジャンル(説明) … ファイル名に使用するジャンルわけ [全般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 例: ABCOSMP0.BAS ◆ 説  明 ◆ 944BASICでは利用するソフトを選択しやすいように、次のようにアルファベットでジャンルを区分しています。 A - アクションゲーム、リアルタイム系 B - ビジネス、業務アプリ、ビジネスツール C - 電卓、グラフ、家計簿、計算、単位 D - PIM、データ管理、データベース、予定 E - 子供用、エンターテイメント、マルチメディア、文化 F - ファイル、システム、ランチャー、設定 G - 静止画、動画、アニメ、ムービー、カメラ、3D画像、画像管理 H - ペット、レジャー、運動、趣味、 I - インターネット、メール J - 世界、地図、乗物、鉄道、車 K - キーボードタイプ、秘密、暗号 L - 学問、語学、教育用、時間割 M - 音楽、楽譜、楽器、MIDI、MP3、カラオケ N - 読物、絵本、マニュアル O - ライブラリー、サンプル、デモ P - パズル、テーブル、トランプ、麻雀、花札 Q - クイズ、占い、手相、対話型、Q&A R - RPG、アドベンチャー、シミュレーション S - シューティング、レース、スポーツゲーム T - テキスト、テキストエディタ、テキストビューア U - ユーティリティー、ツール、アクセサリー V - バラエティー、パーティー道具 W - 時計、カレンダー、壁紙、スクリーンセーバー X - 年齢制限ソフト Y (未使用) Z (未使用) これらのジャンルのアルファベット1文字を、ファイル名の4文字目に指定してください (ファイル名の付け方については、"ファイル名"の項を参照してください)。 ◆ 注意事項 ◆ ジャンルは、今後変更される可能性があります。 また、O のサンプルは、目的が完全にサンプルやライブラリである場合にのみ使用します (極力、各ジャンルに振り分けてください)。 ◆ 関連項目 ◆ ファイル名 ◆ サンプル ◆ ────────────────── § 演算子 ━━━━━━━━━━━━━━━━━━ ────────────────── 演算子 … 式の中で使用できる演算子 [演算子] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ ( ), * , /, %, +, -, =, <, <=, >, >=, <> ◆ 説  明 ◆ 各種演算を行います。 ( :括弧を開始します ) :括弧を終了します * :積算(×)、またはAND演算を行います。 / :除算(÷)を行います。 + :加算、または演算を行います。 - :減算を行います。 % :余りを求めます (A%B を実行すると、0〜B-1 の範囲の値が返ります)。 = :値が同じか比較します。 < :値が未満か比較します。 <=:値が以下か比較します。 > :値が越えるか比較します。 >=:値が以上か比較します。 <>:値が異なるか比較します。 ◆ 注意事項 ◆ 現時点では、AND演算子やOR演算子はありません。 ANDは(A)*(B)、ORは(A)+(B)で代用してください。 (AとBは変数や式を表します) 演算式では、不要なスペースを使用しない方が安全です。 × 1 + 2 ○ 1+2 不要なスペースが原因で、演算結果が正しくならない可能性があります。 演算子を使って、文字列を比較することはできません。文字列の比較には、STRCMPを使用します。 比較を行う演算子では、比較が成立した場合(真の場合)は1が返ります。比較が成立しなかった場合(偽の場合)は0が返ります。 ◆ 関連項目 ◆ STRCMP ◆ サンプル ◆ ────────────────── § 制御 ━━━━━━━━━━━━━━━━━━ ────────────────── 行番号 … ジャンプ先の行番号指定 [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 例: 100 A=1 110 A=A+1 120 PRINT A : 200 END ◆ 説  明 ◆ 行番号は行の先頭に記入する番号で、GOTOコマンドやGOSUBコマンドのジャンプ先として使用できます。 行番号には、0〜9の数字を使用します。番号が順番にならんでいなくても問題ありません。 ◆ 注意事項 ◆ 944BASICでは通常、行番号は必要ありませんが、初期のBASICのように行番号をつけてもかまいません。 GOTOやGOSUBを使用するには、ジャンプ先に行番号かラベルが必要です。 ◆ 関連項目 ◆ * (ラベル)、GOTO、GOSUB ◆ サンプル ◆ ────────────────── * (ラベル) … ジャンプ先のラベル指定 [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ *ラベル名 ◆ 説  明 ◆ GOTOコマンドやGOSUBコマンドのジャンプ先となるラベルを指定します。 行の先頭に * を記入し、2文字目以降は英数字を使用してください。 ◆ 注意事項 ◆ GOTOやGOSUBを使用するには、ジャンプ先に行番号かラベルが必要です。 ラベル名には、半角15文字までの英数字を使用してください。ただし、944BASICのコマンドと同じ名前のラベルは使用できません。ラベルに関しては、先頭文字が数字でもかまいません。 ◆ 関連項目 ◆ 行番号、GOTO、GOSUB ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'LINE/GOSUB サンプル' COLORFG 0,0,0 GOSUB *DRAW COLORFG 255,255,255 GOSUB *DRAW KEYWAIT END *DRAW FOR X=0 TO 200 Y=SIN(X/20)*120+120 LINE X,Y,X+40,Y SYNC NEXT X RETURN (サンプル 2) REM 944BASIC 'GOSUBサンプル' DIM S(2)='じわ','じわっ','じわわっ' FOR I=0 TO 2 GOSUB *FADEIN NEXT I END *FADEIN FOR J=0 TO 255 STEP 4 SYNC:WAIT 1 JJ=255-J:COLORFG JJ,JJ,JJ LOCATE 2,2:PRINT S(I) NEXT J RETURN ────────────────── : … マルチステートメント(複数コマンド対応) [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ コマンド:コマンド ◆ 説  明 ◆ 1行に複数のコマンドを記述する場合に使用します。IF ... THEN の THEN 以降に複数の文を記述する場合や、プログラムの見通しをよくする場合に使用します。 ただし、あまり多用すると、プログラムが読みにくくなるため、注意が必要です。 ◆ 注意事項 ◆ FOR〜NEXT、またはINKEY、MENUなどの入力系のコマンドでは、マルチステートメントを使用しないでください。不具合の原因となります。 これ以外のコマンドでも、マルチステートメントの後部で使用すると、正常に実行されない場合があります。 ◆ 関連項目 ◆ マルチステートメント(説明) ◆ サンプル ◆ ────────────────── REM 944BASIC … プログラムの定義 [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ REM 944BASIC '文字列' ◆ 説  明 ◆ 先頭行に記述して、プログラムの定義を行います。文字列部分がプログラム名として扱われます。 ◆ 注意事項 ◆ このコマンドはファイルの1行目に必ず記入してください。 1行目にこのコマンドがないとプログラムが実行されません(9B プログラム ランチャーに表示されません)。 ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'サンプルプログラム' MESSAGE 'Hello, World!' END ────────────────── END … プログラムの終了 [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ END ◆ 説  明 ◆ BASICプログラムを終了します。 ◆ 注意事項 ◆ ENDはプログラムを意図的に終了させる場合に使用します。ENDはプログラム上不要な場合は、存在しなくても問題ありません。 通常、プログラムは[戻る]キーまたは[中断]キーで強制終了できます。 ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'END サンプル' HEADER '[決定]で終了' *LOOP SYNC C=C+1 LOCATE 10,6: PRINT C IF PADA THEN END GOTO *LOOP ────────────────── IF .. THEN .. ELSE .. … 条件による制御 [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ IF 式 THEN コマンド ELSE コマンド ◆ 説  明 ◆ 条件式を判定して、条件が成立する(式の値が0以外になる)場合に、THEN以降のコマンドを実行します。 条件が成立しない(式の値が0になる)場合は、ELSE以降のコマンドを実行します。 処理上必要がない場合は、ELSE以降は省略することができます。 ◆ 注意事項 ◆ 複数のコマンドを処理する場合は、THENまたはELSE以降でマルチステートメント(:)を使用します。 条件判定後に複数行のコマンドを実行するには、IFBLKを使用します (ブロック構造対応の条件制御)。 THEN 以降の処理を記述しないで、ELSE 以降を記述すると(例: IF I=0 THEN ELSE GOTO *A)、正しく処理されない可能性があります。 ◆ 関連項目 ◆ IFBLK ◆ サンプル ◆ REM 944BASIC 'IF サンプル' REM Aに1-3の乱数をセット A=(RND+TIME)%3+1 PRINT '1-3の数字を当ててください。' INPUT B,1,4 IF A=B THEN MES=STRCAT('正解は', A, 'でした。大当たり!!') ELSE MES=STRCAT('正解は', A, 'でした。残念・・') MESSAGE MES END ────────────────── IFBLK .. ELSEIF .. ELSE .. ENDIF … 条件による制御(ブロック構造対応) [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ IFBLK 式1 コマンド : ELSEIF 式2 コマンド : ELSEIF 式3 コマンド : ELSE コマンド : ENDIF ◆ 説  明 ◆ 上から順に式の値を判定して、その式が成立する場合に、直後の複数のコマンド(ブロック)を実行します。 処理上必要がない場合は、ELSEのブロックは省略できます。 ◆ 注意事項 ◆ IFBLK .. ENDIF間で、GOTOやRETURNを使用してジャンプすると(ENDIFまで到達しないと)、内部処理(スタック処理)に異常が発生して、動作不具合の原因となる可能性があります。 ◆ 関連項目 ◆ IF ◆ サンプル ◆ REM 944BASIC 'IFBLK サンプル' DIM M(2)='朝','昼','夜' MENU M,3,0 REM 選択したメニュー番号によって表示を変える IFBLK MENUNO=0 PRINT 'おはようございます!' ELSEIF MENUNO=1 PRINT 'こんにちは!' ELSEIF MENUNO=2 PRINT 'こんばんは!' ELSE PRINT '??エラー??' ENDIF KEYWAIT END ────────────────── GOTO … 指定行へのジャンプ [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GOTO 行番号|*ラベル ◆ 説  明 ◆ 指定した行番号かラベルにジャンプします。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ GOSUB、* (ラベル) ◆ サンプル ◆ (サンプル1) REM 944BASIC '入力待ちの例' REM 無限ループで入力を待つ *LOOP SYNC LOCATE 2,2 PRINT 'キー入力またはペンタッチがあるまで、待機します。' REM 入力があるかどうかを判定 IF (INKEY)+(PEN) THEN CLS: LOCATE 2,2: PRINT '終了します!': WAIT 2: GOTO *BREAK GOTO *LOOP *BREAK PRINT 'さようなら・・・' END (サンプル2) REM 944BASIC 'GOTOの悪い見本' F=0 *ST GOTO *L1 *L3 IF F>4 THEN GOTO *FN ELSE GOTO *ST *L2 IF F=2 THEN GOTO *L1 ELSE GOTO *L3 *L1 IF F=0 THEN PRINT 'スパゲッティはいかが?' ELSE PRINT 'GOTOで行ったり来たりを繰り返し、ぐちゃぐちゃにからまったプログラムを俗に「スパゲッティ」と呼びます。' F=F+1: GOTO *L2 *FN KEYWAIT END ────────────────── GOSUB … 一時的に指定行にジャンプ [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GOSUB 行番号|*ラベル ◆ 説  明 ◆ 指定した行番号かラベルにジャンプします。 ジャンプ先のサブルーチン(ラベル以降に記述した一連の処理)でRETURNを使用すると、GOSUBの次の行に制御が戻ります。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ RETURN、GOTO、* (ラベル) ◆ サンプル ◆ REM 944BASIC 'GOSUBサンプル' DIM S(2)='じわ','じわっ','じわわっ' FOR I=0 TO 2 GOSUB *FADEIN NEXT I END *FADEIN FOR J=0 TO 255 STEP 4 SYNC:WAIT 1 JJ=255-J:COLORFG JJ,JJ,JJ LOCATE 2,2:PRINT S(I) NEXT J RETURN ────────────────── RETURN … GOSUB行の次行に戻る [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ RETURN ◆ 説  明 ◆ GOSUBコマンドの次行に制御を戻します。 GOSUBからジャンプしたサブルーチン(ラベル以降に記述した一連の処理)で使用します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ GOSUB、* (ラベル) ◆ サンプル ◆ REM 944BASIC 'GOSUBサンプル' DIM S(2)='じわ','じわっ','じわわっ' FOR I=0 TO 2 GOSUB *FADEIN NEXT I END *FADEIN FOR J=0 TO 255 STEP 4 SYNC:WAIT 1 JJ=255-J:COLORFG JJ,JJ,JJ LOCATE 2,2:PRINT S(I) NEXT J RETURN ────────────────── FOR 変数=.. TO .. STEP .. … 繰り返し処理 [制御] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ FOR 変数=式1 TO 式2 STEP 式3 ◆ 説  明 ◆ FORとNEXTの間に記述した処理を、指定した回数繰り返します。回数は、式1の値を加算して式2の値になるまでです。 処理を繰り返すたびに、式1の値にSTEPの値を加算します。変数にはその値が自動的に代入されます。 式1の値が式2の値を越えた時点でループが終了します。 STEP以降は省略が可能です(省略すると、STEP 1として扱われます)。 ◆ 注意事項 ◆ FOR文は最低1回は処理が実行されます。 STEPにはプラスの値の整数値のみ使用してください。マイナスの値は使用できません。 GOTO文などでFOR〜NEXTループを抜けると、内部処理(スタック処理)に異常が発生し、動作不具合の原因となります。 FORループの途中でループを抜ける場合は、カウンタ変数の値を終了値(TOの後に指定した値)に設定するなどの方法を利用してください(サンプル 2を参照)。 FOR行ではマルチステートメントを使用できません。動作の不具合が発生します。 FOR〜NEXT間には、何らかの処理を記述する必要があります。処理を記述しないと、不具合が発生する可能性があります。 ◆ 関連項目 ◆ ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'FOR NEXT サンプル' COLORBG 0,0,0:COLORFG 0,255,0 FONT 48:CLS REM 入れ子(ネスト)も可能 FOR I=0 TO 31 A='' FOR J=0 TO 59 REM RNDにTIME(時刻)を足して、より不規則化する R=RND+TIME%10:R=STR(R) A=STRCAT(A,R) NEXT J PRINT A NEXT I KEYWAIT (サンプル 2) REM 944BASIC 'FOR NEXT サンプル2' REM ランダムシード - RNDを不定回数繰り返して、より不規則化する FOR I=(TIME%60) R=RND NEXT I R=RND+TIME%20 FOR I=1 TO 20 PRINT 'FOR 〜 NEXT '; PRINT I; PRINT ' 回目' REM 変数 I を強制的に終了値にして、ループを抜ける IF I=R THEN PRINT 'STOP': I=20 NEXT I KEYWAIT END ────────────────── § 一般 ━━━━━━━━━━━━━━━━━━ ────────────────── REM … コメントの記入 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ REM 文字列 ◆ 説  明 ◆ プログラム中にコメントを記入する場合に使用します。 行にREMと記述すると、それより右側に記述された文字は無視されます。 ◆ 注意事項 ◆ プログラムにコメントを適量記入すると、プログラムの品質向上や維持管理に効果的です。 ◆ 関連項目 ◆ ◆ サンプル ◆ ────────────────── LET … 式の値を変数に代入 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ LET 変数=式 ◆ 説  明 ◆ 変数に式の値や数値、文字列を代入します。 先頭のLETは省略できます。 ◆ 注意事項 ◆ 変数名には、半角31文字までの英数字を使用してください。ただし、先頭の文字はアルファベットで始める必要があります。また、944BASICのコマンドと同じ名前の変数は使用できません。 文字列を代入するには、その文字列を ' ' または " " で囲んで記述します。変数に格納できる最大文字数は255文字(半角)です。 ◆ 関連項目 ◆ 変数(説明)、= ◆ サンプル ◆ REM 944BASIC '変数の使用例' REM 変数の使用例 LET A=900 REM 次のようにLETは省略可能 B=44 LET A=A+B PRINT A REM 文字列を変数に代入 LET B='BASIC' A=STR(A) REM 文字列を結合 A=STRCAT(A,B) PRINT A KEYWAIT ────────────────── = … 式の値を変数に代入 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ 変数 = 式 ◆ 説  明 ◆ 変数に式の値や数値、文字列を代入します。 LET 変数=式 の LET を省略した形式です。 ◆ 注意事項 ◆ 変数名には、半角31文字までの英数字を使用してください。ただし、先頭の文字はアルファベットで始める必要があります。また、944BASICのコマンドと同じ名前の変数は使用できません。 文字列を代入するには、その文字列を ' ' または " " で囲んで記述します。変数に格納できる最大文字数は255文字(半角)です。 ◆ 関連項目 ◆ 変数(説明)、LET ◆ サンプル ◆ REM 944BASIC '変数' REM 変数の使用例 A=900 B=44 A=A+B PRINT A REM 文字列を変数に代入 B='BASIC' A=STR(A) REM 文字列を結合 A=STRCAT(A,B) PRINT A KEYWAIT ────────────────── DIM … 配列の定義 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ DIM 変数(式) ◆ 説  明 ◆ 配列変数を定義します。 配列の次元は、1次元から3次元までを使用できます。多次元変数を定義するには、定義時に各次元の要素数を指定します (書式の例を参照してください)。 配列の添え字は、0 からカウントされます。0〜( )内に指定した数字まで(指定した数字+1個)の要素を利用できます。たとえば、DIM A(3) を実行した場合、A(0), A(1), A(2), A(3) の 4 つの要素を利用できることになります。 ◆ 注意事項 ◆ 配列の添え字を超える値を使用するとエラーになります。 配列の要素(配列を構成する1つ1つの変数)数は、プログラム全体で最大4096です。 配列の1要素に格納できる最大文字数は255文字(半角)です。 配列名には、半角31文字までの英数字を使用してください。ただし、先頭の文字はアルファベットで始める必要があります。 文字列を表すには、その文字列を ' ' または " " で囲んで記述します。配列の1要素に格納できる最大文字数は255文字(半角)です。 ◆ 関連項目 ◆ 配列(説明)、DIM (定義時に初期値を代入) ◆ サンプル ◆ REM 944BASIC 'DIM サンプル - 2次元配列の代入' REM 2次元配列の代入 DIM B(3,3) REM 配列に代入 B(0,0)=0,0,0,0 B(0,1)=0,1,2,1 B(0,2)=0,3,1,0 B(0,3)=0,0,0,0 REM 配列の内容を表示 FOR I=0 TO 3 FOR J=0 TO 3 LOCATE I,J PRINT B(I,J) NEXT J NEXT I KEYWAIT ────────────────── DIM (定義時に初期値を代入) … 配列の定義(同時に値を設定) [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ DIM 変数(式)=値1,値2… 例: DIM A(3)=0,1,2,3 ◆ 説  明 ◆ 配列変数を定義し、同時に初期値を設定します。 配列の次元は、1次元から3次元までを使用できます。多次元変数を定義するには、定義時に各次元の要素数を指定します (書式の例を参照してください)。 配列の添え字は、0 からカウントされます。0〜( )内に指定した数字まで(指定した数字+1個)の要素を利用できます。たとえば、DIM A(3) を実行した場合、A(0), A(1), A(2), A(3) の 4 つの要素を利用できることになります。 ◆ 注意事項 ◆ 配列の添え字を超える値を使用するとエラーになります。 配列の要素(配列を構成する1つ1つの変数)数は、プログラム全体で最大4096です。 配列の1要素に格納できる最大文字数は255文字(半角)です。 配列名には、半角31文字までの英数字を使用してください。ただし、先頭の文字はアルファベットで始める必要があります。 文字列を表すには、その文字列を ' ' または " " で囲んで記述します。配列の1要素に格納できる最大文字数は255文字(半角)です。 ◆ 関連項目 ◆ 配列(説明)、DIM ◆ サンプル ◆ REM 944BASIC '配列宣言時に代入' DIM M(4)='メニュー0','メニュー1','メニュー2','メニュー3','メニュー4' MENU M,5,0 S=STRCAT('選択したのは「',M(MENUNO),'」です。') MESSAGE S ────────────────── SORT … 配列内の要素を並べ替え [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SORT 配列,開始,終了,カラム,方向 配列: 並べ替える配列 開始: 並べ替えの対象とする配列内の開始位置 終了: 並べ替えの対象とする配列内の終了位置 カラム: 並べ替える2次元配列の要素の番号 方向: 0(昇順)、1(降順) ◆ 説  明 ◆ 配列の要素を並べ替えます。コマンド中に指定した配列が、そのまま書き換えられます。 配列の要素の中から、並べ替えの対象とする範囲を指定できます。配列の全要素を並べ替える場合は、開始に0、終了に配列の要素数(=DIM文で指定した値+1)を指定します。 2次元配列の場合、並べ替えの基準とする要素を指定できます。 DIM A(2,2) A(0,0)=2,あ,C A(0,1)=3,う,A A(0,2)=1,い,B という2次元配列では、 SORT A,0,3,0,0 - 1番目の要素(数字) SORT A,0,3,1,0 - 2番目の要素(ひらがな) SORT A,0,3,2,0 - 3番目の要素(英字) で、それぞれ並べ替えることができます。 ◆ 注意事項 ◆ ※コマンドの仕様、またはリファレンスの記載内容が、今後変更される可能性があります。(2002.10.12) 要素数以下のパラメータは省略できます。省略した場合は、並べ替えの対象は開始位置以降の全要素、カラムは1番目、方向は0(昇順)になります。 ◆ 関連項目 ◆ SHUFFLE ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'ソート(並べ替え)サンプル' DIM A(5) A(0)=8,6,0,2,4,7 PRINT '8,6,0,2,4,7の真ん中6,0,2,4をソート' SORT A,1,5 FOR I=0 TO 5 PRINT A(I) NEXT I A(0)='う','あ','ん','い','お','え' PRINT 'う,あ,ん,い,お,えの全体をソート' SORT A,0,6 FOR I=0 TO 5 PRINT A(I) NEXT I KEYWAIT (サンプル 2) REM 944BASIC '多次元配列のソート' DIM A(2,2) A(0,0)=3,'B','あ' A(0,1)=1,'A','う' A(0,2)=2,'C','い' FOR I=0 TO 2 SORT A,0,2,I,0: REM 第I列でソート M=STRCAT('配列の',I,'列目でソート') PRINT M FOR J=0 TO 2 FOR K=0 TO 2 PRINT A(K,J);: PRINT '-'; NEXT K PRINT ' ' NEXT J NEXT I KEYWAIT ────────────────── SHUFFLE … 配列内の要素を不規則な順番に並べ替え(シャッフル) [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SHUFFLE 配列,開始,要素数 配列: 並べ替える配列 開始: 並べ替えの対象とする配列内の開始位置 要素数: 開始位置からの要素数 ◆ 説  明 ◆ 配列の要素を不規則な順に並べ替えます(シャッフル)。コマンド中に指定した配列が、そのまま書き換えられます。 配列の要素の中から、シャッフルの対象とする範囲を指定できます。配列の全要素をシャッフルする場合は、開始に0、終了に配列の要素数(=DIM文で指定した値+1)を指定します。 ◆ 注意事項 ◆ ※コマンドの仕様、またはリファレンスの記載内容が、今後変更される可能性があります。(2002.10.12) 現在のところ、要素数に開始位置より小さな数を指定すると、正しく動作しません。 開始位置以下のパラメータは省略できます。省略した場合は、シャッフルの対象は全要素になります。 ◆ 関連項目 ◆ SORT ◆ サンプル ◆ REM 944BASIC 'SHUFFLE サンプル' DIM A(9)=0,1,2,3,4,5,6,7,8,9 PRINT 'この配列の2〜7をシャッフルします' REM 元の配列を表示 GOSUB *PRN KEYWAIT REM 配列をシャッフル SHUFFLE A,2,4 REM シャッフルされた配列を表示 GOSUB *PRN KEYWAIT END *PRN FOR I=0 TO 9 LOCATE 2,I+2: PRINT A(I) NEXT I PRINT 'PUSH KEY' RETURN ────────────────── CALC … 計算式による値の算出 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ CALC 文字列 文字列: 数値や数式を表す文字列、または文字列変数 ◆ 説  明 ◆ 文字列または変数に指定された内容を数式として演算し、表示します。 計算結果はCALC実行後にそのまま表示され、PRINTなどを使用する必要はありません。表示位置は、LOCATEまたはGCURSORで指定することができます。 ◆ 注意事項 ◆ 通常の四則演算のほかに、944BASICの関数も使用できます (例: CALC 'SQR(2)')。 ◆ 関連項目 ◆ LOCATE、GCURSOR ◆ サンプル ◆ REM 944BASIC 'CALCサンプル' PRINT '計算式を入力してください (40桁まで、関数も可)。' INPUT A, 40, 4 CALC A KEYWAIT END ────────────────── WAIT … 100ms単位の処理待ち [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ WAIT 式 式: 数値 ◆ 説  明 ◆ 指定した待ち時間、プログラムの処理を停止します。待ち時間は100ms(1/10秒)単位で指定します (WAIT 10では、約1秒間停止します)。 ◆ 注意事項 ◆ このコマンドの実行中はZaurusOSに制御が戻りません (キーやペンによる入力を認識できなくなったり、強制終了できなくなるおそれがあります)。そのため、長い時間を指定する場合は注意が必要です。 一定時間、処理を停止するにはSYSCNTなどを応用することができます。 ◆ 関連項目 ◆ SYSCNT ◆ サンプル ◆ REM 944BASIC 'WAIT サンプル' FONT 128 FOR I=0 TO 5 C=5-I LOCATE 8,4:PRINT C WAIT 10 NEXT I S='WAIT SAMPLE' FOR I=1 TO LEN(S) L=LEFT(S,I) LOCATE 4,8: PRINT L WAIT 4 NEXT I PRINT 'PUSH KEY' KEYWAIT ────────────────── SYNC … ZAURUS OSへ制御を戻す [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SYNC ◆ 説  明 ◆ BASICから強制的にZAURUS OSへ制御を戻します。ペン入力やキー入力などのイベントを認識するには、事前にSYNCを実行しておく必要があります。 ◆ 注意事項 ◆ ペン入力系や、各種キー入力系のコマンドは、SYNCを実行しないと入力が受け付けられず、入力内容を正しく受け取れません。 通常、表示ループの先頭には、SYNCを入れてください。ループ内でこのコマンドを実行しておかないと制御がBASIC側に完全に移ってしまい、ペンやキーによる制御ができなくなるおそれがあります。 ◆ 関連項目 ◆ FASTTICK ◆ サンプル ◆ REM 944BASIC 'SYNCサンプル' *LOOP SYNC LOCATE 0,10 PRINT 'ループにSYNCを入れると、' PRINT 'キーやペン入力を正しく感知します。' PRINT '言うなれば、ループの最中に、まわりに目配りするコマンドですね。。' PRINT 'ペンタッチするか[決定]を押すと終了' IF (PADA)+(PEN) THEN END GOTO *LOOP ────────────────── FASTTICK … 10ms単位の割込み間隔指定 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ FASTTICK 割込間隔 割込間隔: 数値で割り込み間隔を指定(10ms単位) ◆ 説  明 ◆ ZAURUS OSからの割り込みを受け入れる間隔を指定します。 ◆ 注意事項 ◆ 長い間隔を指定するほど、割り込みが間遠くなり、結果として処理に時間がかかるようになります。 SYNCなど、ZAURUS OSと同期を取るコマンドと併用してウェイトの代用にする(=負荷をかける)ことができます。 ◆ 関連項目 ◆ SYNC ◆ サンプル ◆ REM 944BASIC 'FASTTICKサンプル' FASTTICK 3 HEADER 'FASTTICK 3' GOSUB *COUNT CLS REM 動作速度の変化に注目 FASTTICK 30 HEADER 'FASTTICK 30' GOSUB *COUNT KEYWAIT *COUNT FOR I=1 TO 100 SYNC LOCATE 10,10 PRINT I NEXT I RETURN ────────────────── SYSCNT … システムカウントの取得(100ms単位) [一般(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SYSCNT ◆ 説  明 ◆ システムカウントを 100 ms 単位で取得します。 システムカウントは、ZAURUS内のストップウォッチのような存在で、リセット時点からの経過時間(1/10秒刻み)を表しています(サンプル1を参照してください)。 ◆ 注意事項 ◆ SYSCNTとループを組み合わせることで、おおむね正確にプログラムを待機させることができます。WAITと異なり、ループ内でSYNCを実行することで、待機中にキーやペン入力を受け付けることができます(サンプル2を参照してください)。 ◆ 関連項目 ◆ FASTTICK、TIME ◆ サンプル ◆ (サンプル1) REM 944BASIC 'SYSCNT サンプル1' *LOOP SYNC S=SYSCNT LOCATE 5,5:PRINT ' ' LOCATE 5,5:PRINT S GOTO *LOOP (サンプル2) REM 944BASIC 'SYSCNT サンプル2' PRINT 'PUSH KEY' KEYWAIT S=SYSCNT *LOOP1 SYNC IF SYSCNT-S>=30 THEN GOTO *EXIT GOTO *LOOP1 *EXIT PRINT '3秒経過!' KEYWAIT ────────────────── SCREEN … 画面サイズと位置の指定 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SCREEN X,Y,V,W X: 表画面のX座標 Y: 表画面のY座標 V: 画面サイズの横幅 W: 画面サイズの縦幅 ◆ 説  明 ◆ 全画面を使用する必要がない場合に、ウィンドウのサイズを指定します。常駐ソフト(見かけ上、別のアプリケーションと同時に使用できるソフト)を作成できます。 X,Yでウィンドウの左上の絶対座標を指定し、V,Wでウィンドウのサイズを指定します。 ウィンドウの左端部分をペンでドラッグすると、ウィンドウを自由な位置に移動できます。MOVEAREAを実行すると、ペン操作で移動できる範囲を指定できます。 ◆ 注意事項 ◆ 常駐ソフトを作成する場合は、描画ルーチンをループさせて、描画が正しく行われるようにしてください。 別のソフトと常駐ソフトを交互に使用するような場合には、EVENTを実行して、常駐ソフトがイベント(ペン入力やキー入力など)を受け取れるようにする必要があります。 ◆ 関連項目 ◆ MOVEAREA、EVENT ◆ サンプル ◆ (サンプル 1) REM 944BASIC '常駐ウィンドウ' EVENT 100,999,1 SCREEN 100,100,124,32 COLORBG 192,192,160:CLS *LOOP SYNC GCURSOR 0,10 PRINT '常駐ウィンドウも楽々' GOTO *LOOP (サンプル 2) REM 944BASIC '常駐和風時計' SCREEN 220,160,16,80 EVENT 100,999,1: FONT 48 DIM D(5) DIM K(9)='〇','一','二','三','四','五','六','七','八','九' *LOOP SYNC BOX 0,0,15,79:BOX 1,1,14,78 T=TIME D(0)=INT(T/100000),INT(T/10000)%10,'時',INT(T/1000)%10,INT(T/100)%10,'分' FOR I=0 TO 5 GCURSOR 4,3+12*I IF (I=2)+(I=5) THEN PRINT D(I) ELSE PRINT K(D(I)) NEXT I GOTO *LOOP ────────────────── MOVEAREA … 常駐ソフトの移動可能範囲を指定 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ MOVEAREA X,Y,V,W X: 移動範囲左上のX座標 Y: 移動範囲左上のY座標 V: 移動範囲の横幅 W: 移動範囲の縦幅 ◆ 説  明 ◆ SCREENで作成した常駐ウィンドウの移動範囲を指定します。 ◆ 注意事項 ◆ MOVEAREA 0,0,0,0を実行すると、常駐ウィンドウを固定できます(ペンで移動できなくなります)。 ◆ 関連項目 ◆ SCREEN ◆ サンプル ◆ REM 944BASIC '常駐ウィンドウ (固定)' EVENT 100,999,1 SCREEN 100,100,124,32 MOVEAREA 0,0,0,0 COLORBG 192,192,160:CLS *LOOP SYNC GCURSOR 0,10 PRINT '常駐ウィンドウ(固定)' GOTO *LOOP ────────────────── EVENT … イベント割込みの有無を指定 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ EVENT 開始番号,終了番号,MODE 開始番号: イベント番号(開始) 終了番号: イベント番号(終了) MODE: 割り込みを無視(0)/許可(1) ◆ 説  明 ◆ BASICソフト実行中に受け取る(または無視する)割り込みイベント(ペン、キーボード、タイマーなど)を番号で指定します。イベント番号は、100 から 999 までの範囲を指定できます。 ◆ 注意事項 ◆ 常駐ソフトを作成した場合は、別のソフトの使用中にイベントを受け取れるようにする必要があります (例: EVENT 100,999,1)。このコマンドを使用して、特定のイベントを無視させることもできます。 イベント番号はEVENTNO関数を使用すると取得できます。 ◆ 関連項目 ◆ SCREEN、EVENTNO ◆ サンプル ◆ REM 944BASIC 'EVENT TEST' EVENT 100,999,1 *LOOP SYNC EV=EVENTNO LOCATE 10,10 PRINT EV WAIT 3 GOTO *LOOP ────────────────── EVENTNO … 割込みイベント番号の取得 [一般(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ EVENTNO ◆ 説  明 ◆ 割込み時に取得されたイベント番号を返します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ EVENT ◆ サンプル ◆ REM 944BASIC 'EVENT TEST' EVENT 100,999,1 *LOOP SYNC EV=EVENTNO LOCATE 10,10 PRINT EV WAIT 3 GOTO *LOOP ────────────────── RUN … 他BASICソフトの起動 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ RUN ファイル名 ファイル名: BASICファイル名 ◆ 説  明 ◆ 他の944BASICソフトを実行します。 ◆ 注意事項 ◆ 起動元のプログラムは、このコマンド実行時に停止します。 RUNで起動したプログラムを終了しても、元のBASICプログラムには制御が戻りません。 ◆ 関連項目 ◆ APL、INCLUDE ◆ サンプル ◆ REM 944BASIC 'FILESEARCH/RUNサンプル' DIM FILE(512) SETDIRECTORY 'F1:\944BASIC\' REM 内の拡張子が.BASのファイルを、配列FILEに格納 FILESEARCH '*.BAS',FILE REM 見つかったファイル数GETREADCNTで C=GETREADCNT REM 配列FILEをソート SORT FILE,0,C-1 REM メニュー表示 MENU FILE,C,0 REM 選択された.BASファイルを実行 RUN FILE(MENUNO) ────────────────── INCLUDE … 他のアプリケーションを後に連結 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ INCLUDE ファイル名 ファイル名: BASICファイル名 ◆ 説  明 ◆ 外部のBASICファイルを、プログラムファイルの一番最後に連結します。 ◆ 注意事項 ◆ INCLUDEをファイル冒頭に記述しても、その位置にファイルは読み込まれません。常に、ファイルの最後に連結されます。 ◆ 関連項目 ◆ RUN ◆ サンプル ◆ ────────────────── COMMAND … BASICコマンドを実行 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ COMMAND コマンド コマンド: 文字列(BASICコマンド) ◆ 説  明 ◆ 指定した BASIC コマンドを実行します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'COMMAND サンプル' PRINT 'BASIC コマンドを入力してください。' PRINT ' (例: CIRCLE 100,100,80,80)。' REM INPUTでコマンド入力しCOMMANDで実行する *LOOP SYNC INPUT S,50,3 COMMAND S GOTO *LOOP ────────────────── CPUCLOCK … CPUクロックの設定 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ CPUCLOCK MODE MODE: 動作クロックの指定(1-3) ◆ 説  明 ◆ MI-E21以降の機種では、ソフトウェアによりCPUのクロックを設定できます。 MODEには次の値を指定します。 1: MI-E21の標準クロック(96MH) 2: MI-E21の1.5倍クロック(144MH) 3: MI-E21の2倍クロック(192MH) ◆ 注意事項 ◆ このコマンドはMI-E21以降の機種以外では0が返ります。 MI-E21以降の機種で1.5倍、2倍モードを使用した際の不具合、故障、充電池の消耗等、その他いかなる事象にも責任は負えませんので、ご了承ください。 (なお、MI-E21では、ムービーの再生でCPUクロックの1.5倍モードが使用されています) ◆ 関連項目 ◆ GETCPUCLOCK ◆ サンプル ◆ REM 944BASIC 'CPUCLOCK サンプル' SCREEN 20,20,96,24:EVENT 100,999,1 IF GETCPUCLOCK=0 THEN MESSAGE 'MI-E21以降でないと利用できません':END CL=1 DIM M(2)='1 ','1.5','2 ' *LOOP SYNC LOCATE 1,0:PRINT '← CPUCLOCK →' CLOLD=CL:CL=CL+PADX IF (CL<1) THEN CL=1 IF (CL>3) THEN CL=3 IF CLOLD<>CL THEN CPUCLOCK CL LOCATE 1,1: PRINT 'CLOCK ・'; PRINT M(CL-1) WAIT 1 GOTO *LOOP ────────────────── GETCPUCLOCK … CPUクロックモードの取得(0-3) [一般(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETCPUCLOCK ◆ 説  明 ◆ CPUのクロックモードを返します。 0: MI-E21以外の機種 1: MI-E21の標準クロック(96MH) 2: MI-E21の1.5倍クロック(144MH) 3: MI-E21の2倍クロック(192MH) ◆ 注意事項 ◆ このコマンドはMI-E21以降の機種以外では0が返ります。 MI-E21以降の機種で1.5倍、2倍モードを使用した際の不具合、故障、充電池の消耗等、その他いかなる事象にも責任は負えませんので、ご了承ください。 (なお、MI-E21の1.5倍モードはムービーの再生で使用されています) ◆ 関連項目 ◆ CPUCLOCK ◆ サンプル ◆ REM 944BASIC 'CPUCLOCK サンプル' SCREEN 20,20,96,24:EVENT 100,999,1 IF GETCPUCLOCK=0 THEN MESSAGE 'MI-E21以降でないと利用できません':END CL=1 DIM M(2)='1 ','1.5','2 ' *LOOP SYNC LOCATE 1,0:PRINT '← CPUCLOCK →' CLOLD=CL:CL=CL+PADX IF (CL<1) THEN CL=1 IF (CL>3) THEN CL=3 IF CLOLD<>CL THEN CPUCLOCK CL LOCATE 1,1: PRINT 'CLOCK ・'; PRINT M(CL-1) WAIT 1 GOTO *LOOP ────────────────── WORKLIST … 変数リストの表示 [一般] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ WORKLIST ◆ 説  明 ◆ 画面に変数のリストを表示します。 ◆ 注意事項 ◆ 開発時のデバックに使用します。表示されるのは最低限の内容です。 WORKLIST実行時に、フォントのサイズは最小に設定されます。WORKLISTの実行後にPRINTなどを使用する場合は、FONTを実行してフォントサイズを元に戻すなどの注意が必要です。 ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'WORKLIST サンプル' REM WORKLIST実行でフォントサイズが変わることを示すサンプルです。 A=900 B=44 PRINT A KEYWAIT WORKLIST KEYWAIT CLS A=A+B PRINT A: REM フォントサイズに注意 KEYWAIT WORKLIST KEYWAIT END ────────────────── § 文字表示 ━━━━━━━━━━━━━━━━━━ ────────────────── PRINT … 値の表示 [文字表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PRINT 文字列 文字列: 文字列または文字列変数 ◆ 説  明 ◆ 画面に変数の値や文字列を表示します。 FONTで指定した文字サイズを使用して、COLORFGで指定した色と、COLORBGで指定した背景色で表示されます。 PRINTを実行すると通常は、表示した内容の直後で自動的に改行されます。 前回表示した内容の直後に続けて表示するには、文字列または変数の直後に ; を付加します(LOCATE、GCURSORを使用して表示位置を直接指定することもできます)。 ◆ 注意事項 ◆ PRINTに演算式を直接記入することはできません。演算結果を事前に変数に代入してください。 ◆ 関連項目 ◆ FONT、COLORFG、COLORBG、LOCATE、GCURSOR ◆ サンプル ◆ REM 944BASIC 'PRINTサンプル' PRINT '1+1っていくつ?' KEYWAIT A=1+1 PRINT '答えは'; PRINT A; PRINT 'です。' KEYWAIT END ────────────────── LOCATE … 表示位置(桁、行)の指定 [文字表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ LOCATE X,Y X: 画面左からの横文字数 Y: 画面上からの縦文字数 ◆ 説  明 ◆ 文字列の表示位置を、画面左上角からの文字数単位(桁、行)で指定します。 位置は、0から始まり(左上角が0,0)、半角文字でカウントした数字で指定します。 ◆ 注意事項 ◆ 文字の大きさによって、画面内の表示位置は変わります (画面内に表示できる文字の桁数、行数が変わるため)。 画面の絶対位置を指定する場合は、GCURSORで座標を指定してください。 ◆ 関連項目 ◆ FONT、GCURSOR、PRINT、MENU、INPUT、CALC ◆ サンプル ◆ REM 944BASIC 'LOCATE サンプル' FONT 64 FOR I=1 TO 20 LOCATE 14,I PRINT 'こんにちは!' NEXT I KEYWAIT CLS: FONT 96 FOR I=1 TO 20 LOCATE 14,I PRINT 'こんにちは!' NEXT I KEYWAIT END ────────────────── GCURSOR … 表示座標の指定 [文字表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GCURSOR X,Y X: 画面左からの横ドット数 Y: 画面上からの縦ドット数 ◆ 説  明 ◆ 文字列の表示位置を、画面左上角からのドット数単位で指定します。 左上角の座標は0,0になります。 ◆ 注意事項 ◆ 文字数単位(桁、行)で表示位置を指定する場合はLOCATEを使用します。 ◆ 関連項目 ◆ FONT、LOCATE、PRINT、MENU、INPUT、CALC ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'GCURSOR サンプル' CLS: FONT 64 FOR I=1 TO 240 STEP 20 GCURSOR 84,I PRINT 'こんにちは!' NEXT I KEYWAIT CLS: FONT 96 FOR I=1 TO 240 STEP 20 GCURSOR 84,I PRINT 'こんにちは!' NEXT I KEYWAIT END (サンプル 2) REM 944BASIC 'GCURSORサンプル2' FONT 96:CLS FOR I=0 TO 216 SYNC COLORBG 96,96,255:COLORFG 255,32,32 GCURSOR I,36: PRINT ' ●' COLORBG 0,0,0:COLORFG 160,192,96 GCURSOR 216-I,36: PRINT '★ ' NEXT I KEYWAIT ────────────────── FONT … フォントの指定 [文字表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ FONT 式 式: 整数 ◆ 説  明 ◆ 文字列描画やメニュー表示時に使用するフォントのサイズや属性を指定します。 サイズは、16の倍数で指定します。 0: 表示されません。 16: 表示されません。 32: 8×16ドットフォント 48: 4×10ドットフォント 64: 6×12ドットフォント(通常フォント) 80: 6×12ドットフォント 96: 8×16ドットフォント 112: 12×24ドットフォント 128: 16×32ドットフォント 上の数値に、次の数値を加算すると表示属性を指定できます。 描画色はCOLORFGで指定した色、背景色はCOLORBGで指定した色を意味します。 0: FBSET - 描画色と背景色ともに描画します。 1: FSET - 描画色のみで描画します(背景透明)。 2: BSET - 背景色のみ描画します(文字透明、白抜き文字)。 3: FBEX - 描画色を背景色に反転して描画します。 ◆ 注意事項 ◆ フォントはZAURUSの機種によりサイズやフォント種類が違うことがあります。 ◆ 関連項目 ◆ PRINT、MENU ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'FONT サンプル' S='abCDあいウエ漢字〒★' FOR I=0 TO 12 CLS SZ=192-(I*16) SS=STR(SZ):SH=STRCAT('FONT ',SS) HEADER SH FONT SZ:GCURSOR 2,24:PRINT S KEYWAIT NEXT I KEYWAIT (サンプル 2) REM 944BASIC 'FONT サンプル2' S='abCDあいウエ漢字〒★' FOR I=0 TO 3 CLS:COLORFG 192,64,128 IF I<>3 THEN BOXFILL 1,20,238,40 ELSE COLORFG 0,0,0:BOXFILL 0,0,239,239 COLORFG 0,0,0:COLORBG 255,255,255 SH=STRCAT('FONT 64+',I、' 描画色=黒、背景色=白') HEADER SH FONT 64+I:GCURSOR 12,24:PRINT S KEYWAIT SH=STRCAT(SH,' 1ドット右') HEADER SH FONT 64+I:GCURSOR 13,24:PRINT S KEYWAIT NEXT I ────────────────── HEADER … ヘッダー表示 [文字表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ HEADER 文字列 文字列: 表示する文字列 ◆ 説  明 ◆ 画面の最上部に文字列を表示します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ FOOTER ◆ サンプル ◆ REM 944BASIC 'HEADERサンプル' HEADER 'HEADERサンプル - PUSH KEY' KEYWAIT FOR I=0 TO 20 S='サンプル' REM SPに連続したスペースを代入 SP=STRING(' ',21-I) S=STRCAT(SP,S) HEADER S WAIT 1 NEXT I KEYWAIT ────────────────── FOOTER … フッター表示 [文字表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ FOOTER 文字列 文字列: 表示する文字列 ◆ 説  明 ◆ 画面の最下部に文字列を表示します。 ◆ 注意事項 ◆ エラー発生時は、FOOTER部分にエラーの内容が表示されます。 横型機種では正しく表示されない可能性があります。 ◆ 関連項目 ◆ HEADER ◆ サンプル ◆ REM 944BASIC 'FOOTERサンプル' MESSAGE '横型機種では正しく実行されない可能性があります。' FOOTER 'FOOTERサンプル - PUSH KEY' KEYWAIT FOR I=0 TO 20 S='サンプル' REM SPに連続したスペースを代入 SP=STRING(' ',21-I) S=STRCAT(SP,S) FOOTER S WAIT 1 NEXT I KEYWAIT ────────────────── § 描画 ━━━━━━━━━━━━━━━━━━ ────────────────── CLS … 画面全体のクリア [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ CLS ◆ 説  明 ◆ 画面を背景色でクリアします(全画面塗り潰し)。文字、画像に関わらず全画面を消去します。 ◆ 注意事項 ◆ 特定の色で画面をクリアする場合は、COLORBGで背景色を事前に指定しておく必要があります。 ◆ 関連項目 ◆ COLORBG ◆ サンプル ◆ REM 944BASIC 'CLS/COLORBG サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2:BITMAP '9B_REF.BMP',0,0 COLORBG 128,96,192:CLS LOCATE 2,8:PRINT 'CLS サンプル - PUSH KEY' KEYWAIT CLS SPRITE 1,1,1, 80,80, 0,16, 48,48 REFRESH 0,0,0,0,240,320 HEADER 'CLS サンプル' FOOTER 'CLS サンプル' LOCATE 2,4:PRINT 'HEADERや画像も消えます - PUSH KEY' KEYWAIT COLORBG 64,192,128: CLS LOCATE 2,4:PRINT 'COLORBGで指定した色で塗りつぶされます - PUSH KEY' KEYWAIT ────────────────── COLORFG … 描画色の指定 [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ COLORFG R,G,B R: 赤色(0〜255) G: 緑色(0〜255) B: 青色(0〜255) ◆ 説  明 ◆ PRINTでの文字表示やLINEなど図形の描画に使用する色を、RGB値で指定します。 指定する数値が大きいほど、色は明るくなります。0,0,0では純黒、255,255,255で純白になります。 ◆ 注意事項 ◆ この指定方法では24ビットの1677万色が使用できますが、Zaurusの実際の物理色は16ビットの6万5千色になります。 ◆ 関連項目 ◆ COLORBG、PRINT、LINE、BOX、BOXFILL、BOXCIRCLE、CIRCLE、PAINT、PSET、HSV ◆ サンプル ◆ REM 944BASIC 'COLORFG/BOXFILL サンプル' COLORBG 64,192,128: CLS LOCATE 2,8:PRINT 'COLORFG/BOXFILL サンプル - PUSH KEY' KEYWAIT FOR I=0 TO 192 STEP 16 COLORFG 63+I,16+I,16+I BOXFILL 0+I,0+I,64+I,64+I COLORFG 16+I,16+I,63+I BOXFILL 239-I,0+I,239-64-I,64+I WAIT 1 NEXT I KEYWAIT ────────────────── COLORBG … 背景色の指定 [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ COLORBG R,G,B R: 赤色(0〜255) G: 緑色(0〜255) B: 青色(0〜255) ◆ 説  明 ◆ CLS、または文字やスプライトの描画で使用する背景色をRGB値で指定します。 指定する数値が大きいほど、色は明るくなります。0,0,0では純黒、255,255,255で純白になります。 ◆ 注意事項 ◆ この指定方法では24ビットの1677万色が使用できますが、Zaurusの実際の物理色は16ビットの6万5千色になります。 ◆ 関連項目 ◆ COLORFG、HSV、CLS ◆ サンプル ◆ REM 944BASIC 'CLS/COLORBG サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2:BITMAP '9B_REF.BMP',0,0 COLORBG 128,96,192:CLS LOCATE 2,8:PRINT 'CLS サンプル - PUSH KEY' KEYWAIT CLS SPRITE 1,1,1, 80,80, 0,16, 48,48 REFRESH 0,0,0,0,240,320 HEADER 'CLS サンプル' FOOTER 'CLS サンプル' LOCATE 2,4:PRINT 'HEADERや画像も消えます - PUSH KEY' KEYWAIT COLORBG 64,192,128: CLS LOCATE 2,4:PRINT 'COLORBGで指定した色で塗りつぶされます - PUSH KEY' KEYWAIT ────────────────── HSV … HSV値による色の指定 [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ HSV H,S,V H: 色相(0〜360) S: 彩度(0-255) V: 明度(0-255) ◆ 説  明 ◆ HSV値で色を指定します。 HSV(HSBと呼ぶこともあります)は、 Hue (色相、色合い) Saturation (彩度、あざやかさ) Value (明度、明るさ(Brightness)) を表し、より感覚的にわかりやすい方式で色を指定できます。 ◆ 注意事項 ◆ ※コマンドの仕様、またはリファレンスの記載内容が、今後変更される可能性があります。(2002.10.12) ◆ 関連項目 ◆ COLORFG、COLORBG ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'HSV サンプル1' GCURSOR 76,88:PRINT '色 相' FOR H=0 TO 360 STEP 10 X=88+SINAG(H)*80 Y=96-(COSAG(H))*80 HSV H,128,128: BOXFILL X,Y,X+8,Y+8 NEXT H X=184:Y=20:GCURSOR 184,6:PRINT '彩' FOR S=0 TO 255 STEP 8 HSV 0,S,128: BOXFILL X,Y,X+8,Y+4 Y=Y+5 NEXT S X=218:Y=20:GCURSOR 216,6:PRINT '明' FOR V=0 TO 255 STEP 8 HSV 0,0,255-V: BOXFILL X,Y,X+8,Y+4 Y=Y+5 NEXT V KEYWAIT END (サンプル 2) REM 944BASIC 'HSV サンプル2' X=0:Y=0 FOR H=0 TO 360 STEP 18 FOR S=0 TO 255 STEP 16 FOR V=0 TO 255 STEP 16 HSV H,S,V: BOXFILL X,Y,X+2,Y+2 X=X+3 IF X>239 THEN X=0:Y=Y+3 NEXT V NEXT S NEXT H KEYWAIT ────────────────── LINE … 直線の描画 [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ LINE X1,Y1,X2,Y2 X1: 始点X座標 Y1: 始点Y座標 X2: 終点X座標 Y2: 終点Y座標 ◆ 説  明 ◆ X1,Y1の座標からX2,Y2の座標に直線を描画します。座標はウィンドウの左上角が 0,0 です。 線の色には、COLORFGで指定した描画色が使用されます。 ◆ 注意事項 ◆ 画面外の座標も指定できますが、実際に描画される範囲は、物理的な範囲の画面のみとなります。 ◆ 関連項目 ◆ COLORFG、HSV、BOX、BOXFILL、BOXCIRCLE、CIRCLE、PSET、PAINT ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'LINE/GOSUB サンプル' COLORFG 0,0,0 GOSUB *DRAW COLORFG 255,255,255 GOSUB *DRAW KEYWAIT END *DRAW FOR X=0 TO 200 Y=SIN(X/20)*120+120 LINE X,Y,X+40,Y SYNC NEXT X RETURN (サンプル 2) REM 944BASIC 'LINE サンプル' COLORBG 255,255,255: CLS C=64 FOR X1=0 TO 239 STEP 2 SYNC FOR Y1=0 TO 239 STEP 2 COLORFG C+32,C+32,C LINE X1,Y1,239-X1,239-Y1 C=C+16 IF C>223 THEN C=0 NEXT Y1 NEXT X1 KEYWAIT ────────────────── BOX … 四角形の描画 [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ BOX X1,Y1,X2,Y2 X1: 始点X座標 Y1: 始点Y座標 X2: 終点X座標 Y2: 終点Y座標 ◆ 説  明 ◆ X1,Y1の座標からX2,Y2の座標に四角形を描画します。座標はウィンドウの左上角が 0,0 です。 四角形の色には、COLORFGで指定した描画色を使用します。 ◆ 注意事項 ◆ 画面外の座標も指定できますが、実際に描画される範囲は、物理的な範囲の画面のみとなります。 ◆ 関連項目 ◆ COLORFG、HSV、LINE、BOXFILL、BOXCIRCLE、CIRCLE、PSET、PAINT ◆ サンプル ◆ REM 944BASIC 'BOX/PAINT サンプル' CLS: BOX 0,0,239,239 X=0: Y=0: L=120 FOR I=0 TO 8 X=X+20: Y=Y+20: L=L-10: WAIT 2 BOX X,Y,X+L,Y+L BOX X,Y+L+10,X+10,230 BOX X+L+10,Y,230,Y+10 NEXT I DIM TMP(4) *LOOP SYNC FOR I=0 TO 4 TMP(I)=(RND+TIME)%239 NEXT I COLORFG TMP(0),TMP(1),TMP(2) PAINT TMP(3),TMP(4) GOTO *LOOP ────────────────── BOXFILL … 塗りつぶし四角形の描画 [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ BOXFILL X1,Y1,X2,Y2 X1: 始点X座標 Y1: 始点Y座標 X2: 終点X座標 Y2: 終点Y座標 ◆ 説  明 ◆ X1,Y1の座標からX2,Y2の座標に内側を塗りつぶした四角形を描画します。座標はウィンドウの左上角が 0,0 です。 塗りつぶしの色には、COLORFGで指定した描画色を使用します。 ◆ 注意事項 ◆ 画面外の座標も指定できますが、実際に描画される範囲は、物理的な範囲の画面のみとなります。 ◆ 関連項目 ◆ COLORFG、HSV、LINE、BOX、BOXCIRCLE、CIRCLE、PSET、PAINT ◆ サンプル ◆ REM 944BASIC 'COLORFG/BOXFILL サンプル' COLORBG 64,192,128: CLS LOCATE 2,8:PRINT 'COLORFG/BOXFILL サンプル - PUSH KEY' KEYWAIT FOR I=0 TO 192 STEP 16 COLORFG 63+I,16+I,16+I BOXFILL 0+I,0+I,64+I,64+I COLORFG 16+I,16+I,63+I BOXFILL 239-I,0+I,239-64-I,64+I WAIT 1 NEXT I KEYWAIT ────────────────── BOXCIRCLE … 角丸四角形の描画 [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ BOXCIRCLE X1,Y1,X2,Y2 X1: 始点X座標 Y1: 始点Y座標 X2: 終点X座標 Y2: 終点Y座標 ◆ 説  明 ◆ X1,Y1の座標からX2,Y2の座標に角丸四角形を描画します。座標はウィンドウの左上角が 0,0 です。 四角形の色には、COLORFGで指定した描画色を使用します。 ◆ 注意事項 ◆ 画面外の座標も指定できますが、実際に描画される範囲は、物理的な範囲の画面のみとなります。 ◆ 関連項目 ◆ COLORFG、HSV、LINE、BOX、BOXFILL、CIRCLE、PSET、PAINT ◆ サンプル ◆ REM 944BASIC 'BOXCIRCLE サンプル' COLORFG 0,0,0:CLS BOXCIRCLE 20,40,80,160 BOXCIRCLE 40,70,43,76: PAINT 41,71 BOXCIRCLE 70,70,73,76: PAINT 71,71 BOXCIRCLE 55,90,59,94 BOXCIRCLE 52,120,64,124 BOXCIRCLE 88,76,230,122 PSET 87,122:PSET 86,122:PSET 85,122 PSET 84,122:PSET 87,121:PSET 88,122 COLORFG 255,255,255: PSET 88,121 COLORFG 0,0,0 GCURSOR 96,84:PRINT 'Hello,' GCURSOR 96,104:PRINT "How's 9B programming?" KEYWAIT ────────────────── CIRCLE … 楕円の描画 [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ CIRCLE X1,Y1,V,W X1: 始点X座標 Y1: 始点Y座標 V: 横半径 W: 縦半径 ◆ 説  明 ◆ X1,Y1の座標を中心にして、横にVドット、縦にWドットの大きさの楕円を描画します。VとWが等しい場合は正円になります。座標はウィンドウの左上角が 0,0 です。 円の色には、COLORFGで指定した描画色が使用されます。 ◆ 注意事項 ◆ 現時点では、描画速度向上のため、60角形として楕円を描画しています。 画面外の座標も指定できますが、実際に描画される範囲は、物理的な範囲の画面のみとなります。 ◆ 関連項目 ◆ COLORFG、HSV、LINE、BOX、BOXFILL、BOXCIRCLE、PSET、PAINT ◆ サンプル ◆ REM 944BASIC 'CIRCLE サンプル' COLORFG 0,0,0:CLS CIRCLE 40,100,8,30: PAINT 40,100 CIRCLE 108,100,8,30: PAINT 108,100 CIRCLE 75,200,40,5: PAINT 75,200 COLORFG 255,255,255 CIRCLE 75,197,40,5: PAINT 75,197 COLORFG 0,0,0 CIRCLE 130,64,4,4 CIRCLE 150,50,20,6 CIRCLE 164,20,56,18 GCURSOR 128,14:FONT 64+1 PRINT 'Good grief!' KEYWAIT ────────────────── PSET … 点の描画 [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PSET X,Y X: 表画面のX座標 Y: 表画面のY座標 ◆ 説  明 ◆ 表画面のX座標とY座標の位置に1ドットを描画します。座標はウィンドウの左上角が 0,0 です。 点の色には、COLORFGで指定した描画色が使用されます。 ◆ 注意事項 ◆ 画面外の座標も指定できますが、実際に描画される範囲は、物理的な範囲の画面のみとなります。 ◆ 関連項目 ◆ COLORFG、HSV、LINE、BOX、BOXFILL、BOXCIRCLE、CIRCLE、PAINT ◆ サンプル ◆ REM 944BASIC 'PSETサンプル(STAR?)' COLORBG 0,0,0: CLS FOR I=0 TO 64 SYNC X=(RND+TIME)%239:Y=(RND+TIME)%239 COLORFG 211,192,236: PSET X,Y FOR J=1 TO 2 COLORFG 211-J*64,192-J*64,236-J*64 PSET X-J,Y-J:PSET X+J,Y+J PSET X+J,Y-J:PSET X-J,Y+J PSET X,Y-J:PSET X,Y+J PSET X+J,Y:PSET X-J,Y NEXT J WAIT 3 NEXT I LOCATE 5,10: PRINT 'PUSH KEY' KEYWAIT ────────────────── PAINT … 囲まれた範囲の塗りつぶし [描画] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PAINT X,Y X: 表画面のX座標 Y: 表画面のY座標 ◆ 説  明 ◆ X座標とY座標の位置と同じ色が連続している範囲を、COLORFGで指定した描画色で塗りつぶします。座標はウィンドウの左上角が 0,0 です。 ◆ 注意事項 ◆ この処理では、表画面を一度裏画面に取り込み、裏画面上でPAINT処理を行ってから、表画面に画像を転送しています。そのため、裏画面の内容は表画面と同じ内容に変更されます。 ◆ 関連項目 ◆ COLORFG、HSV、LINE、BOX、BOXFILL、BOXCIRCLE、CIRCLE、PSET ◆ サンプル ◆ REM 944BASIC 'BOX/PAINT サンプル' CLS: BOX 0,0,239,239 X=0: Y=0: L=120 FOR I=0 TO 8 X=X+20: Y=Y+20: L=L-10: WAIT 2 BOX X,Y,X+L,Y+L BOX X,Y+L+10,X+10,230 BOX X+L+10,Y,230,Y+10 NEXT I DIM TMP(4) *LOOP SYNC FOR I=0 TO 4 TMP(I)=(RND+TIME)%239 NEXT I COLORFG TMP(0),TMP(1),TMP(2) PAINT TMP(3),TMP(4) GOTO *LOOP ────────────────── POINT … 画面指定座標の色を取得(16ビット値) [描画(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ POINT(X,Y) X: 色を取得するX座標 Y: 色を取得するY座標 ◆ 説  明 ◆ 指定した座標の色を、16ビット値で返します。 ◆ 注意事項 ◆ COLORFG、COLORBGでは24ビットの1677万色が使用できますが、返される値は16ビット値で、0〜65535になります。 POINTで返された値を、RGB値に変更する方法については、サンプル 2を参考にしてください。 ◆ 関連項目 ◆ ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'POINTとPATTERN' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 COLORFG 0,0,0:COLORBG 255,255,255 CLS: FONT 64 DIM B(11,11) A='華' LOCATE 0,0:PRINT A FOR I=0 TO 11 FOR J=0 TO 11 IF POINT(J,I)=65535 THEN B(J,I)=3 ELSE B(J,I)=0 NEXT J NEXT I PATTERN B,24,24,0,16,16,0 KEYWAIT (サンプル 2) REM 944BASIC 'POINTからRGB値へ' COLORFG (RND+TIME)%140,(RND+TIME)%140,(RND+TIME)%140 BOXFILL 40,40,200,200 HEADER 'ペンタッチした周辺を明るく' *LOOP SYNC IFBLK (PEN=2) X=PENX: Y=PENY: C=POINT(X,Y) R=INT(C/2048)*8 G=(INT(C/64)%32)*8 B=(INT(C)%32)*8 IFBLK (R<239)*(G<239)*(B<239) COLORFG R+16,G+16,B+16 BOXFILL X-1,Y-1,X+1,Y+1 ENDIF ENDIF GOTO *LOOP ────────────────── § 画像表示 ━━━━━━━━━━━━━━━━━━ ────────────────── SETPAGE … 画面の書き込みページ指定 [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SETPAGE ページ番号 ページ番号: ページ番号 ◆ 説  明 ◆ 画像を表示、または読み込むページを指定します。 ページ番号には、次の数値を指定します。 0: 表画面 1: 裏画面 2: テクスチャ画面 画像読み込み(JPEGなど)や描画(LINEなど)を行うコマンドの前にSETPAGEを実行すると、そのページに描画します。SETPAGEを使用しなかった場合は、既定値として 0 ページ(表画面)に描画します。 ◆ 注意事項 ◆ 944BASICでは、画像の表示に3 種類のページを使用します。 0ページは、実際に表示を行う画面です(表画面)。 1ページは、表示の準備を行うための画面です(裏画面)。 2ページは、スプライトやBGに加工する画像(テクスチャ)を読み込むための、テクスチャ画面です。 ◆ 関連項目 ◆ JPEG、BITMAP ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'SETPAGE/GCOPYサンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 0:PRINT '表画面' KEYWAIT SETPAGE 1:BITMAP '9B_REF.BMP',0,0 REM 裏画面の一部を表画面にコピー GCOPY 160,48, 48,16, 48,48 PRINT '裏画面から表画面' KEYWAIT SETPAGE 2:BITMAP '9B_REF.BMP',0,0 REM テクスチャを裏画面にセット(SPRITE) SPRITE 1,1,1, 40,40,0,16,48,48 PRINT 'テクスチャ画面から裏画面(無変化)' KEYWAIT REM 裏画面を表画面に表示 REFRESH 20,20,20,20,80,80 PRINT '裏画面から表画面' KEYWAIT (サンプル 2) REM 944BASIC 'SETPAGE 描画サンプル' REM テクスチャ画面に描画 SETPAGE 2: CLS COLORFG 32,96,96:BOXFILL 8,32,88,128 COLORFG 8,8,8 BOXFILL 24,48,28,52 BOXFILL 76,48,80,52 BOXFILL 24,100,80,104 SETPAGE 0 HEADER 'テクスチャ画面に描画しました - PUSH KEY' KEYWAIT REM SPRITEでテクスチャ→裏へ SPRITE 1,1,1, 0,0, 0,0, 240,240 REFRESH 0,0,0,0,240,240 HEADER 'REFRESHで裏→表へ' KEYWAIT ────────────────── JPEG … JPEG画像の表示 [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ JPEG ファイル名,X1,Y1,X2,Y2 ファイル名: ファイル名 X1: 始点X座標 Y1: 始点Y座標 X2: 終点X座標 Y2: 終点Y座標 ◆ 説  明 ◆ 指定したファイル名のJPEG画像を画面に表示します。 X1,Y1の座標から画像を表示します(X1,Y1に画像の左上角を表示)。 ◆ 注意事項 ◆ テクスチャ画面に画像を読み込む場合は、SETPAGE 2を実行してからJPEGまたはBITMAPを実行してください。 事前にSETPAGEを実行しなかった場合は、0ページ(表画面)に画像を読み込みます(SETPAGE 0を実行してから、JPEGまたはBITMAPを実行したのと同じ効果になります)。 現時点では、X2,Y2は処理上、無視されています。 ファイル名は、ディレクトリ(フォルダ)名を含めずに、相対指定することができます。 SPRITEやBGのテクスチャとして使用できる画像の最大サイズは、1024x768 ドットです。 ◆ 関連項目 ◆ SETPAGE、BITMAP ◆ サンプル ◆ REM 944BASIC 'JPEG サンプル' MESSAGE '注意: このサンプルは9B_REF.JPGという画像を用意しないと、正常に実行されません。動作イメージを知りたい場合は、BITMAPのサンプルを実行してください。' SETDIRECTORY 'F1:\944BASIC\' JPEG '9B_REF.JPG',0,0 KEYWAIT JPEG '9B_REF.JPG'',40,40 KEYWAIT JPEG '9B_REF.JPG',80,80 KEYWAIT ────────────────── BITMAP … ビットマップファイルの表示 [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ BITMAP ファイル名,X1,Y1 ファイル名: ファイル名 X1: X座標 Y1: Y座標 ◆ 説  明 ◆ 指定したファイル名のビットマップ画像を画面に表示します。 X1,Y1の座標から画像を表示します(X1,Y1に画像の左上角を表示)。 ◆ 注意事項 ◆ テクスチャ画面に画像を読み込む場合は、SETPAGE 2を実行してからJPEGまたはBITMAPを実行してください。 事前にSETPAGEを実行しなかった場合は、0ページ(表画面)に画像を読み込みます(SETPAGE 0を実行してから、JPEGまたはBITMAPを実行したのと同じ効果になります)。 ファイル名は、ディレクトリ(フォルダ)名を含めずに、相対指定することができます。 SPRITEやBGのテクスチャとして使用できる画像の最大サイズは、1024x768 ドットです。 ◆ 関連項目 ◆ SETPAGE、JPEG ◆ サンプル ◆ REM 944BASIC 'BITMAP サンプル' SETDIRECTORY 'F1:\944BASIC\' BITMAP '9B_REF.BMP',0,0 KEYWAIT BITMAP '9B_REF.BMP',40,40 KEYWAIT BITMAP '9B_REF.BMP',80,80 KEYWAIT ────────────────── SAVEBITMAP … ビットマップファイルの保存 [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SAVEBITMAP ファイル名,X,Y,V,W,M ファイル名: ファイル名 X: 始点X座標 Y: 始点Y座標 V: 画像の横幅 W: 画像の高さ M: 色数のモード(16,24 など) ◆ 説  明 ◆ 表画面に表示されている、座標で指定した範囲内をビットマップ形式の画像として保存します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ BITMAP、JPEG ◆ サンプル ◆ ※このサンプルでは、9B_TMP.BMP というファイルを作成します。サンプル実行後、このファイルは削除してかまいません。 REM 944BASIC 'SAVEBITMAP サンプル' SETDIRECTORY 'F1:\944BASIC\' YN=YESNO('9BTMP.BMP というファイルを作成します。よろしいですか?') IF YN=0 THEN END COLORFG 0,0,0:CLS CIRCLE 20,22,4,8: PAINT 20,22 CIRCLE 40,22,4,8: PAINT 40,22 BOXFILL 15,49,45,50 BOXCIRCLE 6,4,56,68 SAVEBITMAP '9BTMP.BMP',0,0,60,70,16 CLS: WAIT 10 FOR I=1 TO 20 X=(RND+TIME)%180:Y=(RND+TIME)%170 BITMAP '9BTMP.BMP',X,Y NEXT I KEYWAIT ────────────────── GCOPY … 裏画面から表画面に画像転送表示 [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GCOPY X1,Y1,X2,Y2,V,W X1: 表画面のX座標(転送先) Y1: 表画面のY座標(転送先) X2: 裏画面のX座標(転送元) Y2: 裏画面のY座標(転送元) V: 画像の横幅 W: 画像の縦幅 ◆ 説  明 ◆ 裏画面やテクスチャ画面から表画面に画像を転送表示します。 ◆ 注意事項 ◆ 944BASICでは、画像の表示に3 種類のページを使用します。 0ページは、実際に表示を行う画面です(表画面)。 1ページは、表示の準備を行うための画面です(裏画面)。 2ページは、スプライトやBGに加工する画像(テクスチャ)を読み込むための、テクスチャ画面です。 ◆ 関連項目 ◆ BOXMOVE、GETPIXMAP ◆ サンプル ◆ REM 944BASIC 'SETPAGE/GCOPYサンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 0:PRINT '表画面' KEYWAIT SETPAGE 1:BITMAP '9B_REF.BMP',0,0 REM 裏画面の一部を表画面にコピー GCOPY 160,48, 48,16, 48,48 PRINT '裏画面から表画面' KEYWAIT SETPAGE 2:BITMAP '9B_REF.BMP',0,0 REM テクスチャを裏画面にセット(SPRITE) SPRITE 1,1,1, 40,40,0,16,48,48 PRINT 'テクスチャ画面から裏画面(無変化)' KEYWAIT REM 裏画面を表画面に表示 REFRESH 20,20,20,20,80,80 PRINT '裏画面から表画面' KEYWAIT ────────────────── BOXMOVE … 表画面上の転送表示 [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ BOXMOVE X1,Y1,X2,Y2,V,W X1: 表画面のX座標(転送先) Y1: 表画面のY座標(転送先) X2: 表画面のX座標(転送元) Y2: 表画面のY座標(転送元) V: 画像の横幅 W: 画像の縦幅 ◆ 説  明 ◆ 表画面内で画像の一部を転送表示します。転送表示できる範囲は、V,W で指定した範囲内です。 ◆ 注意事項 ◆ 944BASICでは、画像の表示に3 種類のページを使用します。 0ページは、実際に表示を行う画面です(表画面)。 1ページは、表示の準備を行うための画面です(裏画面)。 2ページは、スプライトやBGに加工する画像(テクスチャ)を読み込むための、テクスチャ画面です。 ◆ 関連項目 ◆ GCOPY、GETPIXMAP ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'BOXMOVE サンプル' COLORFG 0,0,0:CLS CIRCLE 20,22,4,8: PAINT 20,22 CIRCLE 40,22,4,8: PAINT 40,22 CIRCLE 30,50,16,4: PAINT 30,50 COLORFG 255,255,255 CIRCLE 30,48,16,4: PAINT 30,48 COLORFG 0,0,0: BOXCIRCLE 6,4,56,68 X=0:Y=0:W=239:H=239:MV=5 *LOOP SYNC XX=X+MV: YY=Y+MV BOXMOVE XX,YY,X,Y,W,H X=XX:Y=YY:MVA=ABS(MV) IF (X>180)+(Y>160) THEN MV=MV*(-1) IF (XH THEN GOTO *FIN WAIT 2 GOTO *LOOP *FIN PRINT 'PUSH ANY KEY' KEYWAIT ────────────────── GETPIXMAP … 表画面を裏画面へ取り込む [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETPIXMAP ◆ 説  明 ◆ 表画面の内容を裏画面に取り込みます。 ◆ 注意事項 ◆ ※現時点では動作不可※ 944BASICでは、画像の表示に3 種類のページを使用します。 0ページは、実際に表示を行う画面です(表画面)。 1ページは、表示の準備を行うための画面です(裏画面)。 2ページは、スプライトやBGに加工する画像(テクスチャ)を読み込むための、テクスチャ画面です。 ◆ 関連項目 ◆ BOXMOVE、GCOPY ◆ サンプル ◆ ────────────────── SPRITE … スプライトの定義 [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SPRITE NO,PNO,MODE, X1,Y1, X2,Y2, V,W, MX,MY NO: スプライト番号(1-255) PNO: 親スプライト番号(1-255) MODE: 0-画面非表示、1-画面表示、5-拡大縮小/反転モード X1: 裏画面のX座標 (表示する位置) Y1: 裏画面のY座標 (表示する位置) X2: テクスチャ画面のX座標 (画像切り取り開始位置) Y2: テクスチャ画面のY座標 (画像切り取り開始位置) V: テクスチャ画面のスプライト横幅 (画像切り取り幅) W: テクスチャ画面のスプライト縦幅 (画像切り取り高) MX: 横方向拡大率 (0〜1未満-縮小、1以上-拡大、 マイナスの数値-反転) MY: 縦方向拡大率 (0〜1未満-縮小、1以上-拡大、 マイナスの数値-反転) ◆ 説  明 ◆ スプライトを定義します。スプライトは、テクスチャ画像から画像の一部分を切り取り、自由な位置で表示する機能です。 スプライトには1つ1つに番号がついています。スプライトが重なっている場合は、番号の若いものほど手前に表示されます。 また、純黒(RGB値が 0,0,0)は透明色として扱われ、後ろの画像(背景や重なっているスプライト)が透けて表示されます。 一度定義した値は、次回値を入れるまで保存されます。変更のないパラメータは省略すると、処理が高速化されます。 SPRITEを実行するだけでは、実際の画面(表画面)には表示されません。全てのスプライト定義が終わってからREFRESHを実行すると、スプライトが表示されます。 スプライト画像の表示では、 1. テクスチャ画面に画像を読み込む(SETPAGE、JPEG/BITMAP)、 2. SPRITEで切り出して、裏画面に配置、 3. REFRESHで表画面に表示 という処理が行われています。 ■ (テクスチャ) ↓SPRITE ■ (裏) ↓REFRESH ■ (表) ◆ 注意事項 ◆ このコマンドだけでは、スプライトは表示されません。REFRESHの実行後、実際に(表画面に)表示されます。 通常は全てのスプライトを配置してからREFRESHを実行してください(スプライトの重なり処理を正しく行うため)。 親スプライト番号に自分の番号を設定すると、通常の方法で処理されます。違うスプライト番号を設定すると、親スプライトの座標からの相対座標で表示されます。 表示位置 (X1,Y1) は、スプライトの左上角の位置を表します。ただし、拡大縮小モード(MODEに5を指定)の場合、スプライトの中心点の位置を表します。 拡大率は、0〜1未満で縮小、1以上で拡大を指定できます。マイナスの値を指定すると、画像を反転したうえで拡大率を適用し、表示します。 テクスチャとして使用できる画像の最大サイズは、1024x768 ドットです。 ◆ 関連項目 ◆ REFRESH、SETPAGE、BITMAP、JPEG、SPSEARCH、SPCOLLISION ◆ サンプル ◆ REM 944BASIC 'SPRITE サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2 BITMAP "9B_REF.BMP",0,0 CLS SPRITE 1,1,1, 110,150,0,16,48,48 REFRESH 20,60,20,60,200,200 KEYWAIT SPRITE 1,1,1, 150,110 REFRESH 20,60,20,60,200,200 KEYWAIT ────────────────── REFRESH … スプライトの実表示/画面のリフレッシュ [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ REFRESH X1,Y1,X2,Y2,V,W X1: 表示画面のX座標 Y1: 表示画面のY座標 X2: 裏画面のX座標 Y2: 裏画面のY座標 V: 書き込みエリアの横幅 W: 書き込みエリアの縦幅 ◆ 説  明 ◆ スプライト定義した画像とBG(背景パターン)を、実際の表示画面に書き込みます。 944BASICでは、画像の表示に 3 種類の画面を使用しています。 表画面 (ページ 0) は、実際に表示を行う画面です。 裏画面 (ページ 1) は、表示の準備を行うための画面です。 テクスチチャ画面 (ページ 2) は、スプライトやBGに加工する画像(テクスチャ)を読み込むための画面です。 スプライト画像の表示では、 1. テクスチャ画面に画像を読み込む(SETPAGE、JPEG/BITMAP)、 2. SPRITEで切り出して、裏画面に配置、 3. REFRESHで表画面に表示 という処理が行われています。 ■ (テクスチャ) ↓SPRITE/BG ■ (裏) ↓REFRESH ■ (表) ◆ 注意事項 ◆ 通常は、X1とX2、Y1とY2には同じ値を使用します。 表示上のレイアウトを変更したり、1画面に複数の表示エリアがあるなどの場合は違う値を指定します。 また表示エリアが大きいほど書き込み時間がかかります。 表示エリアと書き換えスピードは、ソフトごとに最適なバランスに調節してください。最大サイズは240×320です。 ◆ 関連項目 ◆ SPRITE、BG ◆ サンプル ◆ REM 944BASIC SPRITE/REFRESH サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2 BITMAP "9B_REF.BMP",0,0 CLS SPRITE 1,1,1, 110,150,0,16,48,48 REFRESH 20,60,20,60,200,200 KEYWAIT ────────────────── BG … 背景画像(BG)の表示 [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ BG 配列名, X,Y, V,W, SX,SY, PV,PW, TX,TY, TV,TW 配列名: X: 左上のX座標 Y: 左上のY座標 V: 表示する範囲の横幅 W: 表示する範囲の縦幅 SX: スクロールX座標 SY: スクロールY座標 (PV以降は省略可) PV: BGのパターン1つの横幅 (省略時は16) PW: BGのパターン1つの縦幅 (省略時は16) TX: テクスチャ画面の左上X座標 (省略時は0) TY: テクスチャ画面の左上Y座標 (省略時は0) TV: テクスチャ画面上のパターン格納全体横幅 (省略時は240) TW: テクスチャ画面上のパターン格納全体縦幅 (省略時は320) ◆ 説  明 ◆ テクスチャ画面から背景パターンの構成要素を切り出し、配列に指定されたパターンに従って表示します。 配列に指定したパターンは、パターンがループする形で繰り返されます。また、スクロールにも対応しています。 BGを実行しただけでは画面に表示されません。BG実行後、REFRESHを実行する必要があります。 (テクスチャ) △◇■○ ↓ (配列) 0,0,1 0,2,3 1,0,0 ↓ (BG) △△◇△△◇… △■○△■○… ◇△△◇△△… △△◇△△◇… △■○△■○… ◇△△◇△△… : ◆ 注意事項 ◆ このコマンドだけでは、BGは表示されません。REFRESHの実行後、実際に表示されます。 スプライトを使用するよりも、表示が高速になります。 パターンの構成要素は、テクスチャ画面に読み込んだ画像のTX,TY位置(省略時は左上角)から切り出します。切り出しは、PV,PW に指定した縦横幅で行われます。構成要素には、左上角を0として、順番に番号がふられ、画像の右端まで到達したら1段下に下がって切り出しを続行します。 PV以降のパラメータを省略するか、0を指定すると、デフォルト値が設定されます。 スクロールする必要がない場合や、部分的に画像を書き換える場合は、PATTERNを使用することもできます。 テクスチャとして使用できる画像の最大サイズは、1024x768 ドットです。 ◆ 関連項目 ◆ SETPAGE、SPRITE、PATTERN、BITMAP、JPEG ◆ サンプル ◆ REM 944BASIC 'BG サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP "9B_REF.BMP",0,0 COLORBG 0,0,0: CLS REM パターンの配列 DIM B(3,3) B(0,0)=0,0,0,0 B(0,1)=0,1,0,1 B(0,2)=0,0,1,0 B(0,3)=0,2,0,0 REM スクロール用変数 M=16:MX=0:MY=0 *LOOP SYNC MX=MX+M*PADX:MY=MY+M*PADY BG B, 40,80, 160,160, MX,MY, 48,48, 0,16, 144,48 REFRESH 40,80, 40,80, 160,160 WAIT 1 GOTO *LOOP ────────────────── PATTERN … 配列からパターン表示 [画像表示] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PATTERN 配列名,X1,Y1,PAGE,V,W,MODE 配列名: 2次元の配列の名前を指定 X1: 表示画面のX座標 Y1: 表示画面のY座標 PAGE: 描画するページ(通常は0) V: パターンの横幅 W: パターンの縦幅 MODE: 画面全体書き換え(0),画面変更分書き換え(1) ◆ 説  明 ◆ テクスチャ画面に読み込んだ画像からパターンの構成要素を切り出し、2次元配列の値をもとに画面にパターンを表示します。 MODEを1にすると、自動的に前回からの変更箇所のみ書き換えるため、画面の書き込みが速くなります。 (テクスチャ) △◇■←右端に到達したら ○◆◎ ↑1段下がって切り出し ↓ (配列) 1,1,1,1 1,0,1,3 1,2,5,1 4,0,1,4 ↓ (パターン) ◇◇◇◇ ◇△◇○ ◇■◎◇ ◆△◇◆ ◆ 注意事項 ◆ パターンの構成要素は、テクスチャ画面に読み込んだ画像の左上角から切り出します。切り出しは、V,W に指定した縦横幅で行われます。構成要素には、左上角を0として、順番に番号がふられ、画像の右端まで到達したら1段下に下がって切り出しを続行します。 画像を部分的に書き換える必要がない場合や、スクロールを行う場合は、BGを使用します。 PATTERNを実行すると、そのままパターン画像が表示されます。REFRESHを実行する必要はありません。 ◆ 関連項目 ◆ BITMAP、JPEG、BG、SETPAGE ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'パターンサンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP "9B_REF.BMP",0,0 CLS DIM B(9,9) REM パターンで表示する PATTERN B,0,0,0,16,16,0 KEYWAIT REM 2次元配列に値を入れる B(2,2)=2 B(5,5)=3 B(8,8)=4 REM 変更分だけ部分表示して終わり PATTERN B,0,0,0,16,16,1 KEYWAIT END (サンプル 2) REM 944BASIC 'POINTとPATTERN' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP 'F1:\944BASIC\9B_REF.BMP',0,0 COLORFG 0,0,0:COLORBG 255,255,255 CLS: FONT 64 DIM B(11,11) A='華' LOCATE 0,0:PRINT A FOR I=0 TO 11 FOR J=0 TO 11 IF POINT(J,I)=65535 THEN B(J,I)=3 ELSE B(J,I)=0 NEXT J NEXT I PATTERN B,24,24,0,16,16,0 KEYWAIT ────────────────── SPSEARCH … スプライトの検索 [画像表示(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SPSEARCH(X,Y,開始,終了) X: スプライトを取得するX座標 Y: スプライトを取得するY座標 開始: スプライト番号の開始範囲 終了: スプライト番号の終了範囲 ◆ 説  明 ◆ 指定した座標 (X,Y) に存在するスプライト番号を検索して返します。 検索するスプライト番号の範囲を指定するには、開始、終了にスプライト番号を指定します。 ◆ 注意事項 ◆ 指定した座標位置にスプライトが存在しない場合は、-1が返ります。 指定した座標位置に複数のスプライトが重なっている場合は、一番小さいスプライト番号が返ります。 ◆ 関連項目 ◆ SPRITE、SPCOLLISION ◆ サンプル ◆ REM 944BASIC 'SPSEARCH サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 X=RNDRG(50,190):Y=RNDRG(50,190) SPRITE 1,1,1, X,Y, 0,16, 48,48, 1,1 COLORBG 0,0,0: CLS REFRESH 0,0,0,0,240,240 MESSAGE 'タッチ!' *LOOP SYNC IFBLK SPSEARCH(PENX,PENY,1,1)=1 FOR I=1 TO 20 R=1-I/20: IF I%2 THEN R=R*(-1) SPRITE 1,1,5, X+24,Y+24, 0,16,48,48,R,1-I/20:REM スプライトの中心=表示位置 REFRESH 0,0,0,0,240,240 NEXT I MESSAGE '縮小/反転の応用':END ENDIF GOTO *LOOP ────────────────── SPCOLLISION … スプライト衝突検索 [画像表示(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SPCOLLISION(判定元,開始,終了) 判定元: 衝突されているかどうかを判定するスプライトの番号 開始: 衝突を判定するスプライト番号の開始範囲 終了: 衝突を判定するスプライト番号の終了範囲 ◆ 説  明 ◆ 判定元のスプライトに重なっているスプライト番号を返します。重なっていない場合は、-1を返します。 開始〜終了に指定した範囲のスプライト番号に対して判定を行います。 ◆ 注意事項 ◆ 判定元のスプライト上に複数のスプライトが重なっている場合は、一番小さいスプライト番号が返ります。 ◆ 関連項目 ◆ SPRITE、SPSEARCH ◆ サンプル ◆ REM 944BASIC 'SPCOLLISION サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP' COLORBG 0,0,0:CLS FOR I=100 TO 160 X=(RND+TIME)%220:Y=(RND+TIME)%220 N=(RND+TIME)%6 SPRITE I,I,1, X,Y, N*16,0, 16,16 NEXT I MESSAGE 'ペンを動かしてください' FONT 48+1:COLORFG 255,255,255 *LOOP SYNC X=PENX:Y=PENY SPRITE 1,1,1,X-12,Y-12,96,3,16,10 IF SPCOLLISION(1,100,160)<>(-1) THEN GCURSOR X-36,Y-24: PRINT 'Ooops!' REFRESH 0,0,0,0,240,240 GOTO *LOOP ────────────────── § UI ━━━━━━━━━━━━━━━━━━ ────────────────── INPUT … 文字列の入力 [UI] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ INPUT 変数,文字数,タイプ 変数: 入力内容を代入する変数 文字数: 入力可能な文字数(整数) タイプ: キーボードの種別(整数) ◆ 説  明 ◆ キーボードから文字列を入力し、その文字列を変数に格納します。 文字数には半角文字でカウントした数値を指定します。 タイプに0〜7の数値を指定すると、キーボードの文字種を指定できます。 0: 自動 1: ひらがな 2: カタカナ 3: 英字 4: 数字 5: 全角記号 6: 半角記号 7: 絵記号 0(自動)を指定すると、キーボードの文字種は前回の設定を引き継ぎます。 入力位置には赤いカーソルが表示され、[入力]キーを押すことでキーボードで打ち込んだ文字が変数に送られます。カーソルの表示位置は、LOCATE、GCURSORで指定できます。 INPUTで使用する変数にすでに値が入っている場合は、その値が入力位置に表示されます。入力位置に何も表示されないようにするには、事前にその変数を初期化(空文字列 '' を代入など)する必要があります。 ◆ 注意事項 ◆ 入力した文字列が、INPUT文に指定した文字数を超える場合、それ以降の文字列は切り捨てられます。 入力系のコマンドは、原則として、マルチステートメントでは使用できません。 ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'INPUTサンプル' INPUT A,10,1 MESSAGE A INPUT A,10,1 : REM 前回入力した内容が残る MESSAGE A A='' : REM 変数を初期化 INPUT A,10,1 : REM まっさらな状態で入力 MESSAGE A END ────────────────── KEYWAIT … 任意キーの入力待ち [UI] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ KEYWAIT ◆ 説  明 ◆ 任意のキーが押されるまでプログラムを停止します。 プログラム終了時に画面が消去されないように待機する場合、デバッグ時にプログラムを一時停止する場合などに使用できます。 ◆ 注意事項 ◆ 入力系のコマンドは、原則として、マルチステートメントでは使用できません。 ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'KEYWAITサンプル' A='こんにちは! (・・・何かキーを押してください)' PRINT A KEYWAIT A='もう一回、こんにちは!' PRINT A KEYWAIT END ────────────────── MENU … メニューの表示 [UI] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ MENU 配列,項目数,初期項目番号 配列: 1次元配列の変数名のみ 項目数: メニュー内の項目数 初期項目番号: 初期表示時の項目番号 ◆ 説  明 ◆ 1次元配列の内容から、ユーザーが矢印キーやペン入力で制御できるメニューを表示し、結果をMENUNOにセットします。 メニューの表示位置は、LOCATE、GCURSORで指定できます。 ◆ 注意事項 ◆ 初期項目番号は、一番上から0が開始番号となります。 またMENUNOにセットされる値も0からとなります。 入力系のコマンドは、原則として、マルチステートメントでは使用できません。 ◆ 関連項目 ◆ MENUNO ◆ サンプル ◆ REM 944BASIC 'MENU サンプル' DIM M(1)='0:はい','1:いいえ' MENU M,2,0 NO=MENUNO PRINT NO KEYWAIT ────────────────── MENUNO … メニュー内の項目番号の取得 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ MENUNO ◆ 説  明 ◆ MENU実行後に、選択された項目番号を返します。 ◆ 注意事項 ◆ MENUNOにセットされる値は上から0となります。 入力系のコマンドは、原則として、マルチステートメントでは使用できません。 ◆ 関連項目 ◆ MENU ◆ サンプル ◆ REM 944BASIC 'MENU サンプル' DIM M(1)='0:はい','1:いいえ' MENU M,2,0 NO=MENUNO PRINT NO KEYWAIT ────────────────── MESSAGE … 文字列のポップアップ表示 [UI] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ MESSAGE 文字列 文字列: 表示するメッセージ ◆ 説  明 ◆ 画面上にポップアップで文字列を表示します。 ◆ 注意事項 ◆ ZAURUSとSZABの制限により、長い文字列を表示するとリセット要求が発生する可能性があります。 また、表示する文字列が短すぎる場合、ボタンが正しく表示されない可能性があります。 メッセージが表示されている状態では、[戻る]キーや、[中断]キーでプログラムを終了することができません。 ◆ 関連項目 ◆ YESNO ◆ サンプル ◆ REM 944BASIC 'MESSAGE サンプル' MESSAGE 'MESSAGEは、メッセージを表示するのはもちろんですが、' MESSAGE '一時的に処理の流れを止めたり、' MESSAGE '変数の値を表示したりすることで、デバッグの役にも立ちます。' MESSAGE 'たとえば、A=(RND+TIME)%7の値を確認したければ、プログラムの途中に MESSAGE Aを入れるとよいわけですね。' A=(RND+TIME)%7 MESSAGE A MESSAGE '・・・こんな風に表示されるわけです。ただ、ループの途中で下手に使うとプログラムを中断できなくなるので注意が必要です。 [終わり]' END ────────────────── YESNO … はい、いいえを確認し取得 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ YESNO(文字列) 文字列: 表示するメッセージ ◆ 説  明 ◆ 指定した文字列と、[はい]、[いいえ]の2つのボタンが表示されるアラートボックスを表示します。[はい]が押されると、1 を返します。[いいえ]が押されると、0を返します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ MESSAGE ◆ サンプル ◆ REM 944BASIC 'YESNO サンプル' YN=YESNO('プログラムを開始します。よろしいですか?') IF YN=0 THEN END *START FOR I=0 TO 255 SYNC C=255-I COLORFG C,C,C FONT 96+1 GCURSOR 80,40: PRINT 'じわわわっ' GCURSOR 81,40: PRINT 'じわわわっ' NEXT I YN=YESNO('もう一回見ますか?') IF YN THEN GOTO *START PRINT 'PUSH KEY' KEYWAIT END ────────────────── INKEY … 1文字キー入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ INKEY ◆ 説  明 ◆ 1文字のキー入力値を取得します。 値は10進値で返ります。キー入力のない状態では、0が返ります。 ◆ 注意事項 ◆ この関数は式の中で使用します。変数のように値は代入できません。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADB、PADC、PADX、PADY ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'キー入力値の値を表示' *LOOP SYNC K=INKEY LOCATE 3,10 PRINT ' ' LOCATE 3,10 PRINT K WAIT 3 GOTO *LOOP (サンプル 2) REM 944BASIC 'INKEY サンプル2' HEADER 'INKEY サンプル - PUSH KEY' DIM A(25) B='ABCDEFGHIJKLMNOPQRSTUVWXYZ' FOR I=0 TO 25 A(I)=MID(B,I+1,1) NEXT I Y=2:LOCATE 0,Y *LOOP SYNC K=INKEY IF (K>=65)*(K<=25+65) THEN PRINT A(K-65); IF (K=13) THEN Y=Y+1:LOCATE 0,Y GOTO *LOOP ────────────────── PADA … 決定キーの入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADA ◆ 説  明 ◆ 決定キーの入力状態を返します。 押されていない場合は0を返します。 押されている場合は1を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADB、PADC、PADX、PADY、PADONA、PADONB、PADONC、PADONX、PADONY ◆ サンプル ◆ REM 944BASIC '決定キーの入力状態表示(PADA)' *LOOP SYNC LOCATE 0,0 IF PADA THEN PRINT 'ON ' ELSE PRINT 'OFF' GOTO *LOOP ────────────────── PADB … 逆送りキーの入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADB ◆ 説  明 ◆ 逆送りキーの入力状態を返します。 押されていない場合は0を返します。 押されている場合は1を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 逆送りキーのない一部の機種では、このコマンドは使用できません。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADC、PADX、PADY、PADONA、PADONB、PADONC、PADONX、PADONY ◆ サンプル ◆ REM 944BASIC '逆送りキーの入力状態表示(PADB)' *LOOP SYNC LOCATE 0,0 IF PADB THEN PRINT 'ON ' ELSE PRINT 'OFF' GOTO *LOOP ────────────────── PADC … 順送りキーの入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADC ◆ 説  明 ◆ 順送りキーの入力状態を返します。 押されていない場合は0を返します。 押されている場合は1を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 順送りキーのない一部の機種では、このコマンドは使用できません。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADB、PADX、PADY、PADONA、PADONB、PADONC、PADONX、PADONY ◆ サンプル ◆ REM 944BASIC '順送りキーの入力状態表示(PADC)' *LOOP SYNC LOCATE 0,0 IF PADC THEN PRINT 'ON ' ELSE PRINT 'OFF' GOTO *LOOP ────────────────── PADX … 左右スクロールキーの入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADX ◆ 説  明 ◆ 左右キーの入力状態を返します。 押されていない場合は0を返します。 右キーが押されている場合は1を返します。 左キーが押されている場合は-1を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADB、PADC、PADY、PADONA、PADONB、PADONC、PADONX、PADONY ◆ サンプル ◆ (サンプル 1) REM 944BASIC '左右キーの入力状態表示(PADX)' X=0 *LOOP SYNC X=X+PADX LOCATE 0,0 PRINT X; PRINT ' ' GOTO *LOOP (サンプル 2) REM 944BASIC '方向キーの制御' X=14:Y=6 *LOOP SYNC LOCATE X,Y-1:PRINT '↑' LOCATE X-2,Y:PRINT '← →' LOCATE X,Y+1:PRINT '↓' LOCATE X,Y:PRINT '◎' IF PADX THEN LOCATE X+PADX*2,Y:PRINT '◎': LOCATE X,Y: PRINT ' ' IF PADY THEN LOCATE X,Y+PADY:PRINT '◎': LOCATE X,Y: PRINT ' ' WAIT 1 GOTO *LOOP ────────────────── PADY … 上下スクロールキーの入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADY ◆ 説  明 ◆ 上下キーの入力状態を返します。 押されていない場合は0を返します。 下キーが押されている場合は1を返します。 上キーが押されている場合は-1を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADB、PADC、PADX、PADONA、PADONB、PADONC、PADONX、PADONY ◆ サンプル ◆ (サンプル 1) REM 944BASIC '上下キーの入力状態表示(PADY)' Y=0 *LOOP SYNC Y=Y+PADY LOCATE 0,0 PRINT Y; PRINT ' ' GOTO *LOOP (サンプル 2) REM 944BASIC '方向キーの制御' X=14:Y=6 *LOOP SYNC LOCATE X,Y-1:PRINT '↑' LOCATE X-2,Y:PRINT '← →' LOCATE X,Y+1:PRINT '↓' LOCATE X,Y:PRINT '◎' IF PADX THEN LOCATE X+PADX*2,Y:PRINT '◎': LOCATE X,Y: PRINT ' ' IF PADY THEN LOCATE X,Y+PADY:PRINT '◎': LOCATE X,Y: PRINT ' ' WAIT 1 GOTO *LOOP ────────────────── PADONA … 決定キーのオン入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADONA ◆ 説  明 ◆ 決定キーのオン入力状態を返します。 押されていない場合は0を返します。 押された直後は1を返します。 押し続けた場合は0を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADB、PADC、PADX、PADY、PADONB、PADONC、PADONX、PADONY ◆ サンプル ◆ REM 944BASIC '決定キーのオン入力状態表示(PADONA)' *LOOP SYNC LOCATE 0,0 IF PADONA THEN PRINT 'ON ' ELSE PRINT OFF' GOTO *LOOP ────────────────── PADONB … 逆送りキーのオン入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADONB ◆ 説  明 ◆ 逆送りキーのオン入力状態を返します。 押されていない場合は0を返します。 押された直後は1を返します。 押し続けた場合は0を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 逆送りキーのない一部の機種では、このコマンドは使用できません。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADB、PADC、PADX、PADY、PADONA、PADONC、PADONX、PADONY ◆ サンプル ◆ REM 944BASIC '逆送りキーの入力状態表示(PADONB)' *LOOP SYNC LOCATE 0,0 IF PADONB THEN PRINT 'ON ' ELSE PRINT OFF' GOTO *LOOP ────────────────── PADONC … 順送りキーのオン入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADONC ◆ 説  明 ◆ 順送りキーのオン入力状態を返します。 押されていない場合は0を返します。 押された直後は1を返します。 押し続けた場合は0を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 順送りキーのない一部の機種では、このコマンドは使用できません。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADB、PADC、PADX、PADY、PADONA、PADONB、PADONX、PADONY ◆ サンプル ◆ REM 944BASIC '順送りキーの入力状態表示(PADONC)' *LOOP SYNC LOCATE 0,0 IF PADONC THEN PRINT 'ON ' ELSE PRINT OFF' GOTO *LOOP ────────────────── PADONX … 左右スクロールキーのオン入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADONX ◆ 説  明 ◆ 左右キーの入力状態を返します。 押されていない場合は0を返します。 押された直後は1を返します。 押し続けた場合は0を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADB、PADC、PADX、PADY、PADONA、PADONB、PADONC、PADONY ◆ サンプル ◆ REM 944BASIC '左右キーの入力状態表示(PADONX)' X=0 *LOOP SYNC X=X+PADONX LOCATE 0,0 PRINT X; PRINT ' ' GOTO *LOOP ────────────────── PADONY … 上下スクロールキーのオン入力 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PADONY ◆ 説  明 ◆ 上下キーの入力状態を返します。 押されていない場合は0を返します。 押された直後は1を返します。 押し続けた場合は0を返します。 ◆ 注意事項 ◆ この関数はリアルタイムキー入力で値が返ります。 繰り返し処理で使用する場合は、事前にSYNCを実行してください。 ◆ 関連項目 ◆ SYNC、PADA、PADB、PADC、PADX、PADY、PADONA、PADONB、PADONC、PADONX ◆ サンプル ◆ REM 944BASIC '上下キーの入力状態表示(PADONY)' Y=0 *LOOP SYNC Y=Y+PADONY LOCATE 0,0 PRINT Y; PRINT ' ' GOTO *LOOP ────────────────── PEN … ペン入力の状態の取得 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PEN ◆ 説  明 ◆ 次の数値で、ペンの入力状態を返します。 0: ペンは押されていません。 1: ペンが押され始めました。 2: ペンが押されています。 3: ペンが離されました。 ◆ 注意事項 ◆ ペン入力を認識できるようにするには、事前にSYNCを実行しておく必要があります。 ペンタッチし続けていても、PENが0を返す場合があります。これは、別のイベントを受信するための仕様です。 これを回避するには、EVENTNOを使用して、ペンイベントのみ認識するようにします(サンプル 2を参照)。 ◆ 関連項目 ◆ SYNC、PENX、PENY、PENV、PENW ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'PENサンプル' HEADER 'ペンタッチ → PEN関数の値を表示' *LOOP SYNC P=PEN LOCATE 10,10:PRINT P WAIT 2 GOTO *LOOP (サンプル 2) REM 944BASIC 'PEN サンプル2 - 0を検出させない例' REM ペン イベント160,161,162以外を無効にする EVENT 100,159,0 EVENT 163,999,0 *LOOP SYNC P=PEN LOCATE 10,10: PRINT P WAIT 1 GOTO *LOOP ────────────────── PENX … ペン入力のX座標の取得 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PENX ◆ 説  明 ◆ ペン入力されているX座標を返します。 ◆ 注意事項 ◆ 返される座標は、944BASICウインドウ左上からの相対位置です。 ペン入力を認識できるようにするには、事前にSYNCを実行しておく必要があります。 ◆ 関連項目 ◆ SYNC、PEN、PENY、PENV、PENW ◆ サンプル ◆ REM 944BASIC 'PENX,PENYサンプル' *LOOP SYNC HEADER 'ペンタッチ → ペン位置の座標(X:Y)を表示' GCURSOR OPX-12,OPY-12:PRINT ' ' PX=PENX: PY=PENY OPX=PX:OPY=PY GCURSOR PX-12,PY-12: PRINT '★' PX=STR(PX): PY=STR(PY) S=STRCAT(PX,':',PY) LOCATE 10,10:PRINT ' ' LOCATE 10,10:PRINT S GOTO *LOOP ────────────────── PENY … ペン入力のY座標の取得 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PENY ◆ 説  明 ◆ ペン入力されているY座標を返します。 ◆ 注意事項 ◆ 返される座標は、944BASICウインドウ左上からの相対位置です。 ペン入力を認識できるようにするには、事前にSYNCを実行しておく必要があります。 ◆ 関連項目 ◆ SYNC、PEN、PENX、PENV、PENW ◆ サンプル ◆ REM 944BASIC 'PENX,PENYサンプル' *LOOP SYNC HEADER 'ペンタッチ → ペン位置の座標(X:Y)を表示' GCURSOR OPX-12,OPY-12:PRINT ' ' PX=PENX: PY=PENY OPX=PX:OPY=PY GCURSOR PX-12,PY-12: PRINT '★' PX=STR(PX): PY=STR(PY) S=STRCAT(PX,':',PY) LOCATE 10,10:PRINT ' ' LOCATE 10,10:PRINT S GOTO *LOOP ────────────────── PENV … ペン入力の絶対X座標の取得 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PENV ◆ 説  明 ◆ ペン入力されている絶対X座標を返します。 ◆ 注意事項 ◆ 返される座標は、画面左上からの絶対位置です。 ペン入力を認識できるようにするには、事前にSYNCを実行しておく必要があります。 ◆ 関連項目 ◆ SYNC、PEN、PENX、PENY、PENW ◆ サンプル ◆ REM 944BASIC 'PENV,PENWサンプル' SCREEN 20,20,160,80:EVENT 100,999,1 *LOOP SYNC HEADER 'PENV:PENWの値を表示' PV=PENV: PW=PENW PV=STR(PV): PW=STR(PW) S=STRCAT(PV,':',PW) LOCATE 3,2:PRINT ' ' LOCATE 3,2:PRINT S GOTO *LOOP ────────────────── PENW … ペン入力の絶対Y座標の取得 [UI(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PENW ◆ 説  明 ◆ ペン入力されている絶対Y座標を返します。 ◆ 注意事項 ◆ 返される座標は、画面左上からの絶対位置です。 ペン入力を認識できるようにするには、事前にSYNCを実行しておく必要があります。 ◆ 関連項目 ◆ SYNC、PEN、PENX、PENY、PENV ◆ サンプル ◆ REM 944BASIC 'PENV,PENWサンプル' SCREEN 20,20,160,80:EVENT 100,999,1 *LOOP SYNC HEADER 'PENV:PENWの値を表示' PV=PENV: PW=PENW PV=STR(PV): PW=STR(PW) S=STRCAT(PV,':',PW) LOCATE 3,2:PRINT ' ' LOCATE 3,2:PRINT S GOTO *LOOP ────────────────── § 日時 ━━━━━━━━━━━━━━━━━━ ────────────────── DATE … 今日の日付の取得 [日時(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ DATE ◆ 説  明 ◆ 今日の日付を取得します。 値は整数値で、YYYYMMDDの形式で返ります。(例: 20020904) ◆ 注意事項 ◆ 年月日を個別に使用する方法は、サンプルを参考にしてください。 ◆ 関連項目 ◆ TIME ◆ サンプル ◆ REM 944BASIC '今日の年、月、日の表示' YYYY=INT(DATE/10000) PRINT YYYY MM=INT(DATE/100)%100 PRINT MM DD=DATE%100 PRINT DD KEYWAIT END ────────────────── TIME … 現在の時刻の取得 [日時(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ TIME ◆ 説  明 ◆ 現在の時刻を取得します。 値は整数の値、HHMMSSの形式で返ります。(例: 230944) ◆ 注意事項 ◆ 時分秒を個別に使用する方法は、サンプルを参考にしてください。 ◆ 関連項目 ◆ DATE ◆ サンプル ◆ (サンプル 1) REM 944BASIC '現在の時、分、秒の表示' HH=INT(TIME/10000) PRINT HH MM=INT(TIME/100)%100 PRINT MM SS=TIME%100 PRINT SS KEYWAIT END (サンプル 2) REM 944BASIC '常駐和風時計' SCREEN 220,160,16,80 EVENT 100,999,1: FONT 48 DIM D(5) DIM K(9)='〇','一','二','三','四','五','六','七','八','九' *LOOP SYNC BOX 0,0,15,79:BOX 1,1,14,78 T=TIME D(0)=INT(T/100000),INT(T/10000)%10,'時',INT(T/1000)%10,INT(T/100)%10,'分' FOR I=0 TO 5 GCURSOR 4,3+12*I IF (I=2)+(I=5) THEN PRINT D(I) ELSE PRINT K(D(I)) NEXT I GOTO *LOOP ────────────────── GETMONTH … 指定した日付の月の日数を算出 [日時(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETMONTH(日付) 日付: YYYYMMDD、YYYYMM、MM のいずれかの形式で数値を指定 ◆ 説  明 ◆ 指定した日付の月の日数を返します。 日付は、YYYYMMDD、YYYYMM、MMのいずれかの形式で数値を指定します。 2月の日数は、うるう年を正しく判定して日数を返します。ただし、MMだけを指定した場合は、年によるうるう年判定ができないため、29が返ります。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'GETMONTHサンプル' *START CLS: LOCATE 0,0: Y='' PRINT 'うるう年を判定します。' PRINT '西暦(4桁)で年を入力してください。' INPUT Y,4,4 M=STRCAT(Y,'02'): REM 西暦+02 M=GETMONTH(M): REM 日数取得 IF M>28 THEN PRINT 'うるう年です' ELSE PRINT 'うるう年ではありません。' KEYWAIT GOTO *START (サンプル 2) REM 944BASIC '今月のカレンダー' DIM WK(6)='Su','Mo','Tu','We','Th','Fr','Sa': REM 曜日表示用 D=DATE:DD=D%100: REM 日付取得 YY=INT(D/10000):MM=INT(D/100)%100 DW=GETWEEK(D-DD+1,0):REM 1日の曜日 W=32:W2=W/2:REM W=表示間隔,W2=左余白 X=W*(DW+1)-W2:Y=44:FONT 80 FOR I=1 TO GETMONTH(D) IF X>W*7 THEN X=W-W2:Y=Y+W+5 GCURSOR X,20: PRINT WK((I+1)%7) IF I<10 THEN GCURSOR X+4,Y ELSE GCURSOR X,Y: REM 1桁数字の位置調整 PRINT I: X=X+W :REM 日を表示 NEXT I MM=STRCAT("- ",YY,'. ',MM,'. -') GCURSOR W*7*(W/100),4: PRINT MM KEYWAIT ────────────────── GETDATE … 指定した日付に日数を増減した日付を算出 [日時(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETDATE(日付,増減) 日付: YYYYMMDD形式の数値 増減: 数値 ◆ 説  明 ◆ 指定した日付に、日数を増減した日付を返します。月代わり、うるう月なども正しく処理されます。 日付は、YYYYMMDDの形式で数値を指定します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'GETDATE サンプル' D=DATE FOR I=0 TO 7 IF I=0 THEN COLORFG 255,0,0 ELSE COLORFG 0,0,0 DS=GETDATE(D,I) LOCATE 4,10+I: GOSUB *DATESTR DS=GETDATE(D,I*(-1)) LOCATE 4,10-I: GOSUB *DATESTR NEXT I KEYWAIT END *DATESTR YY=LEFT(DS,4):MM=MID(DS,5,2):DD=MID(DS,7,2):W=GETWEEK(DS,2) DS=STRCAT(YY,'年',MM,'月',DD,'日',W) PRINT DS RETURN ────────────────── GETDATEDIF … 日付1と日付2の日数差を算出 [日時(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETDATEDIF(日付1,日付2) 日付1: YYYYMMDD形式の数値 日付2: YYYYMMDD形式の数値 ◆ 説  明 ◆ 日付1と日付2の日数差を算出します。月代わり、うるう月なども正しく処理されます。 日付は、YYYYMMDDの形式で数値を指定します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'GETDATEDIF' PRINT '今日を起点に日数を算出します' PRINT '年月日を入力してください' PRINT '年: '; INPUT Y, 4, 4 PRINT '月: '; INPUT M, 2, 4 PRINT '日: '; INPUT D, 2, 4 IF LEN(M)=1 THEN M=STRCAT('0',M) IF LEN(D)=1 THEN D=STRCAT('0',D) D1=STRCAT(Y,M,D): D2=DATE DIF=GETDATEDIF(D1,D2):REM 日数算出 MES=STRCAT(Y,'/',M,'/',D) PRINT MES;:PRINT 'から今日まで ';:PRINT DIF;:PRINT ' 日' KEYWAIT END ────────────────── GETWEEK … 日付に対する曜日を取得 [日時(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETWEEK(日付,タイプ) 日付: YYYYMMDD形式の数値 タイプ: 0〜5の数値 ◆ 説  明 ◆ 指定した日付の曜日を返します。日付は、YYYYMMDDの形式で数値を指定します。 タイプに指定した数値によって、返る値が異なります。 0 - 曜日を表す数値(0〜6=日〜土) 1 - 漢字1文字 2 - ()付き漢字1文字 3 - 漢字+"曜日" 4 - 英語頭3文字 5 - 英語フルスペル ◆ 注意事項 ◆ 実在しない日付(例: 20020931)は指定しないでください。 実在しない日付を指定した場合は、0に相当する値が返ります(実際に返る値は、指定したタイプによって異なります)。 ◆ 関連項目 ◆ ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'GETWEEKサンプル' *START CLS: LOCATE 0,0: Y='': M='': D='' PRINT '西暦で年を入力してください' INPUT Y,4,4 PRINT '月を入力してください' INPUT M,2,4 PRINT '日を入力してください' INPUT D,2,4 REM 1桁の場合、頭に0を付加 IF LEN(M)=1 THEN M=STRCAT('0',M) IF LEN(D)=1 THEN D=STRCAT('0',D) A=STRCAT(Y,M,D) W=GETWEEK(A,3) :REM 曜日を取得 PRINT W KEYWAIT GOTO *START (サンプル 2) REM 944BASIC '今月のカレンダー' DIM WK(6)='Su','Mo','Tu','We','Th','Fr','Sa': REM 曜日表示用 D=DATE:DD=D%100: REM 日付取得 YY=INT(D/10000):MM=INT(D/100)%100 DW=GETWEEK(D-DD+1,0):REM 1日の曜日 W=32:W2=W/2:REM W=表示間隔,W2=左余白 X=W*(DW+1)-W2:Y=44:FONT 80 FOR I=1 TO GETMONTH(D) IF X>W*7 THEN X=W-W2:Y=Y+W+5 GCURSOR X,20: PRINT WK((I+1)%7) IF I<10 THEN GCURSOR X+4,Y ELSE GCURSOR X,Y: REM 1桁数字の位置調整 PRINT I: X=X+W :REM 日を表示 NEXT I MM=STRCAT("- ",YY,'. ',MM,'. -') GCURSOR W*7*(W/100),4: PRINT MM KEYWAIT ────────────────── § 数値 ━━━━━━━━━━━━━━━━━━ ────────────────── INT … 値を整数に変換 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ INT(式) 式: 任意の数値または数式 ◆ 説  明 ◆ 式の値を整数にします。 小数点以下の値は切り捨てられます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ ABS、SGN ◆ サンプル ◆ REM 944BASIC 'INT と PI のサンプル' A=INT(PI) B=INT(PI*100)/100 B=STR(B):B=LEFT(B,4) PRINT 'INT と PI のサンプル' LOCATE 0,2 PRINT 'あなたは円周率を、約 '; PRINT A; PRINT ' と習いましたか?' PRINT 'それとも、'; PRINT B; PRINT ' と習いましたか?' PRINT 'ちなみに9Bでは、PI='; A=PI:PRINT A; PRINT ' が返ります。' KEYWAIT ────────────────── SGN … 符号の算出 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SGN(式) 式: 任意の数値または数式 ◆ 説  明 ◆ 式の値に対する符号を、次の値で返します。 -1: 値がマイナス 0: 値が0 1: 値がプラス ◆ 注意事項 ◆ ◆ 関連項目 ◆ INT、ABS ◆ サンプル ◆ REM 944BASIC 'SGNサンプル' RANDOMIZE TIME DIM S(2)='負','0','正' FOR I=2 TO 11 A=RNDRG(-9,9) B=SGN(A)+1 LOCATE 3,I PRINT A; PRINT ' --> '; PRINT S(B) NEXT I KEYWAIT END ────────────────── HEX … 式に対する16進数の文字列を取得 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ HEX(式) 式: 任意の数値または数式 ◆ 説  明 ◆ 式の値(数値)に対して、16進数を表す文字列を返します。 ◆ 注意事項 ◆ 返る値は、文字列です。そのままでは数値として演算することはできないため、注意が必要です。 16進数を10進数に変換するには、HEXTODECを使用します。 16進数を表すためにほかのプログラム言語で使用される記号(0x、&Hなど)は付加されません(9Bでは意味を持ちません)。 ◆ 関連項目 ◆ HEXTODEC ◆ サンプル ◆ REM 944BASIC 'ASC/CHR,HEX/HEXTODEC' *START CLS: LOCATE 0,0: A='' PRINT '文字を1文字入力してください' INPUT A,2,0 A=ASC(A) :REM 文字コード取得 PRINT 'キャラクタコード(10進)='; PRINT A A=HEX(A) :REM 数値を16進化 AA=STRCAT('0x',A) :REM 頭に0xを付加 PRINT 'キャラクタコード(16進)='; PRINT AA A=HEXTODEC(A) :REM 16進数値を10進化 A=CHR(A):REM 文字コードから文字列に PRINT '入力した文字=';: PRINT A KEYWAIT GOTO *START ────────────────── HEXTODEC … 16進数の文字列を10進数に変換 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ HEXTODEC(文字列) 文字列: 16進数を表す文字列 ◆ 説  明 ◆ 16進数を表す文字列を、10進数の数値に変換します。 ◆ 注意事項 ◆ 指定する値は文字列です。 16進数を表すためにほかのプログラム言語で使用される記号(0x、&Hなど)は使用しないでください(9Bでは意味を持ちません)。 ◆ 関連項目 ◆ HEX ◆ サンプル ◆ REM 944BASIC 'ASC/CHR,HEX/HEXTODEC' *START CLS: LOCATE 0,0: A='' PRINT '文字を1文字入力してください' INPUT A,2,0 A=ASC(A) :REM 文字コード取得 PRINT 'キャラクタコード(10進)='; PRINT A A=HEX(A) :REM 数値を16進化 AA=STRCAT('0x',A) :REM 頭に0xを付加 PRINT 'キャラクタコード(16進)='; PRINT AA A=HEXTODEC(A) :REM 16進数値を10進化 A=CHR(A):REM 文字コードから文字列に PRINT '入力した文字=';: PRINT A KEYWAIT GOTO *START ────────────────── ABS … 絶対値の算出 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ ABS(式) 式: 任意の数値または数式 ◆ 説  明 ◆ 式の値に対する絶対値を返します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ INT、SGN ◆ サンプル ◆ REM 944BASIC 'ABS サンプル' PRINT '乱数(-9〜-1)の絶対値を表示' REM ランダムシード T=TIME%20 FOR I=1 TO T A=RNDRG(-9,-1) NEXT I LOCATE 1,2 PRINT 'A='; PRINT A LOCATE 1,4 PRINT 'ABS(A)='; A=ABS(A) PRINT A KEYWAIT ────────────────── RND … 乱数値の取得 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ RND ◆ 説  明 ◆ 0から65535までの整数の乱数を発生します。 通常は、 R=RND%10+1 のように使用します。この例では、1〜10の乱数が発生します。 ◆ 注意事項 ◆ 乱数の発生順は固定されています。 乱数の発生順を不規則にするには、RANDOMIZEに時間や不規則数を指定するか、現在時刻などを利用して不定回数RNDを実行するなどしてください。 ◆ 関連項目 ◆ RNDRG、RANDOMIZE ◆ サンプル ◆ REM 944BASIC 'RND サンプル' COLORBG 0,0,0:COLORFG 0,255,0 FONT 48:CLS REM 入れ子(ネスト)も可能 FOR I=0 TO 31 A='' FOR J=0 TO 59 REM RNDだけでは、乱数の順番が固定されるので、TIMEを足して、より不規則化する R=RND+TIME%10:R=STR(R) A=STRCAT(A,R) NEXT J PRINT A NEXT I KEYWAIT (サンプル 2) REM 944BASIC 'RND サンプル2' REM ランダムシード - RNDを不定回数繰り返して、より不規則化する FOR I=(TIME%60) R=RND NEXT I R=RND+TIME%20 :REM TIMEを加算して、より乱数度を高める FOR I=1 TO 20 PRINT 'FOR 〜 NEXT '; PRINT I; PRINT ' 回目' REM 変数 I を強制的に終了値にして、ループを抜ける IF I=R THEN PRINT 'STOP': I=20 NEXT I KEYWAIT END ────────────────── RNDRG … 開始から終了迄の範囲内乱数取得 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ RNDRG(開始,終了) 開始: 乱数の開始範囲 終了: 乱数の終了範囲 ◆ 説  明 ◆ 一定範囲内の乱数(整数値)を取得します。 ◆ 注意事項 ◆ 乱数の発生順は固定されています。 乱数の発生順を不規則にするには、RANDOMIZEに時間や不規則数を指定するか、現在時刻などを利用して不定回数RNDRGを実行するなどしてください。 ◆ 関連項目 ◆ RND、RANDOMIZE ◆ サンプル ◆ REM 944BASIC 'RNDRG サンプル' PRINT '乱数(-9〜-1)の絶対値を表示' REM ランダムシード T=TIME%20 FOR I=1 TO T A=RNDRG(-9,-1) NEXT I LOCATE 1,2 PRINT '(乱数)A='; PRINT A LOCATE 1,4 PRINT 'ABS(A)='; A=ABS(A) PRINT A KEYWAIT ────────────────── RANDOMIZE … 乱数発生の初期値設定 [数値] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ RANDOMIZE 初期値 初期値: 数値 ◆ 説  明 ◆ 乱数発生のための初期値(ランダムシード)を設定します。 プログラムで乱数を使用する際は、内部的にある数字を元に乱数列が作成されます。乱数列の元になる数字を変更することで、乱数発生順の予測を困難にする効果があります。 逆に、初期値を固定して、常に決まったパターンで乱数を表示させることもできます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ RND、RNDRG ◆ サンプル ◆ REM 944BASIC 'RANDOMIZE サンプル' RANDOMIZE 1: REM 毎回同じ乱数を表示 GOSUB *PRN RANDOMIZE 1: REM 毎回同じ乱数を表示 GOSUB *PRN REM 毎回異なる乱数を表示 RANDOMIZE TIME GOSUB *PRN KEYWAIT END *PRN FOR I=0 TO 4 R=RND: PRINT R NEXT I PRINT ' ' RETURN ────────────────── PI … 円周率の取得 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ PI ◆ 説  明 ◆ 円周率3.1415926535897932を返します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'INT と PI のサンプル' A=INT(PI) B=INT(PI*100)/100 B=STR(B):B=LEFT(B,4) PRINT 'INT と PI のサンプル' LOCATE 0,2 PRINT 'あなたは円周率を、約 '; PRINT A; PRINT ' と習いましたか?' PRINT 'それとも、'; PRINT B; PRINT ' と習いましたか?' PRINT 'ちなみに9Bでは、PI='; A=PI:PRINT A; PRINT ' が返ります。' KEYWAIT ────────────────── SIN … サイン値の算出 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SIN(式) 式: 任意の数値または数式 ◆ 説  明 ◆ 式の値に対するサイン(正弦)値を求めます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ COS、TAN、SINAG、COSAG、TANAG、ATAN、ATANAG、ATAN2、ATAN2AG ◆ サンプル ◆ REM 944BASIC 'SIN サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 COLORBG 0,0,0:COLORFG 255,255,255:CLS OFFSET=120 FOR X=0 TO 240 Y=SIN(X/20)*120+OFFSET PSET X,Y NEXT X CLS FOR X=0 TO 240 Y=SIN(X/20)*120+OFFSET SPRITE 1,1,1, X,Y, 96,0, 16,16 REFRESH XX,YY, XX,YY, 16,16 REFRESH X,Y, X,Y, 16,16 XX=X: YY=Y NEXT X KEYWAIT ────────────────── COS … コサイン値の算出 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ COS(式) 式: 任意の数値または数式 ◆ 説  明 ◆ 式の値に対するコサイン値を求めます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SIN、TAN、SINAG、COSAG、TANAG、ATAN、ATANAG、ATAN2、ATAN2AG ◆ サンプル ◆ REM 944BASIC 'COS サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 COLORBG 0,0,0:COLORFG 255,255,255:CLS OFFSET=120 FOR X=0 TO 240 Y=COS(X/20)*120+OFFSET PSET X,Y NEXT X CLS FOR X=0 TO 240 Y=COS(X/20)*120+OFFSET SPRITE 1,1,1, X,Y, 96,0, 16,16 REFRESH XX,YY, XX,YY, 16,16 REFRESH X,Y, X,Y, 16,16 XX=X: YY=Y NEXT X KEYWAIT ────────────────── TAN … タンジェント値の算出 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ TAN(式) 式: 任意の数値または数式 ◆ 説  明 ◆ 式の値に対するタンジェント値を求めます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SIN、COS、SINAG、COSAG、TANAG、ATAN、ATANAG、ATAN2、ATAN2AG ◆ サンプル ◆ REM 944BASIC 'TAN サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 COLORBG 0,0,0:COLORFG 255,255,255:CLS OFFSET=120 FOR X=0 TO 240 Y=TAN(X/40)*40+OFFSET PSET X,Y NEXT X CLS FOR X=0 TO 240 Y=TAN(X/40)*40+OFFSET SPRITE 1,1,1, X,Y, 96,0, 16,16 REFRESH XX,YY, XX,YY, 16,16 REFRESH X,Y, X,Y, 16,16 XX=X: YY=Y NEXT X KEYWAIT ────────────────── ATAN … アークタンジェント値の算出 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ ATAN(式) 式: 任意の数値または数式 ◆ 説  明 ◆ 式の値に対するアークタンジェント値を求めます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SIN、COS、TAN、SINAG、COSAG、TANAG、ATANAG、ATAN2、ATAN2AG ◆ サンプル ◆ REM 944BASIC 'ATAN サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 COLORBG 0,0,0:COLORFG 255,255,255:CLS OFFSET=120 FOR X=0 TO 240 Y=ATAN(X/40)*40+OFFSET PSET X,Y NEXT X CLS FOR X=0 TO 240 Y=ATAN(X/40)*40+OFFSET SPRITE 1,1,1, X,Y, 96,0, 16,16 REFRESH XX,YY, XX,YY, 16,16 REFRESH X,Y, X,Y, 16,16 XX=X: YY=Y NEXT X KEYWAIT END ────────────────── ATAN2 … アークタンジェント値の算出(座標指定) [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ ATAN2(X,Y) X: X座標 Y: Y座標 ◆ 説  明 ◆ 2つの変数(座標)からアークタンジェント値を求めます。返る値はラジアン値です。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SIN、COS、TAN、SINAG、COSAG、TANAG、ATAN、ATANAG、ATAN2AG ◆ サンプル ◆ REM 944BASIC 'ATAN2 サンプル' X=90:Y=90:BX=30:BY=30:REM 初期位置 MESSAGE '矢印キーで◇を動かして!' *LOOP SYNC X=X+PADX*3:Y=Y+PADY*3 IF X<0 THEN X=239 IF X>239 THEN X=0 IF Y<0 THEN Y=239 IF Y>239 THEN Y=0 GCURSOR XO,YO:PRINT ' ' GCURSOR X,Y:PRINT '◇':XO=X:YO=Y A=ATAN2(X-BX,Y-BY):REM 角度取得 REM ATAN2の角度から座標算出 BX=BX+SIN(A)*4:BY=BY+COS(A)*4 GCURSOR BXO,BYO:PRINT ' ' GCURSOR BX,BY:PRINT '●' BXO=BX:BYO=BY GOTO *LOOP ────────────────── SINAG … サイン値の算出(角度指定) [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SINAG(式) 式:角度 ◆ 説  明 ◆ 式の値に対するサイン値を求めます。式には角度を指定します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SIN、COS、TAN、COSAG、TANAG、ATAN、ATANAG、ATAN2、ATAN2AG ◆ サンプル ◆ REM 944BASIC 'SINAG サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP "9B_REF.BMP",0,0 COLORBG 0,0,0:COLORFG 255,255,255:CLS OFFSET=120 FOR X=0 TO 240 Y=SINAG(X)*120+OFFSET: PSET X,Y NEXT X CLS FOR X=0 TO 240 Y=SINAG(X)*120+OFFSET SPRITE 1,1,1, X,Y, 96,0, 16,16 REFRESH XX,YY, XX,YY, 16,16 REFRESH X,Y, X,Y, 16,16 XX=X: YY=Y NEXT X KEYWAIT ────────────────── COSAG … コサイン値の算出(角度指定) [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ COSAG(式) 式:角度 ◆ 説  明 ◆ 式の値に対するコサイン値を求めます。式には角度を指定します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SIN、COS、TAN、SINAG、TANAG ◆ サンプル ◆ REM 944BASIC 'COSAG サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 COLORBG 0,0,0:COLORFG 255,255,255:CLS OFFSET=120 FOR X=0 TO 240 Y=COSAG(X)*120+OFFSET: PSET X,Y NEXT X CLS FOR X=0 TO 240 Y=COSAG(X)*120+OFFSET SPRITE 1,1,1, X,Y, 96,0, 16,16 REFRESH XX,YY, XX,YY, 16,16 REFRESH X,Y, X,Y, 16,16 XX=X: YY=Y NEXT X KEYWAIT ────────────────── TANAG … タンジェント値の算出(角度指定) [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ TANAG(式) 式:角度 ◆ 説  明 ◆ 式の値に対するタンジェント値を求めます。式には角度を指定します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SIN、COS、TAN、SINAG、COSAG、ATAN、ATANAG、ATAN2、ATAN2AG ◆ サンプル ◆ REM 944BASIC 'TANAG サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 COLORBG 0,0,0:COLORFG 255,255,255:CLS OFFSET=120 FOR X=0 TO 240 Y=TANAG(X)*60+OFFSET: PSET X,Y NEXT X CLS FOR X=0 TO 240 Y=TANAG(X)*60+OFFSET SPRITE 1,1,1, X,Y, 96,0, 16,16 REFRESH XX,YY, XX,YY, 16,16 REFRESH X,Y, X,Y, 16,16 XX=X: YY=Y NEXT X KEYWAIT ────────────────── ATANAG … アークタンジェント値の算出(角度指定) [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ ATANAG(式) 式:角度 ◆ 説  明 ◆ 式の値に対するアークタンジェント値を求めます。式には角度を指定します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SIN、COS、TAN、SINAG、COSAG、TANAG、ATAN、ATAN2、ATAN2AG ◆ サンプル ◆ REM 944BASIC 'ATANAG サンプル' SETDIRECTORY 'F1:\944BASIC\' SETPAGE 2: BITMAP '9B_REF.BMP',0,0 COLORBG 0,0,0:COLORFG 255,255,255 CLS:OFFSET=120 FOR X=0 TO 240 XX=X-90: Y=ATANAG(XX)+OFFSET PSET X,Y NEXT X CLS FOR X=0 TO 240 X2=X-90: Y=ATANAG(X2)+OFFSET SPRITE 1,1,1, X,Y, 96,0, 16,16 REFRESH XX,YY, XX,YY, 16,16 REFRESH X,Y, X,Y, 16,16 XX=X: YY=Y NEXT X KEYWAIT ────────────────── ATAN2AG … アークタンジェント値の算出(座標指定、角度) [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ ATAN2AG(X,Y) X: X座標 Y: Y座標 ◆ 説  明 ◆ 2つの変数(座標)からアークタンジェント値を求めます。返る値は角度です。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SIN、COS、TAN、SINAG、COSAG、TANAG、ATAN、ATANAG、ATAN2 ◆ サンプル ◆ REM 944BASIC 'ATAN2AG サンプル' X=90:Y=90:BX=30:BY=30:REM 初期位置 MESSAGE '矢印キーで◇を動かして!' *LOOP SYNC X=X+PADX*3:Y=Y+PADY*3 IF X<0 THEN X=239 IF X>239 THEN X=0 IF Y<0 THEN Y=239 IF Y>239 THEN Y=0 GCURSOR XO,YO:PRINT ' ' GCURSOR X,Y:PRINT '◇':XO=X:YO=Y A=ATAN2AG(X-BX,Y-BY):REM 角度取得 REM ATAN2AGの角度から座標算出 BX=BX+SINAG(A)*4:BY=BY+COSAG(A)*4 GCURSOR BXO,BYO:PRINT ' ' GCURSOR BX,BY:PRINT '●' BXO=BX:BYO=BY GOTO *LOOP ────────────────── SQR … 平方根(スクエア値)の算出 [数値(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SQR(式) 式: 任意の数値または数式 ◆ 説  明 ◆ 式の値に対する平方根(スクエア値)を求めます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'SQR サンプル' PRINT 'SQRは平方根(ルート)を求める関数です。' PRINT ' ' FOR I=2 TO 9 PRINT ' √'; PRINT I; PRINT '='; A=SQR(I) PRINT A NEXT I KEYWAIT ────────────────── § ファイル操作 ━━━━━━━━━━━━━━━━━━ ────────────────── LOADTEXT … テキスト読込 [ファイル操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ LOADTEXT ファイル名,1次元配列名 ファイル名: ファイル名 1次元配列: データ格納用配列 ◆ 説  明 ◆ 事前に指定した1次元配列に、テキストファイルから値を読み込みます。 1行全体が1つの配列値に格納されます。 ◆ 注意事項 ◆ 配列の1要素に読み込める文字列は、最大255バイトまでです。 ファイル名は、ディレクトリ(フォルダ)名を含めずに、相対指定することができます。 ◆ 関連項目 ◆ LOADCSV、SAVECSV、SAVETEXT、GETDIRECTORY、SETDIRECTORY ◆ サンプル ◆ ※このサンプルでは、REF_SAMP.TXT というファイルを作成します。サンプル実行後、このファイルは削除してかまいません。 REM 944BASIC 'SAVETEXT/LOADTEXT' SETDIRECTORY 'F1:\944BASIC\' YN=YESNO('REF_SAMP.TXT というファイルを作成します。よろしいですか?') IF YN=0 THEN END DIM S(0) S(0)='The quick brown fox jumped over the lazy dog.' SAVETEXT 'REF_SAMP.TXT',S MESSAGE 'ファイルを保存しました' MESSAGE 'ファイルを読み込みます' DIM L(0) LOADTEXT 'REF_SAMP.TXT',L PRINT L(0) KEYWAIT ────────────────── LOADCSV … CSV読込 [ファイル操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ LOADCSV ファイル名,2次元配列名 ファイル名: ファイル名 2次元配列: データ格納用配列 ◆ 説  明 ◆ 事前に指定した2次元配列に、カンマ区切りのCSVファイルから値を読み込みます。 カンマで区切られた値ごとに、配列値に格納されます。 ◆ 注意事項 ◆ 配列の1要素に読み込める文字列は、最大255バイトまでです。 ファイル名は、ディレクトリ(フォルダ)名を含めずに、相対指定することができます。 ◆ 関連項目 ◆ LOADTEXT、SAVECSV、SAVETEXT、GETDIRECTORY、SETDIRECTORY ◆ サンプル ◆ ※このサンプルでは、REF_SAMP.CSV というファイルを作成します。サンプル実行後、このファイルは削除してかまいません。 REM 944BASIC 'SAVECSV/LOADCSV' SETDIRECTORY 'F1:\944BASIC\' YN=YESNO('REF_SAMP.CSV というファイルを作成します。よろしいですか?') IF YN=0 THEN END DIM S(1,2) S(0,0)='GIN','45200' S(0,1)='FIZZ','31400' S(0,2)='RUM','16900' SAVECSV 'REF_SAMP.CSV',S MESSAGE 'ファイルを保存しました' MESSAGE 'ファイルを読み込みます' DIM L(1,2) LOADCSV 'REF_SAMP.CSV',L FOR I=0 TO 2 ST=STRCAT(L(0,I),' - ',L(1,I)) PRINT ST NEXT I KEYWAIT ────────────────── SAVETEXT … テキストへセーブ [ファイル操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SAVETEXT ファイル名,1次元配列名 ファイル名: ファイル名 1次元配列: データが格納された配列 ◆ 説  明 ◆ 1次元配列の値を、テキストファイルに書き出します。 ◆ 注意事項 ◆ ファイル名は、ディレクトリ(フォルダ)名を含めずに、相対指定することができます。 ◆ 関連項目 ◆ LOADCSV、LOADTEXT、SAVETEXT、GETDIRECTORY、SETDIRECTORY ◆ サンプル ◆ ※このサンプルでは、REF_SAMP.TXT というファイルを作成します。サンプル実行後、このファイルは削除してかまいません。 REM 944BASIC 'SAVETEXT/LOADTEXT' SETDIRECTORY 'F1:\944BASIC\' YN=YESNO('REF_SAMP.TXT というファイルを作成します。よろしいですか?') IF YN=0 THEN END DIM S(0) S(0)='The quick brown fox jumped over the lazy dog.' SAVETEXT 'REF_SAMP.TXT',S MESSAGE 'ファイルを保存しました' MESSAGE 'ファイルを読み込みます' DIM L(0) LOADTEXT 'REF_SAMP.TXT',L PRINT L(0) KEYWAIT ────────────────── SAVECSV … CSVへセーブ [ファイル操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SAVECSV ファイル名,2次元配列名 ファイル名: ファイル名 2次元配列: データが格納された配列 ◆ 説  明 ◆ 2次元配列の値を、カンマ区切りのCSVファイルに書き出します。 ◆ 注意事項 ◆ ファイル名は、ディレクトリ(フォルダ)名を含めずに、相対指定することができます。 ◆ 関連項目 ◆ LOADCSV、LOADTEXT、SAVECSV、GETDIRECTORY、SETDIRECTORY ◆ サンプル ◆ ※このサンプルでは、REF_SAMP.CSV というファイルを作成します。サンプル実行後、このファイルは削除してかまいません。 REM 944BASIC 'SAVECSV/LOADCSV' SETDIRECTORY 'F1:\944BASIC\' YN=YESNO('REF_SAMP.CSV というファイルを作成します。よろしいですか?') IF YN=0 THEN END DIM S(1,2) S(0,0)='GIN','45200' S(0,1)='FIZZ','31400' S(0,2)='RUM','16900' SAVECSV 'REF_SAMP.CSV',S MESSAGE 'ファイルを保存しました' MESSAGE 'ファイルを読み込みます' DIM L(1,2) LOADCSV 'REF_SAMP.CSV',L FOR I=0 TO 2 ST=STRCAT(L(0,I),' - ',L(1,I)) PRINT ST NEXT I KEYWAIT ────────────────── FILESEARCH … パターンに一致するファイル名の取得 [ファイル操作(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ FILESEARCH パターン文字,配列 パターン文字: ファイルを抽出するためのパターン(文字列) 配列: パターンに一致したファイル名を格納する配列 ◆ 説  明 ◆ 現在のディレクトリ内でパターンに一致するファイル名をすべて検索し、配列に格納します。 パターンには、ワイルドカード文字(*)を使用できます。'*.*' と指定すると、すべてのファイルが検索されます。'*.BAS' と指定すると、拡張子が .BAS のファイルのみ検索されます。 見つかったファイル数は、関数 GETREADCNT で取得できます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ LOADCSV、LOADTEXT、SAVETEXT、SAVECSV、SETDIRECTORY、GETDIRECTORY、DIRSEARCH、DIRMAKE ◆ サンプル ◆ REM 944BASIC 'FILESEARCH/RUNサンプル' DIM FILE(512) SETDIRECTORY 'F1:\944BASIC\' REM 内の拡張子が.BASのファイルを、配列FILEに格納 FILESEARCH '*.BAS',FILE REM 見つかったファイル数をGETREADCNTで取得 C=GETREADCNT REM 配列FILEをソート SORT FILE,0,C-1 REM メニュー表示 MENU FILE,C,0 REM 選択された.BASファイルを実行 RUN FILE(MENUNO) ────────────────── FILECOPY … ファイルのコピー [ファイル操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ FILECOPY 元ファイル名,先ファイル名 元ファイル名: コピー元のファイル名(文字列) 先ファイル名: コピー先のファイル名(文字列) ◆ 説  明 ◆ ファイルをコピーします。 ディレクトリを指定せず、ファイル名のみ指定(相対指定)した場合は、現在のディレクトリ内のファイルがコピーの対象になります。 別のディレクトリにファイルをコピーする場合は、ディレクトリを含めてコピー先のファイル名を記述します。 ◆ 注意事項 ◆ ワイルドカードは使用できません。また、コピー先にディレクトリのみを指定することはできません。 (DOSなどのコピーコマンドとは使い方が異なるため、注意が必要です)。 ファイルを大量に、コピー、移動、または削除する場合は、事前にバッテリの状態を確認するようにプログラムを記述することをお勧めします (ファイル操作中に電源が切れると、ファイル破損などの不具合が発生する可能性があります)。 ◆ 関連項目 ◆ FILEMOVE、FILEDELETE、FILESEARCH、SETDIRECTORY、GETDIRECTORY、DIRSEARCH、DIRMAKE ◆ サンプル ◆ REM 944BASIC 'FILECOPY/FILEDELETE' DIM A(0)='FILECOPY サンプル' MESSAGE '9B_REF.TMPというファイルを作成します' SETDIRECTORY 'F1:\944BASIC\' SAVETEXT '9B_REF.TMP',A FILECOPY '9B_REF.TMP','F0:\9B_REF.TMP' MESSAGE 'F0:\に9B_REF.TMPというファイルをコピーしました' DIM B(0) LOADTEXT 'F0:\9B_REF.TMP',B MES=STRCAT('F0:\9B_REF.TMP=',B(0)) MESSAGE MES MESSAGE '9B_REF.TMPを削除します。' FILEDELETE '9B_REF.TMP' FILEDELETE 'F0:\9B_REF.TMP' MESSAGE '終了しました。' ────────────────── FILEMOVE … ファイルの移動 [ファイル操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ FILEMOVE 元ファイル名,先ファイル名 元ファイル名: 移動元のファイル名(文字列) 先ファイル名: 移動先のファイル名(文字列) ◆ 説  明 ◆ ファイルを移動します。 ディレクトリを指定せず、ファイル名のみ指定(相対指定)した場合は、現在のディレクトリ内のファイルが移動の対象になります。 別のディレクトリにファイルを移動する場合は、ディレクトリを含めて移動先のファイル名を記述します。 ◆ 注意事項 ◆ ワイルドカードは使用できません。また、移動先にディレクトリのみを指定することはできません。 (DOSなどのコピー/移動コマンドとは使い方が異なるため、注意が必要です)。 ファイルを大量に、コピー、移動、または削除する場合は、事前にバッテリの状態を確認するようにプログラムを記述することをお勧めします (ファイル操作中に電源が切れると、ファイル破損などの不具合が発生する可能性があります)。 ◆ 関連項目 ◆ FILECOPY、FILEDELETE、FILESEARCH、SETDIRECTORY、GETDIRECTORY、DIRSEARCH、DIRMAKE ◆ サンプル ◆ ────────────────── FILEDELETE … ファイルの削除 [ファイル操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ FILEDELETE ファイル名 ファイル名: 削除するファイル名(文字列) ◆ 説  明 ◆ ファイルを削除します。 ディレクトリを指定せず、ファイル名のみ指定(相対指定)した場合は、現在のディレクトリ内のファイルが移動の対象になります。 ◆ 注意事項 ◆ ワイルドカードは使用できません。また、移動先にディレクトリのみを指定することはできません。 (DOSなどの削除コマンドとは使い方が異なるため、注意が必要です)。 ファイルを大量に、コピー、移動、または削除する場合は、事前にバッテリの状態を確認するようにプログラムを記述することをお勧めします (ファイル操作中に電源が切れると、ファイル破損などの不具合が発生する可能性があります)。 ◆ 関連項目 ◆ FILECOPY、FILEMOVE、FILESEARCH、SETDIRECTORY、GETDIRECTORY、DIRSEARCH、DIRMAKE ◆ サンプル ◆ REM 944BASIC 'FILECOPY/FILEDELETE' DIM A(0)='FILECOPY サンプル' MESSAGE '9B_REF.TMPというファイルを作成します' SETDIRECTORY 'F1:\944BASIC\' SAVETEXT '9B_REF.TMP',A FILECOPY '9B_REF.TMP','F0:\9B_REF.TMP' MESSAGE 'F0:\に9B_REF.TMPというファイルをコピーしました' DIM B(0) LOADTEXT 'F0:\9B_REF.TMP',B MES=STRCAT('F0:\9B_REF.TMP=',B(0)) MESSAGE MES MESSAGE '9B_REF.TMPを削除します。' FILEDELETE '9B_REF.TMP' FILEDELETE 'F0:\9B_REF.TMP' MESSAGE '終了しました。' ────────────────── SETDIRECTORY … カレントディレクトリの設定 [ファイル操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SETDIRECTORY ディレクトリ名 ディレクトリ名: 文字列 ◆ 説  明 ◆ ファイルの読み込み、書き出しを行うディレクトリ(フォルダ)を設定します。 ◆ 注意事項 ◆ ディレクトリ名は、メモリの場所(F0:、F1:、C1:、C2:など)から指定します。ディレクトリの区切りは \ 記号で表し、ディレクトリ名の末尾を \ 記号で終わらせるようにしてください。 例: SETDIRECTORY 'F1:\944BASIC\' ◆ 関連項目 ◆ LOADCSV、LOADTEXT、SAVETEXT、SAVECSV、GETDIRECTORY、DIRSEARCH、DIRMAKE ◆ サンプル ◆ REM 944BASIC 'GET/SETDIRECTORYサンプル' D=GETDIRECTORY D=STRCAT('現在のディレクトリ設定は ',D,' です。') MESSAGE D SETDIRECTORY 'F0:\__ZAURUS\' D=GETDIRECTORY D=STRCAT('ディレクトリ設定を ',D,' に変更しました。') MESSAGE D DIM FILE(512) FILESEARCH '*.APL',FILE MENU FILE,20,0 D=STRCAT('選択したのは',FILE(MENUNO),'です') MESSAGE D KEYWAIT ────────────────── GETDIRECTORY … カレントディレクトリの取得 [ファイル操作(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETDIRECTORY ◆ 説  明 ◆ 現在のディレクトリ(フォルダ)名を文字列で返します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ LOADCSV、LOADTEXT、SAVETEXT、SAVECSV、SETDIRECTORY、DIRSEARCH、DIRMAKE ◆ サンプル ◆ REM 944BASIC 'GET/SETDIRECTORYサンプル' D=GETDIRECTORY D=STRCAT('現在のディレクトリ設定は ',D,' です。') MESSAGE D SETDIRECTORY 'F0:\__ZAURUS\' D=GETDIRECTORY D=STRCAT('ディレクトリ設定を ',D,' に変更しました。') MESSAGE D DIM FILE(512) FILESEARCH '*.APL',FILE MENU FILE,20,0 D=STRCAT('選択したのは',FILE(MENUNO),'です') MESSAGE D KEYWAIT ────────────────── DIRSEARCH … パターンに一致するディレクトリ名の取得 [ファイル操作(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ DIRSEARCH パターン文字,配列 パターン文字: ディレクトリを抽出するためのパターン(文字列) 配列: パターンに一致したディレクトリ名を格納する配列 ◆ 説  明 ◆ 現在のディレクトリ(フォルダ)内でパターンに一致するディレクトリ名をすべて検索し、配列に格納します。 パターンには、ワイルドカード文字(*)を使用できます。'*' と指定すると、すべてのディレクトリが検索されます。 見つかったディレクトリ数は、関数 GETREADCNT で取得できます。 ◆ 注意事項 ◆ ディレクトリ名は、メモリの場所(F0:、F1:、C1:、C2:など)から指定します。 パターン文字の末尾には、\ 記号は必要ありません。 ◆ 関連項目 ◆ SETDIRECTORY、GETDIRECTORY、DIRMAKE、GETREADCNT ◆ サンプル ◆ ※このサンプルは、SDカードとCFカードの両方を使用していて、CFに C1:\944BASIC\ ディレクトリがある場合に実行できます。また、サンプルを実行すると SD に C2:\9B_BAK\ というディレクトリが作成され、.BASファイルがコピーされます。また、バッテリ残量が低い場合は実行できません。 REM 944BASIC 'DIRSEARCH/MAKE' IF GETBATTERY<=3 THEN MESSAGE 'LOW BATTERY':END PRINT 'C1:\944BASIC\の.BASファイルをバックアップします。バックアップ先ディレクトリの入力:' LOCATE 2,6: D='C2:\9B_BAK\' INPUT D,16,3 DIM A(512): DIRSEARCH D,A IF GETREADCNT=0 THEN DIRMAKE D FILESEARCH 'C1:\944BASIC\*.BAS',A C=GETREADCNT-1 IF C=-1 THEN MESSAGE 'NO FILE':END FOR I=0 TO C C0=STRCAT('C1:\944BASIC\',A(I)) C1=STRCAT(D,A(I)): FILECOPY C0,C1 LOCATE 9,8: PRINT I;: PRINT '/';: PRINT C: LOCATE 9,9: PRINT A(I); NEXT I MESSAGE 'バックアップ終了' ────────────────── DIRMAKE … ディレクトリの作成 [ファイル操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ DIRMAKE ディレクトリ名 ディレクトリ名: 文字列 ◆ 説  明 ◆ ディレクトリ(フォルダ)を作成します。 ディレクトリ名をメモリの場所(F0:、C1:など)から指定(絶対指定)した場合は、指定したディレクトリを直接作成します。 ディレクトリ名のみ指定(相対指定)した場合は、現在のディレクトリ以下にそのディレクトリが作成されます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SETDIRECTORY、GETDIRECTORY、DIRSEARCH ◆ サンプル ◆ ※このサンプルは、SDカードとCFカードの両方を使用していて、CFに C1:\944BASIC\ ディレクトリがある場合に実行できます。また、サンプルを実行すると SD に C2:\9B_BAK\ というディレクトリが作成され、.BASファイルがコピーされます。また、バッテリ残量が低い場合は実行できません。 REM 944BASIC 'DIRSEARCH/MAKE' IF GETBATTERY<=3 THEN MESSAGE 'LOW BATTERY':END PRINT 'C1:\944BASIC\の.BASファイルをバックアップします。バックアップ先ディレクトリの入力:' LOCATE 2,6: D='C2:\9B_BAK\' INPUT D,16,3 DIM A(512): DIRSEARCH D,A IF GETREADCNT=0 THEN DIRMAKE D FILESEARCH 'C1:\944BASIC\*.BAS',A C=GETREADCNT-1 IF C=-1 THEN MESSAGE 'NO FILE':END FOR I=0 TO C C0=STRCAT('C1:\944BASIC\',A(I)) C1=STRCAT(D,A(I)): FILECOPY C0,C1 LOCATE 9,8: PRINT I;: PRINT '/';: PRINT C: LOCATE 9,9: PRINT A(I); NEXT I MESSAGE 'バックアップ終了' ────────────────── GETREADCNT … 見つかったファイル数、データ数の取得 [ファイル操作(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETREADCNT ◆ 説  明 ◆ LOADTEXTで取得したデータの件数(ファイルの行数)、またはFILESEARCHで見つかったファイル数、DIRSEARCHで見つかったディレクトリ数が返されます。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ FILESEARCH、DIRSEARCH、LOADTEXT ◆ サンプル ◆ REM 944BASIC 'FILESEARCH/RUNサンプル' DIM FILE(512) SETDIRECTORY 'F1:\944BASIC\' REM 内の拡張子が.BASのファイルを、配列FILEに格納 FILESEARCH '*.BAS',FILE REM 見つかったファイル数をGETREADCNTで取得 C=GETREADCNT REM 配列FILEをソート SORT FILE,0,C-1 REM メニュー表示 MENU FILE,C,0 REM 選択された.BASファイルを実行 RUN FILE(MENUNO) ────────────────── § 他ソフト操作 ━━━━━━━━━━━━━━━━━━ ────────────────── APL … 本体アプリとMOREソフトの起動 [他ソフト操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ APL アプリID アプリID: 文字列(4桁の英数字) ◆ 説  明 ◆ 指定した識別子のMOREソフト、または本体機能を実行します。アプリID(識別子)には、4桁の英数字を指定します。 ◆ 注意事項 ◆ 本体内蔵のアプリケーションのプロセスを終了している場合、APLでは正常に呼び出せない場合があります。 識別子は、ユーティリティ系のMOREソフトを使用して調べることができます。 操作対象のアプリケーションが画面に表示されるように、SCREENを使用してウィンドウのサイズを小さくする(常駐させておく)か、アプリケーションの起動後BASICソフト自身を終了する必要があります。 APL実行後は、起動したアプリケーションがアクティブになります。アプリケーションからBASICの処理に戻るには、SETPENでBASICプログラム自身にペンタッチするなどして、BASICプログラムをアクティブにすることが必要になる場合があります。 ◆ 関連項目 ◆ SETPEN、OUTPUT ◆ サンプル ◆ REM 944BASIC 'APL サンプル' DIM AP(2)='SCDL','MAIL','ZWWW' DIM MN(2)='スケジュール','メール','ブラウザ' *START SCREEN 0,0,80,80:EVENT 100,999,1 CLS:PRINT '決定→MENU' *LOOP SYNC IF PADA THEN GOTO *MN GOTO *LOOP *MN WAIT 1 MENU MN,3,0 SCREEN 0,0,14,14:CLS:PRINT '★' APL AP(MENUNO) *SLEEP SYNC IF (PEN)+(INKEY) THEN GOTO *START GOTO *SLEEP ────────────────── SETPEN … 自動ぺン操作(MODE:0-3) [他ソフト操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SETPEN MODE,X,Y MODE: ペン操作のモード(0-3) X: ペン操作を行うX座標 Y: ペン操作を行うY座標 ◆ 説  明 ◆ 指定した座標位置に、ペン入力と同じ効果を発生します。 ペン操作のモード(0-3)で、ペンタッチの効果を指定できます。 0: ペンタッチ後、ペンを離す (PENDOWN&PENUP) 1: ペンタッチのみ (PENDOWN) 2: ペンタッチを続ける (PENSTILLDOWN) 3: ペンを離す (PENUP) ◆ 注意事項 ◆ 操作対象のアプリケーションが画面に表示されるように、SCREENを使用してウィンドウのサイズを小さくする(常駐させておく)必要があります。 SETPENを実行すると、ペンタッチしたアプリケーションがアクティブになります。アプリケーションからBASICの処理に戻るには、SETPENでBASICプログラム自身にペンタッチするなどして、BASICプログラムをアクティブにすることが必要になる場合があります。 ◆ 関連項目 ◆ APL、OUTPUT ◆ サンプル ◆ ※このサンプルでは、インクワープロの新規データを作成して、「テスト」と入力します。サンプル実行後、このデータは削除してかまいません。また、このサンプルは縦型機種以外では正しく動作しない可能性があります。 REM 944BASIC 'OUTPUT/SETPEN サンプル' SCREEN 2,2,12,12: EVENT 100,999,1 MESSAGE 'このサンプルでは、インクワープロの新規データを作成します。' REM MORE 起動 APL 'PINK' REM [新規データ作成]をタッチ SETPEN 0,188,36 REM 自分にタッチ SETPEN 0,4,4 SYNC REM 文字列出力 OUTPUT 'テスト' REM 自分にタッチ SETPEN 0,4,4 SYNC END ────────────────── OUTPUT … 他のソフトへ文字を書き込み [他ソフト操作] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ OUTPUT 文字列 文字列: 送信する文字列 ◆ 説  明 ◆ 他のソフトへ文字列を送信します。 ◆ 注意事項 ◆ 文字列の送信先のソフトは、セレクトバッファに対応している必要があります。「なぞって検索/辞書引き」機能や「辞書貼り込み」機能のあるソフト、本体内蔵アプリケーションなどが、この機能に対応しています。 操作対象のアプリケーションが画面に表示されるように、SCREENを使用してウィンドウのサイズを小さくする(常駐させておく)必要があります。 OUTPUTを実行すると、文字列の送信先のアプリケーションがアクティブになります。アプリケーションからBASICの処理に戻るには、SETPENでBASICプログラム自身にペンタッチするなどして、BASICプログラムをアクティブにすることが必要になる場合があります。 ◆ 関連項目 ◆ APL、SETPEN ◆ サンプル ◆ ※このサンプルでは、インクワープロの新規データを作成して、「テスト」と入力します。サンプル実行後、このデータは削除してかまいません。また、このサンプルは縦型機種以外では正しく動作しない可能性があります。 REM 944BASIC 'OUTPUT/SETPEN サンプル' SCREEN 2,2,12,12: EVENT 100,999,1 MESSAGE 'このサンプルでは、インクワープロの新規データを作成します。' REM MORE 起動 APL 'PINK' REM [新規データ作成]をタッチ SETPEN 0,188,36 REM 自分にタッチ SETPEN 0,4,4 SYNC REM 文字列出力 OUTPUT 'テスト' REM 自分にタッチ SETPEN 0,4,4 SYNC END ────────────────── § 音声 ━━━━━━━━━━━━━━━━━━ ────────────────── BEEP … ビープ音の出力 [音声] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ BEEP ◆ 説  明 ◆ 内蔵ブザーからビープ音を出力します。 ◆ 注意事項 ◆ ビープ音を出力するには、ユーザー設定で[アラート音]を[入]に指定する必要があります。 ◆ 関連項目 ◆ WAVE、EFFECT ◆ サンプル ◆ REM 944BASIC 'BEEP サンプル' CLS HEADER 'ペンタッチ → BEEP | キーPUSH→終了' *LOOP SYNC IF PEN=2 THEN BEEP IF INKEY THEN END GOTO *LOOP ────────────────── EFFECT … 効果音の出力 [音声] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ EFFECT ファイル名 ファイル名: 音声(WAV)ファイル名 ◆ 説  明 ◆ 本体から効果音を出力します。 ファイルはWAV形式で指定します。 ◆ 注意事項 ◆ ※コマンドの仕様、またはリファレンスの記載内容が、今後変更される可能性があります。(2002.10.12) 効果音を出力するには、ユーザー設定で[効果音]を[入]に指定する必要があります。 なお現時点では、MI-E1以前の機種では不具合が発生するおそれがあります。 ◆ 関連項目 ◆ BEEP、WAVE ◆ サンプル ◆ ────────────────── WAVE … WAVE音源の再生 [音声] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ WAVE ファイル名,音量 ファイル名: 音声(WAV)ファイル名 音量: 0-7 の数値(0が最大) ◆ 説  明 ◆ WAVEファイルを再生します。音声はイヤホン端子から出力されます。 音量は、0 が最大です。 ◆ 注意事項 ◆ 再生時に、処理が一時的に重くなる可能性があります(WAVE実行から、実際に音声が出力されるまでに時間がかかる可能性があります)。 使用できるWAVEファイルはSZABに依存しています (8/16ビット、24000HZまでのモノラルファイル)。 ◆ 関連項目 ◆ EFFECT、WAVESTOP、GETWAVESTATUS ◆ サンプル ◆ ────────────────── WAVESTOP … WAVE再生の停止 [音声] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ WAVESTOP ◆ 説  明 ◆ WAVE音声の再生を停止します。 ◆ 注意事項 ◆ 現時点では、WAVEが再生されていない場合(GETWAVESTATUSの値が0の場合)、このコマンドを使用するとリセット要求などの不具合が発生する可能性があります。 このコマンドは、事前にGETWAVESTATUSの値を確認してから使用してください。 ◆ 関連項目 ◆ WAVE、GETWAVESTATUS ◆ サンプル ◆ ────────────────── GETWAVESTATUS … WAVE再生状態の取得(0-2) [音声(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETWAVESTATUS ◆ 説  明 ◆ WAVEファイル再生中の状態を返します。返される値は、次のとおりです。 0: 停止中 1: 録音中 2: 再生中 ◆ 注意事項 ◆ ◆ 関連項目 ◆ WAVE、WAVESTOP ◆ サンプル ◆ ────────────────── § 機種情報 ━━━━━━━━━━━━━━━━━━ ────────────────── GETMODELNO … モデル番号を取得 [機種情報(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETMODELNO ◆ 説  明 ◆ ZAURUSのモデル番号を返します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ GETROMVER、GETPATCHVER、GETMODEL ◆ サンプル ◆ REM 944BASIC 'GETMODEL、GETMODELNO、GETROMVER、GETPATCHVER' GM=GETMODEL GM=GETMODELNO GR=GETROMVER GP=GETPATCHVER PRINT 'この機種のモデル名は '; PRINT GM; PRINT '、モデル番号は '; PRINT GN; PRINT ' です。' PRINT 'この機種のROMバージョンは '; PRINT GR; PRINT ' です。' PRINT 'この機種のパッチバージョンは '; PRINT GP; PRINT ' です。' KEYWAIT ────────────────── GETROMVER … ROMバージョンを取得 [機種情報(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETROMVER ◆ 説  明 ◆ ZAURUSのROMバージョンを返します。 ◆ 注意事項 ◆ 値は10進値で返ります。 ◆ 関連項目 ◆ GETMODEL、GETPATCHVER、GETMODEL ◆ サンプル ◆ REM 944BASIC 'GETMODEL、GETMODELNO、GETROMVER、GETPATCHVER' GM=GETMODEL GM=GETMODELNO GR=GETROMVER GP=GETPATCHVER PRINT 'この機種のモデル名は '; PRINT GM; PRINT '、モデル番号は '; PRINT GN; PRINT ' です。' PRINT 'この機種のROMバージョンは '; PRINT GR; PRINT ' です。' PRINT 'この機種のパッチバージョンは '; PRINT GP; PRINT ' です。' KEYWAIT ────────────────── GETPATCHVER … パッチバージョンを取得 [機種情報(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETPATCHVER ◆ 説  明 ◆ ZAURUSのパッチバージョン(ソフトウェア管理番号)を返します。 ◆ 注意事項 ◆ 値は10進値で返ります(ZAURUSのメモリー管理などでは16進値で表示)。 ◆ 関連項目 ◆ GETMODEL、GETROMVER、GETMODEL ◆ サンプル ◆ REM 944BASIC 'GETMODEL、GETMODELNO、GETROMVER、GETPATCHVER' GM=GETMODEL GM=GETMODELNO GR=GETROMVER GP=GETPATCHVER PRINT 'この機種のモデル名は '; PRINT GM; PRINT '、モデル番号は '; PRINT GN; PRINT ' です。' PRINT 'この機種のROMバージョンは '; PRINT GR; PRINT ' です。' PRINT 'この機種のパッチバージョンは '; PRINT GP; PRINT ' です。' KEYWAIT ────────────────── GETMODEL … モデル名を取得 [機種情報(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETMODEL ◆ 説  明 ◆ ZAURUSのモデル名を返します。 ◆ 注意事項 ◆ ZAURUSが内部的に管理しているモデル名の文字列が返ります (例: MIE1)。 ◆ 関連項目 ◆ GETMODEL、GETROMVER、GETPATCHVER ◆ サンプル ◆ REM 944BASIC 'GETMODEL、GETMODELNO、GETROMVER、GETPATCHVER' GM=GETMODEL GM=GETMODELNO GR=GETROMVER GP=GETPATCHVER PRINT 'この機種のモデル名は '; PRINT GM; PRINT '、モデル番号は '; PRINT GN; PRINT ' です。' PRINT 'この機種のROMバージョンは '; PRINT GR; PRINT ' です。' PRINT 'この機種のパッチバージョンは '; PRINT GP; PRINT ' です。' KEYWAIT ────────────────── § 電源 ━━━━━━━━━━━━━━━━━━ ────────────────── POWEROFF … 電源を切断 [電源] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ POWEROFF ◆ 説  明 ◆ ZAURUSの電源を切ります。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ ◆ サンプル ◆ REM 944BASIC 'POWEROFFサンプル' YN=YESNO('電源を切ります。よろしいですか?') IFBLK YN FONT 96 FOR I=0 TO 3 SYNC S=3-I LOCATE 5,5: PRINT S WAIT 10 NEXT I POWEROFF END ELSE PRINT 'PUSH KEY' KEYWAIT ENDIF ────────────────── SETBATOFFCNT … バッテリーオフカウント設定(100ms) [電源] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SETBATOFFCNT N N: 数値 (100ms単位) ◆ 説  明 ◆ バッテリ駆動時に自動パワーオフする時間を100ms単位で指定します。 電源をオフにしない場合は、0を指定します。 ◆ 注意事項 ◆ このコマンドで設定した自動パワーオフ時間は、BASICソフト終了後も有効です。このコマンドを使用する場合は、元の設定(GETBATOFFCNT)を保存しておき、BASICソフト終了時に元に戻すようにしてください。 ◆ 関連項目 ◆ SETACOFFCNT、GETBATTERY、GETACADAPTOR、GETBATOFFCNT、GETACOFFCNT ◆ サンプル ◆ REM 944BASIC 'オートパワーオフ' SCREEN 20,80,200,30:EVENT 100,999,1 BOX 0,5,199,29:LOCATE 1,0:PRINT 'オートパワーオフ時間の変更(←→)' *LOOP SYNC IF GETACADAPTOR THEN M=1 ELSE M=0 IF M=1 THEN OFF=GETACOFFCNT ELSE OFF=GETBATOFFCNT LOCATE 1,1:OFF=OFF/10 PRINT 'オートパワーオフ: '; PRINT OFF; IF PADX THEN OFF=OFF+10*PADX IF M=1 THEN SETACOFFCNT OFF*10:PRINT ' 秒後(AC) ' ELSE SETBATOFFCNT OFF*10:PRINT ' 秒後(BATT)' WAIT 1 GOTO *LOOP ────────────────── SETACOFFCNT … 電源オフカウント設定(100ms) [電源] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ SETACOFFCNT N N: 数値 (100ms単位) ◆ 説  明 ◆ ACアダプタ接続時に自動パワーオフする時間を100ms単位で指定します。 電源をオフにしない場合は、0を指定します。 ◆ 注意事項 ◆ このコマンドで設定した自動パワーオフ時間は、BASICソフト終了後も有効です。このコマンドを使用する場合は、元の設定(GETACOFFCNT)を保存しておき、BASICソフト終了時に元に戻すようにしてください。 ◆ 関連項目 ◆ SETBATOFFCNT、GETBATTERY、GETACADAPTOR、GETBATOFFCNT、GETACOFFCNT ◆ サンプル ◆ REM 944BASIC 'オートパワーオフ' SCREEN 20,80,200,30:EVENT 100,999,1 BOX 0,5,199,29:LOCATE 1,0:PRINT 'オートパワーオフ時間の変更(←→)' *LOOP SYNC IF GETACADAPTOR THEN M=1 ELSE M=0 IF M=1 THEN OFF=GETACOFFCNT ELSE OFF=GETBATOFFCNT LOCATE 1,1:OFF=OFF/10 PRINT 'オートパワーオフ: '; PRINT OFF; IF PADX THEN OFF=OFF+10*PADX IF M=1 THEN SETACOFFCNT OFF*10:PRINT ' 秒後(AC) ' ELSE SETBATOFFCNT OFF*10:PRINT ' 秒後(BATT)' WAIT 1 GOTO *LOOP ────────────────── GETBATTERY … バッテリー状態を取得 [電源(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETBATTERY ◆ 説  明 ◆ バッテリーの充電状態を、0-7の値で返します。 ACアダプタ接続時には7(最大)が返ります。 ◆ 注意事項 ◆ 返されるバッテリの状態は、あくまで目安です。 ◆ 関連項目 ◆ SETBATOFFCNT、SETACOFFCNT、GETACADAPTOR、GETBATOFFCNT、GETACOFFCNT ◆ サンプル ◆ REM 944BASIC '電源状態表示' SCREEN 40,100,180,40:EVENT 100,999,1 BOX 0,5,179,39 LOCATE 4,0:PRINT 'オートパワーオフ' LOCATE 1,1 IF GETACADAPTOR THEN PRINT 'ACアダプタ: 接続中':OFFCNT=GETACOFFCNT ELSE BT=GETBATTERY:PRINT 'バッテリー状態: ';:PRINT BT:OFFCNT=GETBATOFFCNT LOCATE 1,2:OFFCNT=OFFCNT/10 PRINT 'オートパワーオフ: '; PRINT OFFCNT; PRINT '秒後' KEYWAIT ────────────────── GETACADAPTOR … ACアダプタの接続状態を取得 [電源(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETACADAPTOR ◆ 説  明 ◆ ACアダプタが接続されているかどうかを、0または1で返します。 アダプタが接続されている場合に、1が返ります。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SETBATOFFCNT、SETACOFFCNT、GETBATTERY、GETBATOFFCNT、GETACOFFCNT ◆ サンプル ◆ REM 944BASIC '電源状態表示' SCREEN 40,100,180,40:EVENT 100,999,1 BOX 0,5,179,39 LOCATE 4,0:PRINT 'オートパワーオフ' LOCATE 1,1 IF GETACADAPTOR THEN PRINT 'ACアダプタ: 接続中':OFFCNT=GETACOFFCNT ELSE PRINT 'ACアダプタ: なし':OFFCNT=GETBATOFFCNT LOCATE 1,2:OFFCNT=OFFCNT/10 PRINT 'オートパワーオフ: '; PRINT OFFCNT; PRINT '秒後' KEYWAIT ────────────────── GETBATOFFCNT … バッテリパワーオフ時間の取得 [電源(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETBATOFFCNT ◆ 説  明 ◆ バッテリ駆動時に自動パワーオフする時間を100ms単位で返します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SETBATOFFCNT、SETACOFFCNT、GETBATTERY、GETACADAPTOR、GETACOFFCNT ◆ サンプル ◆ REM 944BASIC 'オートパワーオフ' SCREEN 20,80,200,30:EVENT 100,999,1 BOX 0,5,199,29:LOCATE 1,0:PRINT 'オートパワーオフ時間の変更(←→)' *LOOP SYNC IF GETACADAPTOR THEN M=1 ELSE M=0 IF M=1 THEN OFF=GETACOFFCNT ELSE OFF=GETBATOFFCNT LOCATE 1,1:OFF=OFF/10 PRINT 'オートパワーオフ: '; PRINT OFF; IF PADX THEN OFF=OFF+10*PADX IF M=1 THEN SETACOFFCNT OFF*10:PRINT ' 秒後(AC) ' ELSE SETBATOFFCNT OFF*10:PRINT ' 秒後(BATT)' WAIT 1 GOTO *LOOP ────────────────── GETACOFFCNT … ACアダプタパワーオフ時間の取得 [電源(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ GETACOFFCNT ◆ 説  明 ◆ ACアダプタ接続時に自動パワーオフする時間を100ms単位で返します。 ◆ 注意事項 ◆ ◆ 関連項目 ◆ SETBATOFFCNT、SETACOFFCNT、GETBATTERY、GETACADAPTOR、GETBATOFFCNT ◆ サンプル ◆ REM 944BASIC 'オートパワーオフ' SCREEN 20,80,200,30:EVENT 100,999,1 BOX 0,5,199,29:LOCATE 1,0:PRINT 'オートパワーオフ時間の変更(←→)' *LOOP SYNC IF GETACADAPTOR THEN M=1 ELSE M=0 IF M=1 THEN OFF=GETACOFFCNT ELSE OFF=GETBATOFFCNT LOCATE 1,1:OFF=OFF/10 PRINT 'オートパワーオフ: '; PRINT OFF; IF PADX THEN OFF=OFF+10*PADX IF M=1 THEN SETACOFFCNT OFF*10:PRINT ' 秒後(AC) ' ELSE SETBATOFFCNT OFF*10:PRINT ' 秒後(BATT)' WAIT 1 GOTO *LOOP ────────────────── § 文字列 ━━━━━━━━━━━━━━━━━━ ────────────────── CHR … 式の値に対する文字を取得 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ CHR(式) 式: 10進数の数値 ◆ 説  明 ◆ 指定した式(数値)と一致する文字コードの文字を返します。全角/半角どちらの文字コードにも対応しています。 式には、10進数の値を指定します。 ◆ 注意事項 ◆ 16進数の文字コードをそのまま指定することはできません。16進数を10進数に変換するには、HEXTODECを使用します。 ◆ 関連項目 ◆ ASC、HEXTODEC、HEX ◆ サンプル ◆ REM 944BASIC 'ASC/CHR,HEX/HEXTODEC' *START CLS: LOCATE 0,0: A='' PRINT '文字を1文字入力してください' INPUT A,2,0 A=ASC(A) :REM 文字コード取得 PRINT 'キャラクタコード(10進)='; PRINT A A=HEX(A) :REM 数値を16進化 AA=STRCAT('0x',A) :REM 頭に0xを付加 PRINT 'キャラクタコード(16進)='; PRINT AA A=HEXTODEC(A) :REM 16進数値を10進化 A=CHR(A):REM 文字コードから文字列に PRINT '入力した文字=';: PRINT A KEYWAIT GOTO *START ────────────────── ASC … 指定した文字の文字コードを取得 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ ASC(文字) 文字: 任意の1文字 ◆ 説  明 ◆ 指定した文字の文字コードを返します。全角/半角どちらの文字にも対応しています。 返る値は、10進数です。 ◆ 注意事項 ◆ 10進数を16進数に変換するには、HEXを使用します。 ◆ 関連項目 ◆ CHR、HEXTODEC、HEX ◆ サンプル ◆ REM 944BASIC 'ASC/CHR,HEX/HEXTODEC' *START CLS: LOCATE 0,0: A='' PRINT '文字を1文字入力してください' INPUT A,2,0 A=ASC(A) :REM 文字コード取得 PRINT 'キャラクタコード(10進)='; PRINT A A=HEX(A) :REM 数値を16進化 AA=STRCAT('0x',A) :REM 頭に0xを付加 PRINT 'キャラクタコード(16進)='; PRINT AA A=HEXTODEC(A) :REM 16進数値を10進化 A=CHR(A):REM 文字コードから文字列に PRINT '入力した文字=';: PRINT A KEYWAIT GOTO *START ────────────────── LEN … 文字列の長さを取得 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ LEN(文字列) 文字列: 文字列 ◆ 説  明 ◆ 文字列の長さを取得します。半角でカウントした値が返ります。 ◆ 注意事項 ◆ このコマンドは数値が返るため、ほかの文字列関数内でも使用できます。 ◆ 関連項目 ◆ STR、LEFT、MID、RIGHT、STRCAT、STRCMP ◆ サンプル ◆ REM 944BASIC 'LEN/STRサンプル' P=PI REM 数値を文字列に P=STR(P) REM 文字列の長さ L=LEN(P) LOCATE 0,1:PRINT '円周率は:' FOR I=1 TO L S=LEFT(P,I) LOCATE 11,1:PRINT S WAIT 4 NEXT I PRINT '9Bでは、PIで小数点以下'; L=L-2:PRINT L; PRINT '桁まで返ります。' PRINT 'PUSH KEY' KEYWAIT END ────────────────── STRCMP … 文字列の比較 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ STRCMP(文字列1,文字列2) 文字列1: 比較対象の文字列 文字列2: 比較する文字列 ◆ 説  明 ◆ 文字列1と文字列2を比較します。両者が同じである場合は、0 が返ります。 文字列1の方が小さい時は、マイナス値(最初の相違文字の文字列2-文字列1の値)、文字列2の方が小さい時は、プラス値(最初の相違文字の文字列1-文字列2の値)が返ります。 ◆ 注意事項 ◆ コマンド内に複数の文字列関数を含めることはできません。 ◆ 関連項目 ◆ LEN、LEFT、MID、RIGHT、STR、STRCAT ◆ サンプル ◆ REM 944BASIC 'STRCMPサンプル' A='壁壁壁壁壁壁壁壁璧壁壁壁壁壁' B='壁壁壁壁壁壁壁壁壁壁壁壁壁壁' LOCATE 0,2 PRINT '文字列A='; PRINT A PRINT '文字列B='; PRINT B PRINT '同じ文字列なのでしょうか? STRCMPを実行してみましょう。 - PUSH KEY' KEYWAIT PRINT 'STRCMP(A,B)='; C=STRCMP(A,B) : PRINT C PRINT 'STRCMPの値が0でないということは、AとBには完「璧」に相違点があります。違いが分かりましたか? - PUSH KEY' KEYWAIT ────────────────── STR … 明示的に文字列として扱う [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ STR(文字列) 文字列: 文字列 ◆ 説  明 ◆ 変数や任意の文字列を、文字列として扱います。数字を文字列として扱う場合や、文字列変数を別の変数に代入する場合に使用します。 ◆ 注意事項 ◆ 文字列変数どうしを、=を使ってそのままコピーすることは、原則としてできません。右辺側の変数にSTR()関数を使用して、文字列であることを明示するのが確実です。 コマンド内に複数の文字列関数を含めることはできません。 ◆ 関連項目 ◆ LEN、STR、LEFT、MID、RIGHT、STRING、STRCMP ◆ サンプル ◆ REM 944BASIC 'LEN/STRサンプル' P=PI REM 数値を文字列に P=STR(P) REM 文字列の長さ L=LEN(P) LOCATE 0,1:PRINT '円周率は:' FOR I=1 TO L S=LEFT(P,I) LOCATE 11,1:PRINT S WAIT 4 NEXT I PRINT '9Bでは、PIで小数点以下'; L=L-2:PRINT L; PRINT '桁まで返ります。' PRINT 'PUSH KEY' KEYWAIT END ────────────────── STRCAT … 文字列連結 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ STRCAT(文字列1,文字列2,文字列3,・・・) 文字列...: 文字列 ◆ 説  明 ◆ 複数の文字列を、1つの文字列に連結します。結合された文字列が返ります。 ◆ 注意事項 ◆ コマンド内に複数の文字列関数を含めることはできません。 文字列変数を足し算(+)しても、文字列を結合できません。文字列の連結には、このSTRCATコマンドを使用してください。 変数に格納できる最大文字数は255文字(半角)です。 ◆ 関連項目 ◆ LEN、STR、LEFT、MID、RIGHT、STR、STRCMP ◆ サンプル ◆ REM 944BASIC 'STRCATサンプル' D=DATE D=STR(D) YYYY=LEFT(D,4) MM=MID(D,5,2) DD=MID(D,7,2) S=STRCAT('今日は',YYYY,'年',MM,'月',DD,'日です。') LOCATE 2,5: PRINT S PRINT 'PUSH KEY' KEYWAIT END ────────────────── STRING … 繰返した文字列を取得 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ STRING(文字列,繰返し回数) 文字列: 文字列 繰返し回数: 数値(整数) ◆ 説  明 ◆ 文字列を指定した回数繰り返し、その文字列を返します。 ◆ 注意事項 ◆ コマンド内に複数の文字列関数を含めることはできません。 変数に格納できる最大文字数は255文字(半角)です。 ◆ 関連項目 ◆ LEN、STR ◆ サンプル ◆ REM 944BASIC 'STRINGサンプル' FONT 96 A='#' B=STRING(A,10) LOCATE 2,1 PRINT B FOR I=1 TO 10 LOCATE 2,I+1 PRINT '# #' NEXT I LOCATE 2,11 PRINT B FOR I=0 TO 20 X=RNDRG(4,18):Y=RNDRG(2,10) LOCATE X,Y: PRINT '羊' NEXT I KEYWAIT ────────────────── INSTR … 文字列1内に文字列2のある位置を取得 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ INSTR(文字列1,文字列2) 文字列1: 検索対象の文字列 文字列2: 検索文字列 ◆ 説  明 ◆ 文字列1内で文字列2を検索して、見つかった場合は先頭からの位置を返します。位置は、半角でカウントした文字数を表す数値が返ります。見つからなかった場合は、0が返ります。 ◆ 注意事項 ◆ このコマンドは数値が返るため、ほかの文字列関数内でも使用できます。 ◆ 関連項目 ◆ LEFT、MID、RIGHT、LEN ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'INSTR サンプル' A='ABCDEFGHIJKLMNOPQRSTUVWXYZ' *START PRINT 'A-Zのアルファベット(大文字)を入力' INPUT B,1,3 C=INSTR(A,B) IF C THEN PRINT B;: PRINT 'は、アルファベットの';:PRINT C;:PRINT '番目の文字です。' ELSE PRINT '半角英大文字で入力してください。' PRINT 'PUSH KEY' KEYWAIT B='':CLS GOTO *START (サンプル 2) REM 944BASIC 'INSTR サンプル2' REM デリミタで文字列を切りわける例 A='123;あいう;4567;ABC;89;わをん' DLM=';' *LOOP L=LEN(A) C=INSTR(A,DLM): REM ; のある位置 REM 0の場合、残りの文字列を表示して REM ループを抜ける IF C=0 THEN PRINT A:GOTO *EXITLOOP REM ; の1つ前までを切り出す B=MID(A,1,C-1): PRINT B REM 表示が済んだ部分は切り詰める A=MID(A,C+1,L-C) GOTO *LOOP *EXITLOOP KEYWAIT END ────────────────── LEFT … 文字列を左から取得 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ LEFT(文字列,文字数) 文字列: 文字列 文字数: 数値(整数) ◆ 説  明 ◆ 文字列の一部分を、文字列の左側(先頭)から文字数分取得します。文字数には、半角でカウントした数値を指定します。 ◆ 注意事項 ◆ コマンド内に複数の文字列関数を含めることはできません。 現在のところ、全角文字が途中で切れる場合は、空白文字が返ります (例: A='あいう': B=LEFT(A,1) → B は半角スペース)。 ◆ 関連項目 ◆ MID、RIGHT、LEN、INSTR ◆ サンプル ◆ REM 944BASIC 'LEFT サンプル' A='左−中−右' S=LEFT(A,2) PRINT 'A='; PRINT A PRINT 'LEFT(A,2)→'; PRINT S KEYWAIT ────────────────── MID … 文字列を途中から取得 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ MID(文字列1,開始位置,文字数) 文字列: 文字列 開始位置: 数値(整数) 文字数: 数値(整数) ◆ 説  明 ◆ 文字列の一部分を、開始位置から文字数分取得します。開始位置と文字数には、半角でカウントした数値を指定します。 ◆ 注意事項 ◆ コマンド内に複数の文字列関数を含めることはできません。 現在のところ、全角文字が途中で切れる場合は、空白文字が返ります (例: A='あいう': B=MID(A,1,1) → B は半角スペース)。 ◆ 関連項目 ◆ LEFT、RIGHT、LEN、INSTR ◆ サンプル ◆ (サンプル 1) REM 944BASIC 'MID サンプル' A='左−中−右' S=MID(A,5,2) PRINT 'A='; PRINT A PRINT 'MID(A,5,2)→'; PRINT S KEYWAIT (サンプル 2) REM 944BASIC 'MID サンプル2' SCREEN 0,0,240,14:EVENT 100,999,1 FONT 64:CLS A='朧西の李徴は博学才頴、天宝の末年、若くして名を虎榜に連ね・・・ - 中島敦「山月記」より' SP=STRING(' ',32) A=STRCAT(SP,A,SP,'PUSH KEY') L=LEN(A)-LEN(' PUSH KEY') FOR I=0 TO L SYNC GCURSOR 0,1: WAIT 1 P=MID(A,I,40): PRINT P NEXT I KEYWAIT ────────────────── RIGHT … 文字列を右から取得 [文字列(関数)] ━━━━━━━━━━━━━━━━━━ ◆ 書  式 ◆ RIGHT(文字列,文字数) 文字列: 文字列 文字数: 数値(整数) ◆ 説  明 ◆ 文字列の一部分を、右側(末尾)から文字数分取得します。文字数には、半角でカウントした数値を指定します。 ◆ 注意事項 ◆ コマンド内に複数の文字列関数を含めることはできません。 現在のところ、全角文字が途中で切れる場合は、空白文字が返ります (例: A='あいう': B=RIGHT(A,1) → B は半角スペース)。 ◆ 関連項目 ◆ LEFT、MID、LEN、INSTR ◆ サンプル ◆ REM 944BASIC 'RIGHT サンプル' A='左−中−右' S=RIGHT(A,2) PRINT 'A='; PRINT A PRINT 'RIGHT(A,2)→'; PRINT S KEYWAIT 2002/10/13 現在。 このマニュアルの誤り、不具合、 改善案、その他ご意見は、 kaol(kaol@officeww.com) までご連絡ください。