質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
COBOL

COBOL(COmmon Business Oriented Langage)は、実務処理用に開発されたプログラミング言語です。

Q&A

解決済

3回答

6243閲覧

OpenCOBOLで帳票を作成し、出力する方法について

yuuki_y

総合スコア5

COBOL

COBOL(COmmon Business Oriented Langage)は、実務処理用に開発されたプログラミング言語です。

0グッド

0クリップ

投稿2020/04/13 00:55

編集2020/04/14 15:00

前提・実現したいこと

オープンCobolで、読み込んだデータファイル「cr.dat」より、帳票を作成し、出力先ファイル「 lp.dat」の中身をコマンドプロンプトで画面に表示したい

発生している問題・エラーメッセージ

「cr.dat」最終行の"SHOUHINMEI-5"が、「lp.dat」に出力されない

該当のソースコード

dodox86様に載せていただいたコードに同じ( t03.cob)

Cobol

1 IDENTIFICATION DIVISION. *>見出し部 2 PROGRAM-ID. RENSYU-1. 3 4 ENVIRONMENT DIVISION. *>環境部 5 CONFIGURATION SECTION. 6 SOURCE-COMPUTER. COMPUTER-X. 7 OBJECT-COMPUTER. COMPUTER-X. 8 INPUT-OUTPUT SECTION. 9 FILE-CONTROL. 10 SELECT CD-FILE ASSIGN TO './cr.dat'. 11 SELECT LP-FILE ASSIGN TO './lp.dat'. 12        *> SELECT CD-FILE ASSIGN TO CR. -------------※当初の質問でOrlofskyさんにご指摘いただき、 13     *> SELECT LP-FILE ASSIGN TO LP. -------------修正済みの箇所 14 15 DATA DIVISION. *>データ部 16 FILE SECTION. 17 FD CD-FILE 18 LABEL RECORD IS OMITTED. 19 01 CD-REC. 20 02 SHOUHINMEI-I PIC X(20). 21 02 SURYOU-I PIC 9(3). 22 02 TANKA-I PIC 9(3). 23 02 FILLER PIC X(54). 24 FD LP-FILE 25 LABEL RECORD IS OMITTED. 26 01 LP-REC. 27 02 FILLER PIC X(10). 28 02 SHOUHINMEI-O PIC X(20). 29 02 FILLER PIC X(10). 30 02 SURYOU-O PIC 999. 31 02 FILLER PIC X(10). 32 02 TANKA-O PIC 999. 33 02 FILLER PIC X(10). 34 02 KINGAKU-O PIC 9(7). 35 02 FILLER PIC X(10). 36 WORKING-STORAGE SECTION. 37 77 KINGAKU-W PIC 9(7). 38 77 EOF PIC X(3) VALUE SPACE. 39 40 PROCEDURE DIVISION. *>手続き部 41 HAZIME. 42 OPEN INPUT CD-FILE 43 OUTPUT LP-FILE. 44 MOVE SPACE TO LP-REC. 45 PERFORM UNTIL EOF = "END" 46 READ CD-FILE RECORD 47 AT END 48 MOVE "END" TO EOF 49 NOT AT END 50 COMPUTE KINGAKU-W = SURYOU-I * TANKA-I 51 MOVE SHOUHINMEI-I TO SHOUHINMEI-O 52 MOVE SURYOU-I TO SURYOU-O 53 MOVE TANKA-I TO TANKA-O 54 MOVE KINGAKU-W TO KINGAKU-O 55 WRITE LP-REC AFTER 2 LINES 56 END-READ 57 END-PERFORM. 58 CLOSE CD-FILE LP-FILE. 59 STOP RUN. 60 61

コマンドプロンプト画面:<実行の流れ>

c:\Cobol>cobc -x --free test.cbl c:\Cobol>test.exe c:\Cobol>type lp.dat SHOUHINMEI-1 123 100 0012300 SHOUHINMEI-2 500 200 0100000 SHOUHINMEI-3 800 300 0240000 SHOUHINMEI-4 900 400 0360000 c:\Cobol>

cr.dat(データファイル)の内容

SHOUHINMEI-1 123100#################################################### SHOUHINMEI-2 500200#################################################### SHOUHINMEI-3 800300#################################################### SHOUHINMEI-4 900400#################################################### SHOUHINMEI-5 600200####################################################

補足情報(FW/ツールのバージョンなど)

windows10
open-cobol-1.0-2

<ソースコードの出典>
『【午後選択】基本情報技術者試験らくらく突破COBOL 穂積和子+藤山秋良・著』

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/04/13 01:20 編集

まず、ご提示のコードが読みづらいですのでマークダウンで整形してください。質問が読みづらいとそれだけ回答を得られる機会が減ります。 https://teratail.com/help/question-tips 具体的には例えば以下のようにします。 ```COBOL COBOLのコード ... ``` また、教材に書いてあったコードとはOpenCOBOL用のものでしょうか。それとも別の(普通の?)COBOL用のものですか。OpenCOBOLのものでなければ、Windows環境において一部の動作で互換性が無いと思いますので、修正の必要があったりすると思います。 お使いのWindowsのバージョンやOpenCOBOLのバージョンなども示した方が良いです。質問の修正、追記をお願いいたします。
dodox86

2020/04/14 09:43 編集

>質問者yuuki_yさん せっかく質問を修正してもらったところに悪いのですが、今後の為に指摘させていただきます。質問編集履歴で、 > 画像の方がコードが見やすいかと思い、添付させてもらいました とのことですが、ソースコードを質問に提示するときは、画像では逆に迷惑になります。なぜならば回答者を含む閲覧者がコードを検証するのにソースコードのテキストデータを得られないからです。画像にするのは、画像でないと分からないことを示す場合に限ります。そのためにマークダウン機能があります。
guest

回答3

0

ベストアンサー

ラインプリンターを利用することは実質無理なので、CD-FILELP-FILEにファイル名を割り当てます。これで一応動作しましたので、いち回答として投稿します。
具体的にはSELECT CD-FILE ASSIGN TO CR.の部分をSELECT CD-FILE ASSIGN TO './cr.dat'.のように指定します。出力先であるラインプリンターも普通のファイルにします。

Ubuntu16.04上で、OpenCOBOL 1.1.0 で確認しました。Windows上であればWindows用のファイルPATHで指定してください。(このままでも動く気がしますが)

COBOL

1 * t03.cob 2 IDENTIFICATION DIVISION. *>見出し部 3 PROGRAM-ID. RENSYU-1. 4 ENVIRONMENT DIVISION. *>環境部 5 CONFIGURATION SECTION. 6 SOURCE-COMPUTER. COMPUTER-X. 7 OBJECT-COMPUTER. COMPUTER-X. 8 INPUT-OUTPUT SECTION. 9 FILE-CONTROL. 10 * SELECT CD-FILE ASSIGN TO CR. 11 * SELECT LP-FILE ASSIGN TO LP. 12 SELECT CD-FILE ASSIGN TO './cr.dat'. 13 SELECT LP-FILE ASSIGN TO './lp.dat'. 14 DATA DIVISION. *>データ部 15 FILE SECTION. 16 FD CD-FILE 17 LABEL RECORD IS OMITTED. 18 01 CD-REC. 19 02 SHOUHINMEI-I PIC X(20). 20 02 SURYOU-I PIC 9(3). 21 02 TANKA-I PIC 9(3). 22 02 FILLER PIC X(54). 23 FD LP-FILE 24 LABEL RECORD IS OMITTED. 25 01 LP-REC. 26 02 FILLER PIC X(10). 27 02 SHOUHINMEI-O PIC X(20). 28 02 FILLER PIC X(10). 29 02 SURYOU-O PIC 999. 30 02 FILLER PIC X(10). 31 02 TANKA-O PIC 999. 32 02 FILLER PIC X(10). 33 02 KINGAKU-O PIC 9(7). 34 02 FILLER PIC X(10). 35 WORKING-STORAGE SECTION. *>手続き部 36 77 KINGAKU-W PIC 9(7). 37 77 EOF PIC X(3) VALUE SPACE. 38 PROCEDURE DIVISION. 39 HAZIME. 40 OPEN INPUT CD-FILE 41 OUTPUT LP-FILE. 42 MOVE SPACE TO LP-REC. 43 PERFORM UNTIL EOF = "END" 44 READ CD-FILE RECORD 45 AT END 46 MOVE "END" TO EOF 47 NOT AT END 48 COMPUTE KINGAKU-W = SURYOU-I * TANKA-I 49 MOVE SHOUHINMEI-I TO SHOUHINMEI-O 50 MOVE SURYOU-I TO SURYOU-O 51 MOVE TANKA-I TO TANKA-O 52 MOVE KINGAKU-W TO KINGAKU-O 53 WRITE LP-REC AFTER 2 LINES 54 END-READ 55 END-PERFORM. 56 CLOSE CD-FILE LP-FILE. 57 STOP RUN.

