COBOLの文法でたぶんシフトコードの一種だと思うのですが、
Nタイプの項目に付く'29'や'38'といった数字には
どういう意味があるのでしょうか?
'28''29'の組み合わせは解るのですが・・・。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

COBOL の文法というよりも、使っている計算機(多分、大型汎用機ですよね)の


漢字コードの扱いで決ります。COBOL に限らず、Fortran で漢字を扱うときも
意識することがあります。

'28'~'29'で括った範囲が漢字コード扱いになります。OS 次第ですが、IBM漢字
コードや JEF漢字コードなど。

こっちのほうはうろ覚えなんですが、'38'~'39'で括った範囲も漢字コード扱い
です。そのままページプリンターに印字すると、(28の場合と比べて)文字のポイ
ント数が違って印字された記憶があります。

# きっと、ちゃんとした区別(意味)があるんでしょうけど。
    • good
    • 0

N項目に関しては汎用機、オフコンともに前の方の回答どおり漢字コードが前後につきます。

ただ、メーカーや機種やバージョンによりコード体系が違います。また、プログラム作成上でとしてそれを意識しなくてはならない汎用機も有ります。帳票などは機種によっては帳票レコードで漢字コードを定義しなければいけない場合もありますので、お使いの機種のマニュアルを参照してみることが必要になる場合もあると思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCOBOLでHEXを印字する

COBOLで項目内容を16進表示で印字したい。
例 12345 → F1F2F3F4F5

よろしくお願いします。

Aベストアンサー

テーブルサーチでしょうね。ディスプレイ値とヘキサ値の対応表をサーチ命令でサーチすればいい。

それ以外の方法としては、アッセンブラ-でサブプログラムを作ってコード変換させるのがいいと思います。

QCOBOL85からCOBOL2002移行

HPのOSバージョンアップして、COBOL85からCOBOL2002移行の作業をしました。再コンパイルして、生成されたモジュール(又はオブジェクトファイル.o)のサイズは元の2、3倍になってしまいましたが、どういうことですか?ご教示お願いします。

Aベストアンサー

>なぜバイナリ構造が変更したら、実行モジュール大きくなるのは
>少し、詳しく教えていただけませんか。
ちゃんと書くと長いので掻い摘んで描くと
RISCではコンパイル時点で命令を細かく分け、実行時に並列計算できるもの探して実行していましたが、
Itaniumで採用したEPICではコンパイル時点で並列部分を抽出し実行モジュールに並列情報を持たせています。
アーキテクチャが変わると実行モジュールの構成(サイズ)が変わるのは仕方がないことです。

QCOBOLの定義について

COBOLの定義で
PIC S9 (07) COMP-3
というデータがあってこれを自分で書かなくてはなりませんが、どんなにやってもデータ例外が出てしまします。自分ではHEX状態で
-------
001
00C
-------
みたいなものかと思っていますが、違うようです。

どなたかわかるかたいましたら教えていただけませんか。
よろしくお願しまSう。

Aベストアンサー

>ファイルナンバーは文字列なので

文字としたいなら、「PIC X(n)」で宣言する必要があります。
「PIC 9(n)」は、外部10進であり、そのまま演算にも使えれば表示もできる型です。

PIC 9(5)であれば、内部形式は次のようになります。

X'FdFdFdFdsd'

1バイトを縦で表す方が分かりやすければ、

FFFFs
ddddd

です。

dはX'0'~'9'の値、sは符号で、正=X'C'、負=X'D'、符号なし=X'F'。
dの部分に、'0'~'9'以外の値を入れて参照すると、データ例外になります。

QCOBOL97,Power-COBOLでの効率の良い書き方

汎用機のCOBOLでは添字にはCOMP-1を使うと効率が良いとか、ベースレジスタ削減のために 01レベルのワーク領域の数を減らす(少数の01レベルの配下にワーク領域を定義する)などがマニュアルに記載されていました。
ところがパソコン/サーバ上で動くCOBOLの場合は、計算用にCOMP-3を使うと処理効率が悪い、計算用ではCOMP-3よりはDISPLAY項目、さらに良いのはCOMP-5である、などと言う記事もあり汎用機COBOLとはずいぶん違うようです。実際のところ、パソコン/サーバ上で動くCOBOLで実行時の効率が良いプログラムを書くためには、どのような事に注意すれば良いのでしょうか?

