RUN


 [機能] プログラムを実行します。

 [書式] RUN ["ファイル名"] , [|i or c|] , [Timer]

 [説明]
  i スイッチをつけた時はインタプリタモードで
  c スイッチをつけた時(省略時も)は中間コードコンパイルモードで実行されます。
  実行で変数は全て初期化されます。Open中のファイルは閉ざされます。
  "ファイル名"を指定した時はファイルを読み込んでから実行します。
  ".bin" 形式で save されたファイルは run"*.bin" により中間コードからの実行ができます。(参照:save)
  ".bin" 形式を実行すると現在編集中のプログラムはクリアされます。
 [例]
     run , i

  [時間予約実行機能] (端末の電源はオン、省電力モードはオフになっている必要があります)
  Timerを指定すると指定時刻にBasicを起動して指定プログラムを実行できます。
  Timerはミリ秒単位の数値で ex_time 関数を使って指定します。
  現在時刻のミリ秒は ex_time(date$,time$) で取得でき、
  一秒=1000 の値を加えることで時間を加算できます。
  ex_time関数 は他にも時間操作や変換が行えるのでそちらの項目も参照下さい。
  ".bas" ".bin" 両方のタイプを予約実行できます。
  予約中に新たなrun予約が入ると前の予約に上書きされます。(前の予約は消えます)
  予約プログラム中で run予約を記述、system命令終了することで
  定期的に連続した予約や再帰実行が可能です。
  *注意
  Android12以降ではセキュリティ強化によりバックグラウンドからのアプリの起動の制限が強化さたため、
  外部クラスからアプリ本体とその画面を直接起動させることが難しくなりました。
  Android11以前の機種では今まで通り'Basicアプリ'を終了した状態から 'run' の予約実行機能でプログラムを実行させることができます。
  Android12以降では'Basicアプリ'が起動状態(アプリ画面が表示されている状態)でないと 'run' の予約実行は実行されません。
  Android12以降で予約実行を1回または連続的に使用する場合は、'Basicアプリ'を起動させた状態のままで使用するようにして下さい。

  [例]
  '5月2日の12時頃に sp_demo が実行されます。
  run "sp_demo.bin",,ex_time("2016/05/02","12:05:00")

     '毎日24時間おきに起動して日付を通知します。(1000*60*60*24が一日をミリ秒で表している)
     100 ' "self.bas"
     110 run "self.bas",,ex_time(date$,time$)+1000*60*60*24
     120 ui_msg date$
     130 system


  END


 [機能] プログラムを終了します。

 [書式] 

 [説明]
  Open中のファイルは閉ざされます。

 [例]



  STOP


 [機能] プログラムを中断します。

 [書式] 

 [説明]

 [例]



  CONT


 [機能] 中断したプログラムを再開します。

 [書式] 

 [説明]
  プログラムが修正された後、ユーザ定義関数実行中で中断された後では再開できません。
  中断のタイミングによって再開できないことがあります。

 [例]



  NEW


 [機能] プログラムを全て消去します。

 [書式] 

 [説明]
  変数は全て初期化されます。
  Open中のファイルは閉ざされます。

 [例]



  LIST


 [機能] プログラムを画面に出力して表示します。

 [書式] LIST [行番号][-][行番号]

 [説明]
  画面タッチしている時はスロースクロールモードになります。

 [例]
    list 200-
    list -1000



  EDIT


 [機能] プログラムの編集モードになります。

 [書式] EDIT 行番号

 [説明]
  上下にスクロールさせて編集できます。
  STOPキーまたはCLSで編集モードを抜けます。

 [例]



  DELETE


 [機能] プログラムの指定行を消去します。

 [書式] DELETE [行番号][-][行番号]

 [説明]

 [例]
    delete 200-400



  AUTO


 [機能] 自動行発生の入力モードになります。

 [書式] AUTO [開始行番号][,増分]  (デフォルトは100,10)

 [説明]
  STOPキーまたはCLSでAUTOモードを抜けます。

 [例]
    auto 100,10



  RENUM


 [機能] 行番号を付け替えます。

 [書式] RENUM [新行番号][,旧行番号][,増分]  (デフォルトは100,,10)

 [説明]
  新行番号から始まり増分ずつ増えたナンバーで行が付け替えられます。
  旧行番号が指定されるとプログラムのその位置からになります。省略されると先頭からになります。
  GOTOなどの飛び先を記述した値も付け替えられます。

 [例]
    renum 100



  SEARCH


 [機能] プログラムからキーワードを検索してヒットしたものを表示します。

 [書式] SEARCH "キーワード"

 [説明]



  REPLACE


 [機能] プログラムの文字置き換えを行います。

 [書式] REPLACE "検索文字","置換え文字"

 [説明]
  プログラムソース中の"検索文字"を"置換え文字"に置き換えます。
  置換えられた行はリストアップで表示されます。
  大文字と小文字は区別されます。
 [例] 変数名を一括して変更する例。(an->a10)<br>    10an=10:bn=20:cn=30
    20 an=an+bn+cn
    30 print an
    のとき
    replace "an","a10"
 [結果]
    10 a10=10:bn=20:cn=30
    20 a10=a10+bn+cn
    30 print a10



  LOAD


 [機能] ファイルからプログラムを読み込みます。

 [書式] LOAD "ファイルネーム" [ ,"encode" ]

 [説明]
  Open中のファイルは閉ざされます。
  本体ストレージやSDカードからプログラムを読み込みます。
  行番号のないファイルも、自動で行が割り当てられて読み込むことができますが、
  BASICでなければ実行はできません。

  LOAD時に行番号の重複チェックも行われます。
  重複している場合は重複の行番号一覧が表示されますので
  TextBoxモードで重複行を修正して下さい。
  テキストボックスモードでのloadでは全文で全角>半角文字変換が行われます。

  Android11以降での一部の特殊ストレージ機種では
  [DOCUMENT_TREE]形式でのアクセスが可能となる場合があります。
  詳しくは[マニュアル>文法>ファイルシステム>Android11のSDストレージシステムの変更について]
  をご覧下さい。

  "ファイルネーム"が http: https: で始まる場合はインターネットのそのアドレスからロードします。
  エンコードが省略された時は"UTF-8"が指定されます。
  ネット用にアップロードされる’.bas’ファイルは行の末尾が数字で終わる場合、
  1空白付加して終わるよう整形されている必要があります。
  10 print"abc"
  20 print 123 (<-数字で終わるので末尾にスペースが1文字入る)
  30 end
  i オプション付きのセーブ SAVE "ファイルネーム" , i で自動的にこの形式のファイルは生成されます。

 [例]
    load "test.bas"
    load http://androidbasic.ninja-web.net/sp/hanoi.bas



  SAVE


 [機能] プログラムをファイルに保存します。

 [書式] SAVE "ファイルネーム" [ , n | i ]

 [説明]
  プログラムを本体ストレージやSDカードに保存します。
  n オプションを付けると行番号無しでセーブされます。
  i オプションを付けるとインターネットからロード可能な形式に整形されてセーブされます。
  (行の末尾が数字の場合1空白付加される、'注釈で数字があると""で囲う)

  拡張子を".c"にすると基本文法がC言語に変換され、保存されます。
  変換の詳細についてはホームページのこちらをご覧下さい。
  http://androidbasic.ninja-web.net/abcomj/bastoc.html

  拡張子を ".bin" にすると中間コード形式で保存されます。
  この形式は run"*.bin" により実行できます。
  (loadダイアログで表示されるのは ".bas" 形式のみです、全ては files で表示できます)

  ".bin" 形式保存での注意点
  if 文は先頭で
   50 locate 1,2: if a=1 then print 2
  このように if文の前に命令記述があるものは次のように行分割した形に書き換えて下さい。
   50 locate 1,2
   55 if a=1 then print 2

 [例]
    save "test.bas"
    save "test.bas",n
    seve "test.c"


  MERGE


 [機能] プログラムを連結します。

 [書式] MERGE "ファイルネーム" [,スタート行番号 ][,delete範囲]

 [説明]
  メモリ上のプログラムと"ファイルネーム"で指定したプログラムを連結して1つのプログラムにします。
  行番号が重複した時はファイル側の行で上書きされます。
  ダイレクト実行とプログラム中の両方で使用することができます。
  'delete範囲'が指定された時はその範囲の行削除が行われてから連結されます。
  指定例: 500  -330  270-720  1000- 等 (ラベル使用不可)
  delete文と違うのは、その指定の行が存在しなくてもエラーにはならず、
  その数字の範囲内の行が全て削除されるというところです。
  'スタート行番号'を指定するとその行から再開されます。
  省略した場合はMERGE文があった行の次の場所に位置する行から再開されます。
  再開時、変数は全て引き渡されます。
  ,cモードではMERGE文はプログラム中1つしか記述できません。

 [例]
    merge "test2.bas",100,100-990



  UNLIST


 [機能] リスト非表示部を指定します。

 [書式] UNLIST [前方非表示終了行][,後方非表示開始行]

 [説明]
  非表示になった部分は編集はできません。実行は通常通り行われます。
  UNLIST 無指定で指定領域は解除されます。
  指定行は存在しなくてもエラーにはなりません。
  [後方非表示開始行] これ以降が非表示になります。
   主にユーザー定義関数が置かれる領域です。
   ここの関数は可視部から呼び出すことができます。
   ユーザー関数を隠蔽することでライブラリとして扱うことができます。
   ライブラリ関数を先にロードして可視部にメインプログラムを'merge'します。
  [前方非表示終了行] これ以前が非表示になります。
   主に関数で使われるグローバル変数・配列の宣言、
   後方の初期化ルーチンの呼び出しに使われます。
  UNLISTに影響を受ける命令
   list edit search replace
   可視部に対してだけ実行されます。
   save
   可視部だけが保存されます。
   renum
   可視部だけが付け替えられます。
   変更行が非表示部に及ぶ場合はエラーになり実行されません。
   非表示部にラベル以外のgoto文、飛び先があると正常に機能しません。
   new load
   元のソース全てが消去されます。UNLISTの指定領域は解除されます。

 [例] MERGE & UNLIST サンプル
   "lib1.bas"
    10 pi=3.1415926535
    20 dim dt(10)
    30 f=initf()
    40 unlist 99,1000
    50 merge"p1.bas",100,100-999:'only once
    60 '--Forward border--
    100 '
    110 '
    1000 '--Backward border--
    1010 func initf()
    1020  for i=0 to 7:dt(i)=i*pi:next
    1030 endfunc
    1040 func sec(x)
    1050  rt=1/cos(x)
    1060 endfunc rt

   "p1.bas"
    100 print sec(2)
    110 end



  LLIST


 [機能] リストやテキストファイルをプリンターで印刷します。

 [書式] LLIST [テキストファイル名]

 [説明]
  テキストファイル名を指定した時はそのテキストを印刷します。
  指定できるのは .txt .bas .sql ファイルです。
  指定なしの時は現リストを印刷します。
  印刷する文字の大きさは font コマンドの第二パラメータで指定します。
  1~7までで7が最大です。デフォルトは2になっています。(参照:font)
  テキストファイルが文字化けする場合はエンコードをinit命令で
  init"enc:SJIS"
  のように指定します。(例ではシフトJIS指定)

 [例]
    llist "usage.txt"

  印刷するにはAndroidに対応したWi-Fi無線機能を持つプリンターが必要です。
  Android4.4以上の機種が必要です。
  (4.4以上でもカスタムROM等で対応していないものもあります)

  印刷までの手順 [LLIST,HARDC共通]
  メーカーが提供しているプリンタのドライバ、専用アプリを
  GooglPlayからインストールして実行します。
  プリンタまたはAndroidの無線(Wi-Fi、テザリング等)をオンにして双方を接続状態にします。
  (これは機種ごとのやり方があるのでその機種のマニュアルを参照して下さい)
  Androidの設定から印刷を選び印刷サービスをオンにします。
  これで印刷可能な状態になりましたらBasicから LLIST, HARDC のコマンドを実行します。
  実行すると印刷の設定画面ダイアログが開きますので
  各種(プリンタ選択、用紙サイズ、カラー、方向等)設定を行って下さい。
  プレビュー画面を確認して印刷を押すと印刷が始まります。
  (背景が黒の場合、プレビュー側で白に置き換えられることがあります)
  プログラム側は印刷ダイアログが閉じるまで次の命令に進みません。
  *印刷機器との相性、接続方法、サポートアプリの使用法、印刷の品位等
  各プリンターメーカーに依存する部分につきましては
  当アプリの方ではお問い合わせに応じることはできませんのでご了承下さい。

  マニュアルの印刷機能
  llist "manual01.sys"
  の記述でBasicのマニュアルを印刷することができます。
  01の部分は 01~26 までの 0を含む二桁の数字です。
  各番号は 01の'操作'から始まり、上からの順番に対応しています。


  HARDC


 [機能] 画面や画像ファイルをプリンターで印刷します。

 [書式] HARDC [画像ファイル名]

 [説明]
  画像ファイル名を指定した時はその画像を印刷します。
  指定できるのは .png .jpg .jpeg ファイルです。
  指定なしの時は画面をハードコピーして印刷します。
  また"scrn:" を指定した時は印刷はせずに
  画面をスクリーンショットとして"ScreenShot01.png" に保存します。
  (上部のステータスバーや下部のホームボタン等は含みません)

 [例]
    hardc "mountain.png"



  EXEC


 [機能] 外部アプリケーションを実行します。

 [書式] EXEC "アプリ名又は[パッケージ名+クラス名]"

 [説明]
  指定された外部アプリケーションを実行します。
  アプリ名が指定された場合は自動的にパッケージ名とクラス名が検索されて実行されますが
  見つからなかったものは実行されません。
  予めパッケージ名とクラス名はわかってるものは直接指定して実行することができます。
  パッケージ名+クラス名は英数字とピリオドの区切りで表されます。
  外部アプリケーションが終了するとBasicに復帰します。

 [例]
   'アプリ名で実行
    exec "カレンダー"
   'パッケージ名+クラス名で実行(大文字で始まるLaunchActivityがクラス名)
    exec "com.android.calendar.LaunchActivity"



  SYSTEM


 [機能] BASICを終了してOSに復帰します。

 [書式] SYSTEM



  ERROR


 [機能] 指定番号のエラーをシミュレートして発生させます。

 [書式] ERROR



  TRON / TROFF


 [機能] 行番号・命令の表示と共にステップ実行モードに入ります。

 [書式] TRON

 [説明]
  TRON モードオン。
  TROFF モードオフ。
  上部のバーに [命令]行とライン の形式で表示されます。
  画面にタッチすることで1ステップごとに命令が進みます。
  変数表編集との併用も可能です。
  この命令はインタプリタモード時のみ機能します。
  new,load が実行されてもモードは解除されます。

 [例]
    [print a] 200 a=120:print a:b=240:print b


 

  INIT


 [機能] 各種設定を行います。

 [書式] INIT "設定名:設定値"

 [説明]
  設定名により次の種類の設定を行います。

  init"KB:n"
   キーボード入力デバイスの種類を選択します。
   n=0 ハードウェアキーボード用。
   n=1 ANDROIDシステムのソフトウェアキーボード。
   n=2 ANDROID-BASIC専用ソフトウェアキーボード。
   n=3 バーチャルパッド。(8方向入力)
   n=4 バーチャルパッド。(4方向入力)
  またカンマで区切った第二パラメーターの数値で(0~9)までのY軸調整値を与えることができます。
  第二パラメーター指定の例 init "kb:3,5"
  バーチャルパッドでは人間の自然な指の配置と親指の腹の当たりのため
  実際に人間が思っているより下の部分が入力されています。
  そのため自然な入力のためにはタッチを上側へ補正する必要があります。
  2の値で補正なしの入力されたままの検知になり、3~9の値で実際の入力より上へずらした検知になります。(デフォルトでは4)
  0~1の値では逆に実際の入力より下へずらした検知になります。
  0~9までの幅の大きさはパッドのボタンのサイズと同じになっています。(ボタンの1/10サイズ単位での指定)
  (例)    init "kb:1"

  init"dpsw:項目文字・数値"
   メニュー Setting をプログラム上から変更・設定します。
   この変更はプログラム実行中だけ有効で終了と同時に元の設定に戻ります。
   項目文字 複数設定できます。
   m  Language.      0:eng 1:jp
   l  Locate mode.    0:xy 1:yx
   k  Input mode.    0:rep-on 1:rep-off 2:flick 3:aux 4:ins-ed
   b  Key Click SE.    0:on 1:off
   u  Print Using.    0:doll 1:yen
   s  Strage location.    0:inter 1:sd
   g  GLine Antialias.    0:off 1:on
   c  ColorSet(16) Compatible.    n:0~5
   i  Input correction.    0:normal 1:correction
   [File operation lock.]と[Device access lock.]はセキュリティ上プログラムから変更できません。
   [Font size.]はfontコマンドから変更して下さい。
  (例)    init "dpsw:b1g1c5"
        'SE音無し、アンチエイリアス有り、カラーセット5 に設定します。

  init"ENC:文字エンコード種別"
   LOAD, SAVE, (OPEN)PRINT#, INPUT# で使用するエンコードを指定します。
   UTF-8(デフォルト),SJIS 等です。
   Web情報取得でのエンコードは LOAD, INET$() の第二パラメータで与えられるため
   こちらの設定とは区別されます。
   公開用ファイルでは UTF-8 で保存されたものを使用することを推奨します。
   PCのエディタで全角漢字を使用したファイルを用いる場合は
   UTF-8で保存されていると、初期状態から文字化けすることなくそのまま読み込めます。

  init"ANGLE:RAD or DEG"
   sin,cos,tan と atan の返り値で使われる角度の単位をラジアンにするか度にするか決定します。
   デフォルトはラジアンです。
  [例]
        init "angle:deg"
        '以下360度を単位とした扱いになります。

  [例] SJISファイルをUTF-8ファイルに変換する例。
        init "enc:SJIS"
        load "sfile.bas"
        init "enc:UTF-8"
        save "sfile.bas"

  init"SPMAX:n"
   スプライトの最大数を設定します。
   256(デフォルト),512,1024の値が設定できます。
  [例]
      init "spmax:512"

  init"CRT:n"
   テキスト画面で最下行でprint使用時のスクロールの単位を指定します。
   n=0 文字単位で高速にスクロールします。
   n=1 ドット単位で滑らかにスクロールします。(デフォルト)
  [例]
      init "crt:0" :'文字単位


  KEY


 [機能] ファンクションキーの文字列定義を行います。

 [書式] KEY キーコードNo,"文字列"

 [説明]
  Fnキーの後に押されたキーが出力(挿入)する文字列を定義します。
  キーコードNoはマニュアル後半の表を参照してください。
  定義できるキーはアルファベットと数字のキーです。

 [例]
    key 37,"input"
    'キー'i'に"input"を定義する。



  KEY LIST


 [機能] ファンクションキーの定義内容の一覧を表示します。

 [書式] 

 [説明]
  初期状態では次のように定義されています。
  E(33) "end"
  F(34) "for "
  G(35) "goto "
  I(37) "if "
  P(44) "print "
  T(48) "then "
  N(42) "next"
  L(40) "locate "
  R(46) "return"
  W(51) "while "
  D(32) "delete "
  M(41) "merge"
  O(43) "open "
  B(30) "bg_"
  S(47) "search "
  X(52) "ex_"
  Q(45) "sql "
  C(31) "case "
  K(39) "key "
  0(7) "load "http://androidbasic.ninja-web.net/sp/"
  (サンプル読み込み用)

 [例]