HTBasic TOP アイネット株式会社(i2net) HOME
製品概要 新着情報 サポート情報 製品カタログ ダウンロード HTB関連製品    Tip   Y2Kについて
 ■ HTBasic プログラミング ■

 フォーマット(表現形式)指定のInput/Output(IMAGE / USING)
 フォーマットを使用したアイ・オー (Formatted I/O)
 
OUTPUT, ENTER, PRINT, DISP, と LABEL ステートメントではアウトプット・データならびにインプット・データに対し、フォーマットを指定することができます。フォーマットの使用は、OUTPUT, ENTER, PRINT, DISP, と LABEL ステートメントのキーワード"USING"で指定します。
キーワード"USING"に続く文字列は文字または変数を使用します。フォーマット・データを含んだIMAGEステートメントの行番号あるいは行につけられたラベルもキーワード"USING"に続く文字列で参照できます。
例)
    10  OUTPUT CRT USING "ZZZ.DDD";1.2
    20  IMAGE ZZZ.DDD
    30  OUTPUT CRT USING 20;1.2
 
 フォーマット・データ項目、指示子と繰り返し表記
 
ZZZ.DDD の例で、"ZZZ.DDD"をフォーマット・データ項目といい、"Z","."(period),"D"を指示子といいます。
例)指示子の繰り返し(50行と51行は同じ結果となります)
    50  IMAGE ZZZ.DDD           !( USING "ZZZ.DDD" )
    51  IMAGE 3Z.3D                !( USING "3Z.3D" )
例)フォーマット・データ項目の繰り返し(60行と61行と62行は同じ結果となります)
   分離文字として","(カンマ)を使用します。
    60  IMAGE ZZZ.DDD,ZZZ.DDD    !( USING "ZZZ.DDD,ZZZ.DDD" )
    61  IMAGE 2(ZZZ.DDD)             !( USING "2(ZZZ.DDD)" )
    62  IMAGE 2(3Z.3D)                  !( USING "2(3Z.3D)" )
 注)このままですと、2つの項目がつながった文字列として表示されますので分離文字として
        1文字、スペース(" ")を入れます。(60行と61行と62行は同じ結果となります)
    60  IMAGE ZZZ.DDD,X,ZZZ.DDD   !( USING "ZZZ.DDD,X,ZZZ.DDD" )
    61  IMAGE 2(ZZZ.DDD,X)              !( USING "2(ZZZ.DDD,X)" )
    62  IMAGE 2(3Z.3D,X)                   !( USING "2(3Z.3D,X)" )
 
 <出力時>DISP, LABEL, OUTPUT, PRINT ステートメントで使用される IMAGE 指示子
 
指示子     意 味
#最後の項目に続く、自動的EOL(End Of Line)出力を行わないようにします。
   <項目1><項目2><項目3>・・・・・<項目n>
%出力でのIMAGEでは、無視されます。
Kデフォルト書式で数値または文字を出力します。項目の前後には空白等は入りません。 小数点以下の分離は"."(ピリオド)を使って、デフォルト形式で数値文字を出力します。
      123456.00   456789
-KKと同じです。
HKと同じですが基数に対して小数点( ,:カンマ)を使って、デフォルト書式で数値文字を出力します。
        123456,00
-HHと同じです。
BCHR$関数と同様に1バイトを出力します。 32,767より大きな値が送られる場合は255が送られます。また-32768より小さな値が 送られる場合は0(ゼロ)が送られます。 32767から-32768の値では (CINT(値) MOD 256)の最下位バイトが送られます。
      PRINT USING "B";65     ---->CHR$(65)
      PRINT USING "B";32768 ---->CHR$(256)
      PRINT USING "B";-32769 --->CHR$(0)
