最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

9.41.編集記述で前マイナスもどきをやってみる

[ Previous ] [ HOME ] [ Upper ] [ Next ]


編集語と編集コードの食い違い

PRGのプログラマーならば、数字の編集をする手段として、編集コードや編集語という指定が出来ることを、ご存知ですね。そして、V2くらいになったころ、だったか(はっきり覚えていませんが)、前マイナスが、編集コードに仲間入りしましたね。まあ、話しが進めやすいので、そのコード表を掲げると、

RPG/400 解説書 14.1.2 組合せ編集コードより

編集後のデータの形式

負数表示
符号なし CR - 浮動負符号
グループ区切り文字付き、ゼロ・バランス印刷 1 A J N
グループ区切り文字付き、ゼロ・バランス消去 2 B K O
グループ区切り文字なし、ゼロ・バランス印刷 3 C L P
グループ区切り文字なし、ゼロ・バランス消去 4 D M Q

となります。ここで問題にしたいのは、浮動負符号(前マイナス)のことです。何が問題かというと、実は、編集コードで出来ているのに、編集語では出来ないのです。ここで、編集語はどうだったかという、おさらいを...

RPG/400 解説書 14.2.2 編集語の各部分 より

      ,     0 .     & C R & & T O T
本体 状況 拡張部分

本体は、原始データ・フィールドから出力レコードに転送される数字用のスペースです。本体は、編集語の左端の桁から始まります。編集語本体のブランク(にゼロを1つまたはアステリスクを1つ加えた)の桁数は、編集する原始データ・フィールドの桁数に等しいか、それより大きくなければなりません。本体は、数字に置き換えることのできる右端の文字で終わります。

状況 は、負の標識用のスペースを定義します。負の標識は、2文字のCRまたは負符号(-)のいずれかです。指定した負の標識は、原始データが負の場合にだけ出力されます。編集語の中の最後の置換え可能文字(ブランク、ゼロ消去文字)と負の標識とのあいだのすべての文字も、原始データが負の場合にだけ、負の標識といっしょに出力されます。原始データが正の場合には、これらの状況桁はブランクで置き換えられます。CR または - 標識のない編集語には、状況桁がありません。状況は、編集語の中の最後のブランクの後に記入しなければなりません。最後のブランクの後に2つ以上の CR が続いている場合には、最初の CR だけが状況として取り扱われ、残りの CRs は固定情報として取り扱われます。 負符号は、編集語中の最後の文字である場合にだけ、状況として扱われます。

拡張部分 は、状況の後に記入する一連のアンパーサンドおよび固定情報文字です。アンパーサンドは出力ではブランク・スペースで置き換えられ、固定情報はそのまま出力されます。状況を指定しない場合には、拡張部分は本体のすぐ後にきます。

と言うわけでしたね。つまり、負の記号は、「状況」に設定されるので、本体の必ず「後ろ」なのです。「本体」の前には何もつきません。(例外が一つ、浮動通貨記号です。)つまり、前マイナスが出来るのは、編集コードだけですね。編集語では指定しようがないのです。(V4現在)。

尚、注意として、ここで「前マイナス」といったら、その数字フィールドがプラスの時はスペースで、マイナスの時に、自動的に判定されて、「-」記号を出すと言う意味です。

さて実は、これで困ったことがあります。つまり、編集語でしか実現できない数字の編集は、前マイナスが出来ない、と言うことです。たとえば、0サプレスの終了位置です。

たとえば、小数点を持つ負の数字、0.68を、

    - . 6 8

ではなくて、

  - 0 . 6 8

と表記したい場合です。覚えておいた方がよいと思いますが、編集コードでは、なぜか、小数点の前まで0サプレスをしています。0.00ではなくて、_.00と表記します。これは、前マイナスのみならず他のコード、全てに共通です。

b_add.gif (360 バイト)注意:訪問者の方から、RPGIVでは指定変更可能との情報を頂きました。1999/7/20

こんな時、昔ながらの、後マイナスならば、編集語で、0サプレスの位置を変えることが出来ます。

0   .     -
本体 状況

0と記入したところまでが、0サプレスをする(0サプレスの終了点)なので、上記の編集語を使えば、0.68-と印刷されますね。(整数部分が2桁有るからいいようなものの、これが1桁だと、編集語でもできないなぁ...)

さて、どうしようか。

浮動通貨記号をマイナス記号にしてしまえ(力ずく)

早い話、¥の変わりに-を使おう、と言うわけです。勿論、負の判定を自動的にして、浮動通貨記号なんて付けてくれませんので、自分で判定しなくてはなりません。ところで、浮動通貨記号を¥ではなく、-にする場合、昔は、RPGでコーディング出来たのですが、今は(いつからかは、不明)RPGのH仕様書に指定すると、SEUでエラーになります。勿論コンパイルも出来ません。(カタカナの長音記号ーは使えますが、かっこわるいし、外資系ではカナ印刷にやや不安ですね。アメリカにソースを渡したりすると、苦情が来ることでしょう。)

そこで、編集記述を使ってみましょう。

crtedtd.gif (17502 バイト)

上記のようにすると、編集記号にマイナスを指定できます。後は、数字がマイナスの時は、上記のコードを使い、プラスの時は、普通の編集語を使います。これで、

-0.65

と表示できます。この時の前マイナスは、符号ではなく、浮動通貨記号です。(だましている訳ですね。)でも、面倒ですね。いちいち正負の判定をするなんて...まあ、後ろマイナスの方が無難かもしれませんね。

1999/7/17


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送