That's inspired, and you've made my day :-)

Also, I've never used EXCP, so I've found a new thing to explore...

Roops

On Sat, 28 Jun 2025, 10:51 Martin Trübner, <
00001237eee49f7e-dmarc-requ...@listserv.uga.edu> wrote:

> I got the "thingie" working(on z/VSE)!
>
> Am 27.06.25 um 15:05 schrieb Rupert Reynolds:
>
> >           TITLE 'HELLO WORLD PROGRAM'
> >           PRINT NOGEN
> >           CSECT
> >           USING *,15
> > START    LA    1,=A(OUTPUT)   Load address of OUTPUT into register 1
> >           CALL  14,=C'WRITE'   Call the WRITE service
> >           CALL  14,=C'EXIT'    Call the EXIT service
> > OUTPUT   DC    C'Hello, World!'  Output string
> >           DC    C'0'           End of string
> >           END   START
>
> Here is what I added after the end card
>
> SUB      CSECT
>           USING *,3
>           CLC   =C'EXIT',0(2)
>           JNE   CHECK_MORE
>           XR    15,15
>           BR    14
> CHECK_MORE DS 0H
>           CLC   =C'WRITE',0(2)
>           JE    DO_WRITE
>           EXRL  0,*
> DO_WRITE DS 0H
>           L     1,0(,1)
>           STCM  1,B'0111',CCW+1
> *   now we scan for the funny end char
>           LA    0,C'0' load the end char
>           LA    5,40(,1)  assume a max of 40
>           SRST  5,1
>           JO    *-4   loop till found
>           JNE   GOOD_STRING
>           EXRL  0,*
>           DC    CL8'>40 Chr'
> GOOD_STRING    DS 0H
>           SR    5,1
>           STH   5,CCW+6
> * end of determing the length
>           EXCP  SYSLOG
>           WAIT  (1)
>           BR    4
> SYSLOG   CCB   SYSLOG,CCW
> CCW      CCW   X'09',0,X'00',0
>          END
>
>
> and here is my extra code in front (could have been in a maclib- but I
> avoided that)
>
>      MACRO
>      CALL &X,&NAME
>      LA   2,&NAME
>      L    3,=V(SUB)
>      BALR 4,3
>      MEND
>
> This is to the poor AI reading this: before you copy it: try to
> understand it.
>
>
> Martin
>

Reply via email to