PRINT USING文で,書式のあふれが起こると,既定の回復手続きが適用され,出力欄を星印で埋め,次行に書式化されない形で出力し,さらに改行して例外状態にならなかったときと同じ印字位置から続行することになっています。たとえば,
10 LET a=5000 20 PRINT USING "#### ####":2*a, a 30 END
を実行すると,
**** 10000 5000
のようになります。
出力欄を星印で埋めるだけで余分な行を出力せずに続行したいときは,PRINT USING文の代わりにUSING$関数を使いましょう。
たとえば,上の20行を
20 PRINT USING$("####", 2*a);" ";USING$("####", a)
に変えると,出力は
**** 5000
になります。
USING$関数は数値の書式化にしか対応しませんが,扱う文字が英数字のみであれば,文字列を書式化する関数の定義は容易です。たとえば,短ければ空白を末尾に追加し,長ければ切り詰めてn文字にする関数を,
DEF format$(s$,n) = s$(1:n) & REPEAT$(" ",MAX(0,n-LEN(s$)))
で定義できます。
PRINT USING文をWHEN EXCEPTION 〜 USEで囲むと,書式のあふれが生じたとき,EXTYPE=8203(指数部のあふれのときはEXTYPE=8204)の例外が発生します。上述の手法で満足できないとき,独自の回復処理を書くことができます。
例
WHEN EXCEPTION IN PRINT USING "#### ####":2*a, a USE SELECT CASE EXTYPE CASE 8203,8204 ! ここに書式あふれ発生時の処理を書く CASE ELSE EXIT HANDLER END SELECT END WHEN