Ubuntu上での動作結果です。t03.cobをコンパイルし、実行ファイルを作成します。

sh

1user01@ubuntu1604-x64:~$ cobc --version 2cobc (OpenCOBOL) 1.1.0 3Copyright (C) 2001-2009 Keisuke Nishida / Roger While 4Built Feb 07 2016 10:28:13 5Packaged Feb 06 2009 10:30:55 CET 6 7user01@ubuntu1604-x64:~$ cobc -x t03.cob 8user01@ubuntu1604-x64:~$ file t03 9t03: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=70e0 c8ac48acf97666342800bc24cf65fb11bfb1, not stripped

入力用ファイルとしてcr.datを作り、実行します。ファイルのデータレイアウトは当然ですがコード中の宣言どおりにしておく必要があります。lp.datファイルへ出力されるので、このファイルを表示すればプリンターへ出力されるであろう内容を確認できます。

sh

1user01@ubuntu1604-x64:~$ cat cr.dat 2SHOUHINMEI-1........123100####################################################$ 3SHOUHINMEI-2........500200####################################################$ 4SHOUHINMEI-3........800300####################################################$ 5 6user01@ubuntu1604-x64:~$ ./t03 7user01@ubuntu1604-x64:~$ cat lp.dat 8 9 10 SHOUHINMEI-1........ 123 100 0012300 11 12 SHOUHINMEI-2........ 500 200 0100000 13 14 SHOUHINMEI-3........ 800 300 0240000 user01@ubuntu1604-x64:~$ 15user01@ubuntu1604-x64:~$

尚、出力ファイルであるlp.datの妥当性までは確認していませんので、ご自分でも試してみてください。


余談:

個人的な意見ですが、先のOrlofskyさんのご意見と同様に、将来性のある若い方がこれからあえてCOBOLを勉強することは私も正直、お勧めできません。質問者さんの「自身が触れたことのない言語に対して、ネットの記事だけで良し悪しを決めるのは、どうなのかという気持ち}の部分は大いに頷け、尊重したい思いですが、他の現代的なプログラミング言語を習熟した上で比べてこそ、評価できるということも申し添えておきたいです。

投稿2020/04/14 06:27

dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2020/04/14 09:19

dodoX86さん 質問者はCOBOLのコードもキャプチャーではなくMarkdownに修正しないし、出典も提示していないのに、甘やかすのは良くありません。社会に出ても掲示板に泣きつけば解決できると思われては独り立ちできません。 未だにCOBOLで作ったシステムを維持しなければならない会社に入ることは愚かしいことです。
dodox86

2020/04/14 09:37

Orlofskyさん。コメントありがとうございます。 > COBOLのコードもキャプチャーではなくMarkdownに修正しないし、 これは私も質問が修正されたときに真っ先に気になったのですよね。すぐに注意をしなかったのは私にも非がありました。甘やかすようなつもりは毛頭無かったのですが、引用させていただいたOrlofskyさんの回答欄へのコメントで、初学者にしては真摯なものを感じたのも私にとって事実です。質問者さんにとって本質問はteratailへの初めての投稿だったのと、私自身、レガシーなシステムに興味があったので私都合で回答を試みたのもあります。
yuuki_y

