ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3835815 COBOL等でのHIGH_VALUEについて
質問者:dindin_001 いつもいろいろ教えていただきありがとうございます。

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

また、この技法は汎用機で使われた技法で
現在使うには注意が必要だという記述がありました。
この点についてもご教示いただけたら幸いです。
困り度:
  • 困っています
質問投稿日時:
08/03/05 18:40
最新から表示回答順に表示

回答

ANo.5 既に回答が出ていますように、16進数で’FF’です。
古い富士通のオフコンでは、レコードの先頭が’FF’のものは削除レコードされました。当時のコンパイラでDELETE命令がなく、止むを得ず、MOVE HIGH−VALUE TO レコード名.などとしていた事を思い出します。若しかすると古いコンパイラと互換性をもたせるために、いまだにHIGI-VALEや’FF’をレコードに送りREWRITEしてしまうと当該レコードを削除するようになっているのかもしれません。その場合には注意が必要でしょう。
当該コンパイラの仕様書又はマニュアルなどのどこかに明記してあるはずだとは思いますが・・・。
回答者:LN-TF
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/05/16 22:09
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.4 0か1みたいに、ただのフラグですよ、あまり気にすることありませんよ
回答者:bsml
種類:回答
どんな人:経験者
自信:参考意見
回答日時:
08/03/05 19:48
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.3 #2です。
またマッチングでも使います。

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

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

というように。
AーFILEを全部読み終えた時点でA−KEYの内容が最高値なので
マッチングしないというテクニックです。
回答者:suyagin
種類:回答
どんな人:専門家
自信:自信あり
回答日時:
08/03/05 19:18
この回答への補足回答ありがとうございます。

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

回答

ANo.2 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に代入した分だけ出力されるというわけです。
回答者:suyagin
種類:回答
どんな人:専門家
自信:自信あり
回答日時:
08/03/05 19:06
この回答への補足回答ありがとうございます。

ということは、入力する文字列+1文字の配列を
確保しなければならないということでしょうか?
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 読んで字のごとく、考えうる最大の値です。
LOW_VALUEはその逆で最小の値です。

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

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

使い方はSTART命令の前にレコードを位置づけするために先頭のレコード(LOW_VALUE)、もしくは最後尾のレコード(HIGH_VALUE)という意味で使います。
回答者:bonnumaman
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/03/05 18:54
この回答への補足回答ありがとうございます。

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

asciiだとLOW-VALUE00(NUL)で、
HIGH-VALUEが(対応不明)となるわけですね。
これをフラグとするわけですね。少し分かった気がします。
この回答へのお礼この回答にお礼をつける(質問者のみ)
最新から表示回答順に表示