W16ビット整数形式(2の補数)で2バイト/ワードとして出力されます。32767より大きな値が送られる場合は 32767が送られます。 また-32768より小さな値が送られる場合は-32768が送られます。
16ビットインターフェースの場合、1回の操作で1ワードを出力します。(I/OパスでBYTE属性が使用されていても)
8ビットインターフェースの場合、 I/OパスのLSB/MSB属性によって操作が違います。 送り先が文字列である場合、固有のバイト並びが常に使われます。 (PCではLSB FIRST、Sun またはHP Workstation ではMSB FIRSTです)  WORD属性がI/Oパスに定義されている場合、空いた部分に詰め込むパッド・バイトはワード調整をする必要がある場合にはそのワードの前に入ります。
Yワード調整は行わず、そしてBYTE属性は無視されないことを除いてWと同じです。
+最後の項目の後ろに自動的につけられるEOLの出力を<CR>(CHR$(13))に代えます。
-最後の項目の後ろに自動的につけられるEOLの出力を<LF>(CHR$(10))に代えます。
M数値が負である場合はマイナス・サイン("-")、正の場合ブランク(" ")をつけて出力します。
S数値にプラスまたはマイナス・サイン("+ "または" -")をつけて出力します。
D1桁の数字文字を出力します。 数値の最上位けたの前のゼロ("0")はブランク(" ")に置き換えます。マイナス・サイン("-")は負を意味します。
      125.00--->" 125.00" (USING "DDDD.DD")
      -60.00--->" -60.00" (USING "DDDD.DD")
Z数値の最上位けたの前のゼロ("0")はそのまま出力されます。 その他はDと同じです。
      125.00--->"0125.00" (USING "ZZZZ.DD")
      -60.00--->"-060.00" (USING "ZZZZ.DD")
*数値の最上位けたの前のゼロ("0")はアスタリスク("*")に置き換えます。 その他はDと同じです。
      125.00--->"*125.00" (USING "****.DD")
      -60.00--->"-*60.00" (USING "****.DD")
.(period)小数点標記をピリオド(".")で出力します。
      125.00--->" 125.00" (USING "DDDD.DD")
R小数点標記をカンマ(",")で出力します。
      125.00--->" 125,00" (USING "DDDDRDD")
E指数表示文字 'E' と符号と2桁の指数部を出力します。
      12345.6--->"1.2346E+04" (USING "Z.DDDDE")
ESZ指数表示文字 'E' と符号と1桁の指数部を出力します。
      12345.6--->"1.2346E+4" (USING "Z.DDDDESZ")
ESZZ指数表示文字 'E' と符号と2桁の指数部を出力します。
      12345.6--->"1.2346E+04" (USING "Z.DDDDESZZ")
ESZZZ指数表示文字 'E' と符号と3桁の指数部を出力します。
      12345.6--->"1.2346E+004" (USING "Z.DDDDESZZZ")
