The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

MVS::JESFTP - Perl extension for submitting JCL to MVS systems through FTP.

SYNOPSIS

use MVS::JESFTP;

$jes = MVS::JESFTP->open($host, $logonid, $password) or die;

$jes->submit($job);

$aref = $jes->wait_for_results($jobname, $timeout);

$jes->get_results($aref);

$jes->delete_results($aref);

$jes->quit;

DESCRIPTION

IBM mainframe MVS systems accept job input through the Job Entry Subsystem (JES). This input is in the form of 80-byte card images that correspond to the punch cards of ancient times. The new releases of MVS can accept this input via FTP to the MVS internal reader (equivalent to the physical card readers of older systems).

This module uses the Net::FTP module under the hood to handle the FTP chores.

METHODS

$jes = MVS::JESFTP->open($host, $logonid, $password);

This method creates a connection to the MVS system JES. If the connection is made, open returns a reference $jes to the JES connection; otherwise open returns undefined.

open takes three arguments:

$host

The IP address or DNS name of the MVS system.

$logonid

A valid FTP logon ID for the host.

$password

A valid FTP password for the host.

$jes->submit($job);

This method submits the jobstream contained in the file $job. If the submission is successful, submit returns true; otherwise submit returns undefined.

$aref = $jes->wait_for_results($jobname, $timeout);

This method waits for the output of the submitted job to arrive in the JES hold queue. wait_for_results returns an array reference $aref to the a list of output files for the job suitable for input to get_results, or undefined if NO results could be obtained. (1)

wait_for_results takes two arguments:

$jobname

The name of the job you presumedly submitted with the submit method.

$timeout

How many seconds to wait for the job output to arrive; defaults to 60.

$result = $jes->get_results($aref);

This method retrieves the output of the submitted job from the JES hold queue. get_results returns undefined if successful; otherwise it returns a reference to an array of names of the files it could NOT retrieve. (1)

get_results takes one argument:

$aref

An array reference to the a list of output files from the job, such as wait_for_results generates. get_results will retreive (via FTP) each output file in turn and store them in the current subdirectory; file names will be preserved.

$result = $jes->delete_results($aref);

This method deletes the output of the submitted job from the JES hold queue. delete_results returns true if successful; otherwise it returns a reference to an array of names of the jobs it could not delete.

delete_results takes one argument:

$aref

An array reference to the a list of output files from the job, such as wait_for_results generates. delete_results will delete each job in turn.

$jes->quit;

This method closes the connection to JES. It is just the Net::FTP quit method.

(1) To use this method, your JCL JOB card must specify a MSGCLASS that directs its output to the JES hold queue. If you don't understand what this means, don't use this method, or you will hang your calling program.

PREREQUISITES

You have to have Net::FTP installed.

INSTALLATION

 tar xzf MVS-JESFTP-1.00.tar.gz
 perl Makefile.PL
 make
 #
 # Edit TEST.SEQ to contain your site-specific logonid,
 # password, account, & node in the appropriate places.
 #
 make test
 make install

For Win32 systems, after unarchiving the the package, copy JESFTP.pm to C:\Perl\site\lib\MVS (modifying this path for your installation of Perl).

AUTHOR

Mike Owens

mike.owens@state.nm.us

Copyright (c) 2000 Mike Owens. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the GNU General Public License or the Artistic License for more details.

SEE ALSO

perl(1)

Net::FTP