Index: mttroot/mtt/cc/mtt_m2cc.sh ================================================================== --- mttroot/mtt/cc/mtt_m2cc.sh +++ mttroot/mtt/cc/mtt_m2cc.sh @@ -115,10 +115,11 @@ decrement_indices () { # first section appends '-1' to container indices # to convert from FORTRAN-type numbering to C-type numbering + # and C-type indices () to FORTRAN-type [] sed 's/mtta(\([0-9][0-9]*\),\([0-9][0-9]*\))/mtta[\1-1,\2-1]/g' |\ sed 's/mttax(\([0-9][0-9]*\))/mttax[\1-1]/g' |\ sed 's/mttdx(\([0-9][0-9]*\))/mttdx[\1-1]/g' |\ sed 's/mttedx(\([0-9][0-9]*\))/mttedx[\1-1]/g' |\ sed 's/mttpar(\([0-9][0-9]*\))/mttpar[\1-1]/g' |\ @@ -128,46 +129,45 @@ sed 's/mttyz(\([0-9][0-9]*\))/mttyz[\1-1]/g' |\ sed 's/mttz(\([0-9][0-9]*\))/mttz[\1-1]/g' |\ sed 's/mttopen(\([0-9][0-9]*\))/mttopen[\1-1]/g' |\ \ # next sections tidy the code up a bit, but are not necessary - sed 's/1\-1\([\,\)]\)/0\1/g' |\ - sed 's/2\-1\([\,\)]\)/1\1/g' |\ - sed 's/3\-1\([\,\)]\)/2\1/g' |\ - sed 's/4\-1\([\,\)]\)/3\1/g' |\ - sed 's/5\-1\([\,\)]\)/4\1/g' |\ - sed 's/6\-1\([\,\)]\)/5\1/g' |\ - sed 's/7\-1\([\,\)]\)/6\1/g' |\ - sed 's/8\-1\([\,\)]\)/7\1/g' |\ - sed 's/9\-1\([\,\)]\)/8\1/g' |\ - \ - sed 's/10\-1\([\,\)]\)/9\1/g' |\ - sed 's/20\-1\([\,\)]\)/19\1/g' |\ - sed 's/30\-1\([\,\)]\)/29\1/g' |\ - sed 's/40\-1\([\,\)]\)/39\1/g' |\ - sed 's/50\-1\([\,\)]\)/49\1/g' |\ - sed 's/60\-1\([\,\)]\)/59\1/g' |\ - sed 's/70\-1\([\,\)]\)/69\1/g' |\ - sed 's/80\-1\([\,\)]\)/79\1/g' |\ - sed 's/90\-1\([\,\)]\)/89\1/g' |\ - \ - sed 's/100\-1\([\,\)]\)/99\1/g' |\ - sed 's/200\-1\([\,\)]\)/199\1/g' |\ - sed 's/300\-1\([\,\)]\)/299\1/g' |\ - sed 's/400\-1\([\,\)]\)/399\1/g' |\ - sed 's/500\-1\([\,\)]\)/499\1/g' |\ - sed 's/600\-1\([\,\)]\)/599\1/g' |\ - sed 's/700\-1\([\,\)]\)/699\1/g' |\ - sed 's/800\-1\([\,\)]\)/799\1/g' |\ - sed 's/900\-1\([\,\)]\)/899\1/g' |\ + sed 's/1\-1\([],]\)/0\1/g' |\ + sed 's/2\-1\([],]\)/1\1/g' |\ + sed 's/3\-1\([],]\)/2\1/g' |\ + sed 's/4\-1\([],]\)/3\1/g' |\ + sed 's/5\-1\([],]\)/4\1/g' |\ + sed 's/6\-1\([],]\)/5\1/g' |\ + sed 's/7\-1\([],]\)/6\1/g' |\ + sed 's/8\-1\([],]\)/7\1/g' |\ + sed 's/9\-1\([],]\)/8\1/g' |\ + \ + sed 's/10\-1\([],]\)/9\1/g' |\ + sed 's/20\-1\([],]\)/19\1/g' |\ + sed 's/30\-1\([],]\)/29\1/g' |\ + sed 's/40\-1\([],]\)/39\1/g' |\ + sed 's/50\-1\([],]\)/49\1/g' |\ + sed 's/60\-1\([],]\)/59\1/g' |\ + sed 's/70\-1\([],]\)/69\1/g' |\ + sed 's/80\-1\([],]\)/79\1/g' |\ + sed 's/90\-1\([],]\)/89\1/g' |\ + \ + sed 's/100\-1\([],]\)/99\1/g' |\ + sed 's/200\-1\([],]\)/199\1/g' |\ + sed 's/300\-1\([],]\)/299\1/g' |\ + sed 's/400\-1\([],]\)/399\1/g' |\ + sed 's/500\-1\([],]\)/499\1/g' |\ + sed 's/600\-1\([],]\)/599\1/g' |\ + sed 's/700\-1\([],]\)/699\1/g' |\ + sed 's/800\-1\([],]\)/799\1/g' |\ + sed 's/900\-1\([],]\)/899\1/g' |\ sed 's/\([(,]\)0\([0-9]\)/\1\2/g' }; -fortran_to_c_paren () +c_to_fortran_paren () { - # converts [i] to (i) - sed 's/\[\([^[]*\)\]/(\1)/g' + tr "[]" "()" } fix_pow () { # matches number^number where number is one or more digits and one or zero decimal points @@ -195,11 +195,11 @@ mtt_header ${SYS} ${REP} "oct" > ${TMP} find_code ${TMP} head > ${OUT} rep_declarations >> ${OUT} find_code ${IN} body |\ decrement_indices |\ - fortran_to_c_paren |\ + c_to_fortran_paren |\ fix_comment_delimiter cc |\ fix_pow |\ strip_junk |\ ${PARSER} >> ${OUT} rep_footer >> ${OUT}