# recostmob.awk # /* # ************************************************************************* # ** * # ** Copyright (C) 1992-2009 Trans-Mit Pty. Ltd. Melbourne Australia * # ** This software may not be loaned, resold, changed or copied * # ** in any way without the express written permission of author * # ** and Trans-Mit Pty. Ltd., Australia. * # ** * # ************************************************************************* # ** # ** $Header: /usr/local/lib/cake/RCS/rcshead,v 1.10 2004/01/07 02:42:19 root Exp $ # ** $Author: root $ # ** $Date: 2004/01/07 02:42:19 $ # ** $Locker: $ # ** # ************************************************************************* # */ function trim(s) { sub(/^[ \t]*/,"",s) sub(/[ \t]*$/,"",s) return s } function clip(s) { sub(/[ \t]*$/,"",s) return s } function dequote(s) { gsub(/^\"/,"",s) gsub(/\"$/,"",s) return s } function rmspace(s) { gsub(/ /,"",s) gsub(/\//,"-",s) gsub(/['"]/, "", s) return s } #---------------------------------------------------------- function start_database(dbname) { "echo $$" | getline udbcmdid udbcmdid += dbcmdcounter dbcmdcounter += 1 # if not gawk need... dbcmdidf[udbcmdid] = "/tmp/dbcmdidf" udbcmdid ##print "dbcmdidf[" udbcmdid "] = " dbcmdidf[udbcmdid] #system("rm -f " dbcmdidf[udbcmdid] "; touch " dbcmdidf[udbcmdid]) system("rm -f " dbcmdidf[udbcmdid] "; mknod " dbcmdidf[udbcmdid] " p") ##print "Done: clean " dbcmdidf[udbcmdid] #... dbcmd[udbcmdid] = "txsql -s" if ( dbname != "" ) dbcmd[udbcmdid] = dbcmd[udbcmdid] " -d " dbname # if not gawk... dbcmd[udbcmdid] = dbcmd[udbcmdid] " 2>&1 1>>" dbcmdidf[udbcmdid] #dbcmd[udbcmdid] = dbcmd[udbcmdid] " -o " dbcmdidf[udbcmdid] #... ##dbcmd[udbcmdid] = "cat" #print "dbcmd[" udbcmdid "] = " dbcmd[udbcmdid] ## gawk only #print "" |& dbcmd[udbcmdid] #fflush(dbcmd[udbcmdid]) ##dbcmd[udbcmdid] |& getline response ##print "response = [" response "]" # or if not gawk... print "" | dbcmd[udbcmdid] return udbcmdid } function close_database(dbid) { if ( dbcmd[dbid] != "" ) { #print "close_database: dbid = " dbid close(dbcmd[dbid]) #print dbcmd[dbid] " closed." delete dbcmd[dbid] # if not gawk... close(dbcmdidf[dbid]) #print dbcmdidf[dbid] " closed." #system("cp " dbcmdidf[dbid] " 3a") system("rm -f " dbcmdidf[dbid]) #print dbcmdidf[dbid] " removed." delete dbcmdidf[dbid] #... #print "close done." } } function stop_database(dbid) { if ( dbcmd[dbid] == "" ) { # stop all for ( dbid in dbcmd ) close_database(dbid) } else { # stop this one close_database(dbid) } } function execute_sql(dbid,sqlcmd, ainit, rowidx, aline, a_arr, f1, f2, msg_arr) { if ( dbcmd[dbid] == "" ) { printf("ERROR: database not started.") return 1 } sub(/\n$/,"",sqlcmd) sub(/\;$/,"",sqlcmd) #sub(/$/,";\n",sqlcmd) #print "execute_sql: print " sqlcmd "; to " dbcmd[dbid] # unique sql id ++sqlid ## gawk only #print sqlcmd ";" |& dbcmd[dbid] #fflush(dbcmd[dbid]) #return dbcmd[dbid] # else if not gawk print sqlcmd ";" | dbcmd[dbid] #return dbcmdidf[dbid] # init array for ( ainit in result_arr ) { split(ainit,msg_arr,"|") if ( msg_arr[1] == sqlid ) delete result_arr[ainit] } ainit = 1 rowidx = 1 result_arr[sqlid "|" "status"] = "" result_arr[sqlid "|" "sqlcode"] = 0 result_arr[sqlid "|" "sqlerrmsg"] = "" result_arr[sqlid "|" "sqlerrd1"] = 0 result_arr[sqlid "|" "sqlerrd2"] = 0 result_arr[sqlid "|" "sqlerrd3"] = 0 result_arr[sqlid "|" "sqlerrd4"] = 0 result_arr[sqlid "|" "sqlerrd5"] = 0 result_arr[sqlid "|" "sqlerrd6"] = 0 result_arr[sqlid "|" "nrows"] = 0 # gawk #while ( (dbcmd[dbid] |& getline aline) > 0 ) { # else while ( (getline aline 0 ) { if ( ainit ) { # first #print "Got first." ainit = 0 } #print "aline = [" aline "]" split(aline,a_arr,"|") f = 0; f1 = a_arr[++f]; f2 = a_arr[++f]; f3 = a_arr[++f] if ( f1 == "Status:" ) { result_arr[sqlid "|" "status"] = f2 split(f2,msg_arr,"~") sqlcode = int(msg_arr[2]) errmsg = msg_arr[3] if ( msg_arr[1] == "SQLCODE" ) { result_arr[sqlid "|" "sqlcode"] = sqlcode result_arr[sqlid "|" "sqlerrmsg"] = errmsg } if ( msg_arr[4] == "SQLERRD" ) { result_arr[sqlid "|" "sqlerrd1"] = int(msg_arr[5]) result_arr[sqlid "|" "sqlerrd2"] = int(msg_arr[6]) result_arr[sqlid "|" "sqlerrd3"] = int(msg_arr[7]) result_arr[sqlid "|" "sqlerrd4"] = int(msg_arr[8]) result_arr[sqlid "|" "sqlerrd5"] = int(msg_arr[9]) result_arr[sqlid "|" "sqlerrd6"] = int(msg_arr[10]) } result_arr[sqlid "|" "nrows"] = int(f3) if ( sqlcode < 0 ) { print "SQLERROR: " f2 } break } result_arr[sqlid "|" rowidx++] = aline } return sqlid } #---------------------------------------------------------- function ld_mobile(sql1) { printf("ld_SIDMAINTconf()\n") # get from getSIDMAINTconf sql1 = "" sql1 = sql1 "select sidconf.recordno," sql1 = sql1 " sidconf.sid, sidconf.sidmainttype, sdate, edate," sql1 = sql1 " directoryid, sidconf.grid," sql1 = sql1 " datatype, serviceproviderdir, carriercode," sql1 = sql1 " from sidconf, importdatatype" sql1 = sql1 " where sidconf.datatype = importdatatype.importdatatypeid" sql1 = sql1 " and ( (edate IS NULL and sdate <= \"" edate "\")" sql1 = sql1 " or (edate IS NOT NULL and sdate <= \"" edate "\" and edate >= \"" sdate "\")" sql1 = sql1 " )" sql1id = execute_sql(dbid0,sql1) sql1_nrows = result_arr[sql1id "|" "nrows"] print "sql1=[" sql1 "]" for ( i = 1; i <= sql1_nrows; ++i ) { sql1_row = result_arr[sql1id "|" i] split(sql1_row, sql1_arr, "|") f = 0 recordno = clip(sql1_arr[++f]) sid = clip(sql1_arr[++f]) sidmainttype = clip(sql1_arr[++f]) sdate = clip(sql1_arr[++f]) edate = clip(sql1_arr[++f]) directoryid = clip(sql1_arr[++f]) grid = clip(sql1_arr[++f]) datatype = clip(sql1_arr[++f]) serviceproviderdir = clip(sql1_arr[++f]) carriercode = clip(sql1_arr[++f]) grname1 = clip(sql1_arr[++f]) grname3 = clip(sql1_arr[++f]) surname = clip(sql1_arr[++f]) firstname = clip(sql1_arr[++f]) confsid = sid gsub(" ","",confsid) gsub("-","",confsid) confsid_arr[confsid] = 1 sid_arr[confsid] = 1 } if ( sql1_nrows == 0 ) { print " NO ROWS" } } function ld_chargecat(chargecatfile) { printf("ld_chargecat(%s)\n", chargecatfile) system("date") while ( (getline aline < chargecatfile) > 0 ) { split(aline, a_arr, "|") #printf("aline=%s\n", aline) f = 0 chargecatid = clip(a_arr[++f]) chargecat = clip(a_arr[++f]) importdatatypeid = clip(a_arr[++f]) carriercode = clip(a_arr[++f]) rectype = clip(a_arr[++f]) chargeclasstype = clip(a_arr[++f]) globalroaming = clip(a_arr[++f]) Ctag = carriercode "|" rectype "|" chargeclasstype carriercode_chargeclasstype_to_chargecat_arr[Ctag] = chargecat print " carriercode_chargeclasstype_to_chargecat_arr[" Ctag "] = " carriercode_chargeclasstype_to_chargecat_arr[Ctag] # global roaming flag if ( toupper(globalroaming) == "Y" ) { Ctag = carriercode "|" rectype "|" chargeclasstype gloroam_class_arr[Ctag] = 1 print " gloroam_class_arr[" Ctag "] = " gloroam_class_arr[Ctag] } } close(chargecatfile) } #---------------------------------------------------------- rcmobstarted = 0 function startrcmob() { if ( rcmobstarted ) return dbid0 = start_database("catcom") #print "dbid0 = " dbid0 ld_mobile() rcmobstarted = 1 } #---------------------------------------------------------- function recostmob() { startrcmob() return costinclgst }