ZMacros w/CNL - Needs Adapting
== Macros:
== COMP  srcfile1 srcfile2           Compiles, with the nolist option
== COMPP srcfile1 srcfile2 ...       Compiles to $P.#srctype.srcfile
== COMPF srcfile1 srcfile2 ...       Compiles to $dev2.TESTLST
== CK srcfile                        Checks your subvolumes.srcfile to TEST's


?SECTION set_SysIni MACRO
var CdVol          \test.$dev2.TEST
var LstVol         \test.$dev2.TESTLST
var SrcVol         \test.$dev2.TESTSRC

[#case [#charget [#shiftstring SrcFile] 1 for 3]
|SUB|       var TST_OBJ \test.$dev2.subobj.[SrcFile]O
            var ObjVol  \test.$dev2.subobj
            var TST_REN \test.$dev2.OLDobj.[SrcFile]X
|otherwise| var TST_OBJ \test.$dev2.TESTOBJ.[SrcFile]O
            var ObjVol  \test.$dev2.TESTOBJ
            var TST_REN \test.$dev2.OLDobj.[SrcFile]X
]
var TST_POBJ       \test.$dev1.FEDROBJ.FED1
var ObeyVol_VOL    \test.$dev1.TEST

?section doc macro
volume $dev2.TESTdoc

?section fil macro
volume $DEV4.TURBOFIL

?section blk macro
volume $dev2.TESTBLK

?section OB macro
echo volume $dev2.TESTOBEY

?section LIB macro
ECHO VOLUME $dev1.COPYSRC

?section LST macro
echo volume $dev2.TESTLST

?section SRC MACRO
[#if [#empty %1%] |then|
  volume $dev2.TESTSRC
|else|
  #set SrcFile %1%
  set_SysIni
]

?SECTION ENF MACRO
echo VOLUME $dev2.TESTENF

?section gl macro
 var SrcFile
 echo edit $dev2.TESTlst.[SrcFile]S

?section ck macro
var SrcFile %1%
[#case [#charget [#shiftstring SrcFile] 1 for 1]
|N|         fup info (%1%,dev1.COPYSRC.%1%)
|otherwise| fup info (%1%,$dev2.TESTSRC.%1%)
]

?SECTION Echoto MACRO
var EchoOut %1%

?section ECHO macro
#output %*%
%*%

