COBOLのPIC句で

PIC  9(07)
PIC S9(07)COMP-3 
PIC S9(07)COMP
といろいろ書きますが、これらの具体的な説明が欲しいです。括弧内は桁数なのかバイト数なのか。COMPが何を表しているか等です。

できれば説明が載っているサイトを見たいですが、説明のみでも結構です。

回答の条件
  • 1人1回まで
  • 登録:2007/02/14 07:21:03
  • 終了:2007/02/17 01:06:40

回答(5件)

id:Baku7770 No.1

Baku7770回答回数2832ベストアンサー獲得回数1812007/02/14 09:46:51

ポイント40pt

PICTURE��

 PICTURE句の書き方が判りやすいのは、上のURLでしょう。

 COMP形式の解説ですが、方言があるので敢えてCOMP-xが何だという決めつけは避けます。必ずマニュアルをご確認下さい。

�f�[�^�^

 COBOLは十進数を基本として扱います。それではデータ長を考えると効率が悪い。そのためのnバイトの整数あるいは浮動小数点の数値の宣言です。

 COBOLで浮動小数点を使うのは誤差が不明確となってしまうため、むしろ稀です。

 私の記憶ではとある給与計算パッケージの年末調整で1000人に1人の割合で誤差が発生するといったバグで大騒ぎになったことがあります。

COBOL�R���\�[�V�A�� Web Site �| ���p�Z�p �| COBOL���p�Z�p�̂��Љ� -��4��- �Z�p���Z�̐��x

id:drill256 No.2

かえる回答回数175ベストアンサー獲得回数72007/02/14 08:18:31

ポイント40pt

COBOLはあまり詳しくありませんが^^;


カッコ内は繰り返しの数です。

9(07)は、9999999と同じ意味になります。

つまり、数字が7桁の変数ということになります。

例えば20桁の文字列は本来XXXXXXXXXXXXXXXXXXXXと書く必要

のあるところを、X(20)と書けば済むようにする仕組みです。


COMP, COMP-3はメモリへの格納形式です。

数値の桁数と、メモリの使用量(バイト数)は異なりますが、

その辺は自動で処理するのでしょう。


COMP-3は10進化16進でメモリに格納されます。

メモリダンプでデバッグするときに便利です。

COMPは16進でメモリに格納されます。

アセンブラやCなどとリンクして、値を渡すときに便利です。


http://hp.vector.co.jp/authors/VA003991/kouza/beginner/kouza_cob...

id:pons No.3

pons回答回数366ベストアンサー獲得回数82007/02/14 08:24:49

ポイント40pt

sはサイン付き、符号(-とか+とか)付きの数字になります。

compは 格納形式

 comp-3は 4ビットで1桁を格納し、最後の4ビットに符号

comp もしくは BINARYを記述すると、数値はバイナリ(16進)で格納されます。

 カッコ内はバイト数ですが、まれに Nという二バイト文字(ひらがな、や漢字など2バイトを使って表示する日本語文字)の場合は2バイトで1文字分だったと記憶しています。

 

 COBOL とか ~COBOLなど それぞれ独自で拡張の記載方法があると思います。

http://hp.vector.co.jp/authors/VA003991/kouza/beginner/kouza_cob...

http://ueno.cool.ne.jp/shirokaze185/htcobol.html#pic

id:antipattern No.4

antipattern回答回数125ベストアンサー獲得回数122007/02/14 09:49:39

ポイント40pt

PIC・・・はいわゆる変数宣言みたいなものです。

PICの後の「9」は数値型の変数であることを表し、「S9」は符号付き数字です。

このほかに「X」であれば文字、「N」であれば日本語(全角)文字を表します。

 

その後の括弧内の数字は文字数を表します。

従ってPIC 9(09)であれば数字9桁(9バイト)を表し、

PIC N(03)であれば日本語3文字(6バイト)を表します。

 

COMP、COMP-3についてですが、それぞれBINARYとPACKED-DECIMALと同じ意味です。(COMPはCOMPUTATIONALの略)

 

BINARYは数値を2進数で表すことを意味し、整数演算が早くなります。

一方のPACKED-DECIMALは10進数で表すことを意味し、少ない容量でデータを保存できるため、かつての保存媒体が高価だった時代には多用されていたそうです。

説明が載っているホームページで詳しいのが見つかりませんでしたので説明だけです。

id:kurukuru-neko No.5

kurukuru-neko回答回数1844ベストアンサー獲得回数1552007/02/14 19:09:48

ポイント10pt

PICTURE(PIC)はデータの形式

USAGE(COMP等)はデータの格納形式を指定します。

PICTURE / USAGEの解釈の方法

Microfocusのオンラインマニュアル

データ型概要

http://www.microfocus.co.jp/manuals/SE40SP2/classic/prwrit.htm

USAGE

http://www.microfocus.co.jp/manuals/SE40SP2/classic/lrpubb19.htm

PICTURE

http://www.microfocus.co.jp/manuals/SE40SP2/classic/lrpdf4.htm#s...

http://www.microfocus.co.jp/manuals/SE40SP2/classic/lrpubb19.htm

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません