From 2a13be848fb06ee4d469917c71ac3487100ccf3f Mon Sep 17 00:00:00 2001 From: Gregory Gauthier Date: Fri, 6 Feb 2026 09:29:52 +0000 Subject: [PATCH] revise python command line --- mvs_job.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/mvs_job.py b/mvs_job.py index c5a43b3..5b845e4 100755 --- a/mvs_job.py +++ b/mvs_job.py @@ -97,15 +97,58 @@ def submit_jcl(job, mvshost="oldcomputernerd.com"): return 1 if __name__ == "__main__": - if len(sys.argv) < 5: - print("Usage: mvs_job.py [mvshost]") + if len(sys.argv) < 2: + print("Usage: mvs_job.py [destination_pds] [mvshost]") + print() + print("Arguments:") + print(" local_source_file - Path to source file (required)") + print(" destination_pds - PDS destination as DATASET(MEMBER) (optional)") + print(" Default: @05054.C90.SOURCE(basename)") + print(" mvshost - MVS host (optional, default: oldcomputernerd.com)") + print() + print("Examples:") + print(" mvs_job.py src/sieve11.c") + print(" mvs_job.py src/sieve11.c '@05054.C90.SOURCE(SIEVE11)'") + print(" mvs_job.py src/hello.c '@05054.C90.SOURCE(HELLO)' mainframe.example.com") + print() + print("Notes:") + print(" - JCL file is assumed to be jcl/.jcl") + print(" - Member name defaults to source filename without extension") sys.exit(1) local_file = sys.argv[1] - dataset_name = sys.argv[2] - member_name = sys.argv[3] - job = sys.argv[4] - mvshost = sys.argv[5] if len(sys.argv) > 5 else MVSHOST + + # Extract base name without extension for defaults + basename = os.path.splitext(os.path.basename(local_file))[0].upper() + valid_host_source_pds_suffixes = ['C', 'ALG', 'ASM', 'BAS', 'COB', 'PAS', 'PL360'] + default_suffix = valid_host_source_pds_suffixes[0] + + # Parse destination PDS (optional second argument) + if len(sys.argv) > 2 and sys.argv[2]: + destination = sys.argv[2] + # Parse PDS syntax: DATASET(MEMBER) + if '(' in destination and destination.endswith(')'): + dataset_name = destination[:destination.index('(')] + member_name = destination[destination.index('(')+1:-1] + else: + print(f"Error: Invalid PDS syntax '{destination}'. Use format: DATASET(MEMBER)") + sys.exit(1) + else: + # Default destination + dataset_name = f"@05054.SRCLIB.{default_suffix}" + member_name = basename + + # JCL job name defaults to basename + job = basename.lower() + + # Optional host override + mvshost = sys.argv[3] if len(sys.argv) > 3 else MVSHOST + + print(f"Source: {local_file}") + print(f"Destination: {dataset_name}({member_name})") + print(f"JCL: jcl/{job}.jcl") + print(f"Host: {mvshost}") + print() # Step 1: Upload source to PDS if upload_source(local_file, dataset_name, member_name, mvshost) != 0: