BEGIN { hdr=0; dbc="dbproc"; spf=0; nspf=0;
        dbr=0; ndbr=0; tdbr=0;
        row=0; nrow=0; trow=0; print " " > "dblibSQLs.txt" }

/^---/ && hdr==0 { print $0; print "#include \"wpilppc.h\""; hdr=1; next }
/#include/ {next }

/DBSETLUSER/ { 
print "    DBSETLUSER(login,LOGNAME);    /* Login name */";
print "    DBSETLPWD(login,PASSWORD);    /* Password   */";
print "    DBSETLAPP(login,APPNAME);";
print "    DBSETLVERSION(login, DBVER60);"; next }

/DBSETLPWD/ {next }
/DBSETLAPP/ {next }

/#define APPNAME/ { gsub(/\.c/,""); print $0; next }

/= *dbopen/ { split($0,a,"="); gsub(" ","",a[1]); dbc=a[1]; 
              print "    " dbc "=dbopen(login,SQLSERVER);"; next }

/^ *dbuse *\(/ { split($0,a,"("); split(a[2],b,","); gsub(" ","",b[1]); dbc=b[1];
print "    dbuse(" dbc "," b[2];
print " ";
print "    dbmsghandle((DBMSGHANDLE_PROC)msg_handler);";
print "    dberrhandle((DBERRHANDLE_PROC)err_handler);";
print " ";
print "    rundate(" dbc ");  /* global today is dd-Mon-yyyy */";      
print " "; next }

 { gsub(/rundate *\(\)/,"today",$0); 
   gsub(/\\"/,"'",$0); 
   gsub(/\\'/,"'",$0) }
 
/^ *dbcmd *\(/ { split($0,a,"("); split(a[2],b,","); gsub(" ","",b[1]); dbc=b[1];
print "    dbcmd(" dbc "," b[2];
print "    dbsqlexec(" dbc ");";
print "    dbresults(" dbc ");"; next }

/^ *dbsqlexec *\(/ { next }

/while.*dbresults/ { dbr=1; ndbr=NR; tdbr=0;  next }
$1=="{" && NR==(ndbr+1) { print $0 "  // DBRESULTS BLOCK NOT NEEDED"; tdbr=1; next }

/result_code.*SUCCEED/ && NR<=(ndbr+4)  { next }
/^ *break *;/ && NR<=(ndbr+4)  { next }

dbr==1 && $1=="{" { tdbr++ }

dbr==1 && $1=="}" { tdbr--; 
                    if(tdbr==0) { dbr=0; ndbr=0; 
                                  $0 = $0 "  // DBRESULTS BLOCK NOT NEEDED" } }


/while.*dbnextrow/ { row=1; nrow=NR; trow=0; print $0; next }
$1=="{" && NR==(nrow+1) { print $0 "  // DBNEXTROW Block Begin"; trow=1; next }

row==1 && $1=="{" { trow++ }

row==1 && $1=="}" { trow--; 
                   if(trow==0) { row=0; nrow=0; 
                                 print $0 "  // DBNEXTROW Block End"; print " " ; 
                                 print "        dbcancel(" dbc ");"; next } }

/^ *sprintf *\(.*, *$/ { spf=1; nspf++; print $0 "  // QUERY NUMBER " nspf;
                        print "print \"// QUERY NUMBER " nspf "\"" >> "dblibSQLs.txt" ;
                        next }
                      
spf==1 && /" *, *$/ { SQL=$0; gsub(/%/,"PERC",SQL);
                              gsub(/" *, *$/,"",SQL); spf=0;
                              gsub(/"/,"",SQL); print SQL >> "dblibSQLs.txt";
                              print " " >> "dblibSQLs.txt" }
                              
spf==1 { SQL=$0; gsub(/%/,"PERC",SQL);
                 gsub(/"/,"",SQL); print SQL >> "dblibSQLs.txt" }

spf==1 && /; *$/ { spf=0; print " " >> "dblibSQLs.txt" }

/dbbind/ { gsub(/STRINGBIND/,"NTBSTRINGBIND",$0) }  

/DBVARYCHAR/ { gsub(/DBVARYCHAR/,"DBCHAR    ",$0) }

/dbclose/ { gsub(/dbclose\(\)/,"dbclose(" dbc ")",$0) }

{ print $0 }

