#! /usr/bin/nawk -f
#
#      dclfilter file_name
#
BEGIN {
#
#   get environment variable DCLDIR
#
    "printenv DCLDIR" | getline dcldir
    if ( dcldir == "" ) {
        print "error in dclfilter : environment variable DCLDIR is not set."
        exit
    }
#
#   list of parameter file names
#
    file["GLP"] = sprintf( "%s%s", dcldir, "/src/math1/syslib/glpqnp.f")
    file["GLI"] = sprintf( "%s%s", dcldir, "/src/math1/syslib/glpqnp.f")
    file["GLR"] = sprintf( "%s%s", dcldir, "/src/math1/syslib/glpqnp.f")
    file["GLL"] = sprintf( "%s%s", dcldir, "/src/math1/syslib/glpqnp.f")
    file["GLC"] = sprintf( "%s%s", dcldir, "/src/math1/syslib/glcqnp.f")
    file["SGP"] = sprintf( "%s%s", dcldir, "/src/grph1/sgpack/sgpqnp.f")
    file["SGI"] = sprintf( "%s%s", dcldir, "/src/grph1/sgpack/sgpqnp.f")
    file["SGR"] = sprintf( "%s%s", dcldir, "/src/grph1/sgpack/sgpqnp.f")
    file["SGL"] = sprintf( "%s%s", dcldir, "/src/grph1/sgpack/sgpqnp.f")
    file["SWP"] = sprintf( "%s%s", dcldir, "/src/grph1/swpack/swpqnp.f")
    file["SWI"] = sprintf( "%s%s", dcldir, "/src/grph1/swpack/swpqnp.f")
    file["SWR"] = sprintf( "%s%s", dcldir, "/src/grph1/swpack/swpqnp.f")
    file["SWL"] = sprintf( "%s%s", dcldir, "/src/grph1/swpack/swpqnp.f")
    file["SWC"] = sprintf( "%s%s", dcldir, "/src/grph1/swpack/swcqnp.f")
#
#   character constant
#
    cmdname = "dclpindex para="
}
#
#   main body
#
#   1. xxPGET/xxPSET
#
$0 ~ /CALL [GS][LGW][PIRLC][GS]ET/ {
    pack = substr( $0, match( $0, /[A-Z][A-Z][PIRLC][GS]ET/ ), 3 )
    n = split( $0, xx, "'" )
    if ( n != 1 ) {
        para = sprintf( "%s:%s", pack, xx[2] )
        if ( idx[para] == "" ) {
            cmd = sprintf( "%s%s%s%s", cmdname, xx[2], " ", file[pack] )
            cmd | getline idx[para]
        }
        newline = sprintf( "%s%d%s", xx[1], idx[para], xx[3] )
        sub( /SET/, "SVL", newline )
        sub( /GET/, "QVL", newline )
        sub( /./, "*", $0 )
        print $0
        print newline
        next
    }
}
#
#   2. others
#
    {
    print
    }