A英数字の文字列を出力します。
Xプランク(" ")文字を出力します。
/<CR><LF>(CHR$(13)&(CHR$(10))を出力します。
L現在のEOL定義を実行します。デフォルトは<CR><LF>(CHR$(13)&(CHR$(10))です。
@フォームフィード(CHR$(12))を出力します。
文字列定数文字列定数を出力します。
 (例) "ABC CO.,LTD." 、"HTBasic株式会社")
文字列定数の標記はダブル・クォテーション(")で文字列をはさみます。 
ダブル・クォテーションを文字定数として使用したい場合は2文字のダブル・クォテーション("")を使用します。
 (例) "ABC ""BIG"" CO.,LTD."
 
 <入力時>ENTER ステートメントで使用するIMAGE 指示子
 
指示子     意 味
#最後の項目を取り込んだ時点で、実行中のステートメントは終了します。 ステートメントを終了させるものは必要とされなく、EOIとLFは項目を終了させるものであり途中での終了は許されません。
  可: <項目1><項目2><項目3>・・・・・<項目n><(EOL)>
  否: <項目1><項目2><項目3+(EOI)>・・・・・<項目n><(EOL)>
  否: <項目1><項目2><項目3>・・・・・<項目n><(EOL)>
%# と同じですが任意の項目で終了する時、ステートメントを途中終了させるEOIは除きます。
  可: <項目1><項目2><項目3+(EOI)><(EOL)>
Kフリーフィールド入力を可能にします。 数値に関しては、入力された文字が数値生成器に送られ、数字が現れるまでの空白と数字文字以外の文字ははずされ、数字の後に現れる数字文字以外の文字が現れると、数字文字列の最後の文字に(EOI)をつけて返します。 文字列に関しては、入力された文字は文字列に送られます。 もし <LF>が続いていなかった場合、<CR>が文字列に送られるでしょう。 文字列の終了は、なら(EOI)つきの文字を受け取ったときにになります。また、文字列に定義した長さまで達した場合も終了します。
-KKと同じですが、<LF>/<CR><LF>では終了しません。
    123456.00
Hカンマ(,)が基本表示でピリオド(.)が数字文字にならないことを除いて、
Kと同じです。
    123456,00
-H文字列に関しては、-Kと同じですが、数値に関してはHと同じです。
BNUM関数のように、1バイトを扱います。 
W16ビット整数形式(2の補数)で2バイト/ワードを扱います。
 もしインターフェースが16ビットの場合でも、1回の操作でそのワードに入ります(たとえI/O pathでBYTE属性で使用されていても)。
 インターフェースが8ビットの場合、 バイト内のビットのならびは、I/OパスのLSB/MSBによります。元が文字列の場合、本来のバイト内のビットのならびが、いつも使われます。(PCではLSB FIRST、Sun またはHP WorkstationではMSB FIRST)
I/O pathでWORD属性が定義されていた場合、 パッド・バイトは、ワードの形にするために必要なときにそのワードの前に挿入されます。
Yワードの形にする事と、BYTE属性が無視されることを除いて W と同じです。
+ENTERステートメントを終了させるための最後の項目の最後の文字にEND(EOI)を必要とすることを意味します。
-ENTERステートメントを終了させるため、<LF>を必要とすることを意味します。 (EOI) は無視され、他のEND表現はエラーの原因となります。
M D と同じ意味になります。
S D と同じ意味になります。
DDの数分、数値文字を読み込みます。または反復数分、数値文字を読み込みます。  例1) DDDDD  例2) 5D 
ソースに数値文字以外の文字が入っている場合
  1)ブランク文字がある場合、文字が現れるまで無視されます。
  2)Dの数内に数値文字以外の文字が現れた場合、現れる前までの
    数値が返ります
      例) 123A5 ---> 123
  3)Dの数以上に場合、数分の数値が返ります
      例) 123456 ---> 12345
ZD と同じ意味になります。
*D と同じ意味になります。
.(period)D と同じ意味になります。
RD と同じ意味になります。. プラス 数値生成器は、基本的指示としてコンマを使うようになっており、ピリオドは非数字文字として扱います。
E4D と同じ意味として扱われます。
  IMAGE Z.DDDDE        =     IMAGE Z.DDDDDDDD
ESZ3D と同じ意味になります。
  IMAGE Z.DDDDESZ     =    IMAGE Z.DDDDDDD
ESZZ4D と同じ意味になります。
  IMAGE Z.DDDDESZZ    =   IMAGE Z.DDDDDDDD
ESZZZ5D と同じ意味になります。
  IMAGE Z.DDDDESZZZ   =   IMAGE Z.DDDDDDDDD
AAの数分、アルファニューメリック文字列文字を読み込む
    Img_1: IMAGE 6A,D
    OUTPUT Buf$ USING Img_1;"ABCDEF",A
    ENTER Buf$ USING Img_1;B$,A
X文字を読み込み、捨てます。
  参考)同じIMAGE文をOUTPUT/ENTERで使用できます
    Img_1: IMAGE XXXXXX,D
    OUTPUT Buf$ USING Img_1;A
    ENTER Buf$ USING Img_1;A
/次の<LF>まで、すべての文字をスキップします。また(EOI)は無視されます。
LENTERステートメントでは無視されます。
@ENTERステートメントでは無視されます。
文字列定数文字列として定義された各々の文字ごとに1文字がスキップされます。
注)IMAGE文の中に、文字列定数があるとき、ダブルクォーテーション(”)で囲むこと
参考)同じIMAGE文をOUTPUT/ENTERで使用できます
    Img_1: IMAGE "ABCDEFG",D
    OUTPUT Buf$ USING Img_1;A
    ENTER Buf$ USING Img_1;A
 

TransEra, HTBasic, TAMS, HP, Agilent, Keysight, NI, ines, Microsoft, Windows等記載されている
会社名、製品名は各社の登録商標または商標です

【お 問 い 合 わ せ 先】
アイネット株式会社

   E-mailでのお問い合わせ
_/_/_/ Copyright 1998-2023 I2NET Co., Ltd. AllRights Reserved. _/_/_/