Aベストアンサー

以下が参考になるのでは?

http://q.hatena.ne.jp/1171405263

>>実際のところ、パソコン/サーバ上で動くCOBOLで実行時の効率が良いプログラムを書くためには、どのような事に注意すれば良いのでしょうか?

昔は、汎用機やオフコン、パソコンでCOBOLのアプリを書いていました。ハードレベルのことは、よくわかりませんが、記載されていたとおりだという気がしますね。でも、メモリーや処理効率が悪とはいっても、人間のレベルからしたら、気にしないでもいい程度だと思いますよ。

個人的には、メモリ効率等よりも汎用機・オフコンなどとソースの共用ができるほうが良いと思うので、汎用機に合わせたいところですが、汎用機で使う予定が無いならパソコン・サーバ上でベストな指定でもいいかもしれませんね。

そして、数値計算(特にお金の計算)では、10進で行われるCOMP-3が計算誤差やデバッグの容易さで有利だと思えます。

QCOBOL,MFCOBOLについて

こんにちは。
今日はCOBOL,とMFCOBOLについて教えていただきたいです。

COBOLとはどのような言語でどのように使われているのか?
MFCOBOLとはどのような言語でどのように使われ、COBOLとは何が違うのか?

以上のことを教えてください。
お願いしまーす。

Aベストアンサー

>COBOLとはどのような言語でどのように使われているのか
(1)決まった語句を使って英語を書くようにプログラムする
 言語。センテンスの終わりは「.」。読んで判りやすい。
(2)4つのディビジョンがある。
(3)ファイル定義をまずする。
(4)コンパイル言語。
(5)事務計算向け。10進演算。
(6)会社等にCOBOLのソフト遺産が膨大にありそう。
   過去には大規模システムに採用された。昔は大型機中型   機での利用が多かった。コンパイラが重いため。
(7)40年の歴史。現在も進化している。
(8)CODASYL(団体)が管理。
http://www-6.ibm.com/jp/developerworks/linux/000929/j_cobol.html
http://members10.tsukaeru.net/bitwalk/cobol.html
http://www.suzugamine.ac.jp/~moriya/bunpou.html
http://www4.ocn.ne.jp/~nishi10/cobol.htm
http://hp.vector.co.jp/authors/VA003604/comp/develop/lang/cobol.htm
http://www.cobol.gr.jp/knowledge/technical/tec006.html
今後に関して1見解。
http://nc.nikkeibp.co.jp/jp/articles/features/20000828/
http://itpro.nikkeibp.co.jp/free/NC/NEWS/20010613/4/
○MFCOBOLはマイクロフォーカスジャパン(株)の販売しているCOBOL処理系の1つ。

>COBOLとはどのような言語でどのように使われているのか
(1)決まった語句を使って英語を書くようにプログラムする
 言語。センテンスの終わりは「.」。読んで判りやすい。
(2)4つのディビジョンがある。
(3)ファイル定義をまずする。
(4)コンパイル言語。
(5)事務計算向け。10進演算。
(6)会社等にCOBOLのソフト遺産が膨大にありそう。
   過去には大規模システムに採用された。昔は大型機中型   機での利用が多かった。コンパイラが重いため。
(7)40年の歴史。現...続きを読む

Qオフコン(富士通Kシリーズ)COBOLと汎用機COBOLの違い

 私、富士通オフコン(KやPRIMERGY6000)でのシステム開発を10年以上やっています。当然COBOL言語での開発です。オフコン市場が縮小傾向(AS400は別のようですが)にあるなか、汎用機の開発やリプレースは盛んに行われていると認識しています。

 私の勘ではデータベースのREAD/WRITEのあたりや画面プログラムの表示のさせ方などが違うのでは、と思うのですが、実際に富士通オフコンのCOBOL-Gと汎用機(富士通でもIBMでもなんでも構いません)COBOLを経験された方に、その相違点をお聞きしたく存じます。

 宜しくお願いします。

Aベストアンサー

COBOLというより、DBMSやDCモニタ(富士通ならAIM,IBMならCICSやIMS等)による違いですね。
DBについてはSQLをサポートするRDBMSなら、アプリケーションのコーディングレベルは大きな違いは無いでしょうけど、階層型やネットワーク型DBだとそれぞれ独自の特色があるので使うDBMSによって大きく異なるでしょう。
画面は最近はメインフレームでもWWWを使ったりもするようですが、そうでもない限り、これもDCモニタによってやり方は全然違います。
従って、メインフレームの勉強をしたいのなら、まずターゲットとするDB/DCを決めないといけません。

