Hacker News new | ask | show | jobs
by DonHopkins 387 days ago
JCL! My mom could do that. Fortunately she's safely and blissfully retired, so AI can't take her jerbs.

https://en.wikipedia.org/wiki/Job_Control_Language

>"the worst computer programming language ever devised by anybody, anywhere" -Fred Brooks

(Obviously when he said that, Fred hadn't been exposed to bash yet!)

"Please write a JCL script to orchestrate the release of my AI startup company's AI powered shop assistant from github. Did I mention that we use AI?"

    //*********************************************************************
    //*  M O L I N A I   R E L E A S E   P I P E L I N E                  *
    //*                                                                   *
    //*  Product  : AVATAR-SHOP-ASSISTANT                                 *
    //*  Company  : Aluxian / Molin AI                                    *
    //*  Purpose  : Tag, publish and attach artefacts to GitHub           *
    //*********************************************************************
    //AVTREL  JOB (AC),'MOLIN AI',CLASS=A,MSGCLASS=X,JOBPARM=TIME=1440,TYPRUN=HOLD
    //         REGION=0M
    //SET PRJ=MOLINAI,APP=AVATAR,TAG=v3.1.0,TOK=ghp_FAKE,REPO=aluxian/avatar
    //SET WS=/opt/molin/ws
    //MUSE PROC GIT=/usr/lpp/git4z/bin/git4z,CURL=/usr/lpp/bear/bin/curlbear,SHA=
    //ENV  SET PATH=/usr/lpp/git4z/bin:/bin HOME=/home/molin
    //SHA  EXEC PGM=BPXBATCH,PARM='PGM &GIT rev-parse HEAD'
    //STDOUT DD DSN=&&S,UNIT=SYSDA,SPACE=(CYL,1),DISP=(,PASS)
    //IFTAG IF (&SHA ¬= ' ') THEN
    //TAG  EXEC PGM=BPXBATCH,PARM='PGM &GIT tag -a &TAG &SHA -m &TAG'
    // ELSE
    //TAG  EXEC PGM=BPXBATCH,PARM='PGM &GIT tag -a &TAG -m &TAG'
    // ENDIF
    //PUSH EXEC PGM=BPXBATCH,PARM='PGM &GIT push origin &TAG',COND=(4,LT)
    //JSON EXEC PGM=IEBGENER
    //SYSUT1 DD *
    {"tag_name":"&TAG","name":"Avatar &TAG","generate_release_notes":true}
    /*
    //SYSUT2 DD DISP=(NEW,CATLG),DSN=&&PAY(0),UNIT=SYSDA,SPACE=(TRK,1)
    //SYSIN  DD DUMMY
    //ESDS EXEC PGM=IDCAMS
    //SYSPRINT DD SYSOUT=*
    //SYSIN DD *
    DEFINE CLUSTER(NAME(&&E) RECORDSIZE(255 255) KEYS(1 0) REUSE SPEED) -
      DATA(NAME(&&E.DATA))
    REPRO INFILE(P) OUTDATASET(&&E.DATA)
    IF MAXCC>4 THEN SET MAXCC=0
    /*
    //P DD DISP=SHR,DSN=&&PAY(0)
    //POST EXEC PGM=BPXBATCH,
    // PARM='PGM &CURL -sS -X POST https://api.github.com/repos/&REPO./releases
    //      -H Authorization:\ Bearer\ &TOK -H Accept:\ application/vnd.github+json
    //      --data-binary\ @DD:EJSON'
    //EJSON DD DISP=SHR,DSN=&&E.DATA
    //STDOUT DD DSN=&&R,UNIT=SYSDA,SPACE=(TRK,1),DISP=(,PASS)
    //RID EXEC PGM=IKJEFT01
    //SYSTSPRT DD DSN=&&ID,UNIT=SYSDA,SPACE=(TRK,1),DISP=(,PASS)
    //SYSTSIN DD *
      alloc fi(r) da('&&R') shr
      execio * diskr r (stem x. finis
      do i=1 to x.0
        if pos('"id"',x.i)>0 then parse var x.i '"id":' id ',' .
        if id¬='' then say strip(id); leave
      end
    /*
    //* BLDL fix — after the ‘Q3-FY24 LLA purge’ when an ill-advised UPDATE to
    //*   SYS1.LINKLIB nuked the BLDLRES chain, froze LLA, and threw half the
    //*   plex into S047s until Ops spent nine hours baby-sitting a cold-start IPL.
    //COPY EXEC PGM=IEBCOPY
    //SYSUT1 DD DISP=SHR,DSN=&&R
    //SYSUT2 DD DSN=&PRJ..G.&APP..R(&TAG),DISP=(NEW,CATLG),
    //             SPACE=(CYL,(1,1,1)),DSORG=PO
    //UPL EXEC PGM=BPXBATCH,
    // PARM='PGM &CURL -sS -X POST
    //      https://uploads.github.com/repos/&REPO./releases/$(cat &&ID)/assets?name=shop.jar
    //      -H Authorization:\ Bearer\ &TOK -H Content-Type:\ application/java-archive
    //      --data-binary\ @&WS/&APP/dist/shop.jar'
    //STDENV DD DUMMY
    //PEND
    //GO EXEC MUSE