NECのオフコン情報掲示板(ノウハウ系)
NECのオフコンを活用するためのノウハウを話し合うための掲示板です。 |
新規投稿 | スレッド表示 | ツリー表示 | 投稿順表示 | i-mode | トップ |
#NFCNVのDOS形式ファイルの出力先について | |
けんさん 2015-8-26 14:20:27
[返信] [編集] #NFCNVの出力先にCD-RWは指定可能でしょうか。 フォーマットはライブファイルシステム形式を予定しています。 元々は#FLCNVでFDU000に出力していました。 取引先の機器変更でDOS形式CSVファイルに出力する事になりそうです。 AVXのバージョンはA-VX02 R3.6です。 環境が用意できない為テストが出来ません。 よろしくお願いします。 | |
Re: AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます | |
MAKI 2015-8-4 14:53:18
[返信] [編集] HIGH-VALUEは内部コードはFFなんで数値項目にMOVEしようとすると 不正十進数エラーになっているということではないでしょうか。 わざとアボートさせてプログラムを終了させているなんてことは ないでしょうね? | |
Re: AT ENDは正しく動いているのでは? | |
gai 2015-7-23 15:07:40
[返信] [編集] 説明わかりづらくてすみません。 省略してシンプルに書きすぎたのと、 情報開示の問題で大変わかりづらくなってしまいました。 階層構造になっており、①親 ②子 ③孫 となっております。 ただし、これでもさらに上位階層のルーチンがあります。 そこまで疑うとキリがありませんし ファイルレイアウトがどうなってるんだとか、 DBの詳細はどうだとかいう話にもなってしまいますので、 あきらめます。 でもずいぶんスッキリしました。 ありがとうございました! *********************************************************** ① PERFORM DELETE-PROC UNTIL WK-DNO NOT = XXXX-DNO. *********************************************************** ② *********************************************************** DELETE-PROC SECTION. KK-010. DELETE XXXX-F INVALID KEY MOVE MSG-ABC TO KB-MSG1 MOVE XX-KEY TO KB-MSG2 PERFORM MSG-RTN THRU MSG-EXT. PERFORM READ-PROC. KK-DELETE-EXIT. EXIT. *********************************************************** ③ *********************************************************** READ-PROC SECTION. K-010. READ XXXX-F NEXT AT END MOVE HIGH-VALUE TO XXXX-KEY2. READ-EXIT. EXIT. *********************************************************** XXXX-KEY2 は数字項目 集団項目 XXXX-DNO 9(06) XXXX-KNO 9(02) WK-DNO 9(06) はブレークしたときXXXX-DNOを退避するワーク項目 | |
AT ENDは正しく動いているのでは? | |
ターラヤン 2015-7-22 0:23:55
[返信] [編集] HIGH-VALUEを8888・・に直してうまく動くようになったのでしたら、良いとは思いますが・・・ もともとのご質問は 「最終レコードが削除されたら、レコードがなくなるので、AT END になると思うのですが、 なぜAT END GOTO ABC-090が無視されてしまうのでしょうか?」 だったと思います。 「最後のレコードがDELETE されたあと、 再度READ命令を実行した際、 READ XXXX NEXT AT END の直後に DISPLAY したところ ”10” が表示されました。」 ということならば、 AT ENDの直後のDISPLAY文が実行されたということですので、 「最終レコードが削除されたら、レコードがなくなるので、AT ENDになっている」 のではないでしょうか。 プログラムの一部分しか見えないので、はっきりとはわかりませんが、 実はGOTO文の前にHIGH-VALUEをMOVEする処理もあるようですし、 例えば、MOVEとGOTOの間の別の命令があって不正十進エラーになっているとか、 XXXX-KEY2が英数字項目で定義されていて、HIGH-VALUEを入れた後に どこかでXXXX-KEY2を使って計算して(例えばCOMPUTE A=XXXX-KEY/2のように) 不正十進エラーになっているとか AT ENDとGOTOの間が空いているのなら、GOTOでジャンプしない経路があり予想外の場所を実行しているとか どこかにロジックに誤りがあるのではないか、という気もします。 | |
Re: AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます | |
EXCHANGE 2015-7-19 16:24:12
[返信] [編集] ☆ 拝見させていただいて、前任者はかなり古風なソフト書法をご存じの方と思います。ひょっとしたらA-VX以外でのCOBOLを使っておられた経験者かも?low-value high-valueをendがらみで使われているところなんかそれっぽい感じがします) ☆それはともかく、私は江須扇さんのご指摘が(現在なら)妥当な書法ではないかと同感いたします。 以下、(江須扇氏より引用) >それにしても旧100からCOBOLがあったのでそれを引き継いだプログラムが多いので >GO TO ありありのプログラムはやむを得ないかもしれませんが >新規であればCOBOL85はEND-XXXとPERFORM を使った構造化プログラムが作成が可能になります。 >データベースのSELECTと命令と組み合わせると かなりすっきりしたプログラムになります。 | |
Re: AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます | |
GAI 2015-7-17 15:57:23
[返信] [編集] こんにちは。 ためしに、 MOVE HIGH-VALUE TO XXXX-KEY2. ↓ MOVE 88888888 TO XXXX-KEY2. とやったら、エラーにならなくなりました。 上位のロジックでは、 XXXX-KEY2 が 88888888 だったら、 処理修了的に手続きを仕込みました。 とりあえず無理やりですが、これで運用はできそうですが、 なんで HIGH-VALUE を入れたら 十進数エラーなのかは不思議です。 | |
Re: AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます | |
gai 2015-7-17 14:09:40
[返信] [編集] こんにちは。 各所にDISPLAYを入れて、 fileSTATUSを表示してみました。 最後のレコードがDELETE されたあと、 再度READ命令を実行した際、 READ XXXX NEXT AT END の直後に DISPLAY したところ ”10” が表示されました。 10はAT ENDですよね? 表示したあと、そこで 十進数エラーになります。 もしかしたら、KEYに HIGH-VALUE を入れているからいけないのでですか?? READ XXXX NEXT AT END DISPLAY STS UPON AAA-GDD MOVE HIGH-VALUE TO XXXX-KEY2. と書いてあります。 | |
Re: 久々COBOL85を見ました。(AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます) | |
gai 2015-7-17 13:14:47
[返信] [編集] ありがとうございます。 FILE STATUSでソースを検索したところ、 FILE-CONTROL.で なんこかのSELECT で FILE STATUS IS XXXXX と書いてありました。 file statusとは この記述のことでしょうか? ここで定義しておきながら、 実際のprocedure divisionでは、 file status xxxx は使っておりませんが。 したがって、FILE status を全処理で DISPLAYしてみます。 | |
Re: AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます | |
gai 2015-7-17 11:53:31
[返信] [編集] ありがとうございます。 おっしゃるとおり、それなりに実績があるといいつつ、 あるというわけではないですよね。 10年以上毎月動いているPGですが、 もしかしたら過去もあったのかもしれません。 ORGANIZATION IS INDEXED となっております。 RDBを索引順に読みながら、 ある条件に合致した、古いレコードを削除する、 という処理です。 | |
Re: AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます | |
GAI 2015-7-17 11:24:11
[返信] [編集] ファイルステータスですね?! やり方調べて実施してみます! ありがとうございます” | |
Re: 久々COBOL85を見ました。(AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます) | |
江須扇 2015-7-16 11:02:27
[返信] [編集] 私も久々に見るので、記憶違いかもしれませんが、 プログラム内でFILE STATUSを一か所も使ってない場合は AT END で再読み込みを実行すると命令実行順序エラーで エラー表示するのではと記憶しております。 しかしながらFILE STATUSを使っている場合は その命令でOSからのエラーは表示されず。 次の行で必ずSTATUSをIF命令で確かめる必要が あると思います。 また、DELETE命令で不正十進数はエラー出ないと記憶しております。 説明上省略してあるのでしょうがREADの後、何らかの処理でエラーが出ていると考えます。 対応方法は 1.全てのFILE STATUSをコメントにして OSのエラー機能のみで実行する 2.全ての入出力命令(OPEN、CLOSE、READ、DELETE等)の直後でSTATUSを確認して全て自己管理にする のどちらかにする必要があります。 中途半端(すいません言葉がきついかも)にSTATUSを確認すると正しい判定ができません。 まずはそこをご確認ください。 PS: それにしても旧100からCOBOLがあったのでそれを引き継いだプログラムが多いので GO TO ありありのプログラムはやむを得ないかもしれませんが 新規であればCOBOL85はEND-XXXとPERFORM を使った構造化プログラムが作成が可能になります。 データベースのSELECTと命令と組み合わせると かなりすっきりしたプログラムになります。 いまさらですが参考の為に蛇足を書きました。 ![]() | |
Re: AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます | |
ターラヤン 2015-7-15 0:52:31
[返信] [編集] 私も温泉好きのうさぎさんと同じ意見です。 READなどの命令実行後のファイルステータスを見てみた方がいいです。 例えば READ XX-FILE AT END GOTO ABC-090. の後辺りで、 IF ファイルステータス(1:1)NOT= '0' DISPLAY ファイルステータス END-IF みたいな感じで。 なんとなく普通に考えると、最終レコードを削除したので次はAT ENDとなる、というようにも思われますが、実は別のエラーになっているのかもしれません。 それなりにスキルのある前任者が作ったプログラムとのことですが、今までずっと動いていたけど突然エラーが出るようになって動かなくなったというような、今までそれなりに実績があるというわけではないですよね。その人が作ったことは作ったが、動かしたのは今回初めてということですよね。 ところでORGANIZATIONは何を指定しているのでしょうか このプログラムは何をしようとしているのでしょうか、全部のレコードを削除してテーブルをまっさらにするというプログラムでしょうか | |
Re: AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます | |
温泉好きのうさぎ 2015-7-14 18:57:30
[返信] [編集] まず第一に疑うべきものは、ファイルに対する I-O 命令が正常に実行されているのかどうかということです。 すなわち、AT END が無視されたのではなく、READ 命令自体が正しく実行されなかったと考えるべきです。 それをチェックする最も簡単な方法は、「OPEN」「READ」「DELETE」各命令の直後にファイルステータスの値を画面表示させることです。 すべて値が正常終了であれば、別の原因を探す必要があります。 | |
AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます | |
GAI 2015-7-14 16:12:14
[返信] [編集] こんにちはいつも大変お世話になっております。 COBOL85で、 下記の処理をした場合、 最終レコードを削除した後、 AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます。 それなりにスキルのある前任者が作ったプログラムです。 最終レコードが削除されたら、レコードがなくなるので、AT END になると思うのですが、 なぜAT END GOTO ABC-090が無視されてしまうのでしょうか? どう処置すればいいでしょうか? 1.RDBファイルを順読み 2.削除する 3.次のレコードを読む(最終レコード) 4.削除する(最終レコード) 5.次のレコードを読む(AT ENDになるはず) 6.削除する → 不正エラー!!? ABC-010. READ XX-FILE AT END GOTO ABC-090. DELETE XX-FILE . GO TO ABC-010. ABC-090. 【例】 READ レコード 99997 →DELETE READ レコード 99998 →DELETE READ レコード 99999 →DELETE READ E M0021: (PRG=XXXXXX,ADR=00051C12) 不正十進数エラ― | |
Re: A-VXデータの移行について | |
レガシー始末屋 2015-6-6 15:53:27
[返信] [編集] NECのA-VX対応については、ディーラーから、販売完了が2014/3月、サポート、保守終了は、2019年3月と聞いております。ディーラーの販促用でしょうか(笑) ディーラーもそれなりに対応してくれるのですが、オフコン全盛の頃に比べて、要員がリストラされてしまっていて、以前の様に気楽にSEやCEに相談できなくなっております。 うっかり相談すると、有償と言われそうですね。 兎に角、今回のDATによるデータ退避、復旧にメドがついて、ホットしてます。 何時サーバーが致命的なダウンをするか、予測つかないので、次期オープンシステムに移行が完了するまで、レガシーA-VXには、最後の力を振り絞って、頑張ってくれと祈ってます(笑)。 | |
Re: A-VXデータの移行について | |
オフコン人 2015-6-6 8:11:52
[返信] [編集] 無事解決したようですね。よかったです。 ところで、2019年3月じゃなく、2020年3月と聞いていますよ。それを過ぎると保守も受けられなくなりますので、それまでに何とか移行を終えないといけません。(頑張るしか・・・) しかし、今回のようなことは、買われた販売店は何もしてくれないのですか? 私は販売店へ問い合わせて、それなりに助けてもらっています。ま、最近は新しいことをしないので、聞くこともほとんど無くなっていますが。 お互い、頑張りましょうね。 | |
Re: A-VXデータの移行について | |
レガシー始末屋 2015-6-5 13:56:05
[返信] [編集] Windows2003Server A-VX01側のDAT装置は、とりあえず正常に動作していると判断しまして、ご指摘の5.6.について、トライしました。 Windows2000Server A-VX4側のDATのヘッドクリーニングと新しいDDS3テープを用いて、BACKUPして、DAT72にセットして、CATALOGU,RESTORE処理を 実行してみました。 結果は、OKでした。嘘のような結末ですが、ご指摘の通りでしたね。 お陰様で、A-VX4からA-VX01へのDAT経由でのデータ移行が出来そうです。 今回皆様の貴重な情報で、良い結果が得られて、大変感謝してます。改めて、御礼申し上げます。 それにしましても、今回のような処理は、通常Serverがダウンしない限り実際に実行する機会が無いかもしれない処理だけに、複雑な心境ですね。 A-VXもいよいよ2019年3月末で完全終了となります。NECのサポートは商業的に終了かもしれませんが、引き続き暫くは継続稼動させねば ならないユーザーはかなりいると思いますので、皆さん大変ですね。 ある時期まで、A-VXを利用しなければならないユーザーにとって、このような掲示板があることは、大変心強いですね。 もう暫くは、レガシーと付き合わなければならないユーザーの為にも、発信し続けて下さい。 | |
Re: A-VXデータの移行について | |
温泉好きのうさぎ 2015-6-4 23:03:31
[返信] [編集] OSがA-VX4 R5.01 は、ディスクバックアップ機能の適用対象外です。 2015-6-4 18:52の投稿の最後の2行は無かったことにしてください。 | |
Re: A-VXデータの移行について | |
レガシー始末屋 2015-6-4 20:56:40
[返信] [編集] Windows2003Xerver A-VX01 R5.01で、#BKUPを起動して、DATへの退避及びCATALOGU処理は、正常にできました。(最初DATにテープセットしないで、退避パラを切ったら、装置が用意されていないと怒られましたのでアクセスしてます) やはり問題は、Windows2000Server A-VX4 R5.01で退避したDATが正常に処理出来ないという点です。 A-VX4のサーバーとA-VX01サーバーともに同じファイルアロケートされています。 もう一度、皆様からの情報を整理して、再検討してみます。 | |
Re: A-VXデータの移行について | |
レガシー始末屋 2015-6-4 20:44:32
[返信] [編集] 懇切丁寧な上、迅速な皆様のご回答に感謝申し上げます。 今までいただいたご回答をもう一度検証してみます。 最終的にどうなったかは、後日ご報告申し上げます。 |
新規投稿 | スレッド表示 | ツリー表示 | 投稿順表示 | i-mode | トップ |
BluesBB ©Sting_Band