home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rdebug21.zip / RMATCH.KEX < prev    next >
Text File  |  1993-03-25  |  2KB  |  77 lines

  1. /*H* RMATCH.KEX 02-10-93 14:07*/
  2.  /*   test seperately
  3.  signal on error
  4.  signal on halt
  5.  signal on syntax
  6.  */
  7.  Parse source sys .
  8.  if      sys='OS/2'  then sys='OS2'
  9.  else if sys='PCDOS' then sys='DOS'
  10.  if (sys='DOS') + (sys='OS2')>0 then pc?=1
  11.  me='rMATCH'
  12.  If arg(1)='?' Then Exit tell(me)
  13.  Arg m1
  14.  /*check For matching quotes and comments and mark their location*/
  15.  /*with . labels such as .1 .2 .3, etc.*/
  16.  'COMMAND EXTRACT /LINE/WRAP/SIZE/MSGMODE';
  17.  ':0 COMMAND SET WRAP OFF';
  18.  'COMMAND SET MSGMODE OFF';
  19.  'COMMAND SET MSGLINE ON 3 10 O';
  20.  p=0; sq="'"; dq='"'
  21.  If line.1=0 Then line.1 = 1
  22.  start=line.1; '-1'
  23.  Do k=1
  24.    If pc? Then Do
  25.      'COMMAND LOCATE @'sq'@|@'dq'@|@/*@'
  26.      If rc<>0 Then Leave; End
  27.    Else Do
  28.      'COMMAND LOCATE @'sq'@│@'dq'@│@/*@'
  29.      If rc<>0 Then Leave; End
  30.    if k//10 = 0 then 'COMMAND REFRESH'
  31.    'COMMAND extract /curline/line/';
  32.    string=curline.3;
  33.    Do Forever
  34.      Parse Value pos(sq,str) pos(dq,str) pos('/*',str),
  35.      With h i j
  36.      If h=0 Then h=256
  37.      If i=0 Then i=256
  38.      If j=0 Then j=256
  39.      j=min(h,i,j)
  40.      If j=256 Then Leave
  41.      Parse Value 1 substr(str,j,1) With width delimiter
  42.      If delimiter='/' Then Parse Value '*/' 2 With delimiter width
  43.      Parse Value substr(str,1,j-1)'!'substr(str,j+width),
  44.      With temp'!'str
  45.      j=pos(delimiter,str)
  46.      If j>0 Then str=temp substr(str,j+width)
  47.      Else Do;str=temp;leave;end
  48.      If j=0 Then Do
  49.        p=p+1
  50.        'COMMAND POINT .'p 'off'
  51.        'COMMAND POINT .'p
  52.        Leave;
  53.      End;
  54.      string=temp substr(string,j+width)
  55.    End
  56.    '+1'
  57.  End;
  58.  'COMMAND POINT .'p+1 'off'
  59.  'COMMAND LOCATE :'start;
  60.  'COMMAND SET MSGMODE ON'
  61.  If p=0
  62.  Then message='** no lines tagged **'
  63.  Else message='Missing delimiter at points .1 To .'p;
  64.  'COMMAND EMSG' message
  65.  'COMMAND REFRESH'
  66.  'COMMAND SET MSGMODE' msgmode.1
  67.  'COMMAND SET WRAP' wrap.1;
  68.  Exit rc
  69.  
  70.  ERROR:   return -7 0 sigl rdbmsg(810 rc 'in line:' sigl' of' me)
  71.  
  72.  HALT:    return -7 0 sigl rdbmsg(820 'in line:' sigl' of' me)
  73.  
  74.  SYNTAX:  return -7 0 sigl rdbmsg(830 rc 'in line:' sigl' of' me)
  75.  
  76.  
  77.