PDA

View Full Version : ADDPFM - Name automatisch vergeben



jogisarge
01-12-10, 14:49
Hallo zusammen,

Gibt es eine einfache Möglichkeit, einer Datei ein Member per ADDPFM hinzuzufügen, ohne einen eigenen Namen zu vergeben ?
Der Name sollte ein Zähler oder so sein.

Ich dachte einen Timestamp, aber der ist wohl zu LAnge für den Dateinamen, da er bis auf die Sekunde genau sein muss, um Dopplungen zu verhindern.

Das Ganze soll in einem CL passieren.

Eine Möglichkeit wäre auch, die Anzahl der Member zu ermitteln und eins auf zu addieren, aber wie komme ich im CL an die Anzahl der Member einer Datei ?

Vielleicht hat einer von euch ne Idee ?

Gruß jo

HerbertW
01-12-10, 15:04
Hole einfach den Namen des letzten Members und addiere 1 auf den Zähler (Teil des Membernames) drauf.

RTVMBRD FILE(MYFILE) MBR(*LASTMBR) RTNMBR(&RTNMBR)

Die Variable &RTNMBR enthält den Namen des letzten Members.

jogisarge
01-12-10, 15:43
Hallo nochmal,

Danke für den Tipp Herbert.
Ich werde mir wohl beim Extrahieren des Substrings mit dem Zaehler bzw. beim Zusammensetzen des Namens im CL die Zähne ausbeissen, werde es aber mal probieren.

Gruß jo

Fuerchau
01-12-10, 17:12
Auch das ist kein Hexenwerk:

DCL &NUM *DEC 9
DCL &CHR *CHAR 9
DCL &MBR *CHAR 10

RTVMBRD ... RTNMBR(&MBR)
CHGVAR &NUM (%SST(&MBR 1 9))
CHGVAR &NUM (&NUM + 1)
CHGVAR &CHR (&NUM)
CHGVAR &MBR ('X' *CAT &CHR)
ADDPFM ...

Vorausgesetzt, die MBR-Namen haben das Format 'XNNNNNNNNN', du kannst es natürlich auch variieren.

jogisarge
01-12-10, 17:20
Super
Vielen Dank !!

cbe
02-12-10, 21:48
ein Gedanke dazu noch:
Wenn die Mbr nur von 1 Job aus geschrieben werden, ist das ok so.
Hast Du aber ggf. parallele Verarbeitung, würde ich den Zähler in eine Datei legen, dann kann während des CHAIN + ADD 1 + UPDATE kein anderer Job dazwischenfunken.

Gruß, Christian

RobertMack
02-12-10, 22:29
Hi Christian,

ein MONMSG mit zus. CHGVAR (&NUM + 1) tät's doch auch...

Gruß, Robert


P.S. Was ich da noch vermisse, ist eine Logik zum Aufräumen bzw. eine Reaktion auf max. Anzahl Teildateien ;-)

HerbertW
06-12-10, 07:45
Hallo jogisarge,

prüfe den Parameter maxmbrs der physischen Datei. Wenn der auf *nomax steht und jeden Tag nur 1 Teildatei hinzugefügt wird, dann dauert es knapp 90 Jahre bis nichts mehr geht.

Werden häufiger Members hinzugefügt, dann den Zähler nicht per rtvmbrd ermitteln, sondern woanders her holen. Bei 32767 dann nicht mehr 1 addieren, sondern wieder bei 1 anfangen. Bei einem vorhandenen Member dann natürlich CLRPFM statt ADDPFM, vorausgesetzt, die Informationen dieser alten Member werden nicht mehr benötigt.