Have you tried your suggestion Alan? (it doesn't work) //BPXBATCH JOB (),'WOLF',MSGCLASS=H,NOTIFY=&SYSUID,REGION=32M //* //SHELL EXEC PGM=BPXBATCH,PARM='SH cp //DD:MYDD /dev/fd1' //STDENV DD * _BPX_BATCH_SPAWN=YES _BPX_SHAREAS=YES //STDIN DD DUMMY //STDOUT DD SYSOUT=* //STDERR DD SYSOUT=* //MYDD DD DISP=SHR,DSN=SYS1.MACLIB(ACB) // cp: FSUM6258 cannot open file "//DD:MYDD": EDC5037I The specified ddname was not found.
You can use BPXBATSL, but you can't run a login shell with it unless you are root. So you don't get the system or your login profile run. But if you can live with that, then this works: //BPXBATSL JOB (),'WOLF',MSGCLASS=H,NOTIFY=&SYSUID,REGION=32M //* //SHELL EXEC PGM=BPXBATSL,PARM='PGM /bin/cp //DD:MYDD /dev/fd1' //STDENV DD * _BPX_BATCH_SPAWN=YES _BPX_SHAREAS=YES //STDIN DD DUMMY //STDOUT DD SYSOUT=* //STDERR DD SYSOUT=* //MYDD DD DISP=SHR,DSN=SYS1.MACLIB(ACB) // Years ago, the mvs-oe forum was about 75% BPXBATCH issues; you might want to check the archives. You might want to try COZBATCH, which is a little utility that was designed to work like a reasonable person would expect: https://dovetail.com/products/cozbatch.html Kirk Wolf Dovetailed Technologies http://dovetail.com On Thu, Oct 12, 2017 at 8:19 PM, Alan Young <[email protected]> wrote: > Try changing the STDENV DD to > > //STDENV DD * > _BPX_BATCH_SPAWN=YES > _BPX_SHAREAS=YES > /* > > The variables are discussed in https://www.ibm.com/support/ > knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxa400/bpxug240.htm > > -----Original Message----- > >From: Frank Swarbrick <[email protected]> > >Sent: Oct 12, 2017 5:17 PM > >To: [email protected] > >Subject: fopen DD > > > >I am playing with the Swift for z/OS beta. Swift itself supports little > in the way of I/O, and instead depends on the underlying C runtime. Below > is a small program that opens a file, reads 4 bytes in to a buffer and > writes out the results as an integer. > > > >import Libc > > > >func fwx(file filename: String, access: String) { > > if let fwf = fopen(filename, access) { > > defer { fclose(fwf) } > > let buffer = UnsafeMutablePointer<UInt32>.allocate(capacity: 1) > > defer { buffer.deallocate(capacity: 1) } > > let _ = fread(buffer, MemoryLayout<UInt32>.size, 1, fwf) > > print("from \(filename): \(buffer.pointee)") > > } > > else { > > print("error opening file \(filename): \(errno)") > > } > >} > > > >fwx(file: "/u/dvfjs/fw.bin", access: "rb") > >fwx(file: "//'DVFJS.FW'", access: "rb") > >fwx(file: "dd:FW", access: "rb") > > > >The last three statements are the "mainline" of the program. For the > first one the file is a Unix file. For the second one its a VSAM ESDS > called 'DVFJS.FW'. Both of these work. I can't figure out how to specify > a DD reference to make that last one work. I've tried both using "dd:FW" > and "//dd:FW". Is it perhaps a problem with the DD itself? When running > it under BPXBATCH I am specifying the FW DD like I would for any other > batch job: > > > >//SHELL JOB NOTIFY=&SYSUID,REGION=2000M > >//UNIXSH EXEC PGM=BPXBATCH,PARMDD=PARMSIN > >//FW DD DISP=SHR,DSN=DVFJS.FW > >//PARMSIN DD * > >SH /u/dvfjs/src/fw > >/* > >//STDIN DD DUMMY > >//STDOUT DD SYSOUT=* > >//STDERR DD SYSOUT=* > >//STDENV DD DUMMY > >// > > > >Does the Unix environment for BPXBATCH not have access to the JCL DD? > > > >We don't have a license for the C compiler, so I've never used C for z/OS. > > > >Frank > > > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
