NECのオフコン情報掲示板(ノウハウ系)
NECのオフコンを活用するためのノウハウを話し合うための掲示板です。 |
新規投稿 | スレッド表示 | ツリー表示 | 投稿順表示 | i-mode | トップ |
■▲▼ | ||
1 | RDBのレコード削除のバッチ処理の方法 | |
江須扇 2004-8-24 16:33:00
[返信] [編集] こんにちは江須扇です。 一ヶ月前のデータを削除したいというバッチ処理を考えた時。 RDBQ2のカタログでは一ヶ月前という条件指定が難しいです。 (もしご存知の方がお見えでしたら教えてください。) SMART2は1ファイル更新でレコード削除は可能ですが 選択条件が働かず全件読込です。 COBOLはRDBのSELECTは条件と分類しかできなく SQL文としてUPDATEやDELETEができません。 そこで、下記のようなコーディングを考えたのですが GOTOレスではこんな感じでよいのでしょうか? 例1と例2ではどちらがよいのでしょうか? 例1
例2
| ||
2 | Re:RDBのレコード削除のバッチ処理の方法 | |
EXCHANGE 2004-8-24 18:27:00
[返信] [編集] > 000240 IF WRK-DATE(3:2) = 01 > 000250 SUBTRACT 8900 FROM WRK-DATE > 000260 ELSE SUBTRACT 100 FROM WRK-DATE > 000270 END-IF. ☆ ここの部分で、ハタ、と 分からなくなってしまいました。 江須扇さんのロジックが間違っているということではなく、 ☆ 「3月28日の1ヶ月前は?」と来たら問題なしに「2月28日」。 でも、 「2月28日の1ヶ月前は?」ときたら 「1月28日」? 「1月31日」? これはソフトを運用する状況によって違ってきそうな気がします。 ☆ もし、「1月31日」でしたら単に?100とするのはマズイかも。。 | ||
3 | Re:RDBのレコード削除のバッチ処理の方法 | |
江須扇 2004-8-24 20:39:00
[返信] [編集] EXCHANGEさん今晩は いつも即行の対応ありがとう御座います。 > 「2月28日の1ヶ月前は?」ときたら > 「1月28日」? 「1月31日」? > これはソフトを運用する状況によって違ってきそうな気がします。 これはアバウトに作ってあるの約一ヶ月と考えてください。 「3月31日」の時は「2月31日」になってしまいますが、 それより小さいで比較しておりますのでこれは問題ありません。 また、「2月28日」の時は「1月28日」で「1月27日」以前しか消えませんが 「3月1日」の時は「2月1日」でそれより小さい1月分は消えるので 問題ないと思います。 > > ☆ もし、「1月31日」でしたら単に−100とするのはマズイかも。。 > > 000240 IF WRK-DATE(3:2) = 01 > > 000250 SUBTRACT 8900 FROM 1月の時は−8900にしているので問題は無いと思いますが? | ||
4 | Re:RDBのレコード削除のバッチ処理の方法 | |
EXCHANGE 2004-8-26 23:23:00
[返信] [編集] ☆ 江須扇さん、こんばんわ。 すみません、書き方が舌足らずで。。 > ☆ もし、「1月31日」でしたら単に−100とするのはマズイかも。。 の言わんとするところですが、直前の文章から(なんと指示語もなしに)続いておりまして、 >「2月28日の1ヶ月前は?」ときたら の答えが−−>(A)「1月28日」でなく、(B)「1月31日」でしたら と言う意味でした。 (B)の解釈の場合、「2月28日の1ヶ月前」というのは「1月31日」になりますので、 040228 − 100 = 040128 としてしまうと、(A)タイプの解釈になってマズイ、 という意味です。 ☆ ただし、いずれにせよ江須扇さんの目的は約1ヶ月前までのデータを削除することにあるとのことですので、そこまで心配することはなかったようです。 ☆ ところでこのような場合(というよりこのようなケースを想定して)私が良くやる方法は、 (1)所詮、データベースは項目単位でしか取り扱い出来ないので、 (2)初めからデータ上に「年月日」以外にもう一つ「年月度」という項目を取っておく。 というふうにしています。 例えば、年月日「20040826」でしたら年月度「200408」となりますし、 年月日「040826」でしたら年月度「0408」となります。 そして、 (3)データ削除のPGでは初期条件の入力でユーザに「削除年月度を指定して下さい」とやります。 あとは、 COBOLにて SELECT RDBFILE WHERE RDBーGETUDO <= IN−GETUDO という調子です。 ☆ これの方が面倒くさくなくて便利に思うのですが。。 ただし、また容量無駄遣いしてしまいますけどね!! | ||
5 | Re: x4: RDBのレコード削除のバッチ処理の方法 | |
江須扇 2004-8-27 22:21:00
[返信] [編集] 今晩は、EXCHANGEさん > >「2月28日の1ヶ月前は?」ときたら > の答えが−−>(A)「1月28日」でなく、(B)「1月31日」でしたら と言う意味でした。 (B)と解釈した場合は 2月27日の一ヶ月前は1月30日 2月1日の一ヶ月前は1月4日 1月31日の一ヶ月前は1月3日 3月31日の一ヶ月前は2月28日 3月30日の一ヶ月前は2月27日 では3月1日の一ヶ月前は???? 解からなくなってしまいました。混乱、混乱、 > (3)データ削除のPGでは初期条件の入力でユーザに「削除年月度を指定して下さい」とやります。 > あとは、 COBOLにて > SELECT RDBFILE > WHERE RDBーGETUDO <= IN−GETUDO > という調子です。 > ☆ これの方が面倒くさくなくて便利に思うのですが。。 む?、私はアバウトSEなので、オペレーションが入ると忘れてしまいますので、 目指しているのはノンオペレーションの夜間バッチです。 バッチ完了メールが朝入っていれはOK、入ってなければ、障害発生としています。 > ただし、また容量無駄遣いしてしまいますけどね!! 所で話は長くなりますが、 旧100(赤100、1978年以前)のCOBOLはパックデータが使えませんでした。 その事を他社(多分F)に突かれて急遽サブルーチン提供がされました。 ファイルをREADしたあと CALL ”UNPACK” USING FILE−A WORK−A SIZE−A CALL ”UNPACK” USING FILE−B WORK−B SIZE−B ・ ・ の様に一項目毎、アンパックに戻して処理をして、 終わったら CALL ”PACK” USING WORK−A FILE−A SIZE−A CALL ”PACK” USING WORK−B FILE−B SIZE−B ・ ・ でファイルをREWRITEします。 (記憶ですのであくまでもこんな感じでしたと思ってください) 大変面倒くさかったです。 その後、新100が出てからCOMP−3でパックデータが使えるようになりました。 当時はディスク容量は小さくパックデータにするのが当たりまででした。 メモリは内部処理でアンパックに戻して処理をするのであまり効果はなかったようです。 またNECの場合はパックデータの符号無しにしても1桁は1バイト、2桁は2バイトで 処理フラグや区分で1桁2桁を使う場合はあまり効果はありませんでした。 しかし現在はディスク容量も増えたのでパックにする意味は少なくなったと思います。 特にNECの場合はFILLERの項目を後で使う場合など不正十進数エラーが パックデータは符号無しでもスペースはLOW−VALUEでもおきてしまうので使い勝手が悪いです。 設計時はパックデータ、追加項目はアンパックとデータベースの各項目がゴチャゴチャになっているのが実体です。 時代の流れでパックデータを採用した時代もありましたが、今にして思えは、本来のシステム100の基本である アンパックにしていればと思っております。 ここで本題に戻ります。 > (1)所詮、データベースは項目単位でしか取り扱い出来ないので、 > (2)初めからデータ上に「年月日」以外にもう一つ「年月度」という項目を取っておく。 > 例えば、年月日「20040826」でしたら年月度「200408」となりますし、 年月日「040826」でしたら年月度「0408」となります。 確かめてないので解かりませんが、アンパックであればCOBOL側フィールドを階層構造にしておけば、 上6桁や上4桁も可能ではとおもいます。 データベース定義も階層構造でしてすれば可能を思います。(これも確かめていません。) 8桁+6桁のパックの場合5+4=9バイト、アンパックの8桁階層構造8バイト 6桁+4桁のパックの場合4+3=7バイト、アンパックの6桁階層構造6バイト と考えた場合でもアンパックが良いのでは思いますが皆様は如何お考えでしょうか? | ||
全部読む 最新50 1-100 板のトップ リロード |
■▲▼ | ||
1 | ハードディスク | |
まさ 2004-8-20 11:40:00
[返信] [編集] 前から思っていたのですがExpress5800/600シリーズ の純正ハードディスクは高価ですが市販のものは付かないのでしょう か? ※ちなみにディスクアレイになってます。 | ||
2 | Re:ハードディスク | |
amadeus 2004-8-22 22:19:00
[返信] [編集] 一般的にメーカーや販売店や保守会社の立場からだと純正品以外は 「取り付けられない」との回答があるでしょう。 販売する製品については純正品にての動作検証のみをおこなって 保証の対象にしているのですから。 ましてやアレイ構成の場合は、単体のディスクの動作よりも複雑な 条件での環境ですので、より厳しい条件となります。 業務で使用されるのなら純正品の選択しかないでしょう。 でも実際は・・・・・ やめておきましょう。(笑) > 前から思っていたのですがExpress5800/600シリーズ > の純正ハードディスクは高価ですが市販のものは付かないのでしょう > か? > ※ちなみにディスクアレイになってます。 | ||
3 | Re:ハードディスク | |
EXCHANGE 2004-8-23 13:06:00
[返信] [編集] > 前から思っていたのですがExpress5800/600シリーズ > の純正ハードディスクは高価ですが市販のものは付かないのでしょう > か? > ※ちなみにディスクアレイになってます。 ☆ Linux、自己責任の時代ですので、そういったことを前提でいくつかの問題点を述べてみましょう。 (1) 現在のA−VXは、Windows上で動作する「ミドルウエア」ですので、原理的に言えばWindowsが稼働するかどうかが、まず問題になります。PCサーバといえども、一般に大型のサーバになるほどメーカの独自の機器(または独自仕様のOEM機器)を搭載したり、ハードの監視用ソフト、UPSとの連携、等の機能が搭載されています。従って購入時のWindowsのバージョンを変更することは(ドライバなどの関係で)難しい場合があります。 (2)ミドルウエアとしてのA−VXをインストールする場合、独自な(A−VX向け)ドライバを必要とするのは、フロッピー装置、CMT装置などですので、これらの装置は他の装置と交換は出来ないでしょう。 (3)DAT装置、ディスク装置、等はWindows上で動作する物であれば、A−VXでも利用できる可能性はあるでしょう。 (4)700シリーズの場合は、PCサーバではないし、またWindowsNT3.51(MIPS用)のドライバがあまり提供されていない、大容量のディスクには対応していない等の問題があるので、適用できる可能性のある機器はごく限られるでしょう。 ☆ 製品の一部に純正品でないものがある場合、保守契約サービスは原則として受けられないでしょう。この場合、換装パーツをのぞいた部分の保守契約を引き受けてくれる保守会社を探すか、もしくは保守契約なしで運用するか、のどちらかになります。いずれにしてもかなりの部分を「自己責任」で引き受ける必要があります。 ☆ 以上の観点から、「実務での運用」となるとamadeusさんのおっしゃるとおり「やめといたほうが。。」ということになります。 ☆ なお、メモリーに関してはサードパーティ製の物で保守会社が認定している物もあるようです(ADTEC社など)。私は使ったことがないので詳しいことは分かりませんが、一度保守会社にお訊きになってはいかがでしょうか? ☆ あと、メーカさんにお願いしたいのですが、「まささん」と同様の気持ちをもたれているユーザさんはかなりおられると思います。100シリーズに比べてあまりに高価な増設パーツの価格設定は、オープン連携によるA−VXマシーンの高度利用を阻害し、長い目で見れば「さらばレガシー」に結びついていくような気がします。御一考をお願いしたいと思います。 | ||
4 | Re:ハードディスク | |
まさ 2004-8-24 9:38:00
[返信] [編集] 皆さん返信有難うございます。 そうですね、おっしゃる通り何か有った時のリスクを考えると純正品 が一番安心して使用していられますね。 現在、大容量のHDがかなり安価で手に入る時代ですので思ったまで です。 | ||
5 | Re:ハードディスク | |
BLUELION 2004-8-27 9:12:00
[返信] [編集] うちの640ADには、安い120maのHDやメモリがついております。 実際同じEXPRESSでおなじ規格なのに値段が相当ちがいますよね CPUも120MAのP2の450でDUALです まーやり方によっては120MAな一般のPC(ノートを含む)でもA-VXはうごきますからね ノートで動くAVXは感動的でした(笑) ただし テスト環境のみの構成で、本番環境で保守なしで運用する勇気はありません ちなみ全体の構成としては Windowsは最新のIDEをCドライブしてセットアップしAVX系はもともとのRAIDのドライブに入れています。 | ||
6 | Re:ハードディスク | |
ターラヤン 2004-8-30 1:54:00
[返信] [編集] > うちの640ADには、安い120maのHDやメモリがついております。 > 実際同じEXPRESSでおなじ規格なのに値段が相当ちがいますよね > CPUも120MAのP2の450でDUALです > > まーやり方によっては120MAな一般のPC(ノートを含む)でもA-VXはうごきますからね ノートで動くAVXは感動的でした(笑) > ノートパソコンで動きましたか。 てっきり普通のPCサーバ(IAサーバ)のハードを基本的に流用して、若干の改造が 入っているのだろうと思っていました。 改造が入るにしても、CPUやハードディスクに手を入れられるとは思えないので、 マザーボード辺りでしょうかね。 私もハードディスクは見たことがありますが、普通のSCSIのハードディスクのようでした。 動作保障代やA−VX代を含めた値段なのでしょうが、S3100やS7200時代と比べると安いものの、 現在の一般的な水準と比べると高いような気がします。 P.S.Express以外のいろいろなパソコンにA-VX入れるのはライセンス上問題があるかも・・というのは野暮な話ですよね。 NECの人も見ているかもしれないので、とりあえず内輪の話にしておきましょう。 | ||
7 | Re:ハードディスク | |
BLUELION 2004-8-30 8:02:00
[返信] [編集] > P.S.Express以外のいろいろなパソコンにA-VX入れるのはライセンス上問題があるかも・・というのは野暮な話ですよね。 > NECの人も見ているかもしれないので、とりあえず内輪の話にしておきましょう。 > そうですね ただかなり特殊な手続きしないと動かないし PS 当然 著作権上に問題があるのはわかっているので環境はすぐ消しました | ||
8 | Re:ハードディスク | |
assisi 2004-9-4 8:27:00
[返信] [編集] > 皆さん返信有難うございます。 > そうですね、おっしゃる通り何か有った時のリスクを考えると純正品 > が一番安心して使用していられますね。 > 現在、大容量のHDがかなり安価で手に入る時代ですので思ったまで > です。 メモリーは ハギワラシスコム製で使用できますよ 純正品より かなり安いです 増設もパソコンと一緒で簡単にできます | ||
全部読む 最新50 1-100 板のトップ リロード |
■▲▼ | ||
1 | 構造化プログラミングの方法 | |
江須扇 2004-8-19 14:00:00
[返信] [編集] こんにちは、ご無沙汰しております。江須扇です。 今日は初歩的な事をご教授していただきたく投稿しました。 過去のCOBOLのプログラムはGO TO だらけなのでメンテナンスは、 そのままGO TO だらけで修正しております。 構造化プログラミングはいままでしていないので、いまさらと思っておりまし たが、新規プログラムをGOTOレスで作ろうと思ったのですが中々巧くいき ません。サンプルを作ったのですが、おかしいところを添削していただけない でしょうか? 項目Aと項目Bを入力しその表示をして項目Bに戻るというものです。 また、項目BでBTABをすれば項目Aに戻る必要もあります。 項目A又は項目BでPF9を入力すると終了とします。 実際はMAIN−RTNはもっと複雑になります。 コーディング例
| ||
2 | (再投稿)構造化プログラミングの方法 | |
江須扇 2004-8-19 14:18:00
[返信] [編集] コーディング例
| ||
3 | Re:(再投稿)構造化プログラミングの方法 | |
EXCHANGE 2004-8-20 3:40:00
[返信] [編集] ☆ バッチ処理プログラムでは、専ら「構造化」で書くのですが、入力系(会話型)では、GOTOをつかっていますので、あまりいい考えは浮かばないのですが。。 例えば、次のような考え方はダメでしょうか。。
| ||
5 | Re:(再投稿)構造化プログラミングの方法 | |
EXCHANGE 2004-8-20 11:39:00
[返信] [編集] WHEN 0 の時の取り扱いがまずいので、訂正です。 まだまだヘンかも。。。 適当に直して下さい。
| ||
6 | もう少しだけ直しました。 | |
EXCHANGE 2004-8-20 13:09:00
[返信] [編集] もう少しだけ直しました。 いかがでしょうか?
| ||
7 | Re:もう少しだけ直しました(その2) | |
EXCHANGE 2004-8-21 12:20:00
[返信] [編集] もう少しだけ直しました。(その2) いかがでしょうか??
| ||
8 | Re:もう少しだけ直しました(その2) | |
江須扇 2004-8-22 12:53:00
[返信] [編集] EXCHAGEさん早速いろいろと回答を頂きありがとうございます。 いろいろと考えていただきありがとうございます。 結論としてはやはり自分で何らかのスイッチを定義する必要があると言う事ですか。 A−VXのCOBOLの機能で使えるものは無いということですね。 もう一度、やりたい事を説明しますと 項目A入力 ↓__↑(BTABを押すと項目Aに戻る) 項目B入力 ↓__↑(項目Bに戻る、入力すると結果表示に行く) 結果表示 という処理です。 EXCHAGEさんの例では結果表示はもう一ランク上で括れということですね。
| ||
9 | Re:もう少しだけ直しました(その2) | |
EXCHANGE 2004-8-22 13:50:00
[返信] [編集] ☆ 「雛形」ではカーソルの位置の制御を、FOCUS-POSITIONで 行っていますので、 例えば項目Bの入力後、項目Bの再入力へLOOPさせたい場合は、 FOCUS-POSITIONを変更せずに進めるとうまくいくのでは ないかと思います。(間違ってたらごめんなさい) 項目入力時に(HTAB)(BSKIP)以外のキーを押下した場合も(F9)をのぞいて同じ項目の再入力に戻ります。 ☆ なおA−VXの場合、SKIPキーの扱いが問題かとも思います。 経験された方はご存じと思うのですが、数字項目の表示位置が初期状態では「空白」(=文字)となるので「0」等を編集表示(例:ZZZZ−)しておかないと、いきなりSKIPを押下−−>「NON−NUMERIC」エラーになります。入力後、カンマ付編集をしている場合も(カンマが文字と見なされるので)要注意です。この辺をうまく織り込もうとすると「雛形」を使っても結構、面倒な気がします。
| ||
10 | Re:もう少しだけ直しました(その2) | |
江須扇 2004-8-24 15:34:00
[返信] [編集] EXCHANGEさん、いろいろとありがとうございます。 流れの基本は私と同じと思いましたが大きく違うところが解りました。 私はどうしてもメモリの少ない時の癖でプログラムの解りやすさより、ステップ数重視で1ステップでも少なくなる事を考えてしまいます。 保守性を考えたらわかり易さ重視の方が良いようですね。 多分、私の元のコーディングは WHEN SWITCH−BTABで1項目の入力 WHEN SWITCH−HTABで2項目の入力 になっており意味不明という事ですね。 そうですステップ数削減で意味不明です。 3項目を作ったどうするか考えておりませんでした。 それにしてもCOBOL側でもっとステップ数のすくなくなる 命令がないのでしょうかね? | ||
全部読む 最新50 1-100 板のトップ リロード |
■▲▼ | ||
1 | あまり見かけないソフトだが??? | |
EXCHANGE 2004-8-7 19:34:00
[返信] [編集] ☆ こんなソフトご存じでしょうか? A−VXでも利用できるようですが。。。 NIS−MAIL (URL) http://www.nis-mail.com/ | ||
全部読む 最新50 1-100 板のトップ リロード |
■▲▼ | ||
1 | コボル上で実行環境の認識 | |
bluelion 2004-7-30 11:10:00
[返信] [編集] 本番環境とテスト環境のAVX環境があるのですが コボルの実行時にどちらのOS(マシン)で動いているか認識する方法はあるのでしょうか? テスト環境と本番環境ではプリンタの番号が違うため 実行時にコボル上で自動でアサインしたいためです | ||
2 | 追加 | |
BLUELION 2004-7-30 11:12:00
[返信] [編集] テスト A-VX4 640AD 本番 A-VX2 S7200/100 でした | ||
3 | Re:コボル上で実行環境の認識 | |
ターラヤン 2004-7-31 19:05:00
[返信] [編集] > 本番環境とテスト環境のAVX環境があるのですが > コボルの実行時にどちらのOS(マシン)で動いているか認識する方法はあるのでしょうか? OS(マシン)の識別方法はわかりませんが、 私ならば、OS別に処理するよりも、テスト環境か本番環境かで分けます。 識別用ファイルを作って、そこに「テスト環境」「本番環境」や「1」「2」などを入れて それで識別した方が現実的です。 質問内容から考えて、おそらく IF (S7200だったら) xxxの処理をする IF (640ADだったら) yyyの処理をする という風なプログラムにしようとしているのではないかと思うのですが、 これでは例えば将来S7200から600xiにした時に「IF (S7200だったら)」という所を 全部「IF (600xiだったら)」に修正して再コンパイルしなければなりません。 実際のところ、どのOSかを気にする必要のある処理は、あまりないような気がします。 | ||
全部読む 最新50 1-100 板のトップ リロード |
新規投稿 | スレッド表示 | ツリー表示 | 投稿順表示 | i-mode | トップ |
BluesBB ©Sting_Band