home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / viscobv7.zip / vac22os2 / ibmcobol / macros / iwzmchk.lxl < prev    next >
Text File  |  1997-12-17  |  9KB  |  236 lines

  1. /* Reinvoking as "REXX %0 %1 %2 %3 %4 %5 %6 %7 %8 %9"  2>nul
  2. @goto runit */
  3. /*********************************************************************/
  4. /* Licensed Material - Property of IBM                               */
  5. /* 5639-B92 , 5639-D65 (C) Copyright IBM Corp., 1997, 1998           */
  6. /* All rights reserved.                                              */
  7. /* US Government Users Restricted Rights - Use, duplication or       */
  8. /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */
  9. /*********************************************************************/
  10. trace off;
  11. signal on novalue;
  12. parse source opsys . whoami rest;
  13. /* cobolroot is now set by iwzmIR.CMD */
  14. if opsys = 'OS/2' then
  15.   do;
  16.   env = 'OS2ENVIRONMENT';
  17.   callit = '@Call';
  18.   call RxFuncAdd 'SysLoadFuncs','RexxUtil','SysLoadFuncs';
  19.   call SysLoadFuncs;
  20.   end;
  21. else
  22.   do;
  23.   env = 'ENVIRONMENT';
  24.   callit = '@Rexx';
  25.   end;
  26. tempdir = value('TMP',,env);
  27. tempout = SysTempFileName(tempdir'\TM?????.OUT');
  28. tempout2 = SysTempFileName(tempdir'\T2?????.OUT');
  29. xx = Get_MVSINFO();
  30. if xx <> 0 then
  31.   exit 16;
  32. call Set_MVSINFO_Vars;
  33. if tracemod = '*' |,
  34.   wordpos(translate(substr(whoami,lastpos('\',whoami)+1)),tracemod) > 0 then
  35.   do;
  36.   if trace > 3 then trace results;
  37.   if trace > 4 then trace ?;
  38.   end;
  39. parse arg the_input_args;
  40. call traceit 1 'Entry' '!'the_input_args'!';
  41. /********************************************************
  42. * iwzmCHK.LXL - LOAD MACRO FOR MAKE FILE OUTPUT        *
  43. *                                                       *
  44. * THIS MACRO IS INVOKED BY LPEX WHENEVER A FILE WITH AN *
  45. * EXTENSION OF .MFO IS EDITED. IT'S DESIGNED TO BE USED *
  46. * ON FILES WHICH CONSIST OF COMPILER MESSAGES E.G. THE  *
  47. * OUTPUT FROM A MAKE.                                   *
  48. * i.e. nmake /f test.mak test.dll >errors.mfo           *
  49. *      then setup association for *.mfo and MFO.LXL     *
  50. *      then edit errors.mfo                             *
  51. *                                                       *
  52. ********************************************************/
  53.  
  54. 'SET CLASSES DATA MESSAGE'
  55. 'SET HIGHLIGHT MESSAGE'
  56. 'SET PROTECT DATA'
  57. 'SET ACTION.BUTTON1DOWN ;PRIMITIVE SETCURSOR;EMSG SELECT'
  58. 'SET ACTION.BUTTON1DRAG ;PRIMITIVE SETCURSOR;EMSG EXPANDSEL'
  59. 'SET ACTION.BUTTON1DOUBLE ;PRIMITIVE SETCURSOR;EMSG CLEAR;EMSG FILESELECT;SSHOW;macro iwzmems.lxl'
  60. 'SET ACTION.F1 EMSG HELP'
  61. 'EXTRACT SYNONYM.QUIT INTO QUIT'
  62. if QUIT = '' then
  63.    'SET SYNONYM.QUIT 4 LXI QQUIT'
  64.  
  65. 'SET ACTIONBAR.LP_ACTIONS.SEPARATOR ;'
  66. 'SET ACTIONBAR.LP_ACTIONS.Select_~all_messages EMSG ALL'
  67. 'SET ACCELERATOR. A-X'
  68. 'SET ACTIONBAR.LP_ACTIONS.Dese~lect_all_messages EMSG CLEAR'
  69. 'SET ACTIONBAR.LP_ACTIONS.~Process_selected_messages macro iwzmems.lxl'
  70. 'SET ACCELERATOR. C-E'
  71. 'SET ACTIONBAR.LP_ACTIONS.~Delete_selected_messages EMSG DELETE'
  72. 'SET ACTIONBAR.LP_LOCATE.~Next_error EMSG NEXT'
  73. 'SET ACCELERATOR. A-N'
  74. 'SET ACTIONBAR.LP_OPTIONS.~Message_severity.~Information EMSG OPTSEV I'
  75. 'SET ACTIONBAR.LP_OPTIONS.~Message_severity.~Warning     EMSG OPTSEV W'
  76. 'SET ACTIONBAR.LP_OPTIONS.~Message_severity.~Error       EMSG OPTSEV E'
  77. 'SET ACTIONBAR.LP_OPTIONS.~Message_severity.~Severe      EMSG OPTSEV S'
  78. 'SET ACTIONBAR.LP_OPTIONS.~Message_severity.~Terminal    EMSG OPTSEV T'
  79.  
  80. 'EXTRACT ACTIONBARID.LP_OPTIONS.~Message_severity.~Information INTO ID_I'
  81. 'EXTRACT ACTIONBARID.LP_OPTIONS.~Message_severity.~Warning     INTO ID_W'
  82. 'EXTRACT ACTIONBARID.LP_OPTIONS.~Message_severity.~Error       INTO ID_E'
  83. 'EXTRACT ACTIONBARID.LP_OPTIONS.~Message_severity.~Severe      INTO ID_S'
  84. 'EXTRACT ACTIONBARID.LP_OPTIONS.~Message_severity.~Terminal    INTO ID_T'
  85.  
  86. 'SET GLOBAL.MFO_SEV_OPTIONS 11111'
  87. 'EMSG INIT' ID_I ID_W ID_E ID_S ID_T
  88. call traceit 1 'Normal exit';
  89. exit 0;
  90. Get_MVSINFO:
  91. Procedure expose env cobolroot mvsinfo. whoami tempdir trace
  92.  
  93. rtn = 0
  94. null = '0000'x
  95. crlf = '0D0A'x
  96. mvsinfo. = ''
  97. mvsinfoQ = translate('iwzm_MVSINFO.DAT_YALE');
  98.  
  99. oldq = rxqueue('Set',mvsinfoQ)   /* switch to mvsinfo queue */
  100. if queued() = 0 then do                   /* if Q is missing we'll */
  101.   qname = rxqueue('Create',mvsinfoQ)      /* create it and put a bad */
  102.   if qname = mvsinfoQ then push 'Sven'    /* timestamp on it, else */
  103.   else x=rxqueue('Delete',qname)          /* it was in use (we hope) */
  104.   end                                     /* so we'll assume we can */
  105. parse pull mvsstuff; push mvsstuff        /* get/replace Q contents */
  106. parse value mvsstuff with ts (null) . cobolroot (null) mvsstuff /* get */
  107.                                         /* timestamp and cobolroot */
  108. if ts <> 'Sven' then do;
  109.   mvsinfo = cobolroot'\MACROS\MVSINFO.DAT'
  110.   bad_mvsinfo = '    **' whoami '****'crlf'    **error*' mvsinfo,
  111.                 'is unavailable, missing or empty **'
  112.  
  113.   x=SysFileTree(mvsinfo,'ts','F')       /* get MVSINFO.DAT's timestamp */
  114.   if ts.0 <> 1 then do
  115.     say bad_mvsinfo
  116.     return 12;
  117.     end
  118.   parse var ts.1 v0 v1 v2 .
  119.   timestamp ='mvsinfo.dat.timestamp' v0 v1 v2
  120.   end;
  121. else
  122.   timestamp = 'Yale'
  123. if timestamp <> ts then do              /* timestamps match? */
  124.   pull mvsstuff                         /* no, remove bad contents */
  125.   rtn = "iwzmIR.CMD"()                /* ask for new stuff */
  126.   if rtn = 0 then do
  127.     parse pull mvsstuff; push mvsstuff    /* get/replace Q contents */
  128.                                         /* remove timestamp and     */
  129.                                         /* cobolroot                */
  130.     parse value mvsstuff with . (null) . cobolroot ( null) mvsstuff
  131.     end
  132.   end
  133. qname = rxqueue('Set',oldq)      /* restore normal queue */
  134.  
  135. do while (mvsstuff<>'') & (rtn=0)   /* mvsinfo. structure */
  136.   parse value mvsstuff with key val (null) mvsstuff
  137.   if mvsinfo.key = '' then do       /* e.g. mvsinfo.TYPE='' */
  138.     mvsinfo.KEYS = mvsinfo.KEYS key /* no substitution for KEYS */
  139.     mvsinfo.key.1 = val             /* e.g. mvsinfo.TYPE.1=val  */
  140.     mvsinfo.key = 1                 /* e.g. mvsinfo.TYPE=1      */
  141.     end
  142.   else do
  143.     x = mvsinfo.key + 1             /* e.g. mvsinfo.TYPE+1     */
  144.     mvsinfo.key.x = val             /* e.g. mvsinfo.TYPE.2=val */
  145.     mvsinfo.key = x                 /* e.g. mvsinfo.TYPE=2     */
  146.     end
  147.   end
  148.  
  149. return rtn
  150.  
  151. Set_MVSINFO_Vars:
  152.  
  153.  parse var mvsinfo.CLOSECMD.1 closecmd;
  154.  parse var mvsinfo.CLOSEFILE.1 closefile;
  155.  parse var mvsinfo.FILESYS.1 filesys accessmon testaccess;
  156.  parse var mvsinfo.FSSTARTCMD.1 fsstartcmd;
  157.  parse var mvsinfo.FSSTOPCMD.1 fsstopcmd;
  158.  parse var mvsinfo.HEADER.1 header;
  159.  parse var mvsinfo.JOBLOG.1 joblog;
  160.  parse var mvsinfo.MAXCMD.1 maxcmd;
  161.  parse var mvsinfo.LANGUAGE.1 language;
  162.  parse var mvsinfo.MOUNTCMD.1 mountcmd;
  163.  parse var mvsinfo.MVSCOMM.1 mvscomm;
  164.  parse var mvsinfo.iwzmEDT.1 iwzmedt;
  165.  parse var mvsinfo.NFS.1 nfs;
  166.  parse var mvsinfo.NULLSTDIN.1 nullstdin;
  167.  parse var mvsinfo.OUTSHOW.1 outshow;
  168.  parse var mvsinfo.PROTSAVE.1 protsave tempmult;
  169.  parse var mvsinfo.PWD.1 pwd pwdasis pwdt pwde;
  170.  parse var mvsinfo.READTIMEOUT.1 readtimeout;
  171.  parse var mvsinfo.REXECCMD.1 rexeccmd;
  172.  parse var mvsinfo.SDU.1 sdu;
  173.  parse var mvsinfo.SIGYCLST.1 sigyclst;
  174.  parse var mvsinfo.SYSPROC.1 sysproc;
  175.  parse var mvsinfo.SYSTEM.1 system;
  176.  parse var mvsinfo.TEMPDRIVE.1 tempdrive;
  177.  parse var mvsinfo.TEMPDATA.1 tempdata;
  178.  parse var mvsinfo.TESTFILE.1 testfile;
  179.  parse var mvsinfo.TRACE.1 trace tracekeep;
  180.  parse var mvsinfo.TRACECMD.1 tracecmd;
  181.  parse var mvsinfo.TRACEMOD.1 tracemod;
  182.  parse var mvsinfo.UMOUNTCMD.1 umountcmd;
  183.  parse var mvsinfo.USERID.1 userid;
  184.  parse var mvsinfo.WORKSYS.1 worksys;
  185.  parse var mvsinfo.WRITETIMEOUT.1 writetimeout;
  186.  
  187.  parse var mvsinfo.DRIVE numdrive;
  188.  if numdrive = '' then
  189.    numdrive = 0;
  190.  do ii = 1 to numdrive;
  191.    parse var mvsinfo.DRIVE.ii,
  192.              drive.ii highqual.ii trans.ii mapping.ii sidefile.ii;
  193.    end;
  194.  
  195.  parse var mvsinfo.TYPE numtype;
  196.  if numtype = '' then
  197.    numtype = 0;
  198.  do ii = 1 to numtype;
  199.    parse var mvsinfo.TYPE.ii type.ii ext.ii;
  200.    end;
  201.  
  202. return
  203.  
  204. /* */
  205. Traceit:
  206.  parse arg iwz_trc_level iwz_trc_message;
  207.  if iwz_trc_level > trace then
  208.    return;
  209.  if pwd <> '********' & pwd <> '++++++++' & pwd <> '========' then
  210.    do;
  211.    do forever;
  212.      if pos(pwd,iwz_trc_message) = 0 then
  213.        leave;
  214.      parse var iwz_trc_message iwz_trc_message1 (pwd) iwz_trc_message2;
  215.      iwz_trc_message = iwz_trc_message1||'********'||iwz_trc_message2
  216.      end;
  217.    end
  218.  iwz_trc_message = date('O') time('L') whoami':' iwz_trc_message;
  219.  xx = lineout(tempdir'\iwzmTRC.TRC',iwz_trc_message);
  220.  xx = stream(tempdir'\iwzmTRC.TRC','C','CLOSE');
  221.  if tracecmd <> '' then
  222.    interpret tracecmd;
  223. return;
  224.  
  225. /* */
  226. sayit:
  227.  parse arg iwz_sayit_arg;
  228.  if trace > 2 then
  229.    call traceit 3 '--->' iwz_sayit_arg;
  230.  say iwz_sayit_arg;
  231. return;
  232. /*
  233. :runit
  234. @rexx %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
  235. @rem */
  236.