[comp.text] Bibliographic callouts in FrameMaker

ebm@corvair.almaden.ibm.com (Eli Messinger) (05/01/91)

Can anyone suggest a way to do bibliographic callouts (and the associated
bibliography) in FrameMaker?  Perhaps someone's written a postprocessing
tool that picks through the FrameMaker file looking for particular tags...
kind of 'bib' like?

--
    "Route 66 is a giant chute down which everything loose in this country
     is sliding into Southern California"             --Frank Lloyd Wright

    CSNET: ebm@ibm.com / USENET: ...!uunet!ibm.com!ebm / BITNET: ebm@almvmd

mark@drd.com (Mark Lawrence) (05/14/91)

In article <724@rufus.UUCP> ebm@ibm.com writes:
>Can anyone suggest a way to do bibliographic callouts (and the associated
>bibliography) in FrameMaker?  Perhaps someone's written a postprocessing
>tool that picks through the FrameMaker file looking for particular tags...
>kind of 'bib' like?

# From: jipping@cs.hope.edu (Mike Jipping)
# Subject: SUMMARY: Frame and Bibliographies
# Organization: Hope College Dept of CS
# Date: Tue, 5 Mar 91 12:47:13 GMT
# 
# Some time ago, I posted an item asking about how Frame worked with
# bibliographic databases.  I posted my own thoughts in the form of a Perl
# script that tried to make BibTeX work with Frame.
# 
# I got several replies, and several "post a summary please" responses.
# 
# The summary is easy:  This integration apparently has not been done and
# most of the respondents voiced feelings from apathy to aggravation to
# anger about it.  For one person, this was the reason he DID NOT choose
# Frame as his document preparation tool.  This response from John
# McInerney pretty much sums it up:
# 
# > I think the lack of a bibliographic database in Frame is a big hole and makes
# > it almost unusable in an academic environment.  I'm trying to do my
# > dissertation in Frame and references are a real bear right now.
# 
# One person -- Tim Shimmeall -- suggested that one use a Frame document as
# a bibliographic database.  He suggests:
# 
# > There's a much simpler solution.  Any frame document can act as a
# > bibliographic database for any other frame document, since
# > crossreferences to other documents are possible. This doesn't give you
# > "refer" level functionality ... but it will give you "bibtex" level 
# > functionality ...
# 
# Now, I have my doubts about the generality or flexibility of this scheme
# as a bibliographic tool -- what about searching or sorting for example --
# but I think it's a real interesting idea.
# 
# So that's it!  My Perl script seems to be working for me, so I'm going to
# pursue this in the absence of any better solution.  By the way, I use a
# system called "Bibcard" to enter/search/manipulate the BibTeX databases.
# It's an X-windows/OpenWindows tools that works quite well.


#!/usr/contrib/bin/perl -- # -*-Perl-*-
#
#  bibfilter, version 1.0.
#
#  A Perl script that takes a Frame MIF file, generates a list of references
#  that are cited in the MIF file, and substitutes the citations in the 
#  text with citations from the reference list.  
#
#  This is based in BibTeX.  Original citations in the MIF file take the
#  form "\cite{citation}", where "citation" is the citation key from the 
#  BibTeX database.
#
#  Invocation:  bibfilter <options> miffilename
#    miffilename MUST end in ".mif"
#    <options> are:  -d <bibliography data bases> -- specifies what data 
#                            to use (default: "misc")
#                    -p <pathname> -- specifies where the BibTeX data bases
#                            can be found.  This is normally set through the
#                            "TEXBIB" environment variable (default: whatever
#                            "TEXBIB" is set to).
#                    -s <bibstyle> -- this determine the style of reference 
#                            and the substituted citations (default: alpha).
#  Examples:
#    bibfilter paper.mif  
#       --> this takes the defaults, and generates the file "paper.ref" with 
#           the references list.
#    bibfilter -d parallel,metrics,X paper.mif 
#       --> This uses the list "parallel,metrics,X" as the list of databases 
#           that BibTeX should use.  Again, "paper.ref" is generated.
#    bibfilter -d parallel,X -s acm -p /home/zephyr/jipping paper.mif
#       --> This specifies "parallel,X" as the databases to use, specifies
#           that the "acm" style be used to generate references, and that
#           the databases are in "/home/zephyr/jipping".
#
#  This is a first approximation. No warranty of any kind is given.  Send
#  bugs and corrections to "jipping@cs.hope.edu" and I'll get to them
#  sometime :-)
#  
#  Mike Jipping, Hope College
#    18 February 1991,  first writing

#----------------------------------------------------------------------
# "To_Aux" is step 1 -- read the "mif" file and generate an "aux" file.
# The "aux" file is a fake, and contains only BibTeX information.

sub to_aux {
    $miffile = join(".", @_, "mif");
    open(mif, "<$miffile") || die "can't open $miffile: $!";
    $auxfile = join(".", @_, "aux");
    open(aux, ">$auxfile") || die "can't open $auxfile: $!";

    printf(aux "\\bibstyle{%s}\n", $bibstyle);
    printf(aux "\\bibdata{%s}\n",  $bibdata);
    while (<mif>) {
	chop;
	while (/\\cite{(\S+)}/) {
	    printf(aux "\\citation{%s}\n", $1);
	    s/\\cite{(\S+)}//;
	}
    }
    close(mif);
    close(aux);
}

#----------------------------------------------------------------------
# "To_Bbl" goes from the "aux" file to the "bbl" file by invoking BibTeX.

sub to_bbl {
    system "bibtex @_";
}

#----------------------------------------------------------------------
# "To_Refs" generates the ".ref" file from the "bbl" file.

sub to_refs {
    $bblfile = join(".", @_, "bbl");
    open(bbl, "<$bblfile") || die "can't open $bblfile: $!";
    $reffile = join(".", @_, "ref");
    open(ref, ">$reffile") || die "can't open $reffile: $!";

    while (<bbl>) {
	s/\\begin{thebibliography}.*$//;
	s/\\end{thebibliography}.*$//;
	s/\\bibitem//;
	s/\{//;
	s/\}//;
	s/\\newblock //;
	print ref $_;
    }
    close(bbl);
    close(ref);
 }

#----------------------------------------------------------------------
# "Sub_Cites" substitutes citations from the "mif" file with actual 
# citations from the reference list.

sub sub_cites {
    $bblfile = join(".", @_, "bbl");
    open(bbl, "<$bblfile") || die "can't open $bblfile: $!";

    while (<bbl>) {
	if (/\\bibitem(\S+){(\S+)}/) {
	    $cites{$2} = $1;
	}
    }

    $miffile = join(".", @_, "mif");
    $oldmiffile = join($miffile, "", "123");
    rename($miffile, $oldmiffile);
    open(oldmif, "<$oldmiffile") || die "can't open $oldmiffile: $!";
    open(mif, ">$miffile") || die "can't open $miffile: $!";

    while (<oldmif>) {
	while (/\\cite{(\S+)}/) {
	    s/\\cite{\S+}/$cites{$1}/;
	}
	print mif $_;
    }

    close(oldmif);
    unlink(oldmif);
    close(mif);
}

#------------------------------------------------------------------
#  "Main" Section
#
#  First, set up the parameters. 

do 'getopt.pl' || die "can't get getopt.pl";

$bibstyle = "alpha";
$bibdata = "hci";
$bibpath = $ENV{"TEXBIB"};

&Getopt('sdp');
if ($opt_s) {$bibstyle = $opt_s;}
if ($opt_d) {$bibdata = $opt_d;}
if ($opt_p) {$ENV{"TEXBIB"} = $opt_p;}
$bibfile = shift;

$bibstub = substr($bibfile, 0, rindex($bibfile,"."));

# Now, generate all the files.

do to_aux($bibstub);
do to_bbl($bibstub);
do to_refs($bibstub);
do sub_cites($bibstub);

# Delete the intermediate files and go home.

unlink join(".", $bibstub, "aux");
unlink join(".", $bibstub, "bbl");
unlink join(".", $bibstub, "blg");

exit(0);

# From: Tommy Persson <tpe@IDA.LiU.SE>
# Date: Tue, 9 Apr 91 18:05:38 +0200
# Subject: Bibframe
# Reply-To: tpe@IDA.LiU.SE
# 
# If would be glad if the people trying to use my Bibframe system
# (available at smaug.cs.hope.edu (35.197.146.1) under
# /pub/bibframe.tar.Zsend) send me their email adress.  Then I can post
# all the latest bugfixes to you (there are two now).  If you are going
# to use the sunview version you are probably going to note some bugs.
# 
# Note that the version available at smaug is version 0.2 and it contains
# mapalike.  This was not in the version I mailed earlier to some persons.
# 
# Tommy Persson
# Linkoping University
# Department of Computer and Information Science
# Sweden
# tpe@ida.liu.se



