Correction:
/*----------------------------------------------------------
-----------------
c100: j800:
+--+ +----+ +-+ +-----+ +-+ +----+ +---+
+----+ +---+
|cp|-->|drop|-->|p|-->|specs|-------------------->|J|-->|pick|-->|...|
-->|sort|-->|...|
+--+ +----+ |i| +-----+ |u| +----+ +---+
+----+ +---+
|c| |x|
|k| +----+ +----+ +-----+ |t|
| |-->|pick|-->|pick|-->|specs|-->|a|
+-+ +----+ +----+ +-----+ +-+
------------------------------------------------------------
---------------*/
"pipe (end ? name querypath listerr)",
"? cp query path ",
"| drop last 1 ", /* No Legend line. */
"| c100: pick w1 == /Device/ ",
"| specs w2-4 1.25 ",
"| j800: juxtapose ",
"| pick w3 \== /ONLINE/ ",
"| .... ", /* Do some processing here. */
"| sort f1 ", /* Back to original order. */
"| .... ", /* More processing */
"? c100: ",
"| pick w1 \== /Online/ ",
"| pick w2 \== /Available/ ",
"| specs recno 1.8 right 1-* nf",
"| j800: ",
On Thu, Mar 23, 2017 at 3:04 PM, Hobart Spitz <[email protected]> wrote:
> At first blush, I think this is a job for JUXTAPOSE.
>
> Assuming you're working with something like this:
>
> Device 0192, Status ONLINE
> CHPIDs to Device 0192 (PIM) : 11 12 1A 22 30 40
> Physically Available (PAM) : + + + + + +
> Online (LPM) : - - + + + -
> Offline by Authorized User : + - - - - -
> Offline by Control Unit : - + - - - +
> Legend + Yes - No
>
>
> I would try:
>
> /*----------------------------------------------------------
> -----------------
> c100: j800:
> +--+ +----+ +-+ +-----+ +-+ +----+ +---+ +----+
> +---+
> |cp|-->|drop|-->|p|-->|specs|---------->|J|-->|pick|-->|...|-->|sort|
> -->|...|
> +--+ +----+ |i| +-----+ |u| +----+ +---+ +----+
> +---+
> |c| |x|
> |k| +----+ +----+ |t|
> | |-->|pick|-->|pick|-->|a|
> +-+ +----+ +----+ +-+
> ------------------------------------------------------------
> ---------------*/
>
> "pipe (end ? name querypath listerr)",
> "? cp query path ",
> "| drop last 1 ", /* No Legend line. */
> "| c100: pick w1 == /Device/ ",
> "| specs w2-4 1.25 recno 26.8 right x05 n ",
> "| j800: juxtapose ",
> "| pick w3 \== /ONLINE/ ",
> "| .... ", /* Do some processing here. */
> "| sort f1 ", /* Back to original order. */
> "| .... ", /* More processing */
>
> "? c100: ",
> "| pick w1 \== /Online/ ",
> "| pick w2 \== /Available/ ",
> "| j800: ",
>
> RECNO ensures that all records return to their positions within the group.
>
> The output from JUXT will look something like this:
>
> 0291, Status ONLINE 1*tab*CHPIDs to Device 0291
> 0291, Status ONLINE 2*tab*Offline by Authorized User
> 0291, Status ONLINE 3*tab*Offline by Control Unit
>
>
>
>
> On Thu, Mar 23, 2017 at 1:33 PM, Stanislawski, Shawn (National VM
> Capability) <[email protected]> wrote:
>
>> Been working on developing my Pipethink, but this scenario has me
>> stumbling.
>>
>> Taking "CP QUERY PATHS 0-FFFF" and filtering so that only those with
>> potential problems (those who are NOT: "status ONLINE" AND "show a '+'
>> for every CHPID") get output to console.
>> The more I poke at this, the more complex it gets.
>>
>> "CP QUERY PATHS" , according to the HELP file:
>> - Each output has from 5 up to and including 12 records/lines total.
>> - Each of the potential lines is a known template, and the first four are
>> always present and always the first four.
>> - The only record I don't really care about is the "Legend", which is
>> always the last record in each output.
>> - In the first record of each output, the "Status xxxx" could have 1 of 8
>> conditions for "xxxx".
>> - Records/lines 3-11 (inclusive) could contain either a "+" or "-" for
>> each CHPID (up to 8 total).
>>
>> If I'm just starting out by 'PIPE CP QUERY PATHS 0-FFFF', then I get a
>> QUERY PATHS output for each device successively.
>>
>> The first problem is:
>> How can I keep these successive outputs in order, but still work with
>> each output as a group when the number of records in the individual outputs
>> is variable?
>>
>> My first thought is to use JOIN so I can then filter the groups of
>> records based on criteria. But I only know with certainty the first and
>> last records of each output group, the number of records is variable in
>> each group, and there doesn't seem to be any easy way to otherwise
>> distinguish one group from the next.
>> If the JOIN stage could accept a from-label and a to-label that would
>> solve the issue, so a user-made stage could be one solution. But I feel
>> like there's got to be a better solution using just the built-in stages...
>>
>> I've found an imperfect solution by reducing the outputs to just their
>> first 4 lines using an ALL stage and then a "JOIN 3".
>> I know BETWEEN/INSIDE would be better, but no idea how I'd JOIN in that
>> case... I'm really trying to avoid a "JOIN *".
>>
>> Any thoughts?
>>
>> --Shawn S.
>>
>
>
>
> --
> OREXXMan
>
--
OREXXMan