From d6e288e3756c10e8797f9db7523c99e49858b095 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Sat, 25 Feb 2017 09:28:23 +0100 Subject: [PATCH] Enhance DIRCPY to get source and destination from JCL. Also handle directories on devices other than DSK: --- src/sysen3/{dircop.1 => dircop.2} | 45 ++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) rename src/sysen3/{dircop.1 => dircop.2} (68%) diff --git a/src/sysen3/dircop.1 b/src/sysen3/dircop.2 similarity index 68% rename from src/sysen3/dircop.1 rename to src/sysen3/dircop.2 index a5b85d69..636514d5 100644 --- a/src/sysen3/dircop.1 +++ b/src/sysen3/dircop.2 @@ -15,21 +15,34 @@ CHDSKO=12 .INSRT SYSENG;FSDEFS > +$$RFN==1 +.INSRT SYSENG; RFN > + PDL: -20,,. BLOCK 20 +JCL: BLOCK 20 +indev: sixbit /DSK/ indir: sixbit /FOO/ +outdev: sixbit /DSK/ outdir: sixbit /BAR/ +FNAM: +DEV: 0 +FN1: 0 +FN2: 0 +SNAM: 0 DIR: BLOCK 2000 BUF: BLOCK 2000 GO: .CLOSE 1, ;RUNS AS DAEMON MOVE P,PDL + PUSHJ P,PARSE + CHKDIR: .CALL [ SETZ ? SIXBIT/OPEN/ [.BII,,CHDIRI] - [SIXBIT/DSK/] + INDEV [SIXBIT/.FILE./] [SIXBIT/(DIR)/] SETZ INDIR] @@ -46,14 +59,14 @@ CHKFIL: CAIL D,2000 .CALL [ SETZ ? SIXBIT/OPEN/ [.BII,,CHDSKI] - [SIXBIT/DSK/] + INDEV UNFN1+DIR(D) UNFN2+DIR(D) SETZ indir ] .LOSE 1400 .CALL [ SETZ ? SIXBIT/OPEN/ [.BIO,,CHDSKO] - [SIXBIT/DSK/] + OUTDEV [SIXBIT/_DIRCP/] [SIXBIT/OUTPUT/] setz outdir ] @@ -78,5 +91,31 @@ ENDFIL: .CLOSE CHDSKI, NXTFIL: ADDI D,LUNBLK JRST CHKFIL +PARSE: .BREAK 12,[..RJCL,,JCL] + MOVE D,[440700,,JCL] + + MOVEI B,FNAM + PUSHJ P,RFN"RFN + CAIE A,", + .LOSE + SKIPE A,DEV + MOVEM A,INDEV + SKIPN A,SNAM + MOVE A,FN1 + MOVEM A,INDIR + + MOVEI B,FNAM + PUSHJ P,RFN"RFN + SKIPE A,DEV + MOVEM A,OUTDEV + SKIPN A,SNAM + MOVE A,FN1 + MOVEM A,OUTDIR + + POPJ P, + +RSIXTP: CAIN A,", + AOS (P) + POPJ 17, END GO