HSP3 プログラミングの基礎U | |
(1) メモリノートパッド命令
付属のプログラミング・マニュアルによると、「メモリノートパッド命令セットは、行単位で文字列を扱うことのできるユニークで便利な機能です。」とある。しかも、ディスクへファイルとして読み書きもできる命令群である。
付属のプログラミング・マニュアルより
命令 機能 命令 機能 notesel メモリノートパッドとして扱う変数の指定する。 noteunsel 以前に選択されていた変数に復帰する。 noteadd 指定行に内容を追加する。挿入/上書きモードあり。 noteinfo メモリノートパッドに関する情報を取得する。 noteget 指定行の内容を読み出す。 notedel 指定行の削除する。 システム変数 noteload ファイルから内容を読み込む。 notemax 全体の行数を取得する。 notesave 内容をファイルに書き出す(保存する)。 notesize 全体のサイズ(バイト数)を取得する。
特に、テキスト(文字だけ)のデータをファイルとして保存したり読み込んだりするときは、この命令群を使用する。
◎ 変数指定とデータ追加 (notesel, noteadd)
メモリノードパッドにする変数を指定する。
notesel 変数 インデックスとモード省略時は、文字列データをメモリノードパッドの最終行に追加する。
noteadd 文字列データ, インデックス, 上書きモード
インデックスには、追加する行を指定する。先頭行を0から数える。
上書きモードに1を指定すると追加せずにインデックスの行を書き換える。
変数npに「HSP」、「programming」、「language」の3つの単語を3行のデータとして格納する。
np = "HSP\nprogramming\nlanguage" mes np stop
HSP programming language |
変数npには1行でそれぞれの単語をを格納している。実行すると3行で表示されている。
「(1) 出力」で学習したように、 \n は特殊な文字で改行コードを表しているので、3行で表示される。
メモリノートパッド命令はこの1行ずつを単位として扱うことができる命令である。
メモリノートパッド命令用の変数npを設定して、「HSP」、「programming」、「language」の3つの単語をデータとして追加する。
notesel np ;メモリノートパッド変数設定 noteadd "HSP" ;データ追加 noteadd "programming" noteadd "language" mes np stop
HSP programming language |
notesel命令で変数npをメモリノートパッド命令の変数として設定する。
noteadd命令でデータを追加する。最終行に追加される。
実行すると前のサンプルと同じように3行で表示される。
データを追加する行を指定する。「3.0」を1行目と2行目の間に追加する。
notesel np
noteadd "HSP"
noteadd "programming"
noteadd "language"
noteadd "3.0", 1 ;追加行の指定
mes np
stop
HSP 3.0 programming language |
noteadd命令のデータの後に追加する行を指定する。以降のデータはずれていく。
先頭行にデータ「3.0」を追加するときは、seladd "3.0", 0 となる。
noteadd "3.0"のように、追加する行を指定しなければ最終行に追加される。
2行目の「3.0」を「ver 3.0」に変える。
notesel np
noteadd "HSP"
noteadd "programming"
noteadd "language"
noteadd "3.0", 1
mes np
noteadd "ver 3.0", 1, 1 ;追加行の指定,上書きモード
mes np
stop
HSP 3.0 programming language HSP ver 3.0 programming language |
行の指定の次に、モードを指定する。モードを省略するか0を指定すると追加モードになり、1を指定すると上書きモードになる。
書き換えるデータは2行目であるが、noteadd命令で指定した行は1としている。メモリノートパッド命令では、先頭行を0行目として数えていくようになっているためである。
◎ データの参照と削除 (noteget, notedel)
インデックスで指定した行を変数に格納する。インデックスを省略すると0となる。
noteget 変数,インデックス 指定したインデックスの行を削除する。
notedel インデックス 情報取得モードが0のときメモリノードパッドの全体の行数、1のときメモリノードパッドの全体の文字数が得られる。それぞれ、notemax、notesizeと同じ情報が得られる。
noteinfo 情報取得モード
メモリノートパッド命令用の変数npを設定して、「HSP」、「programming」、「language」の3つの単語をデータとして追加し、指定したインデックスの行を表示する。
notesel np
noteadd "HSP"
noteadd "programming"
noteadd "language"
noteget data, 0 ;データ参照
mes data
stop
「HSP」と表示される。
インデックス0は1行目である。1行目の"HSP"が変数dataに格納される。
「HSP/programming/language/」と1行で表示されるようにする。
notesel np noteadd "HSP" noteadd "programming" noteadd "language" ss = "" repeat noteinfo(0) ;全体の行数、notemaxでも良い noteget work, cnt ;データ参照 ss = ss + work + "/" loop mes ss stop
「HSP/programming/language/」と1行で表示される。
ss=ss+work+"/"の式で取り出したインデックス(行)のデータを連結している。
メモリノートパッド命令用の変数npを設定して、「HSP」、「programming」、「language」の3つの単語をデータとして追加し、2行目のデータ(programming)を削除し、残りを表示する。
notesel np
noteadd "HSP"
noteadd "programming"
noteadd "language"
notedel 1 ;データ削除
mes np
stop
HSP language |
2行目のデータはインデックスでは1になる。先頭行から0, 1, 2, ・・・と数える。
◎ ファイルへの保存と読み込み (notesave, noteload)
notesave ファイル名 noteload ファイル名
メモリノートパッド命令用の変数npを設定して、「HSP」、「programming」、「language」の3つの単語をデータとして追加すし、ファイル名"notedata.txt"で保存する。
notesel np
noteadd "HSP"
noteadd "programming"
noteadd "language"
notesave "notedata.txt" ;データ保存
mes np + "保存完了"
stop
「HSP」、「programming」、「language」、「保存完了」と4行で表示される。プログラムを保存したフォルダと同じフォルダに3行分のデータがファイル名"notedata.txt"として保存される。
保存されたファイル"notedata.txt"をマイコンピュータなどで表示して、ダブルクリックするとメモ帳が起動してデータが表示される。3行分のデータがあることを確認してみよう。
メモリノートパッド命令用の変数npを設定して、ファイル"notedata.txt"を読み込み、表示する。
notesel np
noteload "notedata.txt" ;データ読み込み
mes np
stop
「HSP」、「programming」、「language」と3行で表示される。
メモ帳で12, 34, 56, 78, 90のデータを1行にひとつ入力して、ファイル名"notedata2.txt"で保存する。このデータファイルを読み込んで合計を表示する。
notesel np noteload "notedata2.txt" repeat notemax noteget dd, cnt tt = tt + dd loop mes "合計は、" + tt + " です。" stop
「合計は、270 です。」と表示される。
メモリノートパッド命令は、データが文字列として読み込まれる。合計の計算をしている tt=tt+dd の式を tt=dd+tt に変更して実行してみよう
「合計は、9078563412 です。」と表示される。
右辺のdd(文字列)+tt(整数)は最初の値(変数)が文字列型なので、その型にあわせて計算される。したがって、文字列の連結となってしまう。
正しく結果が表示されるようにする。
notesel np noteload "notedata2.txt" repeat notemax noteget dd, cnt tt = int(dd) + tt loop mes "合計は、" + tt + " です。" stop
「合計は、270 です。」と表示される。
int関数で文字列を整数に変換してから加算する。データが実数の場合はdouble関数で実数に変換してから計算する。 (tt = tt + double(dd))
2006 © Hiroshi Masuda |