On 2/21/2012 8:52 AM, McKown, John wrote:
I keep my HLASM source in z/OS UNIX files. "Just because I want to.". This works well for me. The only problem that I've run into is 
when I edit with "vi" (yes, I get what I deserve). ISPF edit "knows" that if I replace "ABCD" with "EF", 
it should only move the non-blank characters immediately to the right of the "ABCD" left. vi doesn't do this. This is really disruptive 
of continuation characters in column 72. So, looked at FLOWASM. Wonderfully, one thing it allows is continuation of a statement without the 
continuation character in column 72! So I thought it would be wonder to use and remove all the characters from column 72. Unfortunately, FLOWASM 
uses RDJFCB on the DCB which describe the input dataset. This RDJFCB gets an RC of 4 when the input is a UNIX file.<sigh>. It appears that 
the RDJFCB is really only used to pass back the DSN and volume of the input dataset to the assembler.

John,

In studying the FLOWASM code, I see the only reason there is an OPEN at all in
routine FLOW_SrcOpen is to handle long, variable-length records. If your records
are all <= 80 characters in length (which I assume they must be since you're not
currently a FLOWASM user), then it should be OK to let the assembler perform the
OPEN and READs for us.

I would change the following code from this:

DO ,                          Do for OPEN processing
  LA    R2,FLOWDCB              Point to the DCB
  MVC   FLOWMACW(FLOWRDFML),FLOWRDFM Copy model RDJFCB macro
  RDJFCB ((2)),                 Read the JFCB
          MF=(E,FLOWMACW)       (same)
  IF LTR,R15,R15,NZ             If non-zero return code
    LA    R15,AXPCBAD             Indicate OPEN failed
    XR    R0,R0                   Set reason code = 0
    ASMLEAVE ,                    Leave the structure
  ENDIF ,                       EndIf

to this (only one line changed. See '<== HERE' comment):

DO ,                          Do for OPEN processing
  LA    R2,FLOWDCB              Point to the DCB
  MVC   FLOWMACW(FLOWRDFML),FLOWRDFM Copy model RDJFCB macro
  RDJFCB ((2)),                 Read the JFCB
          MF=(E,FLOWMACW)       (same)
  IF LTR,R15,R15,NZ             If non-zero return code
    XR    R15,R15                 Set return code = 0 <== HERE!
    XR    R0,R0                   Set reason code = 0
    ASMLEAVE ,                    Leave the structure
  ENDIF ,                       EndIf

I believe this change will instruct the assembler to fall back to its own
internal OPEN and READ processing for SYSIN (or whatever DD you're using) which,
as you know, contains support for z/OS UNIX files.

Regards,

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
[email protected]
http://www.phoenixsoftware.com/

Reply via email to