dポイントプレゼントキャンペーン実施中!

いつもいろいろ教えていただきありがとうございます。

先日職場で仕様書に「HIGH_VALUE」という単語がでてきました。
ネットで調べましたがCOBOL由来の技法ということまでしかわかりませんでした。
C言語のソースもありましたが構文的には読めたのですが
なにをしているかは理解できませんでした。
どうか教えてください。

また、この技法は汎用機で使われた技法で
現在使うには注意が必要だという記述がありました。
この点についてもご教示いただけたら幸いです。

A 回答 (5件)

既に回答が出ていますように、16進数で’FF’です。


古い富士通のオフコンでは、レコードの先頭が’FF’のものは削除レコードされました。当時のコンパイラでDELETE命令がなく、止むを得ず、MOVE HIGH-VALUE TO レコード名.などとしていた事を思い出します。若しかすると古いコンパイラと互換性をもたせるために、いまだにHIGI-VALEや’FF’をレコードに送りREWRITEしてしまうと当該レコードを削除するようになっているのかもしれません。その場合には注意が必要でしょう。
当該コンパイラの仕様書又はマニュアルなどのどこかに明記してあるはずだとは思いますが・・・。
    • good
    • 0

0か1みたいに、ただのフラグですよ、あまり気にすることありませんよ

    • good
    • 1

#2です。


またマッチングでも使います。

ファイルを全部読み終えたという意味でキーに最高値であるHIGH-VALUEをセットします。

READ A-FILE AT END MOVE HIGH-VALUE TO A-KEY

というように。
AーFILEを全部読み終えた時点でA-KEYの内容が最高値なので
マッチングしないというテクニックです。

この回答への補足

回答ありがとうございます。

仕様書ではマッチングに使っていました。
汎用機では固定長だから最後のHIGH-VALUEまで書き換えられる可能性
が低かったのでしょうか?
そこが疑問です。
CではEOFというものがあったと思うのですが、
それの代わりなのでしょうか?

補足日時:2008/03/07 21:17
    • good
    • 0

HIGH VALUEというのは16進数で言うと”FF"のことです。


よくテーブルの終わりという意味で使います。
たとえば、配列Aというのがあったとします。
01 b.
  03 A PIC X(1) OCCURS 10.

MOVE HIGH-VALUE TO B.
とやるとA(0)~A(10)まで”FF”になります。

そのあと
A(0)から任意数代入します。

PERFORM VARYING I FROM 1 BY 1 UNTIL A(I) = HIGH-VALUE
DISPLAY A(I)
END-PERFORM

とやると 配列Aに代入した分だけ出力されるというわけです。

この回答への補足

回答ありがとうございます。

ということは、入力する文字列+1文字の配列を
確保しなければならないということでしょうか?

補足日時:2008/03/07 21:07
    • good
    • 0

読んで字のごとく、考えうる最大の値です。


LOW_VALUEはその逆で最小の値です。

注意がどんな注意かわかりませんが、例えば16進で
00

FF
00
とすると、LOW_VALUEは
00
00
だったと思うのでHIGH_VALUEは
99
99
という値のことになるのかな。
通常16進で99 99というコードは存在しないので文字ではないです。

使い方はSTART命令の前にレコードを位置づけするために先頭のレコード(LOW_VALUE)、もしくは最後尾のレコード(HIGH_VALUE)という意味で使います。

この回答への補足

回答ありがとうございます。

注意は以下のサイトで見かけました。
http://otn.oracle.co.jp/forum/message.jspa?messa …

asciiだとLOW-VALUE00(NUL)で、
HIGH-VALUEが(対応不明)となるわけですね。
これをフラグとするわけですね。少し分かった気がします。

補足日時:2008/03/07 20:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています