On 2016-10-28 17:40, Paul Gilmartin wrote:
On Fri, 28 Oct 2016 20:18:46 +0000, Robert Prins  wrote:

On 2016-10-27 15:46, Itschak Mugzach wrote:

As the information is in machine readable ([binary] data) it can't be rapped 
with
an apostrophe because the data may include apostrophe. ...

Yes, what he said.

Have been doing this for two+ decades:

But not with arbitrary data.

...
filtz:
  signal tab_data

/*Date       | TZ    | Trip | Ride | Ride | From | To  |
| 1983-08-01 | +1.00 |    4 |   28 |   29 | GR   | YU  |
-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 95 Line(s) not Displayed
| 2016-09-26 | +1.00 |  178 |    5 |      | LT   | PL  |
*/

tab_data:
    ...
return

Key is that SIGNAL will set SIGL to the line-number of the SIGNAL statement.

CALL does this as well as SIGNAL and I avoid SIGNAL because it may cause
serious collateral damage.

And this still suffers the hazard of a data pattern's premature termination
of the comment.

An alternative is to place the data at the very end of the EXEC where
it will never be interpreted.  But to be safe you must surround every
CALLed library function name with apostrophes.  Otherwise the
interpreter looks ahead for a user-defined function and may fail on
an apparent syntax error in the data.

In CMS, but not in z'OS, quoted function names are case-sensitive.
/***********************************************************************
* LOAD_DYNLIB:                                                         *
*                                                                      *
* This procedure loads the via EPANQ generated panel, message and      *
* skeleton code into a library. Note that there is no reason to use    *
* different libraries for any of these objects, as long as they are    *
* named differently|                                                   *
***********************************************************************/
load_dynlib:
dynlib = 'dyn'random(99999)
alloc  = "alloc fi("dynlib") rtdsn(sysdsname) "   ||,
                   "lrecl(80) blksize(0) dir(5) " ||,
                   "new delete reuse "            ||,
                   "space(1,1)"
rc = bpxwdyn(alloc)

if rc = 0 then
  ispdyn = sysdsname
else
  do your error processing

"newstack"

member = 'EFBINC'

queue ')attr default(!$_)'
queue '/' || '***************************************************' ||,
      '*******************' || '/'
queue '/' || '*              (C) Copyright Robert AH Prins, 2003-' ||,
      '2006              *' || '/'
queue '/' || '***************************************************' ||,
      '*******************' || '/'
queue '/' || '*  ------------------------------------------------' ||,
      '----------------  *' || '/'
queue '/' || '* | Date       | By   | Remarks                    ' ||,
      '                | *' || '/'
-  -  -  -  -  -  -  -  -  -  -  -  -  -  -   120 Line(s) not Displayed

put_object:
  tfil = 'tfil'random(9999)

  "alloc f("tfil") da('"ispdyn"("member")') shr reu"
  "execio" queued() "diskw "tfil" (finis"
  "free f("tfil")"

  "delstack"
return

My EPANQ edit macro can handle all kind of data, and if you've got lots of data to create, do so as one (or more) AMATERSE'd PDS'es. Unlike the minor hoop you've got to jump through to RECEIVE XMIT'ed files in an EXEC, AMATERSE UNPACK is completely transparent.

Robert--
Robert AH Prins
robert(a)prino(d)org
No programming (yet) @ http://prino.neocities.org/

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to