2020/04/14 12:54

私のような未熟者のためにお二方のお時間を割いてしまい申し訳ございません。dodoX86さんが先ほど載せてくださったコードを実行させていただきましたところ、一点だけ、同様の結果が得られなかった箇所がございましたので、伺いたいです。内容は、レコードの最終行だけが出力ファイルに反映されないというものです。質問修正させていただきますので、お時間いただけましたら幸いです。
yuuki_y

2020/04/14 14:11

余談のコメントに先ほど気づき、遅ればせながら返信させていただきます。 質問事項はもとより、自身の進路のことまでご助言をいただけて感謝の限りです。 お二方におっしゃっていただいたことは、今後開発言語に触れる際、教訓にさせていただきます。
guest

0

教材に書いてあったコード

可能な限り出典は明示しましょう。

Windows環境におけるopensourceCOBOL環境構築手順

 c. Windows環境(Visual Studioが必要)

   ※VSは非営利個人利用ならば無償で利用可能(詳細はMicrosoft参照)

がいちばん簡単そうです。

質問者さんが30歳未満出したらCOBOLは年寄りに任せて、まだ将来の進展がありそうな言語に移った方が良いです。ずっと汎用機のCOBOLしか使ったことがない50歳以上でテレワークで自宅でCOBOLの開発環境を作りたいなら、VPNなどで職場の開発環境に接続させてもらわないと、たぶんまともな開発は無理でしょう。汎用機のCOBOLとOpenCOBOLの互換性は乏しいはずです。

COBOLの需要がなくなった訳ではありません。
トラブル続きの某銀行の新勘定システムは遅れたスケジュールを誤魔化すためにLinux Server に汎用機OSのエミュレーターを入れてCOBOLで動いているそうです。
新型コロナウイルスの影響で「半世紀以上前のプログラミング言語の使い手」が急募される事態に ボランティアでの対応は辛そうです。

投稿2020/04/13 09:35

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/04/13 10:36

> 50歳以上でテレワークで自宅でCOBOLの開発環境を作りたいなら、 質問当初の内容で質問者さんはおおよそこの状況なのかな、と思いました。で、オープン系の環境構築に戸惑っておられるのかなと。 追記を読むとそうではなさそうなので、Orlofskyさんのこちらの回答に賛同します。
Orlofsky

2020/04/13 10:54

ちなみに、 SELECT ... ASSIGN TO CR. SELECT ... ASSIGN TO LP. CR って80欄(桁)のCard Reader です。Windows PC に接続できるCRは存在しないと思われます。https://ja.wikipedia.org/wiki/IBM_1442 LPは Line Printer。EBCDICコードしかプリントできません。漢字はもちろんサポート外。これも Windows PC には繋がらないでしょう。1台何百万円もしたかと。木造アパートでは床が抜けるくらい重かったかと。
yuuki_y

2020/04/13 12:02

ご回答ありがとうございます。すみません、Cobolの勉強を始めたての学生です。そうだったのですね。家のパソコンとプリンタの用意だけで、帳票を作成することはできませんよね。コマンドプロンプトの画面に帳票を出力することは可能でしょうか。その場合は、SELECT ... ASSIGN TO CR.などの表記を省略すればよいということですか。
Orlofsky

2020/04/13 22:21

悪いことは言わないから若者はCOBOLなんかには手を出してはいけません。習得に3年以上かかります。昔のパフォーマンスも保守性も無視して、とにかく動くことで作られた、作った本人しか理解できないCOBOLってたくさんあります。安い給料でその保守を押し付けられるだけです。 SELECTを削るとファイルの定義, OPEN, CLOSE, READ, WRITE がエラーになります。 ググったら、2年前にカードリーダーを修理したとの記録。 https://gigazine.net/news/20180210-60s-card-reader-repair/ 探せばあるもんだ、中古の汎用機を扱っているところ。故障しても修理したり、OSのバグ対応などの技術的サポートできるかは怪しい。たぶん無理。 http://www.isskk.com/sales.html
yuuki_y

