ZUtilities

This is the utility to connect to Z/OS over FTP JESInterface and to submit JCL jobs and to retvieve spool files.

Initialize FTP Connection Manager

   FTPConnectionManager ftpConnectionManager = new FTPConnectionManager(ftpHostName, ftpUser, ftpPassword);

Submit A Job

  public void submitjob(FTPConnectionManager ftpConnectionManager, File jclFile) throws JobSubmitException, IOException {
    Job job = new Job(jclFile);
    job.submit(ftpConnectionManager);
    out.println("Job submitted with job id: '" +job.getJobId() + "'.");
  }

Submit A Job With Dynamic Content Creation

  public void submitjob(FTPConnectionManager ftpConnectionManager, String jclContent) throws JobSubmitException, IOException {
    File jclFile = File.createTempFile("tmpJcl", null);
    OutputStream outputStream = new FileOutputStream(jclFile);
    outputStream.write(jclContent.getBytes());
    Job job = new Job(jclFile);
    job.submit(ftpConnectionManager);
    outputStream.flush();
    outputStream.close();
    outputStream = null;
    out.println("Job submitted with job id: '" +job.getJobId() + "'.");
  }

Get Job Result

  public void getJobResult(FTPConnectionManager ftpConnectionManager, Job job) throws SpoolFileRetrieveException, JobStateRefreshException, JobStepRetrieveFailedException {
    job.refreshJobState(ftpConnectionManager);
    if(job.getStatus().equals(Job.Status.INPUT)) {
      System.out.println("Job is waiting in the queue...");
    }
    else if(job.getStatus().equals(Job.Status.ACTIVE)) {
      System.out.println("Job is running...");
    }
    else if(job.getStatus().equals(Job.Status.OUTPUT)) {

      System.out.println("Job '" + job.getJobName() + "." + job.getJobId() +"' completed with rc: '" + job.getReturnCode() + "'.");

      ArrayList<SpoolFile> spoolFiles = job.getSpoolFiles();
      
      for (int i = 0; i < spoolFiles.size(); i++) {
        System.out.println("Retrieving job spool file '" + spoolFiles.get(i).getDataDefinitionName() + "'...");
        job.retrieveSpoolFile(ftpConnectionManager, spoolFiles.get(i), "/tmp/", "filename");
      }
      
      System.out.println("Analysing jes message log...");
      job.analyseJesMessageLog();
      
      for(SpoolFile spoolFile:job.getSpoolFiles()) {
        int logType = CompileLog.COMPILE_LOG;
        for(JobStep jobStep:job.getSteps()) {
          if(jobStep.getProcedureStep().equals(spoolFile.getProcedureStep()) && !jobStep.getRc().equals("00") && !jobStep.getRc().equals("01") && !jobStep.getRc().equals("02") && !jobStep.getRc().equals("03") && !jobStep.getRc().equals("04")) {
            System.out.println("Step failed: '"+ jobStep.getStepName() + "'");
            System.out.println("'" + spoolFile.getDataDefinitionName() + "' spool file: '" + spoolFile.getLocalFile().getPath() + "'");
          }
        }
      }

      if(job.getReturnCode().equals("0000")){
        System.out.println("Job completed with success.");
      }
      else if(job.getReturnCode().equals("0001") || job.getReturnCode().equals("0002") || job.getReturnCode().equals("0003") || job.getReturnCode().equals("0004")){
        System.out.println("Job completed with warnings.");
      }
      else {
        System.out.println("Job failed.");
      }
    }
  }