Hi Leslie,
Here's a working example I just put together (tested once!)
It just does counts but the skeleton is there... (take away the '| ' prefix to lines)
| /*REXX*/ TRACE "N"
| ARG mask .
| IF( mask="" )THEN mask = "*"
| g. = 0
| ADDRESS ISPEXEC
| "CONTROL ERRORS RETURN"
| "LMINIT DATAID(PDS) DDNAME(SYSIPDS) ENQ(SHR)"
| "LMOPEN DATAID(&PDS) OPTION(INPUT)"
| mn = ""
| IF( mask<>'' )THEN mask = "PATTERN("mask")"
| "LMMLIST DATAID(&PDS) MEMBER(MN) STATS(NO)" mask
| g.0MEMBER = 0
| DO m = 1 BY 1 WHILE(RC=0)
| "LMMFIND DATAID(&PDS) MEMBER(&MN) LRECL(LR) RECFM(RF) STATS(NO)"
| g.0MEMBER = g.0MEMBER + 1
| n = g.0MEMBER
| g.0LINES.n = 0
|
| "LMGET DATAID(&PDS) MODE(INVAR)",
| "DATALOC(LN) DATALEN(DL) MAXLEN(80)"
| DO WHILE( RC = 0 )
|
| g.0LINES.n = g.0LINES.n + 1
| CALL ONELINER ln
|
| "LMGET DATAID(&PDS) MODE(INVAR)",
| "DATALOC(LN) DATALEN(DL) MAXLEN(80)"
| END
|
| SAY "MEMBER="mn "CONTAINS" g.0LINES.n "LINES."
| g.0LINES = g.0LINES + g.0LINES.n
|
| "LMMLIST DATAID(&PDS) MEMBER(MN) STATS(NO)" mask
| END
| "LMMLIST DATAID(&PDS) OPTION(FREE)"
| "LMCLOSE DATAID(&PDS)"
| "LMFREE DATAID(&PDS)"
| SAY
| SAY g.0MEMBER "MEMBERS PROCESSED. AT TOTAL OF" g.0LINES "LINES."
| SAY
|
| EXIT
|
| /*===================================================================*/
| /* process one line of member */
| /*===================================================================*/
| ONELINER: PROCEDURE EXPOSE g. ;TRACE "N"
| PARSE ARG ln
| /* add line level processing here? */
| RETURN
|
> Date: Fri, 16 Sep 2011 13:42:16 -0500
> From:
Leslie....@OA.MO.GOV
> Subject: Use of LMMDISP
> To:
ISP...@LISTSERV.ND.EDU