[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    May 2004
    Beiträge
    470

    SAVOBJ mit max. 300 Objekten

    Hallo zusammen,

    ich hab folgendes Problem. Ich muss in einem CL ein SAVOBJ ausführen. Die Objekte die gesichert werden sollen befinden sich in einer Datei. Ich soll die zur Verfügung stehenden 300 Einträge nutzen. Also nicht z.B. 250 mal SAVOBJ ausführen sondern einen SAVOBJ mit den 250 Objekten machen. QCMDEXC soll ich nicht verwenden sondern tatsächlich einen SAVOBJ im CL ausführen.

    Hab ich noch eine andere Möglichkeit als 300 Variablen zu definieren ???

    Danke für die Hilfe, wobei ich denke das mir hier nicht zu helfen ist.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ohne QCMDEXC geht das gar nicht, da du keine leeren Variablen übergeben kannst.

    Wenn du also 300 Variablen verwendest, müssen auch in allen 300 Variablen gültige Objektnamen stehen, sonst wird dein Kommando abgelehnt.
    Du benötigst also nicht nur die 300 Variablen, sondern abhängig von der Anzahl Objekte auch 300 verschiedene SAVOBJ-Befehle.

    Was spricht also gegen die Verwendung von QCMDEXC um sich den Befehl dynamisch aufzubauen ?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    May 2004
    Beiträge
    470
    Habs gerade selbst bemerkt dass leere Variablen nich zulässig sind. Zum Glück. Jetzt spricht wohl nichts mehr gegen den QCMDEXC

    Danke für die Hilfe

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Aber warum musst du das so kompliziert machen ?

    Kannst du die Objekte nicht vorher in eine andere Lib kopieren (CRTDUPOBJ) und dann einfach SAVLIB machen ?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Sep 2006
    Beiträge
    26
    Warum nicht eine Variable definieren und dort die Objektnamen mit *BCAT hineinstellen?

    Ich weiß zwar nicht, wieviele da maximal möglich sind, aber dürfte irgendwo dokumentiert sein.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    @WWG
    Genau diese Variante geht leider nicht, da eine Variable des Kommandos nur genau 1 Objekt benennen darf:

    SAVOBJ .. OBJ(&OBJ1 &OBJ2 ...), wobei &OBJ eben nur den Objektnamen beinhalten darf, wenn man Lib's auchnoch will, benötigt man hierzu noch eine eigenen Variable.
    SAVOBJ .. OBJ((&LIB/&OBJ1) (&LIB/&OBJ2) ...).
    Man beachte nun die doppelte Klammer.

    Nimmst du nun nur eine Variable, wird das zur Laufzeit als Fehler abgewiesen, da der Inhalt zu lang ist. Der Parameter ist als Liste von Feldern definiert.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Sep 2006
    Beiträge
    26
    Entschuldigung, ich kannte nur das Befehlsformat aus der Uralt-Release V3R2, und da waren qualifizierte Objektnamen noch nicht möglich.

    Allerdings halte ich es auch für unschön, Objekte aus unterschiedlichen Bibliotheken auf diese Art zu sichern.

    - Werner.

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Beim SAVOBJ sind für die Objekte keine qualifizierten Objektnamen möglich. Da gibt man die Objekte separat von den Bibliotheken an, in denen sie liegen.

    Es ist beim SAVOBJ möglich, das selbe zu sichernde Objekt mehrmals anzugeben. Somit könnte man 300 Variablen definieren, alle mit dem Namen des ersten Objekts vorbelegen, und dann so viele der Variablen mit den Werten aus der Datei belegen, wie Werte vorhanden sind (höchstens 300).

  9. #9
    Registriert seit
    May 2004
    Beiträge
    470
    @Fuerchau

    Auf deine Frage warum so kompliziert ? Und dein Hinweis mit CRTDUPOBJ

    Kurzer Hintergrund:

    Datensicherung mit Tagesabschluss darf maximal 30 Minuten laufen. Zu dieser Zeit steht das System nicht zur Verfügung. Da der Betrieb 24 Stunden das System braucht, muß also die Ausfallzeit so gering wie möglich sein. Die eine Pause in der Nacht dauert 30 Minuten die uns dann zur Verfügung steht. Das heist es muss Zeit gespart werden wo es geht. Wir haben eine enorm große Datenbibliothek. Deshalb haben wir auch bereits aufgesplittet welche Dateien vor dem Tagesabschluß gesichert werden müssen und die, die in fast jeder Anwendung die Nachts benötigt wird vorkommt. Diese werden dann mit SAVOBJ vor dem Tagesabschluss gesichert aber innerhalb der 30 Minuten. Somit kann ich nicht noch einen CRTDUPOBJ machen der mich auch wieder eine Menge Zeit kostet. Die Sicherung der restlichen Dateien erfolgt nach dem das System wieder zur Verfügung steht, da habe ich dann jede Menge Zeit. Jetzt könnte man wieder vorbringen dass man diese Dateien dann generell in eine andere Bibliothek stellt, aber manche Vorgaben sind ja bekanntlich unumstößlich.

    Aber trotzdem vielen Dank für den Hinweis

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Der schrittweise SAVOBJ könnte aber ggf. auch nicht innerhalb der 30 Minuten zu Ende geführt werden.

    Zu beachten ist auf jeden Fall ENDOPT !

    Wenn du weißt, dass noch Objekte folgen, solltest du auf *LEAVE ändern und nicht den Default *REWIND belassen.
    Sonst muss der folgende SAVOBJ noch erst das logische Ende wieder suchen.

    Der letzte SAVOBJ sollte dann *REWIND oder ggf. *UNLOAD enthalten.

    Mit dieser Methode schonst du auch das Band (reduziertes umspulen).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    May 2004
    Beiträge
    470
    Es wird nur einen SAVOBJ mit allen relevanten Dateien geben. Diese befinden sich alle in einer Bibliothek.

  12. #12
    Registriert seit
    Feb 2008
    Beiträge
    104
    Wenn alle Daten in einer Bibliothek stehen, gibt es doch auch die Möglichkeit den SAVOBJ mit Sichern im aktiven Zustand zu starten:
    Ziel-Release . . . . . . . . . . TGTRLS *CURRENT
    Protokoll aktualisieren . . . . UPDHST *YES
    Bereinigen . . . . . . . . . . . CLEAR *NONE
    Vorherige Objektprüfung . . . . PRECHK *NO
    Sichern im aktiven Zustand . . . SAVACT > *SYNCLIB

    Sobald die Maschine ihren Timestamp gesetzt hat, kann uneingeschränkt weitergearbeitet werden, die Sicherung enthält dann trotzdem konsistente Daten.

    (Setzen Timestamp dauert je nach Anzahl der Objekte / Maschine unterschiedlich lange, nimmt aber auf jeden Fall wesentlich weniger Zeit in Anspruch als die eigentliche Sicherung)

Similar Threads

  1. Parameter Obj beim Befehl SAVOBJ
    By Bodo Roggenkamp in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 13-10-09, 15:05
  2. IFS und Bilder 300 GB
    By TARASIK in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 06-10-05, 09:25
  3. Schriftbild Epson Stylus Photo 300
    By nub in forum NEWSboard Drucker
    Antworten: 0
    Letzter Beitrag: 02-09-05, 13:57
  4. Objektnamen dynamisch dem SAVOBJ im CL zuordnen
    By becama in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 11-08-05, 15:05
  5. SAVOBJ in SAVF
    By peter.kinne in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 10-11-04, 10:19

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •