9.41.編集記述で前マイナスもどきをやってみる |
編集語と編集コードの食い違いPRGのプログラマーならば、数字の編集をする手段として、編集コードや編集語という指定が出来ることを、ご存知ですね。そして、V2くらいになったころ、だったか(はっきり覚えていませんが)、前マイナスが、編集コードに仲間入りしましたね。まあ、話しが進めやすいので、そのコード表を掲げると、 RPG/400 解説書 14.1.2 組合せ編集コードより
となります。ここで問題にしたいのは、浮動負符号(前マイナス)のことです。何が問題かというと、実は、編集コードで出来ているのに、編集語では出来ないのです。ここで、編集語はどうだったかという、おさらいを... RPG/400 解説書 14.2.2 編集語の各部分 より
と言うわけでしたね。つまり、負の記号は、「状況」に設定されるので、本体の必ず「後ろ」なのです。「本体」の前には何もつきません。(例外が一つ、浮動通貨記号です。)つまり、前マイナスが出来るのは、編集コードだけですね。編集語では指定しようがないのです。(V4現在)。 尚、注意として、ここで「前マイナス」といったら、その数字フィールドがプラスの時はスペースで、マイナスの時に、自動的に判定されて、「-」記号を出すと言う意味です。 さて実は、これで困ったことがあります。つまり、編集語でしか実現できない数字の編集は、前マイナスが出来ない、と言うことです。たとえば、0サプレスの終了位置です。 たとえば、小数点を持つ負の数字、0.68を、
ではなくて、
と表記したい場合です。覚えておいた方がよいと思いますが、編集コードでは、なぜか、小数点の前まで0サプレスをしています。0.00ではなくて、_.00と表記します。これは、前マイナスのみならず他のコード、全てに共通です。 注意:訪問者の方から、RPGIVでは指定変更可能との情報を頂きました。1999/7/20 こんな時、昔ながらの、後マイナスならば、編集語で、0サプレスの位置を変えることが出来ます。
0と記入したところまでが、0サプレスをする(0サプレスの終了点)なので、上記の編集語を使えば、0.68-と印刷されますね。(整数部分が2桁有るからいいようなものの、これが1桁だと、編集語でもできないなぁ...) さて、どうしようか。 浮動通貨記号をマイナス記号にしてしまえ(力ずく)早い話、¥の変わりに-を使おう、と言うわけです。勿論、負の判定を自動的にして、浮動通貨記号なんて付けてくれませんので、自分で判定しなくてはなりません。ところで、浮動通貨記号を¥ではなく、-にする場合、昔は、RPGでコーディング出来たのですが、今は(いつからかは、不明)RPGのH仕様書に指定すると、SEUでエラーになります。勿論コンパイルも出来ません。(カタカナの長音記号ーは使えますが、かっこわるいし、外資系ではカナ印刷にやや不安ですね。アメリカにソースを渡したりすると、苦情が来ることでしょう。) そこで、編集記述を使ってみましょう。 上記のようにすると、編集記号にマイナスを指定できます。後は、数字がマイナスの時は、上記のコードを使い、プラスの時は、普通の編集語を使います。これで、 -0.65 と表示できます。この時の前マイナスは、符号ではなく、浮動通貨記号です。(だましている訳ですね。)でも、面倒ですね。いちいち正負の判定をするなんて...まあ、後ろマイナスの方が無難かもしれませんね。 1999/7/17 |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||