/**************************** REXX ************************************/ /* (c) Copyright Roger Lacroix 1997 */ /* */ /* Designed, developed and programmed by Roger Lacroix */ /*--------------------------------------------------------------------*/ /* */ /* FINDGDG: */ /* You provide only a partial dataset name and FINDGDG */ /* will find all base GDG names that match the partial */ /* dataset name and then display the list to you. */ /* */ /* */ /* SYNTAX: FINDGDG xxx.yyy.zzz */ /*--------------------------------------------------------------------*/ trace o PARSE UPPER ARG inputdsn IF SYSVAR(SYSISPF) <> 'ACTIVE' THEN DO SAY "FindGDG ONLY RUNS UNDER ISPF." SAY SAY "SYNTAX IS FindGDG xxx.yyy.zzz" EXIT END ELSE NOP ADDRESS TSO /* X=MSG('OFF') */ X=OUTTRAP("OUTLINE.") "LISTCAT LVL("inputdsn") GDG " X=OUTTRAP(OFF) CALL GET_UNIQUE_DD CALL FIND_GDG_BASE dsn = "BROWSE."FINDGDG".R"rn "ALLOC F("dd") DSN("dsn") TRACKS SPACE(100 100) UNIT(SYSDA) ", "NEW DELETE DSORG(PS) LRECL(133) RECFM(V B) BLKSIZE(13300)" IF RC = 0 THEN DO IF newline.0 <> 0 THEN DO "EXECIO * DISKW "dd" (FINIS STEM NEWLINE." ADDRESS ISPEXEC "CONTROL ERRORS RETURN" "LMINIT DATAID(IDVAR) DDNAME("dd")" "LMOPEN DATAID("IDVAR")" "BROWSE DATAID("IDVAR")" "LMCLOSE DATAID("IDVAR")" "LMFREE DATAID("IDVAR")" END ELSE DO SAY 'Nothing returned from TSO!!' END END ELSE DO SAY '*** FINDGDG ERROR: Dataset allocation failed.' END ADDRESS TSO "FREE F("dd")" EXIT /* */ GET_UNIQUE_DD: unique = 'N' DO WHILE unique = 'N' rn = RIGHT(RANDOM(0,99999),6,'0') dd = 'FG'rn fg_stat = Listdsi(dd 'FILE') /* get 'FG###### DD' info */ IF fg_stat = 0 then unique = 'N' /* dd has been found */ ELSE unique = 'Y' END RETURN /* */ FIND_GDG_BASE: ptr=1 DO i=1 to outline.0 IF POS('GDG BASE ------',outline.i) <> 0 THEN do newline.ptr = outline.i ptr = ptr + 1 END ELSE NOP END newline.0= ptr - 1 RETURN