# From: jipping@cs.hope.edu (Mike Jipping)
# Subject: Re: Bibframe
# Reply-To: jipping@cs.hope.edu
# Organization: Hope College Dept. of Computer Science
# References:  <1991Apr10.172040.20804@cs.hope.edu>
# Date: Thu, 11 Apr 91 18:40:07 GMT
# 
# > I would be glad if the people trying to use my Bibframe system
# > (available at smaug.cs.hope.edu (35.197.146.1) under
# > /pub/bibframe.tar.Z) send me their email adress.  Then I can post
# > all the latest bugfixes to you (there are two now).  If you are going
# > to use the sunview version you are probably going to note some bugs.
# > 
# > Note that the version available at smaug is version 0.2 and it contains
# > mapalike.  This was not in the version I mailed earlier to some persons.
# 
# The version on smaug has now been updated to include all the recent
# bugfixes (at least all the ones Tommy has sent me ;-).  So I believe it
# is the "current" release.
# 
# The two bug fixes were (1) a fix to the SunView macro definition for
# creating a citation key, and (2) a fix to a shellscript in "without
# Emacs" version that did not work if there was no Body paragraph in the
# document.  
# 
# Again, send bugfixes to the author, Tommy Persson, at tpe@ida.liu.se --
# NOT ME!
# 
-- 
mark@drd.com
mark@jnoc.go.jp  $B!J%^!<%/!&%i%l%s%9!K(B  Nihil novum sub solem

tj@CIS.OHIO-STATE.EDU (Todd R Johnson) (05/14/91)

	I've been evaluating FrameMaker for possible purchase by the
lab I work in.  Bibliographic support appeared to be the major missing
feature for us (we do lots of academic papers).  It appears, however,
that EndNote Plus (a nice bibliographic database and formatter) on the
Mac can read MIF files.  You need to make sure that the reference
markers are all on one line and not hyphenated so that EndNote can
read the file and replace the in-text citations with the appropriate
text.  I had to save the FM file as text and run it through EndNote a
second time to get the bibliographic entries, since EndNote just tacks
them on to the end of the MIF file which causes FM to complain.  It is
probably possible to create special MIF versions of EndNote
bibliogrphic styles such that all you would need to do is open the MIF
file from a text editor and move the entries into the body of the
document.  I don't enough about MIF to know how to do this.

	---Todd

-- 
Todd R. Johnson
tj@cis.ohio-state.edu
Laboratory for AI Research
The Ohio State University

crocker@motcid.UUCP (Ronald T. Crocker) (05/20/91)

I've written a little awk filter that will convert refer databases
into MIF files.  It doesn't help with the referencing part, but it
will help to get your references into FrameMaker.

If anyone is interested, I'll e-mail or post the program and it's
friends.
-- 
Ron Crocker
Motorola Radio-Telephone Systems Group, Cellular Infrastructure Group
(708) 632-4752 [FAX: (708) 632-4430]
crocker@mot.com or uunet!motcid!crocker

crocker@motcid.UUCP (Ronald T. Crocker) (05/22/91)

There was a substantial reply to this posting, so I'll post my tool.
It simply takes a refer database and turns it into a Maker Markup
Language file.  If you have any questions or comments, send them to me
and I'll do something with them :->.

Ron Crocker
Motorola Radio-Telephone Systems Group, Cellular Infrastructure Group
(708) 632-4752 [FAX: (708) 632-4430]
crocker@mot.com or uunet!motcid!crocker

PS: I apologize for the fake shar format; it was the best I could do
on such short notice.  If anyone has a real shar generator, I'd
appreciate a copy of it!

<><><><><><><><><><><><><><><><><> cut here <><><><><><><><><><><><><><><><><>
#!/bin/sh
# This is a shell archive.  To unbundle, run sh filename, where
# filename is the name of this file.  The files included
# in this archive are:
#	README
#	phd.biblio
#	refer2mml
#	refer2mml.awk
#	refer2mml.mml
#	sortloc.c
#
if [ -f "./README" ] ; then
	echo "shar: will not overwrite existing ./README"
else
	sed 's/^X//' <<__EOF__ >./README
XThe program refer2mml is a personal filter that works with my style of
Xrefer database.  In particular, I use the following fields in my
Xdatabase:
X	%A	Author's name
X	%B	Book containing article referenced
X	%C	City (place of publication)
X	%D	Date of publication
X*	%E	Editor of book containing article referenced
X	%F	(not used by me)
X	%G	(not used by me)
X	%H	Header commentary, printed before reference (not used)
X	%I	Issuer (publisher)
X	%J	Journal containing article
X	%K	Keywords to use in locating reference
X	%L	Label field used by -k option of refer
X	%N	Number within volume	
X	%O	Other commentary, printed at end of reference
X	%P	Page number(s)
X	%Q	Corporate or Foreign Author (unreversed)
X	%R	Report, paper, or thesis (unpublished)
X	%S	(not used by me)
X	%T	Title of article or book
X*	%U	Location information (#nnn, or Book, or other)
X	%V	Volume number
X*	%W	Category
X	%X	Annotation
X
X* Notes:
X	%E has been changed slightly from the refer meaning to include
X	   support for multiple authors.
X	%U includes the location of the paper, whether it is a book
X	   (indicated by "Book" in this field), or a file location
X	   (indicated by #nnn, where nnn is the file reference number).
X	   My file reference numbers are sequential, starting at 1,
X	   for each bibliographic database that I have.
X	%W includes some categorization information independent of the
X	   keywords, but behaves in a similar manner.
X
XI've included a sample copy of the database that I used in preparing
Xmy Ph. D. topic proposal.
__EOF__
	if [ "`wc -c ./README`" -ne "    1492 README" ]; then
		echo "Possible corruption in README: wc README should be     1492 README"
	fi
	echo "README extracted."
fi
if [ -f "./phd.biblio" ] ; then
	echo "shar: will not overwrite existing ./phd.biblio"
else
	sed 's/^X//' <<__EOF__ >./phd.biblio
X%A Brad J. Cox
X%T Object Oriented Programming: An Evolutionary Approach
X%I Addison-Wesley
X%C Reading, MA
X%D 1986
X%U BOOK
X%K objects reuse containers
X%W objects maintenance
X%X Book related to using Objective-C to build Software ICs
X
X%A Robert E. Filman
X%T Retrofitting Objects
X%J Proceedings, OOPSLA \`87
X%P 342-353
X%D October, 1987
X%K objects maintenance reverse-engineering retrofitting
X%U #107
X%W
X%X Paper about retrofitting object-oriented structure into existing code.
X
X%A Gerhard Fisher
X%T Software Maintenance Environments: a New Perspective
X%J Proceedings, OOPSLA \`88
X%P 369
X%D September, 1988
X%K objects maintenance environment
X%W
X
X%A Ned Chapin
X%T Software Maintenance Life Cycle
X%J Proceedings, Conference on Software Maintenance-1988
X%P 6-13
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #28
X%K software maintenance, life cycle
X
X%A B. I. Blum
X%T Documentation for Maintenance: A Hypertext Design
X%J Proceedings, Conference on Software Maintenance-1988
X%P 23-31
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #29
X%K software maintenance, documentation
X
X%A C. G. Davies
X%A P. J. Layzell
X%T Rules to Govern Change in JSP-Based Systems
X%J Proceedings, Conference on Software Maintenance-1988
X%P 34-39
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #30
X%K software maintenance
X
X%A Mikio Aoyama
X%A Yoshiku Hanai
X%A Makoto Suzuki
X%T An Integrated Software Maintenance Environment: Bridging Configuration Management and Quality Management
X%J Proceedings, Conference on Software Maintenance-1988
X%P 40-44
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #31
X%K software maintenance, environment
X
X%A James S. Collofello
X%A Mikael Orn
X%T A Practical Software Maintenance Environment
X%J Proceedings, Conference on Software Maintenance-1988
X%P 45-51
X%D October 24-27, 1988
X%W
X%U #3
X%K software maintenance, environment
X
X%A Nigel T. Fletton
X%A Malcolm Munro
X%T Redocumenting Software Systems using Hypertext Technology
X%J Proceedings, Conference on Software Maintenance-1988
X%P 54-59
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #32
X%K software maintenance, documentation
X
X%A Chris Wild
X%A Kurt Maly
X%T Towards a Software Maintenance Support Environment
X%J Proceedings, Conference on Software Maintenance-1988
X%P 80-85
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #33
X%K software maintenance, environment
X
X%A Linore Cleveland
X%T A User Interface for an Environment to Support Program Understanding
X%J Proceedings, Conference on Software Maintenance-1988
X%P 86-91
X%D October 24-27, 1988
X%O Not yet read
X%K software maintenance, program understanding
X%W
X%U #34
X
X%A Vaclav Rajlich
X%A Nicholas Damaskinos
X%A Panagiotis Linos
X%A Joao Silva
X%A Wafa Khorshid
X%T Visual Support for Programming-in-the-Large
X%J Proceedings, Conference on Software Maintenance-1988
X%P 92-99
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #35
X%K software maintenance, visual programming
X
X%A Patricia K. Lawlis
X%T Ada and Software Maintenance
X%J Proceedings, Conference on Software Maintenance-1988
X%P 152-158
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #36
X%K software maintenance, Ada
X
X%A Sheryl Kempton
X%A Chris Sobell
X%A Carol Withrow
X%T DOD-STD-2167A Applied to Software Maintenance
X%J Proceedings, Conference on Software Maintenance-1988
X%P 159-164
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #37
X%K software maintenance, Ada, standards
X
X%A Rodger L. Fritz
X%A Fred Shocket
X%T LAMPS - Demonstrated Maintainability Through Application of MIL-SPEDC Software Development Techniques
X%J Proceedings, Conference on Software Maintenance-1988
X%P 165-170
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #38
X%K software maintenance, Ada, standards
X
X%A Kumar Venkatramani
X%A Roger Clark
X%T Using Configured Directories to Solve Software Maintenance Problems
X%J Proceedings, Conference on Software Maintenance-1988
X%P 171-177
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #39
X%K software maintenance, configuration management
X
X%A E. N. Herness
X%A R. M. Chance
X%T Software Maintenance Features for Library Systems
X%J Proceedings, Conference on Software Maintenance-1988
X%P 183-190
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #40
X%K software maintenance, configuration management, library
X
X%A Nancy R. Mead
X%A Dan Ehrenfried
X%A John Rymer
X%T Designing Ada Software for Maintainability
X%J Proceedings, Conference on Software Maintenance-1988
X%P 214-215
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #41
X%K software maintenance, Ada
X
X%A Hal S. Render
X%A Roy H. Campbell
X%T CLEMMA: The Design of a Practical Configuration Librarian
X%J Proceedings, Conference on Software Maintenance-1988
X%P 222-228
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #42
X%K software maintenance, configuration management, library
X
X%A D. P. Hale
X%A D. A. Haworth
X%T Software Maintenance: A Profile of Past Empirical Research
X%J Proceedings, Conference on Software Maintenance-1988
X%P 236-240
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #43
X%K software maintenance
X
X%A Ie-Hong Lin
X%A David A Gustafson
X%T Classifying Software Maintenance
X%J Proceedings, Conference on Software Maintenance-1988
X%P 241-247
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #44
X%K software maintenance
X
X%A J. R. Lyle
X%A K. B. Gallagher
X%T Using Program Decomposition to Guide Modifications
X%J Proceedings, Conference on Software Maintenance-1988
X%P 265-269
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #45
X%K software maintenance
X
X%A Paul C. Jorgensen
X%T An Operational Approach to Corrective Software Maintenance
X%J Proceedings, Conference on Software Maintenance-1988
X%P 270-276
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #46
X%K software maintenance, corrective
X
X%A Keith W. Miller
X%A Larry J. Morell
X%A W. Robert Collins
X%T Maintaining FORTRAN Software by Enforcing Abstract Data Types
X%J Proceedings, Conference on Software Maintenance-1988
X%P 286-291
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #47
X%K software maintenance, FORTRAN, ADT
X
X%A Richard C. Linger
X%T Software Maintenance as an Engineering Discipline
X%J Proceedings, Conference on Software Maintenance-1988
X%P 292-297
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #48
X%K software maintenance, software engineering
X
X%A J. Meekel
X%A M. Viala
X%T LOGISCOPE: A Tool for Maintenance
X%J Proceedings, Conference on Software Maintenance-1988
X%P 328-334
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #49
X%K software maintenance, tools
X
X%A James Keables
X%A Katherine Roberson
X%A Anneliese von~Mayrhauser
X%T Data Flow Analysis and its Application to Software Maintenance
X%J Proceedings, Conference on Software Maintenance-1988
X%P 335-347
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #50
X%K software maintenance, data flow analysis
X
X%A Michael Frame
X%T A Lexical Comparison Program to Simplify the Maintenance of Portable Software
X%J Proceedings, Conference on Software Maintenance-1988
X%P 348-350
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #51
X%K software maintenance, portability
X
X%A Mary Jean Harrold
X%A Mary Lou Soffa
X%T An Incremental Approach to Unit Testing during Maintenance
X%J Proceedings, Conference on Software Maintenance-1988
X%P 362-367
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #52
X%K software maintenance, testing
X
X%A J. Hartmann
X%A D. J. Robson
X%T Approaches to Regression Testing
X%J Proceedings, Conference on Software Maintenance-1988
X%P 368-372
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #53
X%K software maintenance, testing, regression testing
X
X%A D. J. Newman
X%T A Test Harness for Maintaining Unfamiliar Software
X%J Proceedings, Conference on Software Maintenance-1988
X%P 409-416
X%D October 24-27, 1988
X%O Not yet read
X%W
X%U #54
X%K software maintenance, testing
X
X%A Walter C. Dietrich, Jr.
X%A Lee R. Nackman
X%A Franklin Gracer
X%T Saving a Legacy with Objects
X%J Proceedings, OOPSLA \`89
X%P 77-83
X%D October 1-6, 1989
X%O Not yet read
X%W
X%U #55
X%K objects
X
X%A William H. Harrison
X%A John J. Shilling
X%A Peter F. Sweeney
X%T Good News, Bad News: Experience Building a Software Development Environment Using the Object-Oriented Paradigm
X%J Proceedings, OOPSLA \`89
X%P 85-94
X%D October 1-6, 1989
X%O Not yet read
X%W
X%U #56
X%K objects
X
X%A William Cook
X%A Jens Palsberg
X%T A Denotational Semantics of Inheritance and its Correctness
X%J Proceedings, OOPSLA \`89
X%P 433-443
X%D October 1-6, 1989
X%O Not yet read (looks good for use in thesis)
X%W
X%U #57
X%K objects, inheritance
X
X%A Allen Wirfs-Brock
X%A Brian Wilkerson
X%T Variables Limit Reusability
X%J Journal of Object-Oriented Programming
X%V 2
X%N 1
X%P 34-40
X%D May 1989
X%O Not yet read
X%W
X%U #58
X%K objects reuse
X
X%A Karl J. Lieberherr
X%A Arthur J. Riel
X%T Demeter: A CASE Study of Software Growth Through Parameterized Classes
X%J Journal of Object-Oriented Programming
X%V 1
X%N 3
X%P 8-22
X%D August 1988
X%O Not yet read
X%W
X%U #59
X%K objects reuse inheritance
X
X%A Ralph E. Johnson
X%A Brian Foote
X%T Designing Reusable Classes
X%J Journal of Object-Oriented Programming
X%V 1
X%N 2
X%P 22-35
X%D June 1988
X%O Not yet read
X%W
X%U #60
X%K objects reuse inheritance
X
X%A Dewayne E. Perry
X%A Gail E. Kaiser
X%T Adequate Testing and Object-Oriented Programming
X%J Journal of Object-Oriented Programming
X%V 2
X%N 5
X%P 13-19
X%D January 1990
X%O Not yet read
X%W
X%U #61
X%K objects testing
X
X%A Sanjiv Gossain
X%A Bruce Anderson
X%T An Iterative-Design Model for Reusable Object-Oriented Software
X%J Proceedings, ECOOP/OOPSLA \`90
X%P 12-27
X%D October 21-25, 1990
X%O Not yet read
X%K objects reuse
X%W
X%U #62
X
X%A Lucy Berlin
X%T When Objects Collide: Experiences with Reusing Multiple Class Hierarchies
X%J Proceedings, ECOOP/OOPSLA \`90
X%P 181-193
X%D October 21-25, 1990
X%O Not yet read
X%W
X%U #63
X%K objects reuse maintenance inheritance
X
X%A Grady Booch
X%A Michael Vilot
X%T The Design of the C++ Booch Components
X%J Proceedings, ECOOP/OOPSLA \`90
X%P 1-11
X%D October 21-25, 1990
X%O Not yet read
X%W
X%U #64
X%K objects reuse design inheritance
X
X%A Patrick D. O'Brien
X%A Daniel C. Halbert
X%A Michael F. Kilian
X%T The Trellis Programming Environment
X%J Proceedings, OOPSLA \`87
X%P 91-102
X%D October 1987
X%W
X%U #108
X%K objects environment
X
X%A Rao V. Mikkilineni
X%T Potential Use of the Object Paradigm for Software Engineering Environments in the 1990s
X%J Proceedings, COMPSAC \`88
X%P 439-440
X%D October 1988
X%W
X%U #106
X%K objects, environment
X
X%A Gerhard Fischer
X%T Cognitive View of Reuse and Redesign
X%V 4
X%N 7
X%J IEEE Software
X%P 60-72
X%D July 1987
X%K reuse
X%W
X%U #27
X
X%A Andy Podgurski
X%A Lori A. Clarke
X%T A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance
X%J IEEE Transactions on Software Engineering
X%N 9
X%P 965-979
X%D September 1990
X%O Not yet read
X%W
X%U #11
X%K software maintenance, formal model
X
X%A Mark Moriconi
X%A Timothy C. Winkler
X%T Approximate Reasoning About the Semantic Effects of Program Changes
X%J IEEE Transactions on Software Engineering
X%V 16
X%N 9
X%P 980-992
X%D September 1990
X%O Not yet read
X%W
X%U #12
X%K software maintenance, semantic reasoning, program understanding
X
X%A David Guaspari
X%A Carla Marceau
X%A Wolfgang Polak
X%T Formal Verification of Ada Programs
X%J IEEE Transactions on Software Engineering
X%V 16
X%N 9
X%P 1058-1075
X%D September 1990
X%O Not yet read
X%W
X%U #13
X%K Ada
X
X%A Jeannette M. Wing
X%T Using Larch to Specify Avalon/C++ Objects
X%J IEEE Transactions on Software Engineering
X%V 16
X%N 9
X%P 1076-1088
X%D September 1990
X%O Not yet read
X%W
X%U #14
X%K formal specification
X
X%A Richard R. Head
X%T Portability Issues in Software Maintenance
X%J Proceedings, Conference on Software Maintenance-1987
X%P 101-105
X%D September 21-24, 1987
X%W
X%U #4 
X%K software maintenance, portability
X
X%A Ivar Jacobson
X%T Language Support for Changeable Large Real Time Systems
X%J Proceedings, OOPSLA \`86
X%P 377-384
X%D September 1986
X%W
X%U #5
X%K software maintenance, objects
X
X%A A. Colbrook
X%A C. Smythe
X%T The Retrospective Introduction of Abstraction into Software
X%J Proceedings, Conference on Software Maintenance-1989
X%P 166-173
X%D October 16-19, 1989
X%O Not yet read
X%W
X%U #6
X%K software maintenance, abstraction, ADT, objects, retrofitting
X
X%A Gail E. Kaiser
X%A Dewayne E. Perry
X%T Workspaces and Experimental Databases: Automated Support for Software Maintenance and Evolution
X%J Proceedings, Conference on Software Maintenance-1987
X%P 108-114
X%D September 21-24, 1987
X%O Not yet read
X%W
X%U #7
X%K software maintenance, environment
X
X%A Harry M. Sneed
X%T The Myth of \`Top-Down' Software Development and its Consequences for Software Maintenance
X%J Proceedings, Conference on Software Maintenance-1989
X%P 22-29
X%D October 16-19, 1989
X%O Not yet read
X%W
X%U #8
X%K software maintenance
X
X%A Charles M. Goldstein
X%T Object Oriented Programming: Semantics and Definition: A Tutorial
X%J The C++ Journal
X%P 15-20
X%D Summer 1990
X%O Not yet read
X%W
X%U #9
X%K objects
X
X%A Anthony I. Wasserman
X%A Peter A. Pircher
X%A Robert J. Muller
X%T The Object-Oriented Structured Design Notation for Software Design Representation
X%J IEEE Computer
X%P 50-63
X%D March 1990
X%O Not yet read
X%W
X%U #10
X%K objects, design information
X
X%A David Taenzer
X%A Murthy Ganti
X%A Sunil Podar
X%T Object-Oriented Software Reuse: The Yoyo Problem
X%J Journal of Object-Oriented Programming
X%V 2
X%N 3
X%P 30-35
X%D September 1989
X%O Not yet read
X%W
X%U #15
X%K objects, reuse
X
X%A Anders Bjoernerstedt
X%A Christer Hulten
X%T Version Control in an Object-Oriented Architecture
X%P 451-485
X%B Object-Oriented Concepts, Databases, and Applications
X%E Won Kim
X%E Frederick H. Lochovsky
X%I ACM Press
X%C New York
X%D 1989
X%O Not yet read
X%W
X%U #16
X%K objects, configuration management
X
X%A Yair Wand
X%T A Proposal for a Formal Model of Objects
X%P 537-559
X%B Object-Oriented Concepts, Databases, and Applications
X%E Won Kim
X%E Frederick H. Lochovsky
X%I ACM Press
X%C New York
X%D 1989
X%O Not yet read
X%W
X%U #17
X%K objects, formal model
X
X%A D. C. Tsichritzis
X%A O. M. Nierstrasz
X%T Directions in Object-Oriented Research
X%P 523-536
X%B Object-Oriented Concepts, Databases, and Applications
X%E Won Kim
X%E Frederick H. Lochovsky
X%I ACM Press
X%C New York
X%D 1989
X%O Not yet read
X%W
X%U #18
X%K research, objects
X
X%A Roger King
X%T My Cat is Object-Oriented
X%P 23-30
X%K objects
X%B Object-Oriented Concepts, Databases, and Applications
X%E Won Kim
X%E Frederick H. Lochovsky
X%I ACM Press
X%C New York
X%D 1989
X%O Not yet read
X%W
X%U #19
X
X%A Oscar Nierstrasz
X%T A Survey of Object-Oriented Concepts
X%P 3-21
X%K objects, concepts
X%B Object-Oriented Concepts, Databases, and Applications
X%E Won Kim
X%E Frederick H. Lochovsky
X%I ACM Press
X%C New York
X%D 1989
X%O Not yet read
X%W
X%U #20
X
X%A Ludwig Slusky
X%T Integrating Software Modelling and Prototyping Tools
X%J Information and Software Technology
X%V 29
X%N 7
X%P 379-387
X%D September 1987
X%O Not yet read
X%W
X%U #21
X%K software prototyping
X
X%A Beth M. Lange
X%A Thomas G. Moher
X%T Some Strategies of Reuse in an Object-Oriented Programming Environment
X%J CHI\`98 Proceedings
X%P 69-73
X%D May 1989
X%O Not yet read
X%W
X%U #22
X%K reuse, objects
X
X%A T. A. Cargill
X%T Pi: A Case Study in Object-Oriented Programming
X%J Proceedings, OOPSLA \`86
X%P 350-360
X%D September 1986
X%O Not yet read
X%K objects, browser
X%W
X%U #23
X
X%A Jehuda Ziegler
X%A Jerry M. Grasso
X%A Linda G. Burgermeister
X%T An Ada Based Real-Time Closed-Loop Integration and Regression Test Tool
X%J Proceedings, Conference on Software Maintenance-1989
X%P 81-90
X%D October 16-19, 1989
X%O Not yet read
X%W
X%U #24
X%K ada, testing, regression testing, tool
X
X%Q Luqi
X%T Software Evolution Through Rapid Prototyping
X%J IEEE Computer
X%P 13-25
X%D May 1989
X%O Not yet read
X%W
X%U #25
X%K rapid prototyping, software evolution
X
X%A Scott N. Woodfield
X%A David W. Embley
X%A Del T. Scott
X%T Can Programmers Reuse Software?
X%J IEEE Software
X%V 4
X%N 7
X%P 52-59
X%D July 1987
X%O Not yet read
X%W
X%U #26
X%K reuse
X
X%A Morey Antebi
X%T Issues in teaching C++
X%J Journal of Object-Oriented Programming
X%V 3
X%N 4
X%P 11-21
X%D November 1990
X%O Not yet read
X%W
X%U #69
X%K objects teaching paradigm model
X
X%A C. Thomas Wu
X%T A Better Browser for Object-Oriented Programming
X%J Journal of Object-Oriented Programming
X%V 3
X%N 4
X%P 22-28
X%D November 1990
X%O Not yet read
X%W
X%U #70
X%K objects browser
X
X%A Bertrand Meyer
X%T The New Culture of Software Development
X%J Journal of Object-Oriented Programming
X%V 3
X%N 4
X%P 76-81
X%D November 1990
X%O Not yet read
X%W
X%U #71
X%K objects, software development, model, culture
X
X%A James R. Cordy
X%A Nicholas L. Eliot
X%A Michael G. Robertson
X%T TuringTool: A User Interface to Aid in the Software Maintenance Task
X%J IEEE Transactions on Software Engineering
X%V 16
X%N 3
X%P 294-301
X%D March 1990
X%O Not yet read
X%W
X%U #72
X%K software maintenance, user interface
X
X%A Ed Seidewitz
X%T Object-Oriented Programming in SmallTalk and Ada
X%J Proceedings, OOPSLA \`87
X%P 202-213
X%D October 4-8, 1987
X%W
X%U #2
X%K objects, Ada, SmallTalk
X
X%A Yih-Farn Chen
X%A Michael Y. Nishimoto
X%A C. V. Ramamoorthy
X%T The C Information Abstraction System
X%J IEEE Transactions on Software Engineering
X%V 16
X%N 3
X%P 325-334
X%D March 1990
X%O Not yet read
X%W
X%U #73
X%K information, abstraction
X
X%A Jim Diederich
X%A Jack Milton
X%T An Object-Oriented Design System Shell
X%J Proceedings, OOPSLA \`87
X%P 61-77
X%D October 4-8, 1987
X%O Not yet read
X%W
X%U #74
X%K objects, design, environment
X
X%A Victor R. Basili
X%T Viewing Maintenance as Reuse-Oriented Software Development
X%J IEEE Software
X%V 7
X%N 1
X%P 19-25
X%D January 1990
X%O Not yet read
X%W
X%U #75
X%K software maintenance, software reuse
X
X%A Stevan Mrdalj
X%T Bibliography of Object-Oriented Systems Development
X%J ACM SIGSOFT Software Engineering Notes
X%V 15
X%N 5
X%P 60-63
X%D October 1990
X%O Summary of information; need to scan for more info
X%W
X%U #76
X%K bibliography, objects, software engineering
X
X%A Vaclav Rajlich
X%A Nicholas Damaskinos
X%A Panagiotis Linos
X%A Wafa Khorshid
X%T VIFOR: A Tool for Software Maintenance
X%J Software - Practice and Experience
X%V 20
X%N 1
X%P 67-77
X%D January 1990
X%O Not yet read; abstract only
X%W
X%U #77
X%K software maintenance, tool
X
X%A Victor R. Basili
X%A Richard W. Selby
X%T Comparing the Effectiveness of Software Testing Strategies
X%J IEEE Transactions on Software Engineering
X%V SE-13
X%N 12
X%P 1278-1296
X%D December 1987
X%O Not yet read
X%W
X%U #78
X%K software testing
X
X%A Larry J. Morell
X%T A Theory of Fault-Based Testing
X%J IEEE Transactions on Software Engineering
X%V 16
X%N 8
X%P 844-857
X%D August 1990
X%O Not yet read
X%W
X%U #79
X%K software testing, faults
X
X%A Sidney C. Bailin
X%T An Object-Oriented Requirements Specification Method
X%J Communications of the ACM
X%V 32
X%N 5
X%P 608-623
X%D May 1989
X%O Not yet read
X%K objects, requirements
X%W
X%U #80
X
X%A Ted J. Biggerstaff
X%A Josiah Hoskins
X%A Dallas Webster
X%T DESIRE: A System for Design Recovery
X%R MCC Technical Report Number STP-081-89
X%D April 1989
X%O Not yet read
X%W
X%U #81
X%K reverse engineering, design recovery
X
X%A Roger S. Pressman
X%T Software Engineering: A Practitioner's Approach
X%I McGraw-Hill
X%C New York
X%D 1987
X%O Not fully read
X%W
X%U BOOK
X%K software engineering, software maintenance
X
X%A Lowell Jay Arthur
X%T Software Evolution: The Software Maintenance Challenge
X%I John Wiley & Sons
X%C New York
X%D 1988
X%O Not fully read
X%K software maintenance
X%W
X%U BOOK
X
X%A Barry W. Boehm
X%T Software Engineering Economics
X%I Prentice-Hall
X%C Englewood Cliffs, New Jersey
X%D 1981
X%O Good background material
X%W
X%U BOOK
X%K software engineering
X
X%A Anneliese von~Mayrhauser
X%T Software Engineering: Methods and Management
X%I Academic Press
X%C Boston
X%D 1990
X%W
X%U BOOK
X%O Good background material
X%K software engineering, software maintenance
X
X%A Garish Parikh
X%A Nicholas Zvegintzov
X%T Tutorial on Software Maintenance
X%I IEEE Computer Society Press
X%C Silver Spring, Maryland
X%D 1983
X%W
X%U BOOK
X%O Lots of background material
X%K software maintenance
X
X%A Ian Sommerville
X%T Software Engineering
X%I Addison-Wesley
X%W
X%U BOOK
X%D 1982
X%C London
X%O Good background
X%K software engineering
X
X%A Grady Booch
X%T Software Components with Ada
X%I The Benjamin/Cummings Publishing Company
X%C Menlo Park, California
X%D 1987
X%O Good Ada/Object background
X%W
X%U BOOK
X%K Ada, objects
X
X%A Frederick P. Brooks, Jr.
X%T The Mythical Man-Month: Essays on Software Engineering
X%I Addison-Wesley
X%C Reading, Massachusetts
X%D 1982
X%O Good software engineering anecdotes
X%K software engineering
X%W
X%U BOOK
X
X%A William Hetzel
X%T The Complete Guide to Software Testing
X%I QED Information Sciences, Inc.
X%C Wellesley, Massachusetts
X%D 1984
X%W
X%U BOOK
X%O Good background on a variety of testing techniques
X%K software testing
X
X%A Adele Goldberg
X%T SmallTalk-80: The Interactive Programming Environment
X%I Addison-Wesley
X%W
X%U BOOK
X%C Reading, Massachusetts
X%D 1984
X%O Good works for object/environments
X%K objects, environment
X
X%A Adele Goldberg
X%A David Robson
X%T SmallTalk-80: The Language and its Implementation
X%I Addison-Wesley
X%W
X%U BOOK
X%C Reading, Massachusetts
X%D 1983
X%O Good information on object systems
X%K objects
X
X%A Elliot J. Chikofsky
X%A James H. Cross II
X%T Reverse Engineering and Design Recovery: A Taxonomy
X%J IEEE Software
X%V 7
X%N 1
X%P 13-17
X%D January 1990
X%O Not yet read
X%W
X%U #82
X%K reverse engineering, design extraction
X
X%A Jean Hartmann
X%A David J. Robson
X%T Techniques for Selective Revalidation
X%J IEEE Software
X%V 7
X%N 1
X%P 31-36
X%D January 1990
X%O Not yet read
X%W
X%U #83
X%K testing
X
X%A Spencer Rugaber
X%A Stephen B. Ronburn
X%A Richard J. LeBlanc, Jr.
X%T Recognizing Design Decisions in Programs
X%J IEEE Software
X%V 7
X%N 1
X%P 46-54
X%D January 1990
X%O Not yet read
X%W
X%U #84
X%K design extraction, program understanding
X
X%A Philip A. Hausler
X%A Mark G. Pleszkoch
X%A Richard C. Linger
X%A Alan R. Hevner
X%T Using Functional Abstraction to Understand Program Behavior
X%J IEEE Software
X%V 7
X%N 1
X%P 55-63
X%D January 1990
X%O Not yet read
X%W
X%U #85
X%K program understanding, abstraction
X
X%A Song C. Choi
X%A Walt Scacchi
X%T Extracting and Restructuring the Design of Large Systems
X%J IEEE Software
X%V 7
X%N 1
X%P 66-71
X%D January 1990
X%O Not yet read
X%W
X%U #86
X%K design extraction
X
X%A Mehdi T. Harandi
X%A Jim Q. Ning
X%T Knowledge-Based Program Analysis
X%J IEEE Software
X%V 7
X%N 1
X%P 74-81
X%D January 1990
X%O Not yet read
X%W
X%U #87
X%K program understanding
X
X%A Charles Rich
X%A Linda M. Wills
X%T Recognizing a Program's Design: A Graph-Parsing Approach
X%J IEEE Software
X%V 7
X%N 1
X%P 82-89
X%D January 1990
X%O Not yet read
X%W
X%U #88
X%K program understanding, program graphs
X
X%A Wing Hong Cheung
X%A James P. Black
X%A Eric Manning
X%T A Framework for Distributed Debugging
X%J IEEE Software
X%V 7
X%N 1
X%P 106-115
X%D January 1990
X%O Not yet read
X%W
X%U #89
X%K debugging, communication graph
X
X%A Scott Guthery
X%T Are the Emperor's New Clothes Object Oriented?
X%J Dr. Dobb's Journal
X%V 14
X%N 12
X%P 80-86
X%D December 1989
X%O Not yet read
X%W
X%U #90
X%K objects, software engineering
X
X%A Tim Korson
X%A John D. McGregor
X%T Understanding Object-Oriented: A Unifying Paradigm
X%P 40-60
X%J Communications of the ACM
X%V 33
X%N 9
X%D September 1990
X%O Not yet read
X%W
X%U #91
X%K objects, program understanding
X
X%A Simon Gibbs
X%A Dennis Tsichritzis
X%A Eduardo Casais
X%A Oscar Nierstrasz
X%A Xavier Pintado
X%T Class Management for Software Communities
X%P 90-103
X%K objects, configuration management
X%J Communications of the ACM
X%V 33
X%N 9
X%D September 1990
X%O Not yet read
X%W
X%U #92
X
X%A Rebecca J. Wirfs-Brock
X%A Ralph E. Johnson
X%T Surveying Current Research in Object-Oriented Design
X%P 104-124
X%O objects, research
X%J Communications of the ACM
X%V 33
X%N 9
X%D September 1990
X%O Not yet read
X%W
X%U #93
X
X%A Gul Agha
X%T Concurrent Object-Oriented Programming
X%P 125-141
X%K objects, concurrency, communication graph
X%J Communications of the ACM
X%V 33
X%N 9
X%D September 1990
X%O Not yet read
X%W
X%U #94
X
X%A Brian Henderson-Sellers
X%A Julian M. Edwards
X%T The Object-Oriented Systems Life Cycle
X%P 142-159
X%K objects, lifecycle
X%J Communications of the ACM
X%V 33
X%N 9
X%D September 1990
X%O Not yet read
X%W
X%U #95
X
X%A Bjarne Stroustrup
X%T What is \`Object-Oriented Programming'?
X%J Proceedings, ECOOP \`87
X%P 51-70
X%D June 15-17, 1987
X%O Not yet re-read
X%W
X%U #67
X%K objects
X
X%A Chris Horn
X%T Conformance, Genericity, Inheritance and Enhancement
X%J Proceedings, ECOOP \`87
X%P 223-233
X%D June 15-17, 1987
X%O Not yet read, Ask MMA about author
X%W
X%U #68
X%K objects
X
X%A M. E. Scharenberg
X%A H. E. Dunsmore
X%T Evolution of classes and objects during object-oriented design and programming
X%J Journal of Object-Oriented Programming
X%V 3
X%N 5
X%P 30-34
X%D January 1991
X%O Not yet read
X%W
X%U #65
X%K objects, change
X
X%A Michael Ackroyd
X%A Dana Dunn
X%T Graphical notation for object-oriented design and programming
X%J Journal of Object-Oriented Programming
X%V 3
X%N 5
X%P 18-28
X%D January 1991
X%O Not yet read
X%W
X%U #66
X%K objects, object semantics
X
X%A Gordon B. Kotik
X%A Lawrence Z. Markosian
X%T Automating Software Analysis and Testing Using a Program Transformation System
X%J Unknown right now
X%P 75-84
X%D 1989
X%O Not yet read
X%W
X%U #96
X%K software analysis, automated testing
X
X%A Koichi Fukunaga
X%T PROMPTER: A Knowledge Based Support Tool for Code Understanding
X%J Proceedings, COMPSAC \`85
X%P 358-363
X%D October 1985
X%O Not yet read; check reference
X%W
X%U #97
X%K program understanding
X
X%A Gail E. Kaiser
X%A David Garlan
X%T Composing Software Systems from Reusable Building Blocks
X%J Proceedings, 20th Annual Hawaii International Conference on System Sciences
X%P 536-545
X%D 1987
X%O Not yet read
X%K objects, reuse
X%W
X%U #98
X
X%A W. B. Frakes
X%A B. A. Nejmeh
X%T Software Reuse Through Information Retrieval
X%P 530-535
X%J Proceedings, 20th Annual Hawaii International Conference on System Sciences
X%D 1987
X%O Not yet read
X%W
X%U #99
X%K class/object database
X
X%A Emmanuel O. Onuegbe
X%T Software Classification as an Aid to Reuse: Initial Use as Part of a Rapid Prototyping System
X%P 521-529
X%J Proceedings, 20th Annual Hawaii International Conference on System Sciences
X%D 1987
X%O Not yet read
X%W
X%U #100
X%K classification, reuse
X
X%A Richard J. St.~Dennis
X%T Reusable Ada Software Guidelines
X%P 513-520
X%J Proceedings, 20th Annual Hawaii International Conference on System Sciences
X%D 1987
X%O Not yet read
X%W
X%U #101
X%K software reuse, ada, guidelines
X
X%A J. A. Zimmer
X%T Resturcturing for Style
X%J Software - Practice and Experience
X%V 20
X%N 4
X%P 365-389
X%D April 1990
X%O Not yet read
X%W
X%U #102
X%K objects, program understanding, retrofitting
X
X%A J. Hartmann
X%A D. J. Robson
X%T Revalidation During the Software Maintenance Phase
X%J Proceedings, Conference on Software Maintenance \`89
X%P 70-80
X%D October 16-19, 1989
X%O Not yet read
X%W
X%U #102
X%K testing
X
X%A Paul W. Oman
X%A Curtis R. Cook
X%T The Book Paradigm for Improved Maintenance
X%J IEEE Software
X%V 7
X%N 1
X%P 39-45
X%D January 1990
X%O Not yet read
X%W
X%U #104
X%K program understanding
X
X%A David Luckham
X%A Sriram Sankar
X%A Shuzo Takahashi
X%T Two-Dimensional Pinpointing: Debugging with Formal Specifications
X%J IEEE Software
X%P 74-84
X%D January 1991
X%O Not yet read
X%W
X%U #105
X%K debugging, formal methods, Ada, Anna
X
X%A Judith E. Grass
X%A Yih-Farn Chen
X%T The C++ Information Abstractor
X%J Proceedings, 2nd USENIX C++ Conference
X%D April 1990
X%W
X%U #1
X%K objects, program understanding, software maintenance
X
X%A Bertrand Meyer
X%T Object-oriented Software Construction
X%I Prentice Hall
X%C New York
X%D 1988
X%O reference on Eiffel
X%U BOOK
X%K objects reuse
X
X%A Bjarne Stroustrup
X%T The C++ Programming Language
X%I Addison-Wesley
X%C Reading, Massachusetts
X%D 1986
X%O reference on C++
X%K objects langauge
X%U BOOK
__EOF__
	if [ "`wc -c ./phd.biblio`" -ne "   27180 phd.biblio" ]; then
		echo "Possible corruption in phd.biblio: wc phd.biblio should be    27180 phd.biblio"
	fi
	echo "phd.biblio extracted."
fi
if [ -f "./refer2mml" ] ; then
	echo "shar: will not overwrite existing ./refer2mml"
else
	sed 's/^X//' <<__EOF__ >./refer2mml
X#! /bin/ksh
X#
X# refer2mml - convert a refer database into a mml file.
X#
X# usage: refer2mml [options] db
X# generates db.mml in mml format
X#
X# options:
X#	-h:		prints usage summary
X#	-f file:	generates file instead of db.mml
X#	-i file:	saves refer(1) output in file
X#	-k:		include %K fields in output
X#	-l:		Includes location (%U) in output
X#	-o:		doesn't include %O fields in output
X#	-p file:	use new prologue file
X#	-s:		sort references (using sortbib(1))
X#			Set SORTOPTS to options for sort
X#			default is the sortbib default
X#	-S:		sort refs by location (using sortloc)
X#	-x:		includes annotation in output
X#	-w:		include category (%W) information in output
X#	-v:		prints version of generator and exits
X#
XDEBUG=\${DEBUG:-""}
XPATH=\$PATH:/bin:/usr/local/bin
X: \${SORTOPTS:-""}
XAWKFILE=~crocker/lib/refer2mml.awk
XMMLFILE=~crocker/lib/refer2mml.mml
XVERSION="1.0b (2/4/91)"
XPROGNAME="\`basename \$0\`"
XSUFFIX=".mml"
XSORT="cat"
X
Xusage()
X{
X	echo "\$PROGNAME: Usage: \$PROGNAME [-h] [-f file] [-i file] [-p file] [-klosvx]"
X	echo "where:"
X	echo "	-h:	Output this message"
X	echo "	-f:	save output in file file (use - for stdout)"
X	echo "	-i:	save intermediate (refer) output in file"
X	echo "	-k:	include keywords (%K) in output"
X	echo "	-l:	include location (%U) in output"
X	echo "	-o:	exclude %O options from output"
X	echo "	-p:	use file as new mml prologue"
X	echo "	-s:	sort using \$SORTOPTS as sortbib(1) options"
X	echo "		(default is sortbib default)"
X	echo "	-S:	sort by location using sortloc(l)"
X	echo "	-v:	print version number and exit"
X	echo "	-w:	include %W (category) information in output"
X	echo "	-x:	include %X (annotation) information in output"
X}
X
Xversion()
X{
X	echo "\$PROGNAME: Version \\"\$VERSION\\""
X}
X
Xset -- \`getopt "Sf:hi:klop:svwxa:" "\$@"\`
X
Xif [ \$? != 0 ]; then
X	usage();
X	exit;
Xfi
X
XKFLAG=0
XXFLAG=0
XLFLAG=0
XOFLAG=0
XWFLAG=0
X
Xfor i in \$*; do
Xcase \$i in
X	-a)	AWKFILE=\$2; shift 2;;
X	-h)	usage;exit ;;
X	-f)	OFILE="\$2"; 
X		if [ "\$OFILE" = "-" ]; then
X			echo "\$PROGNAME: Output going to standard output"
X		elif [ "\${OFILE%\$SUFFIX}" = "\${OFILE}" ]; then
X			echo "\$PROGNAME: Output file name (\$OFILE) must end with \\"\$SUFFIX\\""
X			exit 2
X		fi
X		shift 2;;
X	-i)	IFILE="tee \$2 |"; shift 2;;
X	-k)	KFLAG=1; shift;;
X	-l)	LFLAG=1; shift;;
X	-o)	OFLAG=1; shift;;
X	-p)	MMLFILE="\$2"; shift 2;;
X	-s)	SORT="sortbib"; shift;;
X	-S)	SORT="sortloc"; shift;;
X	-v)	version; exit ;;
X	-w)	WFLAG=1; shift;;
X	-x)	XFLAG=1; shift;;
X	--)	shift; break;;
X	esac
Xdone
X
Xif [ \$# -lt 1 ]; then
X	echo "\$PROGNAME: at least one database file must be specified"
X	exit 1
Xelif [ ! -f \$1 ]; then
X	echo "\$PROGNAME: database file (\$1) not found."
X	exit 1
Xfi
X
X#
X# ok, database file found, now run converter
X#
X
XCMD="\$SORT \$SORTOPTS \$1 | refer -a1 -B |"
Xif [ "\$IFILE" ]; then
X	CMD="\$CMD \$IFILE"
Xfi
XAWKOPTS="kflag=\${KFLAG} xflag=\${XFLAG} lflag=\${LFLAG} \\
X	 oflag=\${OFLAG} wflag=\${WFLAG}"
X
XCMD="\$CMD nawk -f \$AWKFILE \${AWKOPTS} mmlfile=\${MMLFILE}"
X
Xif [ "\$OFILE" = "-" ]; then
X	CMD="\$CMD"
Xelif [ "\$OFILE" ]; then
X	CMD="\$CMD >\$OFILE"
Xelse
X	CMD="\$CMD >\${1}\${SUFFIX}"
Xfi
X
Xif [ "\$DEBUG" ]; then
X	echo "\$CMD"
Xfi
X
Xeval "\$CMD"
__EOF__
	if [ "`wc -c ./refer2mml`" -ne "    3072 refer2mml" ]; then
		echo "Possible corruption in refer2mml: wc refer2mml should be     3072 refer2mml"
	fi
	echo "refer2mml extracted."
fi
if [ -f "./refer2mml.awk" ] ; then
	echo "shar: will not overwrite existing ./refer2mml.awk"
else
	sed 's/^X//' <<__EOF__ >./refer2mml.awk
XBEGIN	{
X                version_id = "1.0b (2/4/91)";
X		if (mmlfile == "") {
X		    printf("refer2mml: MMLFILE not set; abort!\\n")>>"/dev/tty";
X		    exit 1
X	        }
X		init_values();
X		output_header();
X		mode=0
X		flag=0
X	}
Xmode==0 && /^\\.ds/	{
X		flag=1
X		reg = substr(\$2,2,1);
X		if (substr(\$3,1,1) == "\\"") 
X			instr = substr(\$3,2);
X		else
X			instr = \$3;
X		for (i=4;i<=NF;i++)
X			instr = instr " " \$i;
X		if (valid[reg] == 1) {
X		    strings[reg] = strings[reg] ", " instr;
X		    printf("<Comment - register %s redefined on line %d of input>\\n", reg, NR);
X		} else if (length(instr) > 0) {
X		    strings[reg] = instr;
X		    valid[reg] = 1;
X		}
X		next
X	}
Xmode==0 && /^\\.as/	{
X		flag=1
X		reg = substr(\$2,2,1)
X		if (substr(\$3,1,1) == "\\"") 
X			instr = substr(\$3,2)
X		else
X			instr = \$3
X		for (i=4;i<=NF;i++)
X			instr = instr " " \$i
X		strings[reg] = strings[reg] instr
X		valid[reg] = 1
X		next
X	}
Xmode==0 && /^\\.nr/	{
X		reg = substr(\$2,2,1)
X		numreg[reg] = \$3
X		vnumreg[reg] = 1
X		next
X	}
Xmode==0 && /^\\.\\]\\[/ {
X		if (flag == 0) next
X		type = \$2
X		if (type == 0) {	# other
X		    print_location();
X		    ifvalid("Q","%s\\n");
X		    ifvalid("A", valid["Q"]==1?", %s\\n":"%s\\n");
X		    ifvalid("T", (valid["Q"]+valid["A"]>0)?", <italic>%s<noitalic>":"<italic>%s<noitalic>");
X		    pagenum("P");
X		    ifvalid("C",", %s");
X		    ifvalid("C",", %s");
X		    if (valid["Q"]+valid["A"]+valid["T"]>0)
X			printf(".\\n");
X		    else
X			printf("\\n");
X		    print_optional();
X		} else if (type == 1) {	# article
X		    print_location();
X		    ifvalid("Q","%s, ");
X		    ifvalid("A","%s, ");
X		    ifvalid("T","<oq>%s,<cq> ");
X		    ifvalid("J","<italic>%s<noitalic>");
X		    ifvalid("V",", vol. %s");
X		    ifvalid("N",", no. %s");
X		    pagenum("P");
X		    ifvalid("I",", %s");
X		    ifvalid("C",", %s");
X		    ifvalid("D",", %s");
X		    printf(".\\n");
X		    print_optional();
X		} else if (type == 2) { # book
X		    print_location();
X		    ifvalid("Q","%s, ");
X		    ifvalid("A","%s, ");
X		    ifvalid("T","<italic>%s<noitalic>");
X		    ifvalid("S",", %s");
X		    ifvalid("V",", vol. %s");
X		    pagenum("P");
X		    ifvalid("I",", %s");
X		    ifvalid("C",", %s");
X		    ifvalid("D",", %s");
X		    printf(".\\n");
X		    print_optional();
X		} else if (type == 3) { # article in book
X		    print_location();
X		    ifvalid("Q","%s, ");
X		    ifvalid("A","%s, ");
X		    ifvalid("T","<oq>%s,<cq> ");
X		    ifvalid("B","in <italic>%s,<noitalic>");
X		    ifvalid("E"," ed. %s");
X		    ifvalid("S",", %s");
X		    ifvalid("V",", vol. %s,");
X		    ifvalid("N",", no. %s");
X		    pagenum("P");
X		    ifvalid("I",", %s");
X		    ifvalid("C",", %s");
X		    ifvalid("D",", %s");
X		    printf(".\\n");
X		    print_optional();
X		} else if (type == 4) { # report
X		    print_location();
X		    ifvalid("Q","%s, ");
X		    ifvalid("A","%s, ");
X		    ifvalid("T","<oq>%s<cq>");
X		    ifvalid("R",", %s");
X		    ifvalid("G"," & %s"); 
X		    pagenum("P");
X		    ifvalid("I",", %s");
X		    ifvalid("C",", %s");
X		    ifvalid("D",", %s");
X		    printf(".\\n");
X		    print_optional();
X		} else {
X		    printf("Invalid reference type - %d (%s)", \$2, \$3);
X		}
X		next;
X	    }
X/^\\.\\]\\-/   {
X                printf("\\n");
X                init_valids();
X		mode = 0;
X		next;
X	    }
Xxflag == 1 && /^\\.AP/	    {
X	    mode = 1;
X	    printf("<Annotation>\\n");
X	    next;
X	}
X
Xmode == 1   {
X                print \$0;
X	    }
X                
Xfunction init_values()
X{
X    valid["A"] =    valid["H"] =    valid["N"] =    valid["T"] = 0;
X    valid["B"] =    valid["I"] =    valid["O"] =    valid["U"] = 0;
X    valid["C"] =    valid["J"] =    valid["P"] =    valid["V"] = 0;
X    valid["D"] =    valid["K"] =    valid["Q"] =    valid["W"] = 0;
X    valid["E"] =    valid["L"] =    valid["R"] =    valid["X"] = 0;
X    valid["F"] =    valid["M"] =    valid["S"] =    valid["Y"] = 0;
X    valid["G"] = 				    valid["Z"] = 0;
X    vnumreg["P"] = 0;
X}
X
Xfunction init_valids()
X{
X    init_values();
X
X    printf("<Reference>\\n");
X}
X
Xfunction ifvalid(s,fmt)
X{
X    if (valid[s] == 1) {
X	if (index(strings[s],"~") != 0) {
X		gsub("~"," ", strings[s])
X	}
X	printf(fmt,strings[s]);
X    }
X}
X
Xfunction pagenum(s)
X{
X    if (vnumreg[s]) {
X	ifvalid(s,", pp. %s");
X    } else {
X	ifvalid(s,", p. %s");
X    }
X}
X
Xfunction output_header()
X{
X    printf("<MML - generated by refertoMML.awk v%s>\\n",version_id);
X    printf("<Comment - header information goes here!>\\n");
X    printf("<Comment - Included from file \\"%s\\">\\n", mmlfile);
X# copy in include file here!;
X    while (getline x <mmlfile > 0)
X	print x;
X
X    printf("<Comment - End of included text>\\n\\n");
X}
X
Xfunction print_keywords()
X{
X    if (kflag == 1)
X	ifvalid("K","<kw>[Keywords: %s]<plain>\\n");
X    if (wflag == 1)
X	ifvalid("W","<kw>[Category: %s]<plain>\\n");
X}
X
Xfunction print_optional()
X{
X    if (oflag != 1)
X	ifvalid("O","%s\\n");
X    print_keywords();
X}
X
Xfunction print_location()
X{
X	if (lflag == 1) {
X	    if (valid["U"] != 1) {
X		strings["U"] = "?";
X		valid["U"] = 1;
X	    }
X	    ifvalid("U","<kw>{%s}<plain>\\n");
X	}
X}
__EOF__
	if [ "`wc -c ./refer2mml.awk`" -ne "    4988 refer2mml.awk" ]; then
		echo "Possible corruption in refer2mml.awk: wc refer2mml.awk should be     4988 refer2mml.awk"
	fi
	echo "refer2mml.awk extracted."
fi
if [ -f "./refer2mml.mml" ] ; then
	echo "shar: will not overwrite existing ./refer2mml.mml"
else
	sed 's/^X//' <<__EOF__ >./refer2mml.mml
X<MML - Header file for refer2mml>
X<!DefineFont ft
X  <Family Times>
X  <pts 12>
X  <plain>
X>
X<!DefineFont kw
X  <Family Times>
X  <pts 12>
X  <bold> <italic>
X>
X<!DefinePar Reference
X  <ft>
X  <LeftIndent 0.50">
X  <FirstIndent 0">
X  <RightIndent 0">
X  <Leading 12pt>
X  <Alignment lr>
X  <AutoNumber Yes >
X  <NumberFormat "[+]\\t">
X  <Hyphenate No >
X  <BlockSize 2>
X  <TabStops   
X	<TabStopType l>   
X	<TabStop 0.50">
X  >
X>
X<!DefinePar Annotation
X  <ft>
X  <LeftIndent 0.750">
X  <FirstIndent 0.750">
X  <RightIndent 0.50">
X  <Leading 12pt>
X  <Alignment lr>
X  <AutoNumber No>
X  <Hyphenate No >
X  <BlockSize 2>
X>
X
X<!DefineMacro oq "<Character \\\\xd2 >">
X<!DefineMacro cq "<Character \\\\xd3 >">
X
X<!DefineMacro rm "Marker <MType">
X<!DefineMacro rt "> <MText ">
X
X<HeaderBottomMargin 0.50">
X<RightFooter "Page #">
__EOF__
	if [ "`wc -c ./refer2mml.mml`" -ne "     793 refer2mml.mml" ]; then
		echo "Possible corruption in refer2mml.mml: wc refer2mml.mml should be      793 refer2mml.mml"
	fi
	echo "refer2mml.mml extracted."
fi
if [ -f "./sortloc.c" ] ; then
	echo "shar: will not overwrite existing ./sortloc.c"
else
	sed 's/^X//' <<__EOF__ >./sortloc.c
X/*
X**	sortloc
X**
X**	a program to sort a refer database based on numeric values
X**	present in the %U field.  %U is not used by refer/addbib
X**	currently, that is why it was chosen.
X**
X**	If this %U field contains #nnn, then nnn is the location
X**	number for that record, otherwise the location is set to 0.
X**	The records are then sorted and printed to standard output.
X**
X**	For this program to work correctly, indxbib must have been
X**	run on the refer database.
X*/
X
X#include <stdio.h>
X#include <sys/types.h>
X#include <sys/file.h>
X#include <string.h>
X
X#define	NSTRINGS	1024
Xchar	*strings[NSTRINGS];
Xint	 locnum[NSTRINGS];
Xint	 sortptr[NSTRINGS];	/* move these instead of the */
X				/* strings... */
Xint	 nrecs;			/* number of records found */
X
Xmain(argc,argv)
Xint	  argc;
Xchar	**argv;
X{
X    FILE 	*f;
X    int		 fd;
X    char	 buf[200];
X    int		 i;
X
X    argc--; argv++;
X    if (argc != 1) {
X	usage();
X	exit(1);
X    }
X
X    strcpy(buf,*argv);
X    strcat(buf,".ic");
X
X    if ((f = fopen(buf,"r")) == NULL) {
X	fprintf(stderr, "File (%s) not found\\n", buf);
X	exit(2);
X    }
X
X    if ((fd = open(*argv,O_RDONLY)) == -1) {
X	fprintf(stderr, "File (%s) not found\\n", argc);
X	exit(2);
X    }
X
X    for (i=0; fgets(buf,200,f) != NULL; i++) {
X
X	/* format is "filename:first,length" */
X	int	first,length;
X	char	*fptr, *lptr;
X	off_t	last;
X	char	*instr, *malloc();
X
X	fptr = strchr(buf,':');
X	fptr++;
X	lptr = strchr(fptr,',');
X	*lptr = 0;
X	lptr++;
X	sscanf(fptr,"%d", &first);
X	sscanf(lptr,"%d", &length);
X
X	instr = malloc(length+2);
X	lseek(fd, first, L_SET);
X	read(fd,instr,length);
X	instr[length]=0;
X	strings[i] = instr;
X	findloc(i);
X    }
X
X    /* fix last record to have 2 NL at the end of it */
X    fixlastrecord(i-1);
X	
X    nrecs = i;
X
X    sortlocs(nrecs);
X
X    dumprecs(nrecs);
X}
X
Xfindloc(i)
Xint	i;
X{
X    char 	*s = strings[i];
X    int 	 mode = 0;
X    
X    while (*s) {
X	switch (*s) {
X	case '%':
X	    mode = 1;
X	    break;
X
X	case 'U':
X	    if (mode == 1) {
X		s++;		/* skip 'U' */
X		s++;		/* skip ' ' */
X		if (*s == '#') { /* got a number! */
X		    s++;	/* skip '#' */
X		    sscanf(s, "%d", &locnum[i]);
X		} else {
X		    locnum[i] = 0; /* book? */
X		}
X		return;
X	    }
X	    break;
X	    
X	default:
X	    mode = 0;
X	    break;
X	}
X	s++;
X    }
X    locnum[i] = -1;		/* no locnum found! */
X}
X
Xsortlocs(n)
Xint	n;
X{
X    int		i;
X    int		compar();
X    for (i=0;i<n;i++) 
X	sortptr[i] = i;		/* initialize for sort */
X
X    qsort((char *) sortptr, n, sizeof(sortptr[0]), compar);
X}
X
Xint 
Xcompar(l,r)
Xint	*l,*r;
X{
X    int	ll = locnum[*l];
X    int	lr = locnum[*r];
X
X    return ll - lr;
X}
X	
X	
Xdumprecs(n)
Xint	n;
X{
X    int i;
X    for (i=0;i<n;i++) {
X	printf("%s", strings[sortptr[i]]);
X    }
X}
X
Xusage()
X{
X    fprintf(stderr,"usage: sortloc bibfile\\n");
X}
X
Xfixlastrecord(i)
Xint	i;	/* record number to fix */
X{
X	char **s = &strings[i];
X	int len = strlen(*s);
X
X	if ((*s)[len-2] == '\\n') {
X		;	/* this is ok... */
X	} else {
X		(*s)[len]='\\n';
X		(*s)[len+1] = 0;
X	}
X}
X
__EOF__
	if [ "`wc -c ./sortloc.c`" -ne "    2930 sortloc.c" ]; then
		echo "Possible corruption in sortloc.c: wc sortloc.c should be     2930 sortloc.c"
	fi
	echo "sortloc.c extracted."
fi
# end of shar
exit 0
-- 
Ron Crocker
Motorola Radio-Telephone Systems Group, Cellular Infrastructure Group
(708) 632-4752 [FAX: (708) 632-4430]
crocker@mot.com or uunet!motcid!crocker