NECのオフコン情報掲示板(ノウハウ系)
NECのオフコンを活用するためのノウハウを話し合うための掲示板です。 |
新規投稿 | スレッド表示 | ツリー表示 | 投稿順表示 | i-mode | トップ |
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
[返信] [編集] 懇切丁寧な上、迅速な皆様のご回答に感謝申し上げます。 今までいただいたご回答をもう一度検証してみます。 最終的にどうなったかは、後日ご報告申し上げます。 | |
Re: A-VXデータの移行について | |
オフコン人 2015-6-4 19:50:12
[返信] [編集] 追伸:基本SGの装置定義は、必須ですが、CTU000をテープとして利用する場合は、ディスクバックアップ機能の設定はしません。 CTU000にドライブ\フォルダの設定がされている場合には、テープへアクセスしません。 テープへアクセスしたい場合は、設定を解除すればいいだけです。 | |
Re: A-VXデータの移行について | |
オフコン人 2015-6-4 19:43:23
[返信] [編集] 急な出張で戻って、びっくりしています。 温泉好きのうさぎさん、色々ご苦労様です。 >どうも、AVXBKUPSET.EXEでの設定変更がされていない、「解除」が実行されていない感じです。 >原因として思い当たる点がありましたら、引き続きご指導ください。 何を根拠に、そのように断定されるのかわかりません。 ディスクバックアップ機能の設定ツールで解除されているなら、テープへ一度バックアップし、それをリストアできるか確認されたらいかがでしょう。テープにアクセスしているかは装置のランプで確認ですね。 その後、Windows2000のサーバでテープへバックアップし、Windows2003のサーバでリストアの確認をされればいいんじゃないでしょうか。 また、明日はサイトの確認ができません。 | |
Re: A-VXデータの移行について | |
温泉好きのうさぎ 2015-6-4 18:52:58
[返信] [編集] 解決したと思ったのにまだダメなようですね。 AVXBKUPSET.EXE の設定画面で、SG情報と関連付けファイルの欄はどのように表示されているのでしょうか。 関連付けが解除されていれば、ファイル名のところは「未登録」となっているはずです。 また、AVXBKUPSET.EXE と同じフォルダに同じ名前の LOGファイルがありますので、その内容も確認してください。登録や解除の履歴が記録されています。 なお、AVXBKUPSET.EXE の設定画面を使わずに関連付けを強制的に解除してしまうには、同じ名前の INIファイルを削除 (またはファイル名 or 拡張子を変更) することで可能です。 そのうえで、試しにバックアップを実行し、CTU000.tbm と CTU000.tbu の更新日時が変更されていなければ、関連付けは正しく解除され、DATテープにデータが出力されたと判断できるでしょう。 さて、「退避媒体ではありません」のエラーメッセージですが、DAT装置がテープを読みにいって A-VX の #BKUP のデータであると認識できなかったということです。 具体的には、 1. 新品もしくは A-VX 以外で使用されていたテープを装着した 2. 集合型と単体型を混用した 3. オプションの高速モードで退避したものを、同機能適用以前の古いサーバで参照した 4. 拡張形式ファイルシステムで退避したものを、同機能適用以前の古いサーバで参照した 5. DAT装置の記録ヘッドの汚れ または 消耗 6. DATテープの劣化 といったことが考えられます。 このうち、1. 〜 4. では無いことは明らかなので、やはり物理的な I-Oエラーが発生しているのではないか思われます。 対策は、ヘッドクリーニングをして新品のテープを使うしかないですね。 DAT装置も新しい物ほど記録密度が高くなっており、非常にデリケートになっています。同じ装置で退避したデータは読めるけど、他の装置で退避したデータは読めないということもよくあります。 これでダメなら、DATを使用せず、2000Server 側もディスクバックアップ機能にしてしまうしかないですね。 動作保証はありませんが、Server2003 側にモジュールがあるのでそれをそのまま利用できると思いますよ。 | |
Re: A-VXデータの移行について | |
レガシー始末屋 2015-6-4 14:27:05
[返信] [編集] 早速、ご指摘の設定EXEを実行しました。 当初バツクアップ先がI:\bak\CTO000\となっており、直近で実行したバックアップの実行した痕跡データが保存されておりました。 ちなみに保存ファイル名はCTU000.tbmとCTU000.tbuでした。 ご指導のように、「解除」を実行して、念のために、Serverも再起動して、A-VX4で退避したDATをセットして、CATALOGUを実行してみもしたところ、エラーとなってしまいました。 エラー表示 O U33D7:(CTU000)退避媒体ではありません・・・です AVXBKUPSET.EXEを再度起動して、設定画面を確認するも、退避先デバイスはCTU000となっております。 SGリストでも、SCSI-ID 4 DAT CTU000 となっております。 どうも、AVXBKUPSET.EXEでの設定変更がされていない、「解除」が実行されていない感じです。 原因として思い当たる点がありましたら、引き続きご指導ください。 |
新規投稿 | スレッド表示 | ツリー表示 | 投稿順表示 | i-mode | トップ |
BluesBB ©Sting_Band