Uploaded image for project: 'Commons Net'
  1. Commons Net
  2. NET-725

Variable FILE_LIST_REGEX in class MVSFTPEntryParser must be changed

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 3.9.0
    • 3.10.0
    • FTP
    • None

    Description

      Hello!

      I have found two problems when connected to an MVS ftp server and using client method "listFiles()".

      1) Some files are not listed on ftp client side because not all possible MVS dataset RECFM options are considered in class MVSFTPEntryParser.

      2) Migrated MVS datasets are not listed on ftp client side 

      Detailed information for prolem 1 (not all possible RECFM options are considered):

      The final string variable FILE_LIST_REGEX in class MVSFTPEntryParser is missing RECFM options. Therefore, valid dataset names are currently not correctly recognized and therefore not processed (e.g. when using method "listFiles()").

      The definition of the variable must be extended as follows.
      Current definition:
      static final string FILE_LIST_REGEX = "\\S+
      s+" + // volume - ignored
                  "\\S+\s+" + // unit - ignored
                  "\\S+
      s+" + // access date - ignored
                  "\\S+\s+" + // extents -ignored
                  // If the values are too large, the fields may be merged (NET-639)
                  "(?:\\S+
      s+)?" + // used - ignored
                  "(?:F|FB|V|VB|U)
      s+" + // recfm - F[B], V[B], U
                  "\\S+
      s+" + // logical record length -ignored
                  "\\S+\s+" + // block size - ignored
                  "(PS|PO|PO-E)
      s+" + // Dataset organization. Many exist
                  // but only support: PS, PO, PO-E
                  "(\\S+)
      s*"; // Dataset name (file name).

      Future extended definition:
      static final string FILE_LIST_REGEX = "\\S+
      s+" + // volume - ignored
                  "\\S+\s+" + // unit - ignored
                  "\\S+
      s+" + // access date - ignored
                  "\\S+\s+" + // extents -ignored
                  // If the values are too large, the fields may be merged (NET-639)
                  "(?:\\S+
      s+)?" + // used - ignored
                  "(?:F|FA|FB|FBA|V|VA|VB|VBA|VS|VBS|U)
      s+" + // recfm - F[A][B], V[A][B][S], U
                  "\\S+
      s+" + // logical record length -ignored
                  "\\S+\s+" + // block size - ignored
                  "(PS|PO|PO-E)
      s+" + // Dataset organization. Many exist
                  // but only support: PS, PO, PO-E
                  "(\\S+)
      s*"; // Dataset name (file name).

       

      Detailed information for prolem 2 (migrated MVS datasets are not listed):

      Final variable FILE_LIST_REGEX doesn't consider migrated datasets. For example: when dataset with name "HLQ.DATA.SET.NAME" is migrated on tape the mvs ftp server return following text to the client:

      Migrated                                                'HLQ.DATA.SET.NAME'

      Since RECFM is not known by the ftp server for a migrated dataset the pattern string stored in FILE_LIST_REGEX doesn't match in this case. But the migrated datasets are of course valid datasets and therefore should be returned when calling "listFiles()". At least the name of this (migrated) dataset should be returned when calling "ftpFile.getName()".

       

      With kind regards,

      Andreas Wagner

      Attachments

        Activity

          People

            Unassigned Unassigned
            AndreasWagner Andreas Wagner
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: