2011-12-05 14 views

答えて

2

ファイルを閉じて、再度開いて、再度読み込みます。

私はなぜこれをしたいと思うか知りたいですか?

+0

こんにちはTrueDub、私はファイル2の項目からファイル1の文字列の出現を検索していますが、キーはありません。しかし、すばらしい返信をありがとう。 – Grekoz

+0

ファイルを配列に読み込み、毎回そのファイルを検索する方が簡単でしょうか?確かに高速ですが、巨大なファイルであればメモリの問題が発生する可能性があります。 – TrueDub

+0

その場合、 'DFSORT'の' JOINKEYS'は大いに役立ちます。私はあなたの要求がfile2の文字列のリストでfile1から文字列を検索する場合にのみあなたのアプローチを提案しません... –

2

ループ内のファイルを読み込んだり、さまざまな動作を実行したりすることもできます。他の答えと同様に、最後に到達するたびにファイルを閉じて、再度開いてください。

+0

こんにちはビル、ファイルを再オープンすると、私はあまりにも高価になると思います非効率的である。 – Grekoz

0

この場合、JOINKEYSDFSORTは大変役に立ちます。あなたの要求がfile2の文字列のリストでfile1の文字列を検索する場合にのみ、あなたのアプローチを強く示唆していません。

+0

こんにちはRaja、Joinkeysもdfsortは助けてくれません。ファイル1はガベージであり、ファイル2は1行に1つの文字列を持ちます。目的は、ファイル1の1行にファイル1の単一文字列を見つけることです。ファイル1に特定の文字列が見つかった場合は、その文字列にファイル2のフラグを設定し、次の行の次の項目を取得してから、ファイル1の文字列が上から出現する。 – Grekoz

+0

私はそれを得る...しかし、あなたがそれらを使うことができると感じたら組み込むことを試みる...私はあなたが思っていたと感じている...あなたのコボルのプログラムロジックだけを進める...まだいくつかの提案が必要な場合は、ファイルのレイアウトとlreclsの要件の要約..解決しようとする可能性があります... –

0

代替案:ファイル1のコピーをユーティリティ(または別のCOBOLプログラム)で作成します。ファイル1aのコピーにはORGANIZATION RELATIVE(VSAM RRDS、おそらく)があります。スキャン/マッチングプログラムでは、START文でファイル1aの最初のレコードに移動することができます。

同様に、インデックス付きシーケンシャルファイル1aを作成することもできます。ここでは、キーはレコード番号と同じように任意の昇順番号になります。

0

オープン、プロセス、クローズ、再オープン、再処理、再クローズを任意の回数行うことができます。非常に時間がかかります。

Cobolプログラムでは、提案されているように、小さなファイルをテーブルに格納し、大きなファイルに対してテーブルを処理します。

ただし、プログラムは必要ありません。 JOINKEYS あなたに解決策を教えてください。

鍵がありませんか?ああ、こんにちは。あなたは1つを作る。両方のファイルの各レコードに対して、同じ値を持つ同じ1バイトのキーを作成します。そのキーでジョインクをやります。 JOINKEYSでSORTEDを指定します(DFSORTを使用している場合はNOSEQCK)。「デカルト」結合があります。レコード全体またはレコードの一部に使用できるSS(サブストリング一致)を使用します。実際に必要とされる出力は不明ですが、私はあなたが今それを考え出すとは思いません。

DFSORTを使用すると、1ステップで実行できます。 SyncSortを使用すると、JNFnCMTLファイルをサポートしているバージョンであれば、一度に実行できます。

関連する問題