2016-03-23 10 views
0

Wie Sie die Größe des Mitglieds einer PDS-Datei lesen. Eine PDS-Datei hat viele Mitglieder. Wenn wir ein PDS durchsuchen, können wir die Mitgliedsnamen, ihr Erstellungsdatum, ihre Zeit, ihren Benutzer, ihre Größe usw. sehen. Also, wie man diese Attribute in Variablen getrennt erhält.Lesen Sie die Größe des Mitglieds der PDS

Antwort

2

Wenn unter TSO/ISPF ausgeführt (Sie können dies auch in Batch), können Sie den LMMFIND Service mit der Statistik (ja) Option verwenden. Sie werden

zu tun haben, bevor Sie die tun LMFIND. Auch als zarchasmpgmr müssen Sie LMCLOSE und LMFREE

tun, wenn Sie Mitglied Liste angezeigt werden soll, haben einen Blick auf LMMDISP

+0

Vergessen Sie nicht, LMCLOSE und LMFREE. :) – zarchasmpgmr

+0

Guter Punkt wird zur Antwort hinzufügen. –

3

Als Bruce erwähnt LMMFIND die ISPF Statistiken für eine PDS-Member haben . Stellen Sie sicher, dass die STATS YES für den Dienst verwendet wird. Möglicherweise müssen Sie auch nach erweiterten Statistiken suchen (Variable ZLEXT). Eine Website kann erweiterte Statistiken verwenden, wenn die Mitgliedsgröße 64 KB überschreitet. Bitte beachten Sie die ISPF Services Guide. Unten ist der Link für LMMFIND im 2.1 Handbuch.

https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.f54sg00/lmmfind.htm%23lmmfind

0

Beachten Sie, dass die Statistiken Sie schreiben von ISPF gehalten werden. Es gibt viele Möglichkeiten, ein Mitglied außerhalb von ISPF zu erstellen, und diese Mitglieder werden diese Statistiken haben nicht. Der ISPF-Dienst LMMSTATS wird diese Statistiken festlegen (das 3.5 R-Panel ist ein Frontend für diesen Dienst). Die Reihenfolge der Anrufe ist

Aus irgendeinem Grund hat LMMSTATS nicht die LMOPEN und LMCLOSE Dienste erfordern.

+1

Ich glaube, dass LMOPEN und LMCLOSE nicht erforderlich sind, da sie effektiv für das PDS-Verzeichnis ausgeführt werden, wo stats (in den Benutzerdaten des Verzeichniseintrags eines Mitglieds) von LMINIT bzw. LMFREE gehalten werden. Das heißt, ich denke, LMINIT öffnet das Verzeichnis und LMOPEN öffnet das eigentliche PDS-Mitglied. LMCLOSE schließt das PDS-Mitglied, LMFREE schließt das PDS-Verzeichnis. Um Statistiken und Mitgliederlisten zu erhalten, brauchst du nur LMINIT/LMFREE. – MikeT

0

Es ist schon lange her, aber wenn die PDS keine ISPF-Statistiken hat (oder die STATS sind zweifelhaft (zB können sie außerhalb von ISPF geändert werden)). Dann könnten Sie versuchen, das Verzeichnis zu bearbeiten.

Jedoch enthält ein PDS-Verzeichnis standardmäßig nicht so viele Informationen. Wenn also keine ISPF-Statistiken vorhanden sind, können Sie nicht viele Informationen erhalten. Was ein PDS-Verzeichnis hat, ist ein benutzerdefinierbarer Bereich und es ist der Bereich, den ISPF verwendet. Diesem Bereich wird ein Längen-Deskriptor vorangestellt (siehe Link für weitere Informationen). Ein weiterer Grund, warum ISPF-Statistiken nicht existieren oder genau sein können, ist, dass ich (wenn ich mich recht erinnere) die Statistiken entfernen kann, die etwas Verzeichnisplatz freigeben können (möglicherweise um den E37-Abend herumkommen oder ihn umgehen) Ereignis).

kann ich nicht mit Rexx versucht erinnern zu haben (habe einen Assembler PDS entladen Dienstprogramm schreiben), aber Sie könnten das Verzeichnis mit EXECIO auf dem Basisnamen der PDS (dh ohne (öffnen und lesen können Mitglied)).

Das Verzeichnis ist bei 256 Bytes blockiert. Mehr Informationen in Bezug auf die Struktur finden Sie hier PDS Directory. Ich glaube nicht, dass dies für PDSEs funktionieren würde.

+0

Für mich ist dies die beste Antwort, da es normalerweise besser ist, sich nicht auf ISPF und die verschiedenen LM * -Funktionen zu verlassen, wenn Sie jemals auf Nicht-ISPF-Datensätze stoßen. Ordnen Sie für PDS und PDSE das Basis-Dataset (also nur DSN ohne Member-Namen) zu, öffnen Sie es mit RECFM U, BLKSIZE 256 und Sie können das PDS-Verzeichnis lesen - dies kann sicherlich mit EXECIO geschehen. Leider, wenn das Dataset keine zuverlässigen Statistiken hat (ISPF oder anders ... Bibliotheken von ausführbaren Dateien werden auch einige nützliche Informationen für Sie haben), ist die einzige Möglichkeit, die Memberlänge zu erhalten, das Lesen des Members von TTR bis zu einem EOF Marker. –

+0

Und KEYLEN = 8, sonst erhalten Sie das erste Mitglied (gespeichert als Schlüssel im CKD-Format) des Datensatzes, der in Ihrem E/A-Puffer dupliziert wurde, und Sie können einen Pufferüberlauf verursachen, wenn Sie nur 256 Bytes zugewiesen haben. – zarchasmpgmr

Verwandte Themen