<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.na-mic.org/w/index.php?action=history&amp;feed=atom&amp;title=Data_Provenance%3ADocumentation%3AGenerating</id>
	<title>Data Provenance:Documentation:Generating - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.na-mic.org/w/index.php?action=history&amp;feed=atom&amp;title=Data_Provenance%3ADocumentation%3AGenerating"/>
	<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Data_Provenance:Documentation:Generating&amp;action=history"/>
	<updated>2026-04-10T00:00:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Data_Provenance:Documentation:Generating&amp;diff=9731&amp;oldid=prev</id>
		<title>Naucoin at 22:07, 25 April 2007</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Data_Provenance:Documentation:Generating&amp;diff=9731&amp;oldid=prev"/>
		<updated>2007-04-25T22:07:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 22:07, 25 April 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;''[http://132.239.132.249:8080/xwiki/bin/view/Morphometry-BIRN/mBIRN_Provenance_Main This is version 1.0, see BIRN xwiki for 2.0+]''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Generating Output ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Generating Output ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Naucoin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Data_Provenance:Documentation:Generating&amp;diff=4215&amp;oldid=prev</id>
		<title>Andy: Update from Wiki</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Data_Provenance:Documentation:Generating&amp;diff=4215&amp;oldid=prev"/>
		<updated>2006-12-18T13:38:12Z</updated>

		<summary type="html">&lt;p&gt;Update from Wiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Generating Output ==&lt;br /&gt;
&lt;br /&gt;
This page details how to get the various fields from the [[Data_Provenance:Documentation:Output:Specification:Specification_Table|Specification Table]] (some content moved here) depending on if you're working with a shell script, a tcl program, or a C program.&lt;br /&gt;
&lt;br /&gt;
The field names are always to be output with a following colon and a space, for parsing purposes.&lt;br /&gt;
&lt;br /&gt;
This is organised by the field names, and then by the methods to obtain their values in various scenarios. Shell scripting examples assume use of csh.&lt;br /&gt;
&lt;br /&gt;
A lot of assumptions are made about working on a *nix system.&lt;br /&gt;
&lt;br /&gt;
== Field Values ==&lt;br /&gt;
&lt;br /&gt;
'''ProgramName:'''&lt;br /&gt;
&lt;br /&gt;
* C: ''set ProgramName argv[0];''&lt;br /&gt;
* TCL: define a string: ''char *ProgramName = &amp;quot;name&amp;quot;''&lt;br /&gt;
* Shell: ''set ProgramName = $argv[0];''&lt;br /&gt;
* Java: define a string: ''System.out.print(&amp;quot;ProgramName: progName&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
'''ProgramArguments:'''&lt;br /&gt;
&lt;br /&gt;
* C: ''argv''&lt;br /&gt;
* TCL: ''puts &amp;quot;${argv}&amp;quot;''&lt;br /&gt;
* Shell: ''echo $argv;''&lt;br /&gt;
* Java: pass ''String [] args'' from main, then iterate:&lt;br /&gt;
&lt;br /&gt;
  for (int i = 0; i &amp;lt; args.length; i++) {&lt;br /&gt;
    System.out.print(&amp;quot; &amp;quot; + args[i]);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
'''Version:'''&lt;br /&gt;
&lt;br /&gt;
Use the CVS keyword Name, inserted into your source code file as ''$Name$'' and it will be replaced with a the version tag when you check out the code with a tag (via cvs -r tag co codemodule). Alternately, you can define it as a user string.&lt;br /&gt;
&lt;br /&gt;
* C: ''$Name$''&lt;br /&gt;
* TCL: ''$Name$''&lt;br /&gt;
* Shell: '' '$Name$' '' (in single quotes to avoid it being treated as an environment variable)&lt;br /&gt;
* Java: ''System.out.print(&amp;quot; ProgramVersion: $Name$ &amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
'''TimeStamp:'''&lt;br /&gt;
&lt;br /&gt;
* C:&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;time.h&amp;gt;&lt;br /&gt;
  struct tm * timeInfo;&lt;br /&gt;
  time_t rawtime;&lt;br /&gt;
  // mm/dd/yy-hh-mm-ss-TZ&lt;br /&gt;
  // plus one for 3 char time zone&lt;br /&gt;
  char timeStr[22];&lt;br /&gt;
  time ( &amp;amp;rawtime );&lt;br /&gt;
  timeInfo = localtime (&amp;amp;rawtime);&lt;br /&gt;
  strftime (timeStr, 22, &amp;quot;%D-%k-%M-%S-%Z&amp;quot;, timeInfo);&lt;br /&gt;
  fprintf(stdout, &amp;quot;%s&amp;quot;, timeStr);&lt;br /&gt;
&lt;br /&gt;
* TCL: ''[clock format [clock seconds] -format &amp;quot;%D-%T-%Z&amp;quot;]''&lt;br /&gt;
* Shell: ''date +%D-%k-%M-%S-%Z'' (system call for linux, redirect output into log file via ''&amp;gt;&amp;gt; $LogFile'')&lt;br /&gt;
* Java:&lt;br /&gt;
&lt;br /&gt;
  Calendar cal = Calendar.getInstance();&lt;br /&gt;
  int mo = cal.get(cal.MONTH) + 1;&lt;br /&gt;
  System.out.print(&amp;quot;TimeStamp: &amp;quot; + mo + &amp;quot;/&amp;quot; + cal.get(cal.DAY_OF_MONTH) + &amp;quot;/&amp;quot; + cal.get(cal.YEAR) + &amp;quot;-&amp;quot; + cal.get(cal.HOUR_OF_DAY) + &amp;quot;-&amp;quot; + cal.get(cal.MINUTE) + &amp;quot;-&amp;quot; + cal.get(cal.SECOND) + &amp;quot;-&amp;quot; + cal.getTimeZone().getDisplayName().replace(' ','_'));&lt;br /&gt;
&lt;br /&gt;
'''CVS:'''&lt;br /&gt;
&lt;br /&gt;
Use the CVS keyword Id, inserted into your source code file as ''$Id$'' and it will be replaced with the file name, version, date of change and who changed it. TBD: figure out how to do this with Subversion.&lt;br /&gt;
&lt;br /&gt;
* C: ''$Id$''&lt;br /&gt;
* TCL: ''$Id$''&lt;br /&gt;
* Shell: '' '$Id$' '' (in single quotes to avoid it being treated as an environment variable)&lt;br /&gt;
* Java: ''System.out.print(&amp;quot; CVS: $Id$ &amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
'''User:'''&lt;br /&gt;
&lt;br /&gt;
This is the name of the user running this processing step.&lt;br /&gt;
&lt;br /&gt;
* C:&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
  fprintf(stdout, &amp;quot; User: %s&amp;quot;, getenv(&amp;quot;USER&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
* TCL: ''$::env(USER)''&lt;br /&gt;
* Shell: ''$USER''&lt;br /&gt;
* Java:&lt;br /&gt;
&lt;br /&gt;
  Properties props = System.getProperties();&lt;br /&gt;
  System.out.print(&amp;quot; User: &amp;quot; + props.getProperty(&amp;quot;user.name&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
'''Machine:'''&lt;br /&gt;
&lt;br /&gt;
This is the type of hardware that the processing step is run on, sun, x86, etc.&lt;br /&gt;
&lt;br /&gt;
* C: [http://predef.sourceforge.net/prearch.html Compiler defined macro]&lt;br /&gt;
* TCL: ''$::tcl_platform(machine)''&lt;br /&gt;
* Shell: ''uname -m''&lt;br /&gt;
* Java:&lt;br /&gt;
&lt;br /&gt;
  Properties props = System.getProperties();&lt;br /&gt;
  System.out.print(&amp;quot; User: &amp;quot; + props.getProperty(&amp;quot;os.arch&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
'''Platform:'''&lt;br /&gt;
&lt;br /&gt;
This is the operating system under which the processing step is being run.&lt;br /&gt;
&lt;br /&gt;
* C: [http://predef.sourceforge.net/preos.html Compiler defined macro]&lt;br /&gt;
* TCL: ''$::tcl_platform(os)''&lt;br /&gt;
* Shell: ''uname -o''&lt;br /&gt;
* Java:&lt;br /&gt;
&lt;br /&gt;
  Properties props = System.getProperties();&lt;br /&gt;
  System.out.print(&amp;quot; Platform: &amp;quot; + props.getProperty(&amp;quot;os.name&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
'''PlatformVersion:'''&lt;br /&gt;
&lt;br /&gt;
The version of the operating system.&lt;br /&gt;
&lt;br /&gt;
* C: [http://predef.sourceforge.net/preos.html Compiler defined macro]&lt;br /&gt;
* TCL: ''$::tcl_platform(osVersion)''&lt;br /&gt;
* Shell: ''uname -r''&lt;br /&gt;
* Java:&lt;br /&gt;
&lt;br /&gt;
  Properties props = System.getProperties();&lt;br /&gt;
  System.out.print(&amp;quot; PlatformVersion: &amp;quot; + props.getProperty(&amp;quot;os.version&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
'''CompilerName:'''&lt;br /&gt;
&lt;br /&gt;
* C:&lt;br /&gt;
&lt;br /&gt;
   #if defined(__GNUC__)&lt;br /&gt;
       return &amp;quot;GCC&amp;quot;;&lt;br /&gt;
   #endif&lt;br /&gt;
   #if defined(_MSC_VER)&lt;br /&gt;
       return &amp;quot;MSC&amp;quot;;&lt;br /&gt;
   #endif&lt;br /&gt;
       return &amp;quot;UKNOWN&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
* TCL: N/A (define the Tcl/Tk libraries instead)&lt;br /&gt;
* Shell: N/A&lt;br /&gt;
* Java:&lt;br /&gt;
&lt;br /&gt;
  Properties props = System.getProperties();&lt;br /&gt;
  System.out.print(&amp;quot; CompilerName: &amp;quot; + props.getProperty(&amp;quot;java.compiler&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
'''CompilerVersion:'''&lt;br /&gt;
&lt;br /&gt;
* C:&lt;br /&gt;
&lt;br /&gt;
   #if defined(__GNUC__)&lt;br /&gt;
   #if defined(__GNU_PATCHLEVEL__)&lt;br /&gt;
       return (__GNUC__ * 10000 \&lt;br /&gt;
               + __GNUC_MINOR__ * 100 \&lt;br /&gt;
               + __GNUC_PATCHLEVEL__);&lt;br /&gt;
   # else&lt;br /&gt;
       return (__GNUC__ * 10000 \&lt;br /&gt;
               + __GNUC_MINOR__ * 100);&lt;br /&gt;
   # endif&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if defined(_MSC_VER)&lt;br /&gt;
       return (_MSC_VER);&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
       return 0;&lt;br /&gt;
&lt;br /&gt;
* TCL: N/A&lt;br /&gt;
* Shell: N/A&lt;br /&gt;
* Java:&lt;br /&gt;
&lt;br /&gt;
  Properties props = System.getProperties();&lt;br /&gt;
  System.out.print(&amp;quot; CompilerVersion: &amp;quot; + props.getProperty(&amp;quot;java.version&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
'''LibName:'''&lt;br /&gt;
&lt;br /&gt;
This is dependent on the library in question, examples are given for VTK and Tcl and Tk.&lt;br /&gt;
&lt;br /&gt;
* C: [http://predef.sourceforge.net/prelib.html Compiler defined macros for system libs]&lt;br /&gt;
* TCL:&lt;br /&gt;
** User defined string, ''set LibName VTK''&lt;br /&gt;
** User defined string, ''set LibName TCL''&lt;br /&gt;
** User defined string, ''set LibName TK''&lt;br /&gt;
* Shell:&lt;br /&gt;
&lt;br /&gt;
'''LibVersion:'''&lt;br /&gt;
&lt;br /&gt;
* C:&lt;br /&gt;
** VTK: defined as a macro, ''VTK_VERSION''&lt;br /&gt;
** System libraries: [http://predef.sourceforge.net/prelib.html Compiler defined macro]&lt;br /&gt;
* TCL:&lt;br /&gt;
** VTK: ''set LibVersion [package require vtk]''&lt;br /&gt;
** TCL: ''$::{tcl_patchLevel}''&lt;br /&gt;
** TK: ''$::{tk_patchLevel}''&lt;br /&gt;
* Shell:&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
* If you're running a third party program from inside a script, you can get some information even if the program doesn't respond to a version argument:&lt;br /&gt;
&lt;br /&gt;
   set LF=script.log&lt;br /&gt;
   echo &amp;quot;ProgramName: [program] ProgramArguments: [list args to be passed here]&amp;quot; &amp;gt;&amp;gt; $LF&lt;br /&gt;
   # if the program responds to version requests&lt;br /&gt;
   echo -n &amp;quot;ProgramVersion: &amp;quot;&lt;br /&gt;
   ./[program] -v &amp;gt;&amp;gt; $LF&lt;br /&gt;
   echo -n &amp;quot;Platform: &amp;quot; &amp;gt;&amp;gt; $LF&lt;br /&gt;
   uname -o &amp;gt;&amp;gt; $LF&lt;br /&gt;
   echo -n &amp;quot;TimeStamp: &amp;quot; &amp;gt;&amp;gt; $LF&lt;br /&gt;
   date +%D-%k-%M-%S-%Z &amp;gt;&amp;gt; $LF&lt;br /&gt;
   echo &amp;quot;User: &amp;quot; $USER &amp;gt;&amp;gt; $LF&lt;br /&gt;
   echo -n &amp;quot;MachineName: &amp;quot; &amp;gt;&amp;gt; $LF&lt;br /&gt;
   uname -m &amp;gt;&amp;gt; $LF&lt;br /&gt;
   echo -n &amp;quot;Platform: &amp;quot; &amp;gt;&amp;gt; $LF&lt;br /&gt;
   uname -o &amp;gt;&amp;gt; $LF&lt;br /&gt;
   echo -n &amp;quot;PlatformVersion: &amp;quot; &amp;gt;&amp;gt; $LF&lt;br /&gt;
   uname -r &amp;gt;&amp;gt; $LF&lt;br /&gt;
&lt;br /&gt;
* Here's a link to a C program that was instrumented to respond to the --all-info flag:&lt;br /&gt;
&lt;br /&gt;
[http://splweb.bwh.harvard.edu:8000/cgi-bin/develop/viewcvs.cgi/birndup/dcanon/a2mrml/a2mrml.c.diff?r1=1.1&amp;amp;r2=1.2 a2mrml from the BIRNDUP project]&lt;/div&gt;</summary>
		<author><name>Andy</name></author>
		
	</entry>
</feed>