2020/04/14 01:28

ご回答ありがとうございます。実は就活生なのですが、ユーザー系の金融系の企業を中心に見ておりまして、そこでの開発言語がJavaを使っているところもありますが、COBOLを利用している企業が多く、COBOLに関しては、意見が分かれる記事が多いので、実際にどのようなものなのか知りたいと思い、勉強を始めました。自身が触れたことのない言語に対して、ネットの記事だけで良し悪しを決めるのは、どうなのかという気持ちがあり、ある程度勉強を進めたうえで、自身でそれを判断したいと思っております。Orlofskyさんがおっしゃられている言葉は胸に刻ませていただきます。 追記で質問させていただきたいのですが、オープンCOBOLで作成した帳票を、コマンドプロンプトの画面に表示することは可能でしょうか。その場合は、SELECT句の指定をどのように変更すればよいのかを教えていただきたいです。
Orlofsky

2020/04/14 02:28

まだわからないの? COBOLが人気なんじゃなくて、COBOLで作られたシステムをオープン系に移行できずに残っている恥ずかしい状態です。COBOLなんかはじめたら定年まで半世紀前に作られたシステムの尻拭いで人生が終わります。 COBOLを使ってシステムが残っている会社は避けるのが吉です。 マニュアルは自分で探しましょう。 COBOL DISPLAY でググります。 そろそろこの質問は終わりにしませんか?
yuuki_y

2020/04/14 12:54

ご回答ありがとうございました。私の理解力が及ばず、ご気分を害してしまい申し訳ございませんでした。
Orlofsky

2020/04/14 13:34

回答の最初に > 可能な限り出典は明示しましょう。 飽くまでも無視するから、COBOLの保守だけで終わる人かも?って思えてきました。 でググった?
yuuki_y

2020/04/14 13:52 編集

ご回答ありがとうございます。出典というのは、最初に掲載させていただいた教材のコードのことでよろしかったでしょうか。こちらは『【午後選択】基本情報技術者試験らくらく突破COBOL 穂積和子+藤山秋良・著』の試験対策本で、当該文献の例題に書かれてあったコードを私が組み合わせて、実行していく中で、疑問に思ったことをご質問させていただきました。 おっしゃっていただきました、COBOL DISPLYの件に関してですが、こちらは、当該文献にも記載がありましたので、そちらでカバーさせていただき、それとは別にインターネット検索もいたしました。 ご提案いただきありがとうございました。
Orlofsky

2020/04/14 14:16

COBOLコードのASSIGN TO CR, LP のところまで変えてしまうと、わたしの回答の意味がわからなくなってしまいますから、修正してください。 出典は質問に書きましょう。情報処理の試験のCOBOLコードは特に酷いです。参考にはしないでください。 汎用機のCOBOLはOpenCOBOLとは互換性はほとんどありません。 データベースやオンライン周りはメーカー毎、OS毎、コンパイラ毎に、さらにバージョン毎にかなり違います。 まだ、COBOLを予習したことを売り込んで就職したいですか?
yuuki_y

2020/04/14 14:50 編集

ご回答ありがとうございます。 ご指摘いただきました内容の修正をおこないました。 それと、COBOLについてのお話、とても勉強になります。 そうですね。お話を伺っている中で、改めて進路のことについて、よく考えてみようと思いました。今回のご質問の内容が解決しましたら、他のオープン系の言語の勉強も考えていきたいと思います。何の言語を勉強するかを考えるところからになりますが。
Orlofsky

2020/04/14 14:57

まだCOBOLに未練があるようなので、 yuuki_yさんが汎用機のCOBOL専任のプログラマとして就職したとして、40歳になった時に社長さんが汎用機メーカーが交換部品の製造終了を告げられ、COBOLを使い続けることの危うさにやっと気がついてオープン系に移行したとして、COBOLしか使えないyuuki_yさんがシステム部に残る場所はなくなっていることでしょう。
yuuki_y

