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)

noteget 変数,インデックス
 インデックスで指定した行を変数に格納する。インデックスを省略すると0となる。
notedel インデックス
 指定したインデックスの行を削除する。
noteinfo 情報取得モード
 情報取得モードが0のときメモリノードパッドの全体の行数、1のときメモリノードパッドの全体の文字数が得られる。それぞれ、notemax、notesizeと同じ情報が得られる。

 

サンプルメモリノートパッド命令用の変数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 

 

 

inserted by FC2 system