Code Monkey home page Code Monkey logo

ftpb's Introduction

ftpb

Introduction and Doc.

       FTPB - The File Transfer Protocol Batch ISPF Dialog
                    by Lionel B. Dyck

This ISPF dialog provides a simple to use ISPF interface for using the TCP/IP FTP function to transfer data sets from the current MVS host system to other host systems that support a TCP/IP FTP Server (e.g. MVS, VM, OS/2, most Unix, ...).

The dialog present the user with a simple ISPF panel from which to specify the source (original) data set, the target host, optionally the name of the target data set if it is different from the source, and signon information (userid and password). Once this information is complete the dialog generates the necessary JCL and FTP statements to allow the user to execute the FTP in the foreground (execpt for load library transfers) or to submit the JCL for a batch execution of FTP. Prior to submission the user is allowed to review and change (edit) the generated JCL and FTP control statements if they desire.

The JCL will be submitted using an FTP service that will wait for 10 minutes (as defined by the FTP.DATA used by the installation) and if the JOB ends within 10 minutes the sysout will be retrieved and printed in the FTPPRINT generated step. The PRINT job step will print the report to the //REPORT DD and will process the data to generate a return code equal to the max return code for the remote job.

The specification of the z/OS Target may be Yes or No. If yes, then the data is transferred using z/OS native tranfer methodology. If no, then the data is transfered as text (or binary if binary is selected).

The SYNC option for the z/OS Target enabled z/OS to z/OS processing and allows for the comparison of the ISPF member statistics of both the Source (local) and Target (remote) versions of the PDS. This allows the option to Get (copy the target member to the local PDS), Put (copy the local PDS member to the target PDS), or the ability to Compare the target member to the local member. During this function the recommended actions (GET/PUT) are presented, with the ability to change or ignore the recommended action.

For partitioned data sets the dialog provides member selection if a member is not specified as part of the source data set name. Two options are provided for the transfer of a PDS. One option is to unload the data set using IEBCOPY and to transfer that sequential data set, while generating the JCL to reload the data set at the target host. The other option is to not unload in which case the dialog processed a member at a time.

For VSAM and DA data sets the dialog will prompt to ask if the target data set should be Replaced or not on the restore. The transfer will occur in batch using generated JCL. To transfer VSAM/DA the dialog uses IBM's DFSMSdss (PGM=ADRDSSU) to DUMP the data set (using the SPHERE option) and then the restore JCL and the dump'd data set are FTP'd to the target host. Once these FTP's are complete the JCL is submitted to the target system for processing where ADRDSSU will be used to RESTORE the data set. The batch process is the same as described above for load library transfers except that ADRDSSU is used instead of IEBCOPY.

Also supported are pattern dsnames which will then consist of a set of data sets dump'd and restore'd using ADRDSSU.

Known Problems/Challenges:

  1. There exists a problem when using FTP to transfer load modules caused by the inability of FTP to correctly transfer the directory information for the load module. The 'solution' for this is to use IEBCOPY to unload the load library into a sequential data set and then transfer that with a reload using IEBCOPY at the target site.

  2. The submitted JOB's SYSOUT will remain at the remote executiion site in the SPOOL until the SPOOL cleanup removes it as it is submitted with an OUTPUT JCL statement to be held so that it can be retrieved by the FTP GET (when filetype=jes is used) and thus included in the originating JOBs SYSOUT.

  3. When using DFSMSdss to dump/ftp/restore a PDSE the target may not restore if PDSE is not enabled and you will need to use the CONVERT statement (check the manual for syntax) in the restore.

Note that an ISPF Table is built and maintained in Library(ISPPROF) that contains the jobcard information for each target node.

ftpb's People

Contributors

catherdersoftware avatar lbdyck avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ftpb's Issues

Support specifying BYPASSACS when using ADRDSSU, other minor issues

If the remote system SMS classes does not match the target system, it is necessary to specify MGMTCLAS NONE and STORCLAS NONE. However, even with those settings, DSS will not restore if the ACS routines reject the data set names. The workaround is to specify BYPASSACS(mask) to process all data sets (** for all).

A minor issue is that if a lower-case p is used in directory entries to indicate a PDSE for a new remote data set, it is not converted to upper case, and it is used in the generated DD SPACE keyword as-is.

Analyze use/setting of remote userid panel field

After #7, the code is populating the remote userid field, which, if not cleared, leads to a "Conflict" error if a NETRC is in use. It's not obvious if this variable is being used for a default HLQ on a remote z/OS system. Research is needed to see why this field is being populated on the panel and how is it used when a NETRC is specified.

FTP JCLs off due to SYSDSNAME being incorrectly refactored

The submitted FTP local job JCLs off due to the //NETRC DD pointing to a data set name of SYLDSNAME. This is caused because SYSDSNAME was caught in the variable refactor and was inadvertently changed to SYLDSNAME and the default Rexx variable value is substituted rather than the actual NETRC name.

Unquoted generics for PUT do not respect PREFIX

I entered **.LOAD for the From data set. Unfortunately it triggered a catalog search for every data set that matched, regardless of HLQ. I had to specify prefix.**.LOAD to narrow it down.

This may be a good time to ensure that From respects PREFIX for all uses.

Also check for % usage being ignored.

Detect if aliases are involved in a PUT and support specifying COPYGRP or COPYGROUP; support GENS=

Implement the following behavioral changes:

  • If aliases are selected and base member is selected, use COPYGRP (any PDSE involved) or COPYGROUP (no PDSEs involved)
  • If aliases are found for the selected member but not selected, prompt for copying of aliases
  • If aliases are selected but base member is not selected, prompt for verification that the alias is to be copied without the base member
  • Prompt for GENS= (GET & PUT)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.