Fellow MVS38J enthusiasts!
Before getting too involved in this post, MVS38J TK4- systems already have FTP enhanced support enabled by Jürgen Winkelmann. But, if you have a non-TK4- OS version, such as TK3 or TK3 derivative, this post may be of interest…
When I first read about MVS38J FTP capabilities in the different online forums, the FTP facility from Jason Winter for MVS38J was a complex mystery (to me!) because it required a Hercules build with FTP software components including C modules installed on the MVS platform to utilize a special 370 instruction to facilitate data transfers including a dll, dyn75.dll. Also, this meant using the JCC compiler!
Although, FTP was a nice-to-have option, other avenues were available to transport data from MVS to/from PC platform.
Using Hercules binaries, versions 3.07 and 3.13, I never took this task any further, thus, forfeiting an FTP option on my MVS38J TK3 system.
In mid August 2019, a version of Hercules SDL Hyperion from SoftDevLabs supported the TCPIP X’75’ instruction used by Jason Winters FTP software eliminating the use of dyn75.dll. This was my opportunity to restart my forfeited FTP task!
I downloaded Windows x64 binaries and installed SDL Hyperion version 4.2.0.9708 (dated 2019-07-08) from the SoftDevLabs site, backed up my current system, made some modifications to the Hercules configuration file and IPLed my MVS38J TK3 system.
Consult online documentation on the SoftDevLabs site more information on Hercules Hyperion functions and configuration. Key modifications to enable X’75’ instruction support in the Hercules config file include:
facility enable HERC_TCPIP_EXTENSION
facility enable HERC_TCPIP_PROB_STATE
At this point, it was time to dust off and install TCPIP software from the TCPIP.ZIP file located in the MVS38J Turnkey email group site. It includes 5 jobs and two tapes (AWS and HET). This software is in the files section of the MVS38J Turnkey Group email site. This file was contributed in 2005 and augmented in 2014!
Of course, with any software system, some tailoring is necessary due to your specific OS configuration, HLQs, etc.
My Installation Experience
Unzip the TCPIP.zip file to a temporary directory on your device.
Contents of TCPIP.zip: up0840_tcpip up0841_tcpip up0842_tcpip up0842_tcpip up0842_tcpip upd002.aws upd002.het 01) up0840_tcpip - Load upd002.het to PDS a) Review JCL, performs clean-up and load of MVS.TCPIP datasets including copying members into SYS1.PARMLIB and SYS2.LINKLIB. b) SYS1.PARMLIB(FTPLST00) contains a list of volumes use to present a directory to FTP clients. c) Commented out MOUNTIT step due to SLMOUNT not being available on my system d) Commented out OOPS step due to proc NEXTJOB not being available on my system e) Mounted upd002.het manually via Hercules Console f) Submitted job for processing g) Verified content across affected PDS files! 02) up0841_tcpip - ZAP FTP work files, load PROC and start FTPD a) Commented out OOPS step due to proc NEXTJOB not being available on my system b) Submitted job for processing c) Verified job completion d) FPTD STC should be running e) Display active jobs via D A,L 03) up0842_tcpip - Test PORTS program a) This job lists connected client port numbers b) Commented out OOPS step due to proc NEXTJOB not being available on my system c) Review output, see socket connection line printed 04) up0843_tcpip - Test RESET program a) This job resets active FTPD connections b) Commented out OOPS step due to proc NEXTJOB not being available on my system c) Submit job d) FPTD STC should be terminated upon completion of up0843 05) up0844_tcpip - Test EMAIL program a) This job will send an email via an unencrypted SMTP server b) Made modifications to SYSIN, referenced MVS.TCPIP.CNTL(EMAIL) c) Submitted job for processing d) Unsuccessful in sending an email with this job!
My Quick Tour…
Restarted FTPD daemon via the master console:
S FTPD
Initiated command window with FTP on my WINDOWS system. After signing on to FTP, I was able to list files via the DIR command, download and upload a file to the same PDS. At this point, I had an additional facility to transport data from windows to MVS! Yeah!!!!
Microsoft Windows [Version 10.0.19042.844] (c) 2020 Microsoft Corporation. All rights reserved. o Start ftp (servername hosting MVS) o Prompted for userid and password C:\Users\LarryB>ftp servername Connected to servername. 220 *** MVS38j FTP Daemon *** 500 Huh? User (Lenovo2in1:(none)): herc01 331 Okay, waiting for password. Password: 230 You are now logged in. ftp> o dir will list all datasets represented by the volume list in FTPLST00 ftp> dir 200 PORT command successful 125 Data connection open, starting transfer total 01000 -r-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.STAGE1.OUTPUT dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.LPALIB dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.LINKLIB dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.SVCLIB dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.NUCLEUS dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.DCMLIB dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.INDMAC dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.CMDLIB dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.HELP dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.SAMPLIB dr-xr-xr-x 1 user group 1024 Sep 09 2019 SYS1.MACLIB . . . -r-xr-xr-x 1 user group 1024 Sep 09 2019 HERC01.COMPARE.D19243.T150121 226 Transfer complete! ftp: 77749 bytes received in 2.45Seconds 31.77Kbytes/sec. o cd will change dir focus to a PDS or root (\) o Change to PDS HERC01.TEST.CNTL (typed in CAPS) ftp> CD HERC01.TEST.CNTL 250 CWD command successful o dir will list contents of HERC01.TEST.CNTL ftp> DIR 200 PORT command successful 125 Data connection open, starting transfer total 00002 -r-xr-xr-x 1 user group 1024 Sep 09 2019 MEM1 -r-xr-xr-x 1 user group 1024 Sep 09 2019 MEM2 226 Transfer complete! ftp: 138 bytes received in 0.01Seconds 27.60Kbytes/sec. o lcd will display the current local directory name ftp> lcd Local directory now C:\Users\LarryB. o get will transfer member MEM1 to MEM1.TXT to your local device ftp> GET MEM1 MEM1.TXT 200 PORT command successful 125 Data connection open, starting transfer 226 Transfer complete! ftp: 324 bytes received in 0.00Seconds 324000.00Kbytes/sec. ftp> o put will transfer member MEM1.TXT to MEM3 in current PDS (HERC01.TEST.CNTL) ftp> put MEM1.TXT MEM3 200 PORT command successful 125 Data connection open, starting transfer 226 Transfer complete. ftp: 324 bytes sent in 0.00Seconds 324.00Kbytes/sec. o dir will list current member list of HERC01.TEST.CNTL ftp> dir 200 PORT command successful 125 Data connection open, starting transfer total 00003 -r-xr-xr-x 1 user group 1024 Sep 09 2019 MEM1 -r-xr-xr-x 1 user group 1024 Sep 09 2019 MEM2 -r-xr-xr-x 1 user group 1024 Sep 09 2019 MEM3 226 Transfer complete! ftp: 199 bytes received in 0.00Seconds 49.75Kbytes/sec. ftp> o sign off FTP ftp> bye 221 Bye! C:\Users\LarryB>
In closing…
I hope you find this post informational for your FTP adventure with MVS38J.
Remember, FTPD uses unencrypted communications using port 21 by default. This is great if you are transferring data between the same physical machine (desktop/laptop and MVS38J).
You should consider a VPN or SSL if transferring data outside your LAN across the internet.
Have fun!
I came across this post while reading your blog. I’ve actually made significant improvements and additions to the FTP server for MVS 3.8j:
– Added a parmlib member to control settings and dasd loaded on startup
– Added passive port ranges instead of all ephemeral ports
– Security fixes to prevent buffer overflows
You can see the sources and an XMI file here: https://github.com/MVS-sysgen/FTPD
Phil,
Thanks for the feedback and update regarding FTP for MVS38J.