/* Rexx */
/* Reflection IBM 10.0.0 */
/* $Id: //ribm/12.0/dev/r8xfrind/wrqlds.rex#1 $ */

Address TSO

Parse Arg DatasetName .
DatasetName="'"||DatasetName||"'"

/*
   All messages are displayed twice, once in lowercase and once in
   uppercase. This is because lowercase characters could potentially be
   translated incorrectly on DBCS systems, causing the client component
   to not catch the message.  However, we don't want to display only the
   uppercase message because older versions of the client component look
   specifically for the lowercase characters.
*/

MemberList.0=0
MemberList.1="No Members Found"

Call ListDSI DatasetName 'DIRECTORY'

Select
  When Result<>0 Then
    Do
      Say "WRQ0003 ListDSI" DatasetName "failed, SysReason=" SysReason
      SAY "WRQ0003 LISTDSI" DatasetName "FAILED, SYSREASON=" SysReason
    End
  When (SysMembers=0) | (SysDsorg<>'PO') Then
    Do
      Say "WRQ0002 No members."
      SAY "WRQ0002 NO MEMBERS."
    End
  Otherwise
    Do
      Call OutTrap "ListdsOutput."
      "LISTDS" DatasetName "MEMBERS"
      Call OutTrap "OFF"

      Do Line=1 To ListdsOutput.0
        If Pos('MEMBERS',ListdsOutput.Line) <> 0 Then
          Do Line=Line+1 To ListdsOutput.0
            MemberList.0=MemberList.0 + 1
            MemberNumber=MemberList.0
            MemberList.MemberNumber=ListdsOutput.Line
          End
      End

      Say "WRQ0001 Members found: " MemberList.0
      Say "WRQ0001 MEMBERS FOUND: " MemberList.0
      "ALLOC FI(TEMPLDS) NEW SP(1 1) TRA LRECL(80)",
            "RECFM(F B) BLKSIZE(8000) DELETE"
      "EXECIO * DISKW TEMPLDS (STEM MemberList. OPEN FINIS"

      If ListDSI('TEMPLDS FILE') = 16 Then
        SysDSName=ListALC('TEMPLDS')

      Parse Upper Pull TransferCommand 'WRQTEMP.LDS' TransferOptions

      TransferCommand "'"||SysDSName||"'" TransferOptions

      "FREE FI(TEMPLDS)"
    End
End


Return

ListAlc: Procedure

Call OutTrap 'ListAlcOutput.'
'LISTA ST SYSNAMES'
Call OutTrap 'OFF'

Do MessageLine=1 To ListAlcOutput.0 ,
 Until Pos(Arg(1),ListAlcOutput.MessageLine) = 3
End

MessageLine=MessageLine-1

Return Strip(ListAlcOutput.MessageLine)