QCOBOLの勉強をしたいのですが・・・

私は、独学でプロラムを勉強しているのですが、COBOLに関して解らない事があります。NEC用ACOS1-4とかの端末機でも良いので、COBOL勉強をしたいのです。
一般には、なかなか手には入りません。なぜ端末かと言うと、一般PCはどこでも手に入り勉強が出来ますが、オフコンは専門学校か企業でしか触れません。オフコンでCOBOLの勉強する方法は無いでしょうか?無ければCOBOLの一般用ソフトは今存在するのでしょうか?
COBOLの勉強をしたいです。

Aベストアンサー

海外のサイトになるのですが、富士通さんが、勉強用
として、フリーのCOBOLを配布しているようです。

http://download.cnet.com/downloads/0-10085-100-895627.html

それから、COBOL関係の情報のある
「コボラー ドット コム」を紹介しておきます。

http://www.coboler.com/

市販のCOBOLの中では、PowerCOBOLのアカデミック
エディション(Scoolとなってます)で8万円ぐらい
ですね(www.getplus.co.jpにて調べました)

PCで動くCOBOLは、富士通のPower COBOL97,
日立のCOBOL85、あとは、Microfocus COBOLなどが
ありますが、業務向けなので、結構高価です。

QCOBOL、項目末尾に空白がある場合削除の方法その他

汎用でCOBOL85で開発しています。

入力Fは固定長、
出力Fは可変長のCSV形式ファイルです。

質問なのは、
値と値の間にカンマを入れる(値がなくても必ず固定数入れる)にはどうすればいいか。
項目の末尾に半角空白が入っていた場合削除するにはどうすればよいか。
項目ごとにMOVE文を書くのではなく、LOOPさせるようにする(項目が多いので)

の書き方です。
半角空白は確か、項目の後ろから1バイトずつ数えて値があった時点で編集するというような
プログラムを見た記憶があるのですが、詳しい書き方がわかりません。
どなたか少しでもお分かりになりましたら教えてもらえないでしょうか。

Aベストアンサー

コンパイル結果のリストで、コンパイラオプションの「STANDARD=(-A)」を確認してください。「-A」が、「アドレス操作を抑止しない」という意味です。

入力ファイルの項目数が四個の場合で、例題を作ってみました。

