Startseite
Downloads
Lexikon
Sonstiges
Links
Kontakt
Gästebuch
Statistics
Disclaimer
Syntax
gdgDsn = RxGdgDsn( {gdgName | gdgStem} ) [;]
Beschreibung
Externe Prozedur zum Auflösen der GDG-Generationsnummer ( gen = 0, -1, -2, ...) und die Rückgabe des physikalischen TSO-Dateinamen.
Aufrufparameter
Parameter
Beschreibung
gdgName
GDG-Dateiname mit der Generationsangabe, voll qualifiziert ohne Apostrophen, z. B. MY.GDG.STAM(0)
gdgStem
Stamm der GDG-Datei ohne der Generationsangabe, voll qualifiziert ohne Apostrophen, z. B. MY.GDG.STAM
Standardwerte
Parameter
Beschreibung
gen = 0
wenn als Aufrufparameter der GDG-Stamm angegeben wurde (Parameter: gdgStem), wobei gen GDG-Generationsnummer bedeutet.
Rückgabewerte
Bedeutung
dsn
TSO-Dateiname der GDG-Datei für die angegebene Generationsnummer.
Bemerkungen
Die Generationsnummer entspricht den Konventionen der GDG-Dateien unter TSO.
Es darf keine neue Generation (+1) angegeben werden.
Für die bestehende Generation darf 0 bzw. eine negative Zahl, deren absolute Wert kleiner als GDG-LIMIT ist, angegeben werden (-1, -2, ... -(LIMIT-1)).
Wenn angegebene Generationsnummer größer als 0 ist, wird die neuste Generation zurück gegeben.
Wenn angegebene Generationsnummer kleiner als die aktuell älteste Generation ist, wird die älteste Generation zurück gegeben.

Sourcecode

/* REXX *****************************************************************/
/*                                                                      */
/* Program name: RXGDGDSN                                               */
/* Program type: REXX function                                          */
/* Function....: Checks where the entered Dataset is a GDG-Base or a    */
/*               GDG datasetname and give back the entered dataset name */
/*               if it is not, or the GDG dataset if it is.             */
/*                                                                      */
/* Using.......: gdgds = RxGdgDsn( {gdgBase | gdgDsn} )                 */
/*               Where:                                                 */
/*               gdgBase = Name of GDG base                             */
/*               gdgDsn  = Name of GDG Dataset with generation number   */
/*                         i.e. MY.GDG.DSN(-3)                          */
/*                                                                      */
/*               Notes: 1. generation number must be 0 or lower:        */
/*                         0, -1, -2, ...                               */
/*                      2. Default generation number = 0                */
/*                      3. GDG Name have to be fully qualified dataset  */
/*                         name without apostrophes                     */
/*                                                                      */
/* Author......: Janosch R(exx) Kowalczyk                               */
/* Create date.: 11 Dec 2007, Tue / 345                                 */
/* Version.....: 0.1                                                    */
/* Changes.....: No                                                     */
/*                                                                      */
/* Copyright © Janosch R(exx) Kowalczyk. 2007, 2008.                    */
/*             All rights reserved.                                     */
/************************************************************************/
/* trace r */
Parse Source envir callType procName .
Arg dsn

/*--------------(Exception handling)----------------*/
Signal On Failure  Name CLEANUP
Signal On Halt     Name CLEANUP
Signal On Syntax   Name CLEANUP

dsn = Strip( dsn,, "'" )
Parse Var dsn gdg "(" gen ")" .

x = OutTrap('stem.')
Address TSO "LISTCAT ENT('"gdg"') GDG NVSAM"
x = OutTrap(OFF)
If Pos( "GDG BASE", stem.1 ) > 0 Then Do
  If Datatype( gen ) <> "NUM" Then gen = 0
  k = 0
  Do i = 2 To stem.0
    Parse Value Translate( stem.i, " ", "-" ) With . gdg .
    If Pos( ".", gdg ) > 0 Then Do
      k = k + 1
      gdg.k = gdg
    End
  End
  gdg.0 = k
  /* Not older as current LIMIT, no new GDG dataset */
  gen = Min( Max( gen + k, 1 ), k )
  dsn = gdg.gen
End

Return dsn
/**************(End Main Routine)****************/

/*========( Signal cleaning procedure )=========*/
CLEANUP:
Say "Break, Failure or Syntax Error running" procName". rc="rc
Say "Sourceline" sigl ">>>" SourceLine( sigl )
Say "Restart please. If the error recurs, notify the author."
If rc = 0 Then rc = 3
Exit rc

Beispiel 1

dsn = RxGdgDsn( "MY.GDG.STAM(-1)" )
Say dsn

Ergebnis 1

MY.GDG.STAM.G0010V00   /* mögliches Beispiel */

Beispiel 2

dsn = RxGdgDsn( "MY.GDG.STAM" )
Say dsn 

Ergebnis 2

MY.GDG.STAM.G0011V00   /* in Anbindung an das vorherige Beispiel */
Your privacy: This web site has no cookies, no advertising and does not provide access data to anyone for any reason.
Copyright © Janosch R. Kowalczyk 1999, 2010. All rights reserved.
Most recent revision on 25 Feb 2010 (56) - 13:23:43.
Jakoxx Logo