Proc.sed



#  Fixup procedure definitions:

#     1. foo() {     -->   proc foo(A)
#        }                 end

#     2. argv holds arguments passed to a .csh script; formal arguments
#        to a C shell procedure are declared, requiring this change
#        (but not inside a comment or quoted string):

#           $1 thru $9  -->   $A[0] thru $A[8]

#        (Note that Hamilton C shell interprets all subscripts as starting
#        at zero.  Also, argv[0] to a shell script is the first argument,
#        not the scriptname unless bsdargv == 1; the name of the script
#        is found in the $scriptname variable.)

#     3. shift       -->   shift A

/^[^#].*()/,/^[   ]*}/{
   /()/s/\([^a-zA-Z]*\)\([a-zA-Z][a-zA-Z0-9_]*\).*/\1proc \2(A)/
   s/^\([^'#]*\)\$1/\1\$A[0]/g
   s/^\([^'#]*\)\$2/\1\$A[1]/g
   s/^\([^'#]*\)\$3/\1\$A[2]/g
   s/^\([^'#]*\)\$4/\1\$A[3]/g
   s/^\([^'#]*\)\$5/\1\$A[4]/g
   s/^\([^'#]*\)\$6/\1\$A[5]/g
   s/^\([^'#]*\)\$7/\1\$A[6]/g
   s/^\([^'#]*\)\$8/\1\$A[7]/g
   s/^\([^'#]*\)\$9/\1\$A[8]/g
   s/^\([^'#]*\)\${1}/\1\${A[0]}/g
   s/^\([^'#]*\)\${2}/\1\${A[1]}/g
   s/^\([^'#]*\)\${3}/\1\${A[2]}/g
   s/^\([^'#]*\)\${4}/\1\${A[3]}/g
   s/^\([^'#]*\)\${5}/\1\${A[4]}/g
   s/^\([^'#]*\)\${6}/\1\${A[5]}/g
   s/^\([^'#]*\)\${7}/\1\${A[6]}/g
   s/^\([^'#]*\)\${8}/\1\${A[7]}/g
   s/^\([^'#]*\)\${9}/\1\${A[8]}/g
   s/shift/shift A/g
   /^[   ]*}/s/}/end/
   }



Hamilton C shell | Free Updates | Free Demo Software | Win32 Training
Y2K | Customer Testimonials | On-line Hamilton C shell User Guide
Home | Email | Support | Company Profile | Distributors | Links



Copyright © 1997-2001 by Hamilton Laboratories. All rights reserved.
You are visitor number . This page was last modified August 14, 2001.