/* Rexx - reconstitute JCL from SDSF's SE display */ Address isredit "MACRO" "BOUNDS" 'C P" " "00"X ALL' 'C P"=" "" ALL 1 10' 'C P"." " " ALL' 'C "XX" "//" 1 ALL' "(DW) = DATA_WIDTH" "X ALL" 'F ALL "/" 1' "C P'=' ' ' ALL NX 73" dw "F IEFC653I 1 FIRST" Do While rc = 0 "(LINE#) = LINENUM .ZCSR" "(LINE) = LINE "line# Parse Var line . . . . subst line# = line# + 1 "(LINE) = LINE "line# "(ZL) = LINENUM .ZL" Do While substr(line,1,1) \= "/" & line# <= zl subst = strip(subst) || strip(line) line# = line# + 1 If line# <= zl Then Do "(LINE) = LINE "line# End End "LABEL .ZCSR = .A 0 " findstr = word(translate(subst," ","="),1) "F X'" || c2x(findstr"=") || "' PREV" If rc > 0 Then Say "Error: previous line not found. " "(ORIG) = LINE .ZCSR" "LABEL .ZCSR = .B 0" Parse Var orig name verb rest newline = strip(name verb subst) Do While newline <> "" If length(newline) > 71 Then Do Parse Var newline f 60 v "," newline v = f || v End Else Do v = newline newline = "" End If substr(v,1,1) <> "/" Then v = "// "v If newline <> "" Then v = v || "," "LINE_BEFORE .B = (V)" End /* 'line_Before .B = (Newline)' */ "DEL ALL .A .B" "F IEFC653I FIRST" End Call proccheck Call execcheck "%JCL" "DEL ALL X" "F '//' 1 first" If rc = 0 Then Do address ispexec "CONTROL ERRORS RETURN" "BUILTIN HILITE ON AUTO" address ispexec "CONTROL ERRORS CANCEL" End "F P'=' FIRST" Return 1 /*--- proccheck -----------------------------------------------------*/ proccheck: Procedure "F WORD PROC FIRST" Do While rc = 0 "(LINE) = LINE .ZCSR" If substr(line,1,2) = "//" & word(line,2) = "PROC" Then Call delete_to_next_nonblank "F WORD PROC" End Return /*--- execcheck -----------------------------------------------------*/ execcheck: Procedure "F WORD EXEC FIRST" Do While rc = 0 "(LINE) = LINE .ZCSR" If substr(line,1,2) = "//" & word(line,2) = "EXEC" Then If substr(word(line,3),1,4) \= "PGM=" Then Call delete_to_next_nonblank "F WORD PROC" End Return /*--- delete_to_next_nonblank ---------------------------------------*/ delete_to_next_nonblank: Procedure "LABEL .ZCSR = .A 1" 'F P"//@" 1' If rc = 0 Then Do "(LNUM) = LINENUM .ZCSR" lnum = lnum - 1 "LABEL "lnum" = .B 2" If rc <> 8 Then "DEL ALL .A .B" Else "DEL ALL .B .B" End Return