2020/04/14 15:22

ご回答ありがとうございます。実は口コミサイトでもそういう話はよく目にしておりまして、不安になっているところでした。そういう心境の中でOrlofskyさんのお言葉を受けて、当初は、やはりと思う反面、需要が残っていて、人手が足りていないなら、狙い目なのかとも思う気持ちがぬぐえず、未練のあるような言葉を残しておりました。
yuuki_y

2020/04/14 15:26

ユーザ系の金融系の中にはJavaに移行している会社もありますが、完全に移行しきずに、汎用系とオープン系両方を持っている会社も多く、そういう会社でオープン系の部署に入れたらよしくらいの意識でおりました。今回のことで再度進路を考え直そうと思います。こういうはお話はなかなか普段伺う機会がないので、本当に有難い限りです。
dodox86

2020/04/14 17:16

yuuki_yさん。 > 当初は、やはりと思う反面、需要が残っていて、人手が足りていないなら、狙い目なのか コメントの流れを拝読していて、そういう意図かなと思いました。様々な人が居ますし居て良いと思いますが、プログラマーとして仕事をする場合、技術自体に興味が無いと仕事に対するモチベーションが維持できず、かなり苦痛を伴います。で、恐らくですがCOBOLを扱う部署は保守や小さい機能追加が主で、恐らくは職場自体の雰囲気も含め、新しいことをしようとすること自体が望まれない可能性が高いです。仕事として割り切れない人以外は長く勤めることは難しいでしょうね。私自身はCOBOLが使われるような汎用機のOSや環境にも興味があるので、古典に触れるような思いで関心がありますが、何か自分で作りたいアプリケーションがあった場合、同じことをするにも他の言語に比べてとんでもなく面倒または不可能なので、メインで使用するプログラミング言語としては候補外です。今回、COBOLと名の付くものを実際自分の手で初めて触りましたが、これでアプリ作れと言われると正直、眩暈がしそうです。COBOLを扱う会社にとってはyuuki_yさんのような方は大歓迎かもしれませんが、プログラマーとしては「人生かかってる」と思うべき重大事項です。そもそもプログラムを作りたいからプログラマーになるのか、そうではなく、職を得る為にプログラマーになりたいのか、でも違ってきますけどね。
yuuki_y

2020/04/14 23:41 編集

ご回答ありがとうございます。設計や要件定義の仕事がしたいと思い、一次受けというポジションで、メーカー系のがっつり開発に精通している企業よりも早い年次で上流の仕事に携われるユーザー系の企業に魅力を感じ、その中でも仕事のイメージが付きやすい金融系のユーザー系SIerになりたいと思いました。 プログラマとして最初はスタートすることになるかと思いますが、前述の将来的なキャリアパスも含めて広義の意味で、システムエンジニアとして仕事に携わるというイメージでしたので、長くCOBOLの部署でちょっとした開発や運用の仕事のみをおこなうことは考えておりませんでした。確かにプログラマとして考えたら、正直COBOLだけを覚え、仕事していくのは将来的にも厳しいし、モチベーション的に辛いものがあるとも思います。 dodoX86さんやOrlofskyさんに業界に関する貴重なお話をたくさんお聞かせいただき、一介の学生としては、大変ありがたく勉強させていただくことができました。こういうお話をもっと普段から伺える先輩が身近にいたらと思います。いただいた言葉一つ一つを反芻し、今後の就職活動、社会人生活、エンジニアとしての価値観、といったさまざまなところで、前提の知識として役立てていきたいと考えます。長きにわたり、私の未熟な質問にお付き合いいただきまして、誠にありがとうございました。長文失礼しました。
Orlofsky

2020/04/15 04:59

金融系は例えば銀行系として、銀行簿記は勉強していますか?オープン系でもコストを抑えるためにパッケージを買ってきて改造したり、アドオン(機能追加)することが多くなりました。これらを理解できていないと要件定義なんてできません。 SIerは基本的には外注管理がほとんどでExcelだけはむちゃんこ詳しくなりますが、システム設計や開発などの技術的なものを気につけているSIerには会った記憶がありません。だから、SIerは止めたほうが良いかと。 COVID-19 の感染が広がっているので、銀行の勘定システムの開発であろうとテレワークで作業する必要も出てきています。日本の経営者はCOVID-19は正規も非正規も年齢も性別も人種も差別しなりことを無視して正社員にはテレワークを認めているが非正規社員には絶対にテレワークを認めないところが多いから、これから爆発的に感染者が増えても不思議ではありません。 銀行に限らず、データを正確に確実に保存して任意の条件で検索するなどのためにデータベースを使います。データベースを扱う言語はSQLと言います。銀行ではほとんどが Oracle Database を扱います。高価ですが。 無料版も公開されています。Oracle 18c Express Edition が Windows10ですと64bit, Professional が動作保証されています。ちゃんと教えたのにこっちの方が安かったと Windows10 Home Premium を買ってきて動かないで去っていった人が何人もいます。メモリは8GB以上積みましょう。VAIO は故障し易いので使っていると馬鹿にされることが多いのがこの業界です。
guest

0

解決しました

cr.dat(データファイル)のSHOUHINMEI-5の下に1行改行入れたら、表示されるようになりました。

SHOUHINMEI-1 123100#################################################### SHOUHINMEI-2 500200#################################################### SHOUHINMEI-3 800300#################################################### SHOUHINMEI-4 900400#################################################### SHOUHINMEI-5 600200#################################################### ※<------------------ここに改行入れる------------------------------------------>

コマンドプロンプト実行結果

c:\Cobol>cobc -x --free test.cbl c:\Cobol>test.exe c:\Cobol>type lp.dat SHOUHINMEI-1 123 100 0012300 SHOUHINMEI-2 500 200 0100000 SHOUHINMEI-3 800 300 0240000 SHOUHINMEI-4 900 400 0360000 SHOUHINMEI-5 600 200 0120000 c:\Cobol>

質問内容はもとより、質問の仕方、言語自体の需要のこと、業界に従事している方でなければ分からないような貴重なお話をたくさんお聞かせいただけて感謝しております。今後またご質問させていただく機会がありましたらよろしくお願いします。もちろん、自力で考えて悩みぬいた末に伺います。

投稿2020/04/14 15:58

yuuki_y

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/04/14 16:37

※質問が解決した場合は、質問を閉じてください。 本件について補足します。 (私の回答欄コメントより転載) > レコードの最終行だけが出力ファイルに反映されないというものです。 ご自分の処置で一部、進展されたようで良かったですが、COBOLの今回のコードの場合、ファイルは行指向ではなく、レコード(固定長)の意識です。FILE SECTIONのCD-RECの宣言に従うと1レコードが80バイト(意味的には80文字)です。その為、5件のデータがあればファイルは80の倍数、400バイトになるはずです。ご提示のCR.DATファイルは改行を除いて1レコード(≒1行)が78文字になっています。Windowsの改行は通常はCRLFの2バイトで、この場合、最終行で改行しないと1レコードに足らず、400バイトに満たなかったと思います。その場合は恐らく最終行がPR.DATに出力されなかったでしょう。誤解を避ける為重ねて書きますが、本来は行データではありません。1行中のデータがレイアウトに沿えば動く、ということです。
yuuki_y

2020/04/14 23:36

ご回答ありがとうございます。そういうことだったのですね。ご指摘いただき、ようやく分かりました。試しに、cr.datの最下段の改行を消し、SHOUHINMEI-5 のレコード文字数(#)を2字増やしてみましたが、実行結果が同じようになりました。とても初歩的な箇所の質問で恥じております。私のような未熟者にも分かりやすい言葉で説明していただき、誠にありがとうございます。重ねてお礼申し上げます。
dodox86

2020/04/14 23:43

一応念のため。「質問を閉じる」とは、BA(ベストアンサー)をつけて、解決済みにすることです。(他の質問回答を見てみてください)そうでないと本件はずっと未解決のものとして残ってしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問