?section var  macro
[#if [#variableinfo/existence/ %1%] |else| #push %1%]
[#if [#empty %2%] |then| |else| #set %1% %2 to 99%]


?section FREEZE MACRO
var PcServer
var PcName
[#IF [#EMPTY %1%] |THEN|
|else|
  #set PCServer %1%
]

[#IF [#EMPTY %1%] |THEN|
|else|
    [#IF [#EMPTY %2%] |THEN|
        var PcServer %1%
    |else|
        var PcName %1%
        var PcServer %2%
    ]
]
[#if [#emptyv PcName] |then|
   var PcName [#input Enter the Pathway System: ($MNTF):]
]
[#if [#emptyv PcServer] |then|
   var PcServer [#input Enter the Pathway Server (TESTPOST-SERVER):]
]

PATHCOM [PcName];FREEZE [PCServer]
PATHCOM [PcName];STOP   [PCServer]
PATHCOM [PcName];STOP   [PCServer]
[#if [#empty %2%] |then| |else| FREEZE %2 TO 99%]

?section THAW   MACRO
var PcServer
[#IF [#EMPTY %1%] |THEN|
|else|
  #SET PCServer %1%
]
PATHCOM [PcName];THAW   [PCServer]
[#if [#empty %3%] |then| |else| THAW %1%  %3 TO 99%]


?section START  MACRO
var PcServer
[#IF [#EMPTY %1%] |THEN|
|else|
  #SET PCServer %1%
]
PATHCOM [PcName];START  [PCServer]
[#if [#empty %3%] |then| |else| START %1%  %3 TO 99%]


=======================
?section debugon macro
======================
[#IF [#EMPTY %1%] |THEN|
|else|
    [#IF [#EMPTY %2%] |THEN|
        var PcServer %1%
    |else|
    var PcName %1%
    var PcServer %2%
    ]
]
[#if [#emptyv PcName] |then|
   var PcName [#input Enter the Pathway System: ($MNTF):]
]
[#if [#emptyv PcServer] |then|
   var PcServer [#input Enter the Pathway Server (TESTPOST-SERVER):]
]
#push me
#set  me [#myterm]

freeze
echo pathcom [PcName];alter [PCServer],hometerm [me],debug on
thaw
#pop me

?section debugoff macro
=======================
var PcName %1%
var PcServer %2%
freeze
pathcom [PcName];alter [PCServer],hometerm $VHS,debug off
thaw

?section copy macro
fup dup %1%,%2%,saveall
fup secure %2%,"nnnn"

?section cinfo macro
var SrcFile
[#IF [#EMPTY %1%] |THEN|
|ELSE|
  #SET SrcFile %1%
  set_SysIni
]
fup/inline/
--  info $dev2.TESTSRC.[SrcFile]s
--  info $dev2.TESTOBJ.[SrcFile]o
--  exit

?section pout macro
#SET  #INLINEPREFIX --
peruse /inline/$ppls
-- ll;le/out TESTlst.x/a;del
-- ll;le/out TESTlst.x/a;del
-- ll;le/out TESTlst.x/a;del
-- ll;le/out TESTlst.x/a;del
-- ll;le/out TESTlst.x/a;del
-- ll;le/out TESTlst.x/a;del
-- ll;le/out TESTlst.x/a;del
-- ll;le/out TESTlst.x/a;del
-- ll;le/out TESTlst.x/a;del
-- cqf/`/
-- dq/`                                                 /
-- cqa/`//a
-- e

?section fs alias
 finddata
?section grep alias
 finddata %*%

?section OK macro
[#case [#input RUN %*% (y)?] |y Y| echo %*% |otherwise|]
#output ---------------------------------------------


?SECTION PCLS MACRO
 SPOOLCOM $SPLS;JOB (OWNER),DELETE !
 SPOOLCOM $PPLS;JOB (OWNER),DELETE !

?SECTION SV MACRO
 FUP SUBVOLS %*%

?section Type macro
 fup copy %1%

?section p macro
[#if [#empty %1%] |then| peruse $PPLS |else| peruse $SPLX]


?SECTION INFODEFINE MACRO
#FRAME
#PUSH X1 X2 X3 X4
#SETMANY X1 X2 X3 X4,[#DEFINEINFO %1%]
#OUTPUT/HOLD/ADD DEFINE %1%
#OUTPUT/HOLD,COLUMN 25/,CLASS [X2]
#OUTPUT/COLUMN 40/,[X3] [X4]
#UNFRAME
[#if [#empty %2%] |then| |else| INFODEFINE %2 to 99%]

?SECTION CREATEDEFINES MACRO
PURGE XD
INFO/OUT XD/DEFINE =*
EDIT XD;DQN/=/;CQ/ Define Name / INFODEFINE /A;E
PURGE DEFINES
#PUSH #OUT
#SET #OUT DEFINES
O XD
#POP #OUT
EDIT DEFINES;DQ/INFODEFINE/;E
EDIT DEFINES
[#if [#empty %2%] |then| |else| INFODEFINE %2 to 99%]


?SECTION ST MACRO
[#IF [#EMPTY %1%]
|THEN| STATUS *,TERM
|ELSE| STATUS %*%
]

?SECTION DelY    MACRO
[#IF [#FILEINFO/EXISTENCE/%1%] |THEN|
   FILEINFO %1%
   [#CASE [#INPUT Do you wish to delete this (y)?]
      |y Y| purge %1%
      |otherwise|
   ]
]

?SECTION FS ALIAS
FINDDATA

?SECTION CALC ALIAS
COMPUTE

?SECTION COMPARE macro
$dev2.jimobj.COMPARE %*%

?section PC MACRO
var PcName
[#if [#empty %1%]
|then| ECHO pathcom [PcName]
|else| #set PcName %*%
       ECHO pathcom %*%]


?section OBJ MACRO
ECHO $dev2.TESTOBJ


?section TL macro
LOAD/KEEP 1/$dev2.TESTSRC.ZMACROS

?section GT macro
edit $dev2.TESTSRC.ZMACROS;set tabs 10 20 30 40 50 60 70;%1 TO 9%

?section R    macro
var TST_OBJ
var Src
[#if [#empty %1%] |then| |else| SRC %1%]
ECHO RUN [TST_OBJ] %2 to 99%

?section RD   macro
var TST_OBJ
[#if [#empty %1%] |then| |else| SRC %1%]
RUND [TST_OBJ]

?section DEFINESX macro
[#if [#empty %*%] |then| echo INFO DEFINE =* |ELSE| echo INFO DEFINE %*%]

?section CD macro
[#if [#empty %1%] |then| |else| Var CdVol %1%]
volume [CdVol]

?section G macro
var EditLastSrc %*%
EDIT;SET TABS 10 20 30 40 50 60 70;SET JOIN 80;G [EditLastSrc]

?section GS macro
var SrcFile %*%
EDIT;SET TABS 10 20 30 40 50 60 70;SET JOIN 80;G [SrcFile]S

?section O macro
var ObeyVol %1%
[#if [#emptyv ObeyVol] |then|
     #output ([ObeyVol]) doesn't exist.
|else|
   [#if [#fileinfo/existence/[ObeyVol]] |then|
      #push Found
      edit /OUTV Found,PRI 139/[ObeyVol] R;LB/?SECTION/RB/ ROUTINE/RN/*/;E
      [#if [#linecount Found] > 2 |then|
         echo T [ObeyVol]
      |ELSE|
         echo OBEY [ObeyVol]
      ]
      #pop  Found
   |else|
      #output The default Obey File hasn't been set yet. Try: O obeyfile
   ]
]
[#if [#empty %2%] |then| |else| O %2 to 99%]

?section BYE       macro
========================
CSAVE
LOGOFF

?section CLOAD     macro
========================
#PUSH WS_VOLUME
#SET WS_VOLUME [#DEFAULTS]
VOLUME
O DEFAULTS
VOLUME [WS_VOLUME]
#POP WS_VOLUME

?section CSAVE     macro
========================
#push WS_VOLUME
#set  WS_VOLUME [#DEFAULTS]
VOLUME
#FRAME
#PUSH #INLINEPREFIX
#SET  #INLINEPREFIX --
edit/INLINE/DEFAULTS !
-- DQ ! F/L
-- na;100 /#set PCName      [PCName]/
-- na;100 /#set PCServer    [PCServer]/
-- na;100 /#set SrcFile     [SrcFile]/
-- na;100 /#set ObeyVol     [ObeyVol]/
-- na;100 /#set CdVol       [CdVol]/
-- na;100 /#set SrcFile     [SrcFile]/
-- na;100 /#set COut        [COut]/
-- na;100 /#set EditLastSrc [EditLastSrc]/
-- na;100 /#set CdVol       [CdVol]/
-- E
VOLUME [WS_VOLUME]
#UNFRAME

?section FILESPEC macro
[#if [#fileinfo /existence/ %1%] |then|
    #output /hold/ [#fileinfo/fullname/ %1%]
    #output /column 35,hold/
    [#case [#fileinfo /filestructure/ %1%]
         |0| #output /hold/ U:
         |1| #output /hold/ R:
         |2| #output /hold/ E:
         |3| #output /hold/ K:
         |otherwise| ]
    #output /column 37,hold/ [#fileinfo/eof/ %1%]
    #output /column 44,hold/&
        [_CONTIME_TO_TEXT [#CONTIME [#fileinfo/modification/%1%]]]
    #output /column 72,hold/ [#fileinfo/owner/ %1%]
|else|
    #output /hold/ File %1% does not exist ]
#output

?section SCUPINFO macro
#frame
#push OUTLIST
SCUP /OUTV OUTLIST/INFO %*%
#output [#LINEGET OUTLIST 1 FOR 1]
#output [#LINEGET OUTLIST 5 FOR 1]
#unframe

?section CCOMPARE macro
=======================
var SrcFile %1%

set_SrcFile [SrcFile]
compare [SrcFile]s, $tech1d.source.[SrcFile]s
[#if [#empty %2%] |then| |else| CCOMPARE %2 to 99%]

?section set_SrcFile macro
=========================

var SrcFile %1%
set_SysIni


?section COMPF    macro
=======================
var  PrintFile file
COMP_CheckSrc %1%
[#if [#empty %2%] |then| |else| COMPF %2 TO 99%]

?SECTION CL ALIAS
COMPP
?section COMPP    macro
=======================
var  PrintFile print
COMP_CheckSrc %1%
[#if [#empty %2%] |then| |else| COMPP %2 TO 99%]

?SECTION CNL ALIAS
COMP

?section COMP     macro
=======================
var  PrintFile none
COMP_CheckSrc %1%
[#if [#empty %2%] |then| |else| COMP  %2 TO 99%]

?section COMP_CheckSrc macro
=======================
[#IF [#FILEINFO/EXISTENCE/DEFINES] |THEN| O DEFINES]
set_SrcFile %1%
SET_SrcLanguage

[#case [PrintFile]
|file|
echo FUP PURGE $dev2.TESTLST.[SrcFile]!
#set PrintFile $dev2.TESTLST.[SrcFile]

|print|
echo SPOOLCOM $PPLS;JOB (LOC #[SrcLanguage].[SrcFile]),DELETE!
#set PrintFile $P.#[SrcLanguage].[SrcFile]
|otherwise| #set PrintFile
]

[#case [SrcLanguage]
   |SQL|       COMP_SQL
   |SCOBOL|    COMP_SCOBOL
   |C|         COMP_C
   |TAL|       COMP_TAL
   |otherwise| >>>> Can't Compile [SrcFile]
        ]


?section SET_SrcLanguage macro
var SrcFile
#push TMP_SRC TMP_OBJ
[#if [#fileinfo/existence/ [SrcFile]S] |then|
   #set TMP_SRC [SrcFile]S
   #set TMP_OBJ [SrcFile]O
|else|
   [#if [#fileinfo/existence/ [SrcFile]] |then|
      #set TMP_SRC [SrcFile]
      #set TMP_OBJ [SrcFile]
   ]
]

[#if  [#empty [TMP_SRC]]
|then|
   #output Cannot locate [SrcFile]
|else|
   CheckSource [TMP_SRC] [TMP_OBJ]
]
#pop TMP_SRC


?section CheckSource macro
==========================
var SrcLanguage SQL

#push Found
edit /OUTV Found,PRI 139/%1% R;LB/ SCREEN /RB/ SECTION/RN/*/;E
[#if [#linecount Found] > 2 |then| #SET SrcLanguage SCOBOL ]
#pop  Found

#push Found
edit /OUTV Found,PRI 139/%1% R;LB/ $SYSTEM.SYSTEM.EXTDECS/;E
[#if [#linecount Found] > 2 |then| #SET SrcLanguage TAL ]
#pop  Found

#push Found
edit /OUTV Found,PRI 139/%1% R;LB/#include/r/[#if [#linecount Found] > 2 |then| #SET SrcLanguage C ]
#pop  Found
#output ------ SOURCE IS [SrcLanguage]
#push Found
#set  Found %1%
[#case [#charget [#shiftstring Found] 1 for 1]
|N| SrcLanguage
|otherwise|
]
#pop  Found

?section COMP_SCOBOL macro
#OUTPUT ------------------------ SCOBOL ------------------------------
#PUSH MYS
#SET  MYS [#FILEINFO/VOLUME/[SrcFile]S].[#FILEINFO/SUBVOL/[SrcFile]S]
echo  VOLUME $dev1.COPYSRC

[#IF [#EMPTYV PrintFile] |THEN|
   echo SCOBOLX/IN [MYS].[SrcFile]S/[TST_POBJ];NOLIST
|ELSE|
   echo SCOBOLX/IN [MYS].[SrcFile]S,OUT [PrintFile]/[TST_POBJ]
]
[#IF (_COMPLETION:COMPLETIONCODE > 1) |THEN|
     #OUTPUT **** ERROR **** CHECK %1%
]

ECHO VOLUME [MYS]
#POP MYS
#OUTPUT --------------------------------------------------------------

?section COMP_TAL macro
=========================
#push MYS
#set  MYS [#FILEINFO/VOLUME/[SrcFile]S].[#FILEINFO/SUBVOL/[SrcFile]S]
echo  VOLUME $dev1.COPYSRC
#output ------------------------------------------------------------ TAL BEG

[#IF [#EMPTYV PrintFile] |THEN|
echo TAL/IN [MYS].[SrcFile]S/[TST_OBJ];RUNNABLE;NOLIST
|ELSE|
echo TAL/IN [MYS].[SrcFile]S/[TST_OBJ];RUNNABLE
   echo TAL/IN [MYS].[SrcFile]S,OUT [PrintFile]/[TST_POBJ]
]
[#IF (_COMPLETION:COMPLETIONCODE > 1) |THEN|
     #OUTPUT **** ERROR **** CHECK %1%
]

echo VOLUME [MYS]
#pop MYS
#output ------------------------------------------------------------ TAL END

?section COMP_C macro
=========================

#PUSH MYS
#push MYS
#set  MYS [#FILEINFO/VOLUME/[SrcFile]S].[#FILEINFO/SUBVOL/[SrcFile]S]
echo  VOLUME $dev1.COPYSRC
#output -------------------------------------------------------------- C BEG

[#IF [#EMPTYV PrintFile] |THEN|
echo C/IN [MYS].[SrcFile]S/[TST_OBJ];RUNNABLE,NOLIST
|ELSE|
echo C/IN [MYS].[SrcFile]S,OUT [PrintFile]/[TST_OBJ];RUNNABLE,NOLIST
]
[#IF (_COMPLETION:COMPLETIONCODE > 1) |THEN|
     #OUTPUT **** ERROR **** CHECK %1%
]
ECHO VOLUME [MYS]
#POP MYS
#output -------------------------------------------------------------- C END


?SECTION COMP_SQL MACRO
=======================
#PUSH MYS
#push MYS
#set  MYS [#FILEINFO/VOLUME/[SrcFile]S].[#FILEINFO/SUBVOL/[SrcFile]S]
echo  VOLUME $dev1.COPYSRC
echo PARAM SYMBOL-BLOCKS 8
[#IF [#fileinfo/existence/ [TST_REN]] |then|
     ECHO SQLCI;PURGE [TST_REN] !;EXIT]
[#IF [#fileinfo/existence/ [TST_OBJ]] |then|
   ECHO SQLCI;FUP RENAME [TST_OBJ],[TST_REN];EXIT]

#output ---------------------------------------------------------COBOL85 BEG
[#IF [#EMPTYV PrintFile] |THEN|
     echo COBOL85/IN [MYS].[SrcFile]S/[TST_OBJ];nolist;SUPPRESS;ENV COMMON
|else|
     echo cobol85/IN [MYS].[SrcFile]S,OUT [PrintFile]/[TST_OBJ];ENV COMMON
]

ECHO VOLUME [MYS]
[#IF (_COMPLETION:COMPLETIONCODE > 1) |THEN|
    #OUTPUT **** COBOL85 ERROR ****
|ELSE|
    #OUTPUT ---- COBOL85 SUCCESSFULL
    #output ---------------------------------------------------------COBOL85 END
    COMP_SQLCOMP %1%
]

?SECTION COMP_SQLCOMP MACRO
===========================
#PUSH LstVol


#output -------------------------------------------------------- SQLCOMP BEG
echo SQLCOMP/IN [TST_OBJ],OUTV LstVol/CATALOG $DEV3.MISCCATL
[#IF ([#LINEFIND LstVol 1 No SQL source ]>0) |THEN|
    #OUTPUT Sql Compiling is not needed for this program
|ELSE|
   [#IF (_COMPLETION:COMPLETIONCODE < 0) |THEN|
       #OUTPUT *** SQLCOMP WARNING *** CHECK $P.#COBOL.[SrcFile]
       #PUSH #OUT
       #SET #OUT $P.#SQLCOMP.[SrcFile]
       #OUTPUTV LstVol
       #POP #OUT
   |ELSE|
      [#IF (_COMPLETION:COMPLETIONCODE > 1) |THEN|
          #OUTPUT **** SQLCOMP ERROR **** CHECK $P.#SQLCOMP.[SrcFile]
          #PUSH #OUT
          #SET #OUT $P.#SQLCOMP.[SrcFile]
          #OUTPUTV LstVol
          #POP #OUT
      |ELSE|
          #output SQLCOMP successful: [_COMPLETION:COMPLETIONCODE]
          #PUSH #OUT
          #SET #OUT $P.#SQLCOMP.[SrcFile]
          #OUTPUTV LstVol
          #POP #OUT
]  ]  ]
#output -------------------------------------------------------- SQLCOMP END

#POP LstVol

?SECTION PRINT MACRO
FUP COPY %1%,$P
[#if [#empty %2%] |then| |else| PRINT %2 to 99%]

?SECTION SQCOST MACRO
SQLCOMP/IN $dev2.TESTOBJ.%1%,OUT $P.#SQCOST/ &
STOREDDEFINES EXPLAIN PLAN NORECOMPILE

?section LOG macro
[#if [#empty %1%] |then|
  EDIT $dev2.TEST.LOG2009;XVS L-20;E
|else|
  #frame
  #push #out
  #set  #width 230
  #push  wYY wMM wDD wHH wMI
  #setmany  wYY wMM wDD wHH wMI, [#contime [#timestamp]]
  [#IF [wYY]< 10 |THEN| #SET wYY 0[wYY]]
  [#IF [wMM]< 10 |THEN| #SET wMM 0[wMM]]
  [#IF [wDD]< 10 |THEN| #SET wDD 0[wDD]]
  [#IF [wHH]< 10 |THEN| #SET wHH 0[wHH]]
  [#IF [wMI]< 10 |THEN| #SET wMI 0[wMI]]
  #set  #out $dev2.TEST.LOG[wYY]
  #output [wMM]/[wDD]/[wYY] [wHH]:[wMI]-> %*%
  #set  #width 80
  #pop  #out
  #unframe
]
?section dir ALIAS
fileinfo

?section sv macro
fup subvols %1%

?SECTION CLS MACRO
#FRAME
 [#DEF ascii STRUCT
  BEGIN
  BYTE byt5(0:1)
   value 27 73;
  CHAR clr(0:1)
   redefines byt5;
  END;
 ]
#OUTPUT [ascii:clr(0:1)]
#UNFRAME

?section tt macro
var tfile %1%
t [tfile]
?section file macro
volume $dev2.testfile

Thursday, July 29, 2010 8:35:46 PM, From: jim, To: Tandem