質問 |
||
| 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が(対応不明)となるわけですね。 これをフラグとするわけですね。少し分かった気がします。 |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |