aboutsummaryrefslogtreecommitdiff
path: root/noao/digiphot/ptools/pdump.cl
diff options
context:
space:
mode:
Diffstat (limited to 'noao/digiphot/ptools/pdump.cl')
-rw-r--r--noao/digiphot/ptools/pdump.cl83
1 files changed, 83 insertions, 0 deletions
diff --git a/noao/digiphot/ptools/pdump.cl b/noao/digiphot/ptools/pdump.cl
new file mode 100644
index 00000000..5ac4b5fd
--- /dev/null
+++ b/noao/digiphot/ptools/pdump.cl
@@ -0,0 +1,83 @@
+# PDUMP - Select fields from an ST table or an APPHOT/DAOPHOT text file
+# and dump to a text file.
+
+procedure pdump (infiles, fields, expr)
+
+string infiles {prompt="Input apphot/daophot databases(s)"}
+string fields {prompt="Fields to be extracted"}
+string expr {"yes", prompt="Boolean expression"}
+bool headers {no, prompt="Print field headers?"}
+bool parameters {yes, prompt="Print parameters?"}
+
+struct *inlist
+
+begin
+ # Local variable declarations.
+ file tmpin, texpr
+ int nin, tpagwidth
+ string in, col, inname, hfile, pfile
+
+ # Cache the istable parameters.
+ cache ("istable")
+
+ # Get the positional parameters.
+ in = infiles
+ col = fields
+ texpr = expr
+
+ # Make temporary names.
+ tmpin = mktemp ("tmp$")
+
+ # Expand the file list names.
+ files (in, sort=no, > tmpin)
+
+ # Compute the length of the input list.
+ inlist = tmpin
+ for (nin = 0; fscan (inlist, inname) != EOF; nin = nin + 1)
+ ;
+ inlist = ""
+
+ # Delete the temporary files.
+ delete (tmpin, ver-, >& "dev$null")
+
+ # Expand the file list names.
+ files (in, sort=no, > tmpin)
+
+ if (headers) {
+ hfile = "STDOUT"
+ if (parameters)
+ pfile = "STDOUT"
+ else
+ pfile = ""
+ } else {
+ hfile = ""
+ pfile = ""
+ }
+
+ # Loop over each file in the input list selecting records.
+ inlist = tmpin
+ while (fscan (inlist, inname) != EOF) {
+ istable (inname)
+ if (istable.table) {
+
+ # Adjust pagination for TDUMP.
+ #tpagwidth = tdump.pwidth.p_max
+ tdump.pwidth.p_max = 1023
+
+ tbdump (inname, col, texpr, cdfile=hfile, pfile=pfile,
+ datafile="STDOUT", rows="-", pagwidth=1023)
+
+ # Reset pagination for TDUMP.
+ #tdump.pwidth.p_max = tpagwidth
+
+ } else if (istable.text) {
+ txdump (inname, col, texpr, headers=headers,
+ parameters=parameters)
+ } else {
+ print ("ERROR: Cannot run PDUMP on file: " // inname)
+ }
+ }
+
+ delete (tmpin, ver-, >& "dev$null")
+ inlist = ""
+end