【コーディング例】デバッグ用のDISPLAY文が入っています。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN INFILE.
SELECT OUT-FILE ASSIGN OUTFILE.
DATA DIVISION.
FILE SECTION.
FD IN-FILE LABEL RECORD STANDARD.
01 IN-REC.
03 ITEM1 PIC X(10).
03 ITEM2 PIC X(1).
03 ITEM3 PIC X(5).
03 ITEM4 PIC X(15).
03 FILLER PIC X(41).
03 FILLER PIC X(8).
FD OUT-FILE LABEL RECORD STANDARD
RECORDING MODE V
RECORD VARYING
DEPENDING REC-LEN
BLOCK 10 RECORDS.
01 OUT-REC.
03 FILLER PIC X(500).
WORKING-STORAGE SECTION.
77 I PIC S9(4) COMP.
01 FILLER.
03 REC-LEN PIC S9(4) COMP.
03 DATA-LEN PIC S9(4) COMP.
03 DATA-POS PIC S9(4) COMP.
01 DATA-AREA ADDRESSED BY DATA-PTR.
03 FILLER PIC X
OCCURS 1 TO 500
DEPENDING DATA-LEN.
PROCEDURE DIVISION.
HAJIME.
OPEN INPUT IN-FILE.
OPEN OUTPUT OUT-FILE.
YOMIKOMI.
READ IN-FILE
AT END GO TO OWARI.
MOVE 500 TO REC-LEN.
MOVE 1 TO DATA-POS.
*
COMPUTE DATA-PTR = FUNCTION ADDR(ITEM1).
COMPUTE DATA-LEN = FUNCTION LENGTH(ITEM1).
PERFORM DATA-EXTRACT.
*
COMPUTE DATA-PTR = FUNCTION ADDR(ITEM2).
COMPUTE DATA-LEN = FUNCTION LENGTH(ITEM2).
PERFORM DATA-EXTRACT.
*
COMPUTE DATA-PTR = FUNCTION ADDR(ITEM3).
COMPUTE DATA-LEN = FUNCTION LENGTH(ITEM3).
PERFORM DATA-EXTRACT.
*
COMPUTE DATA-PTR = FUNCTION ADDR(ITEM4).
COMPUTE DATA-LEN = FUNCTION LENGTH(ITEM4).
PERFORM DATA-EXTRACT.
*
COMPUTE REC-LEN = DATA-POS - 2.
DISPLAY 'REC-LEN=' REC-LEN.
DISPLAY 'OUT-REC=(' OUT-REC(1:REC-LEN) ')'.
WRITE OUT-REC.
GO TO YOMIKOMI.
OWARI.
CLOSE IN-FILE OUT-FILE.
GOBACK.
DATA-EXTRACT.
DISPLAY 'EXTRACT STA'.
DISPLAY 'REC-LEN =' REC-LEN.
DISPLAY 'DATA-LEN=' DATA-LEN.
DISPLAY 'DATA-POS=' DATA-POS.
DISPLAY 'DATA-AREA=(' DATA-AREA ')'.
IF DATA-AREA NOT = ' '
PERFORM TEST BEFORE
VARYING I
FROM DATA-LEN BY -1
UNTIL (I < 1) OR (DATA-AREA(I:1) NOT = ' ')
CONTINUE
END-PERFORM
MOVE I TO DATA-LEN
STRING DATA-AREA ','
DELIMITED SIZE
INTO OUT-REC
WITH POINTER DATA-POS
END-STRING
ELSE
STRING ','
DELIMITED SIZE
INTO OUT-REC
WITH POINTER DATA-POS
END-STRING
END-IF.
DISPLAY 'EXTRACT END'.
DISPLAY 'REC-LEN =' REC-LEN.
DISPLAY 'DATA-LEN=' DATA-LEN.
DISPLAY 'DATA-POS=' DATA-POS.

コンパイル結果のリストで、コンパイラオプションの「STANDARD=(-A)」を確認してください。「-A」が、「アドレス操作を抑止しない」という意味です。

入力ファイルの項目数が四個の場合で、例題を作ってみました。

【コーディング例】デバッグ用のDISPLAY文が入っています。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION. ...続きを読む

Qhexについて

応答メッセージなどに関する文書なのですが、hexという表現が出てきます。04hexとか、27hexとか・・・いろいろなのですが、数字プラスhexというのは、どういう意味なのでしょうか。

Aベストアンサー

16進数である事を表すためにhexやhを使います。
04h、27hと言う具合にです。
04hはコード表でEOT、End Of Text、文の終わり、27hはアポストロフです。意味はその通信のプロトコル次第なのでわかりません。
http://c-production.com/special/03090704.html

QAccessVBAで実行時エラー'429'が出ます

ACCESS2000,WindouwsME
ACCESSから既存のEXCELブックを呼び出そうとしていますが、
  
       略
EXCEL名 = S2 & "XXX.xls"
Set xls = GetObject(EXCEL名, "Excel.Sheet")
       略

の、2行目で以下のエラーが出てしまい困っています。

実行時エラー'429'
ActiveXコンポーネントはオブジェクトを作成できません。

動かすパソコンの環境で、出る時と出ない時があるようです。
VBEのツールメニューから参照設定を確認しているつもりですが、
ここの理解も含めて原因が良くつかめません。
解決策をコメントできる方がおられましたらお願いいたします。

Aベストアンサー

参考になるようなURLを見つけました。
http://moug.excite.co.jp/skillup/opm/opm05-05.htm
「すでにWordが起動しているときにはそのまま処理を続行しますが、未起動のときには番号429のエラーが発生します。」
ただし自作テストで
Sub test01()
Dim x As Object
Set x = GetObject("c:\My Documents\aa1.xls")
x.Activate
With activeworkbook
MsgBox x.worksheets("sheet1").range("a1").Value
End With
Set x = Nothing
End Subでテストすると、その時エクセルを起動していないがうまく行きました。
ただAccessのモジュールの画面でツール-参照設定-MicrosoftExcel9.0ObjectLibraryにチェックを入れて
いますが。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング