[comp.sources.misc] v14i062: Chemtab 1.2

root@ames.arc.nasa.gov@lsrhs.UUCP (Mr System) (08/30/90)

Posting-number: Volume 14, Issue 62
Submitted-by: root@ames.arc.nasa.gov@lsrhs.UUCP (Mr System)
Archive-name: chemtab-1.2/part02

---- Cut Here and unpack ----
#!/bin/sh
# this is part 2 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file looke.c continued
#
CurArch=2
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
echo "x - Continuing file looke.c"
sed 's/^X//' << 'SHAR_EOF' >> looke.c
X		wrefresh(mn);
X		echo();
X		nocrmode();
X		gets(srch);
X	}
X	
X	wclear(mn); wrefresh(mn);
X	for (i = 1; i < MAXLM; i++) {	/* Look for appropriate element */
X		switch(c) {		/* then display it */
X			case '1': strn = e[i].name;
X				if (strncmp(srch, strn, sizeof(srch)) == 0) {
X					disp(e[i].anum); goto nd;
X				} else
X					break;
X			case '2':
X				if (atoi(srch) == e[i].anum) {
X					disp(e[i].anum); goto nd;
X				} else
X					break;
X			case '3': strn = e[i].sym;
X				if (strncmp(srch, strn, sizeof(srch)) == 0) {
X					disp(e[i].anum); goto nd;
X				} else
X					break;
X		}
X	}
X	mvwaddstr(mn, 11, 0, "No such element!");
X	wrefresh(mn);
X	sleep(2);
Xnd:	wclear(graph); wrefresh(graph);
X	wclear(mn); wrefresh(mn);
X	return(0);
X}
SHAR_EOF
echo "File looke.c is complete"
chmod 0755 looke.c || echo "restore of looke.c fails"
set `wc -c looke.c`;Sum=$1
if test "$Sum" != "4281"
then echo original size 4281, current size $Sum;fi
echo "x - extracting main.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > main.c &&
X
X/*
X * chemtab - a periodic table data base (C) 1990 Jim King (pulsar@lsrhs)
X *
X * main.c	Main program structure and branch
X */
X
X#include <stdio.h>
X#include <curses.h>
X#include <time.h>
X#include <signal.h>
X
X#include "variables.h"
X#include "windows.h"
X
Xextern int	cleanup();
X
X/*
X * main() - no input
X *
X * purpose:	Main program branch & menu & inits
X */
Xmain()
X{
X#ifdef TRANSCRIPT
X	long	secs;		/* For logfile */
X#endif TRANSCRIPT
X	char	c;		/* input choice */
X	initscr();		/* start curses */
X
X	btm = newwin(1, 79, 23, 0);	/* Bottom line window */
X	srt = newwin(5, 79, 0, 0);	/* Top sort window */
X	graph = newwin(23, 79, 0, 0);	/* Whole screen overwrite */
X	mn = newwin(17, 79, 5, 0);	/* Middle (main) window */
X
X#ifdef	TRANSCRIPT			/* Log time and user in file */
X	time(&secs);
X	bot("Logging you in..");
X	if ((fp = fopen(TRANSCRIPT, "a+")) != NULL) {
X		fprintf(fp, "%s logged in at %s", getenv("USER"), ctime(&secs));
X		fclose(fp);
X	} else {
X		bot("Please set the TRANSCRIPT define in tune.h to work on your machine.");
X		sleep(10);
X		bot("The program will exit so you can do this now.");
X		sleep(5);
X		cleanup();
X	}
X#endif	TRANSCRIPT
X
X	clear();
X	mvaddstr(5, 37, "ChemTab");
X	mvaddstr(9, 8, "\033#6Periodic Table Data Base");
X	mvaddstr(20, 21, "Version 1.2, August 2nd 1990 by Jim King");
X	refresh();				/* Title page */
X	spc();
Xfrs:	mvwaddstr(btm, 0, 0, "Would you like extra explanations? ");
X	wrefresh(btm);	/* .. help flag (hlp) */
X	noecho();
X	crmode();
X	c = getchar();
X	if (c == 'y') {
X		wprintw(btm, "yes"); wrefresh(btm);
X		hlp++;
X	} else if (c != 'n') {
X		mvwaddstr(btm, 0, 38, "(y or n)");
X		goto frs;
X	}
X	wprintw(btm, "no"); wrefresh(btm);
X	wclear(btm);
X	wrefresh(btm);
Xnxt:	mvwaddstr(btm, 0, 0, "Would you like a transcript of graphs and information? ");
X	wrefresh(btm);	/* transcript flag (trans) */
X	c = getchar();
X	if (c == 'y') {
X		trans = 1;
X		wclear(btm);
X		mvwaddstr(btm, 0, 0, "Please enter your last name for the transcript: ");
X		wrefresh(btm);
X		echo(); nocrmode();
X		gets(lnm);
X		sprintf(str, "%d.chemtab", getpid());
X		fp = fopen(str, "w");
X		fprintf(fp, "*** ChemTab - Periodic Table Database - Transcript for >> %s <<", lnm);
X	}
X	else if (c != 'n') {
X		mvwaddstr(btm, 0, 58, "(y or n) ");
X		goto nxt;
X	}
X	wprintw(btm, "no"); wrefresh(btm);
X	wclear(btm);
X	wrefresh(btm);
X	clear();
X	refresh();
X
X	bot("Reading in elements...");
X
X	readelem();				/* Sort PERTABLE -> e[] */
X
X	signal(SIGINT, cleanup);
X	signal(SIGTSTP, SIG_IGN);
X	signal(SIGQUIT, SIG_IGN);
X	
X	for (i = 0; i < 3; i++)			/* initialize sort choices */
X		dosort[i].wch = 0;
X
X	bot(" ");				/* clear the bottom line */
X
X	for (;;) {				/* main loop */
X		wclear(mn);
X		wrefresh(srt);
X		upsort();			/* Update the sort window */
X		for (i = 1; i < 7; i++) {
X			wmove(mn, i+1, 0);
X			wprintw(mn, "%d] %s", i, mopts[i]);
X		}	/* give me choices and help, then branch off */
X		if (hlp) {
X			mvwaddstr(mn, 12, 16, "If you do not know what to do, consult your ChemTab handbook");
X			mvwaddstr(mn, 9, 16, "(type in number of choice, do not hit return)");
X		}
X		wmove(mn, 9, 0); wrefresh(mn);
X		wrefresh(mn);		
X		wstandout(mn);
X		mvwaddstr(mn, 0, 36, "MAIN MENU");
X		wstandend(mn);
X		mvwaddstr(mn, 9, 0, "Your choice? ");
X		wclrtoeol(mn);
X		wrefresh(mn);
X		noecho();
X		crmode();
Xloop:		switch(wgetch(mn)) {
X			case '1': looke(); break; /* View specific Element. */
X			case '2': schar(); esort(); break; /* Select Characteristics */
X			case '3': vdata(); break; /* View Selected Elements */
X			case '4': ptabl(); break; /* Print periodic table.. */
X			case '5': dogph(); break; /* Do a graph for us..... */
X			case '6': cleanup(); break; /* Exit */
X			default: goto loop;
X		}
X	}
X}
SHAR_EOF
chmod 0644 main.c || echo "restore of main.c fails"
set `wc -c main.c`;Sum=$1
if test "$Sum" != "3646"
then echo original size 3646, current size $Sum;fi
echo "x - extracting ptabl.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > ptabl.c &&
X/*
X * chemtab - a periodic table data base (C) 1990 Jim King (pulsar@lsrhs)
X *
X * ptabl.c	Print the Periodic Table with sorted elements in place
X */
X
X#include <curses.h>
X#include "windows.h"
X#include <stdio.h>
X#include "variables.h"
X#include "tune.h"
X#include "element.h"
X
X/* helps to print out where the elements go */
Xint	horz[10] = { 0, 2, 4, 6, 8, 10, 12, 14, 18, 20 };
X
X/*
X * ptabl() - no input
X *
X * purpose:	To print the periodic table then fill in spaces with
X *		appropriate ''selected'' elements.
X */
Xptabl()
X{
X	FILE	*fd;		/* Periodic table is in a file */
X	char	foo[80];	/* And we need to read it into something */
X	int	n;		/* element number reference */
X
X	if ((fd = fopen(TABLE, "r")) == NULL) {
X		bot("Cannot open Periodic Table for reading..");
X		sleep(2);
X		bot(" ");
X		return(0);
X	}
X
X	clear(); refresh();
X	for (i = 0; i < 22; i++) {	/* read in the table */
X		fgets(foo, 80, fd);
X		mvwaddstr(graph, i, 0, foo);
X		wrefresh(graph);
X	}				/* and output to WINDOW *graph */
X	fclose(fd);
X	tablsort();			/* Put characteristics on screen */
X	for (i = 1; i < gtot+1; i++) {	/* format and print element sym. */
X		n = sub1[i];
X		if (e[n].anum > 56 && e[n].anum < 72)
X			wmove(graph, horz[8], (13 + ((e[n].fam - 1) * 3)));
X		else if (e[n].anum > 88 && e[n].anum < 104)
X			wmove(graph, horz[9], (13 + ((e[n].fam - 1) * 3)));
X		else
X			wmove(graph, horz[e[n].row], (1 + ((e[n].fam - 1) * 3)));
X
X		wstandout(graph);
X		wprintw(graph, "%2s", e[n].sym);
X		wrefresh(graph);
X		wstandend(graph);
X	}
X	wrefresh(graph);
X	capture(graph, 0, 0);
X	spc();
X	wclear(graph); wrefresh(graph);
X	clear();
X	refresh();
X	return(0);
X}
SHAR_EOF
chmod 0755 ptabl.c || echo "restore of ptabl.c fails"
set `wc -c ptabl.c`;Sum=$1
if test "$Sum" != "1612"
then echo original size 1612, current size $Sum;fi
echo "x - extracting schar.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > schar.c &&
X/*
X * Chemtab - a periodic table data base (C) 1990 Jim King (pulsar@lsrhs)
X *
X * schar.c	Interface with user for sorting
X */
X
X#include <stdio.h>
X#include <curses.h>
X#include "element.h"
X#include "variables.h"
X#include "windows.h"
X#include "tune.h"
X
X/*
X * whichone() - no input
X *
X * purpose:	to find out how many characteristics we are sorting already
X */
Xwhichone()
X{
X	if (dosort[2].wch != 0)
X		return(3);
X	if (dosort[1].wch != 0)
X		return(2);
X	if (dosort[0].wch != 0)
X		return(1);
X	return(0);
X}
X
X/*
X * tablsort() - no input
X *
X * purpose:	Put characteristics on table window
X */
Xtablsort()
X{
X	for (i = 0; i < 3; i++) {
X		if (dosort[i].wch != 0) {
X			wmove(graph, i*4, 57);
X			wstandout(graph);
X			wprintw(graph, "%s", sopts[dosort[i].wch].chst);
X			wstandend(graph);
X			switch(dosort[i].sgn) {
X				case EQUAL: mvwaddstr(graph, i*4+1, 58, "is Equal to"); break;
X				case GREATER: wmove(graph, i*4+1, 58); wprintw(graph, "is %s", sopts[dosort[i].wch].upline); break;
X				case CLOSE: mvwaddstr(graph, i*4+1, 58, "is Close to"); break;
X				default: wmove(graph, i*4+1, 58); wprintw(graph, "is %s", sopts[dosort[i].wch].dnline); break;
X			}
X			wmove(graph, i*4+2, 59);
X			wprintw(graph, "%4.*f", sopts[dosort[i].wch].dnum, dosort[i].amt);
X		}
X	}
X	wrefresh(graph);
X}
X
X/*
X * upsort() - no input
X *
X * purpose:	Update the sort window
X */
Xupsort()
X{
X	wclear(srt);
X	mvwaddstr(srt, 0, 0, "Current selecting characteristics: (max of 3)");
X	for (i = 0; i < 3; i++) {
X		if (dosort[i].wch != 0) {
X			wmove(srt, i+2, 0);
X			wstandout(srt);
X			wprintw(srt, "%s", sopts[dosort[i].wch].chst);
X			wstandend(srt);
X			switch(dosort[i].sgn) {
X				case EQUAL: wprintw(srt, " is Equal to "); break;
X				case GREATER: wprintw(srt, " is %s ", sopts[dosort[i].wch].upline); break;
X				case LESS: wprintw(srt, " is %s ", sopts[dosort[i].wch].dnline); break;
X				case CLOSE: wprintw(srt, " is Close to "); break;
X			}
X			wprintw(srt, "%4.*f", sopts[dosort[i].wch].dnum, dosort[i].amt);
X		}
X	}
X	wrefresh(srt);
X}
X
X/*
X * schar() - no input
X *
X * purpose:	Interface with user to select sorting characteristics
X *		to sort elements from
X */
Xschar()
X{
X	int	n, cur;
X
X	noecho();
X	crmode();
Xlop1:	clear(); refresh();
X	for (;;) {
Xlop2:		upsort();				/* Update sorts */
X		wclear(mn); wrefresh(mn);
X		for (i = 1; i < 8; i++) {
X			wmove(mn, i, 0);
X			wprintw(mn, "%d] %s", i, sopts[i].chst);
X			wmove(mn, i, 40);
X			wprintw(mn, "%d] %s", i+7, sopts[i+7].chst);
X		}
X		wmove(mn, 8, 40);
X		wprintw(mn, "15] %s", sopts[15].chst);
X		mvwaddstr(mn, 10, 0, "Your Choice? ");
X		wclrtoeol(mn);
X		if (hlp)
X			mvwaddstr(mn, 10, 16, "(type number of choice and press return)");
X		mvwaddstr(mn, 10, 12, " ");
X		wrefresh(mn);
X		echo();
X		nocrmode();
X		gets(str);
X		n = atoi(str);
X		switch(n) {
X			case 14:		/* Main Menu */
X				esort();
X				return(0);
X			case 15:		/* Clear all chars */
X				mvwaddstr(mn, 10, 0, "Are you sure? ");
X				wrefresh(mn);
X				noecho();
X				crmode();
X				if (wgetch(mn) == 'y') {
X					for (i = 0; i < 3; i++)
X						dosort[i].wch = 0;
X				}
X				wmove(mn, 10, 0); wclrtoeol(mn);
X				wrefresh(mn);
X				goto lop1;
X			default:
X				if (n < 1 || n > 15)
X					goto lop2;
X				else
X					break;
X		}
X		cur = whichone();
X		if (dosort[0].wch == n || dosort[1].wch == n) {
X			bot("This characteristic is already being sorted.");
X			sleep(3);
X			bot(" ");
X			mvwaddstr(btm, 0, 0, "Do you wish to change this characteristic? ");
X			wrefresh(btm);
X			noecho(); crmode();
X			if (getchar() == 'y') {
X				bot(" ");
X				for (i = 0; i < 2; i++) {
X					if (dosort[i].wch == n)
X						cur = i;
X				}
X				goto lop3;
X			} else {
X				mvwaddstr(btm, 0, 0, "Do you wish to make another characteristic of the same type?");
X				wrefresh(btm);
X				noecho(); crmode();
X				if (getchar() != 'y') {
X					wclear(btm); wrefresh(btm);
X					goto lop2;
X				}
X			}
X		}
X		if (cur > 2) {
X			bot("Maximum of three sorting characteristics");
X			sleep(3);
X			bot(" ");
X			goto lop2;
X		}
Xlop3:		dosort[cur].wch = n;
X		wclear(mn); wrefresh(mn);
X		wmove(mn, 1, 0);
X		wprintw(mn, "You would like to select some elements with their '%s' being", sopts[n].chst);
X		mvwaddstr(mn, 3, 0, "1] Equal To");
X		wmove(mn, 4, 0); wprintw(mn, "2] %s", sopts[n].upline);
X		wmove(mn, 5, 0); wprintw(mn, "3] %s", sopts[n].dnline);
X		mvwaddstr(mn, 6, 0, "4] Close To");
X		wmove(mn, 7, 0); wprintw(mn, "5] Exit (will erase characteristic)");
X		mvwaddstr(mn, 9, 9, "the amount you select next.");
X		if (hlp)
X			mvwaddstr(mn, 11, 16, "(type in number of choice, do not hit return)");
Xlop4:		mvwaddstr(mn, 11, 0, "Your Choice? ");
X		wrefresh(mn);
X		noecho();
X		crmode();
X		switch(getchar()) {
X			case '1': dosort[cur].sgn = EQUAL;	break;
X			case '2': dosort[cur].sgn = GREATER;	break;
X			case '3': dosort[cur].sgn = LESS;	break;
X			case '4': dosort[cur].sgn = CLOSE;	break;
X			case '5': dosort[cur].wch = 0;		goto lop1;
X			default:
X				goto lop4;
X		}
X		wclear(mn);
X		wrefresh(mn);
X		wmove(mn, 1, 0);
X		wprintw(mn, "You want to select some elements with the '%s' being ", sopts[n].chst);
X		switch(dosort[cur].sgn) {
X			case EQUAL:
X				wprintw(mn, "Equal to");
X				break;
X			case GREATER:
X				wprintw(mn, "%s", sopts[n].upline);
X				break;
X			case CLOSE:
X				wprintw(mn, "Close to");
X				break;
X			default:
X				wprintw(mn, "%s", sopts[n].dnline);
X				break;
X		}
X		if (hlp)
X			mvwaddstr(mn, 3, 21, "(type in a number then hit return.  Decimals are allowed)");
Xlop5:		mvwaddstr(mn, 3, 0, "What Amount? ");
X		wclrtoeol(mn);
X		wrefresh(mn);
X		echo();
X		nocrmode();
X		scanf("%f", &dosort[cur].amt);
X		if (dosort[cur].amt > 9999) {
X			bot("Maximum amount is 9999.");
X			sleep(3);
X			bot(" ");
X			goto lop5;
X		}
X		getchar();		/* Eat the \n that scanf doesn't */
X	}
X}
SHAR_EOF
chmod 0644 schar.c || echo "restore of schar.c fails"
set `wc -c schar.c`;Sum=$1
if test "$Sum" != "5654"
then echo original size 5654, current size $Sum;fi
echo "x - extracting scrmisc.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > scrmisc.c &&
X/*
X * chemtab - a periodic table data base (C) 1990 Jim King (pulsar@lsrhs)
X *
X * scrmisc.c	Collection of curses screen misc stuff
X */
X
X#include <curses.h>
X#include "variables.h"
X#include "windows.h"
X
X/*
X * bot(str)
X *	input:	str - char - string to print on bottom
X *	output: curses only
X *
X * purpose:	Take ''str'' and put it on ''btm'' (window)
X */
Xbot(strn)
Xchar	*strn;
X{
X	wclear(btm); mvwaddstr(btm, 0, 0, strn); wrefresh(btm);
X}
X
X/*
X * spc() - no input
X *
X * purpose:	To prompt the user that there is more..
X */
Xspc()
X{
X	wclear(btm); mvwaddstr(btm, 0, 0, "<< Press SPACE BAR to continue >>");
X	wrefresh(btm);
X	noecho(); crmode();
X	getchar();
X	wclear(btm);
X	wrefresh(btm);
X}
X
Xcapture(win, f, z)
XWINDOW	*win;
Xint	f, z;
X{
X	char	c;
X	int	icn = 0;			/* Internal count */
X	if (!trans)
X		return(1);
X
X	for (;;) {
X		wclear(btm); mvwaddstr(btm, 0, 0, "Would you like this on your transcript? ");
X		wrefresh(btm);
X		noecho(); crmode();
X		c = wgetch(btm);
X		if (c == 'y') break;
X		else if (c == 'n') return(1);
X	}
X			
X	if (!z) {
X		for (i = 0; i < 5; i++) {
X			fputc('\n', fp);
X			icn++;
X		}
X	} else {
X		for (i = 0; i < 3; i++) {
X			fputc('\n', fp);
X			icn++;
X		}
X		fprintf(fp, "Your selection characteristics are listed on the next line.\n");
X		icn++;
X		for (i = 0; i < 3; i++) {
X			if (dosort[i].wch != 0) {
X				icn++;
X				fprintf(fp, "%s ", sopts[dosort[i].wch].chst);
X				switch(dosort[i].sgn) {
X					case EQUAL: fprintf(fp, "= "); break;
X					case GREATER: fprintf(fp, "> "); break;
X					case CLOSE: fprintf(fp, "~ "); break;
X					default: fprintf(fp, "< ");
X				}
X				fprintf(fp, "%4.*f  ", sopts[dosort[i].wch].dnum, dosort[i].amt);
X			}
X		}
X	}
X	fputc('\n', fp);
X	for (i = 0; i < 23; i++) {
X		if (!f)
X			fprintf(fp, "      ");
X		for (j = 0; j < 80; j++) {
X			wmove(graph, i, j);
X			fputc(winch(graph), fp);
X		}
X		fputc('\n', fp);
X	}
X	for (i = 0; i < 4; i++)
X		fputc('\n', fp);
X
X	fflush(fp);
X	return(1);
X}
SHAR_EOF
chmod 0755 scrmisc.c || echo "restore of scrmisc.c fails"
set `wc -c scrmisc.c`;Sum=$1
if test "$Sum" != "1903"
then echo original size 1903, current size $Sum;fi
echo "x - extracting vdata.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > vdata.c &&
X
X/*
X * chemtab - a periodic table data base (C) 1990 Jim King (pulsar@lsrhs)
X *
X * vdata.c	View current data
X */
X
X#include <stdio.h>
X#include <curses.h>
X#include "variables.h"
X#include "tune.h"
X#include "element.h"
X#include "windows.h"
X#include "undefs.h"
X
X/*
X * topline() - no input
X *
X * purpose:	sets up the topline of user info.
X */
Xtopline()
X{
X	mvwaddstr(graph, 0, 0, "Name");
X	mvwaddstr(graph, 0, 13, "Sy");
X	mvwaddstr(graph, 0, 18, "Z");
X	mvwaddstr(graph, 0, 22, "M");
X	mvwaddstr(graph, 0, 26, "FM");
X	mvwaddstr(graph, 0, 29, "R");
X	mvwaddstr(graph, 0, 31, "V");
X	mvwaddstr(graph, 0, 33, "Melt");
X	mvwaddstr(graph, 0, 38, "Boil");
X	mvwaddstr(graph, 0, 43, "FIO");
X	mvwaddstr(graph, 0, 47, "Year");
X	mvwaddstr(graph, 0, 52, "ENG");
X	mvwaddstr(graph, 0, 56, "SPHT");
X	mvwaddstr(graph, 0, 61, "DENS");
X	mvwaddstr(graph, 0, 66, "ARAD");
X	wrefresh(graph);
X}
X
X/*
X * vdata() - no input
X *
X * purpose:	show all information on all selected elements to user
X */
Xvdata()
X{
X	int	n = 0, flg = 0, factor = 1, l, m;
X
X	wclear(mn);
X	wrefresh(mn);
X
X	clear();
X	wclear(graph);
X	wrefresh(graph);
X	refresh();
X	topline();
X	if (gtot == 0) {
X		mvwaddstr(graph, 5, 0, "No elements met the requirements you set.");
X		wrefresh(graph);
X		spc();
X		clear();
X		refresh();
X		return(0);
X	}
X	sprintf(str, "GTOT = %d", gtot);
X	bot(str);
X	if (gtot > 22)
X		factor++;
X	if (gtot > 44)
X		factor++;
X	if (gtot > 66)
X		factor++;
X	if (gtot > 88)
X		factor++;
X	for (i = 0; i < factor; i++) {
X		for (j = 22*i+1; j < 22*i+23; j++) {
X			if (j > gtot)
X				break;
X			n = sub1[j];
X			mvwaddstr(graph, j-22*i, 0, e[n].name);
X			wmove(graph, j-22*i, 13); wprintw(graph, "%s", e[n].sym);
X			wmove(graph, j-22*i, 18); wprintw(graph, "%-d", e[n].anum);
X			wmove(graph, j-22*i, 22); wprintw(graph, "%-d", e[n].amass);
X			wmove(graph, j-22*i, 26); wprintw(graph, "%-d", e[n].fam);
X			wmove(graph, j-22*i, 29); wprintw(graph, "%-d", e[n].row);
X			if (e[n].val == VAL) {
X				wstandout(graph);
X				mvwaddstr(graph, j-22*1, 31, "X");
X				wstandend(graph);
X			} else {
X				wmove(graph, j-22*i, 31); wprintw(graph, "%d", e[n].val);
X			}
X			if (e[n].melt == MEL) {
X				wstandout(graph);
X				mvwaddstr(graph, j-22*i, 33, "N/F");
X				wstandend(graph);
X			} else {
X				wmove(graph, j-22*i, 33); wprintw(graph, "%-d", e[n].melt);
X			}
X			if (e[n].boil == BOI) {
X				wstandout(graph);
X				mvwaddstr(graph, j-22*i, 38, "N/F");
X				wstandend(graph);
X			} else {
X				wmove(graph, j-22*i, 38); wprintw(graph, "%-d", e[n].boil);
X			}
X			if (e[n].fio == FIO) {
X				wstandout(graph);
X				mvwaddstr(graph, j-22*i, 43, "N/F");
X				wstandend(graph);
X			} else {
X				wmove(graph, j-22*i, 43); wprintw(graph, "%3d", e[n].fio);
X			}
X			if (e[n].year == YEA) {
X				wstandout(graph);
X				mvwaddstr(graph, j-22*i, 47, "B.C.");
X				wstandend(graph);
X			} else {
X				wmove(graph, j-22*i, 47); wprintw(graph, "%-d", e[n].year);
X			}
X			if (e[n].eneg == ENG) {
X				wstandout(graph);
X				mvwaddstr(graph, j-22*i, 52, "N/F");
X				wstandend(graph);
X			} else {
X				wmove(graph, j-22*i, 52); wprintw(graph, "%1.1f", e[n].eneg);
X			}
X			if (e[n].spht == SPHT) {
X				wstandout(graph);
X				mvwaddstr(graph, j-22*i, 56, "N/F");
X				wstandend(graph);
X			} else {
X				wmove(graph, j-22*i, 56); wprintw(graph, "%1.2f", e[n].spht);
X			}
X			if (e[n].dens == DENS) {
X				wstandout(graph);
X				mvwaddstr(graph, j-22*i, 61, "N/F");
X				wstandend(graph);
X			} else {
X				wmove(graph, j-22*i, 61);
X				if (e[n].dens > 9.99)
X					wprintw(graph, "%2.1f", e[n].dens);
X				else
X					wprintw(graph, "%1.2f", e[n].dens);
X			}
X			if (e[n].arad == ARD) {
X				wstandout(graph);
X				mvwaddstr(graph, j-22*i, 66, "N/F");
X				wstandend(graph);
X			} else {
X				wmove(graph, j-22*i, 66); wprintw(graph, "%1.2f", e[n].arad);
X			}
X			wrefresh(graph);
X		}
X		spc();
X		capture(graph, 0, 1);
X		wclear(graph);
X		topline();
X	}
X	clear();
X	refresh();
X	return(0);
X}
SHAR_EOF
chmod 0755 vdata.c || echo "restore of vdata.c fails"
set `wc -c vdata.c`;Sum=$1
if test "$Sum" != "3838"
then echo original size 3838, current size $Sum;fi
echo "x - extracting element.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > element.h &&
X/*
X * chemtab - a periodic table data base (C) 1990 Jim King (pulsar@lsrhs)
X *
X * element.h	Contains the structure for all the elements, e[].
X */
X
X#include "tune.h"
X
Xstruct elem {
X	char	name[15],		/* Atomic Name */
X		sym[4];			/* Atomic Symbol */
X	float	eneg,			/* Electronegativity */
X		spht,			/* Specific Heat */
X		arad,			/* Atomic Radius */
X		dens;			/* Density of the Solid */
X	int	anum,			/* Atomic Number */
X		amass,			/* Atomic Mass */
X		melt,			/* Melting point, deg C */
X		boil,			/* Boiling point, deg C */
X		fio,			/* First Ionization Energy, cal */
X		year,			/* Year Discovered */
X		val,			/* Valence Electrons */
X		fam,			/* Family (1-18, new system) */
X		row;			/* Horizontal rows */
X} e[MAXLM];
SHAR_EOF
chmod 0755 element.h || echo "restore of element.h fails"
set `wc -c element.h`;Sum=$1
if test "$Sum" != "712"
then echo original size 712, current size $Sum;fi
echo "x - extracting graph.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > graph.h &&
X/*
X * chemtab - a periodic table data base (C) 1990 by Jim King (pulsar@lsrhs)
X *
X * graph.h	Contains stuff for graphing
X */
X
X#include "undefs.h"
X
Xfloat	xmax,		/* X axis maximum value */
X	xmin,		/* X axis minimum value */
X	ymax,		/* Y axis maximum value */
X	ymin,		/* Y axis minimum value */
X	scale,		/* used to determine spots */
X	xaxis[70],	/* each spot on x axis is given a defined number */
X	yaxis[21];	/* each spot on y axis is given a defined number */
Xchar	c1,		/* letter of choice, x axis */
X	c2;		/* letter of choice, y axis */
Xint	xspot,		/* x axis line to plot on */
X	yspot;		/* y axis line to plot on */
X
Xchar	*gname[] = {	/* Top line, 'x' vs. 'y' */
X	0,"Atomic Number","Atomic Mass","Melting Temp.","Boiling Temp.",
X	"Ionization energy","Electronegativity","Specific Heat",
X	"Density","Atomic Radius","Discovery Year",0
X};
SHAR_EOF
chmod 0755 graph.h || echo "restore of graph.h fails"
set `wc -c graph.h`;Sum=$1
if test "$Sum" != "836"
then echo original size 836, current size $Sum;fi
echo "x - extracting tune.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > tune.h &&
X/*
X * chemtab - a periodic table data base 1990 Jim King (pulsar@lsrhs)
X *
X * tune.h	Site Specifics
X */
X
X/* PRINTER is the printer program or shell script you use to print on
X   the desired printer for Chemtab output.  Preferably, when using lpr,
X   you want to add the '-h' function to skip the header page. */
X#define PRINTER		"/usr/local/bin/letter -h"
X
X/* PERTABLE is the path up to and including the list of elements, elist */
X#define PERTABLE	"/usr/local/lib/chemtab/elist"
X
X/* MAXLM is the number of elements in PERTABLE + 1 */
X#define MAXLM		108
X
X/* TABLE is the path up to and including the periodic table outline, pertab */
X#define TABLE		"/usr/local/lib/chemtab/pertab"
X
X/* TRANSCRIPT is the path to the logfile which lists who uses the program.
X              if it is not defined, then no log is made. */
X#define TRANSCRIPT	"/usr/local/lib/chemtab/logfile"
SHAR_EOF
chmod 0755 tune.h || echo "restore of tune.h fails"
set `wc -c tune.h`;Sum=$1
if test "$Sum" != "869"
then echo original size 869, current size $Sum;fi
echo "x - extracting undefs.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > undefs.h &&
X/*
X * chemtab - a periodic table data base 1990 Jim King (puslar@lsrhs)
X *
X * undefs.h - carries all the numbers for undefined vars throughout
X */
X
Xstatic int	VAL = 9,
X		MEL = -273,
X		BOI = -273,
X		FIO = -1,
X		YEA = -1;
Xstatic float	ENG = -1.5,
X		SPHT = -1.5,
X		DENS = -1.5,
X		ARD = -1.5;
X	
X/* Close values */
Xstatic float	close[15] = {
X	0.00, 5.00, 10.00, 1.00, 1.00, 1.00, 100.00, 100.00, 25.00, 50.00,
X	0.20, 0.05, 0.20, 0.05, 0.00
X};
SHAR_EOF
chmod 0644 undefs.h || echo "restore of undefs.h fails"
set `wc -c undefs.h`;Sum=$1
if test "$Sum" != "438"
then echo original size 438, current size $Sum;fi
echo "x - extracting variables.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > variables.h &&
X/*
X * chemtab - a periodic table data base (C) 1990 Jim King (pulsar@lsrhs)
X *
X * variables.h	Include file - basically a global file
X */
X
X#include <stdio.h>
X#include "tune.h"
X
Xint	hlp;					/* Help flag */
X
Xint	trans;		/* Puts lists, graphs, and table in file for print */
X
XFILE	*fp;		/* File pointer for the above flag */
X
Xint	sub1[MAXLM], gtot;		/* sorted elements stored here */
X
Xchar	foo[160], str[80];		/* Random input */
X
Xchar	lnm[80];			/* User's last name for transcript */
X
Xint	i, j, k;			/* Random ints */
X
Xfloat	x;				/* Random floater */
X
Xstruct dung {				/* Sorting structure */
X	int	wch,
X		sgn;
X	float	amt;
X} dosort[3];
X
Xstatic char	*mopts[] = {		/* Main menu options */
X	0,
X	"List information regarding one element",
X	"Choose element's characteristics",
X	"List information on all selected elements",
X	"View periodic table showing positions of selected elements",
X	"Use the graphing module",
X	"Save your transcripts, Print them, and Quit",
X	0
X};
X
Xstatic struct op {
X	char	chst[30],
X		upline[20],
X		dnline[20];
X	int	dnum;
X} sopts[] = {			/* Selecting options */
X	"0",			"0",		"0",		0,
X	"Atomic Number",	"Greater Than",	"Less Than",	0,
X	"Atomic Mass",		"Greater Than",	"Less Than",	0,
X	"Family (going up-dn)",	"Greater Than",	"Less Than",	0,
X	"Row (going left-rt)",	"Greater Than",	"Less Than",	0,
X	"Valence Electrons",	"More Than",	"Less Than",	0,
X	"Melting Temperature",	"Greater Than",	"Less Than",	0,
X	"Boiling Temperature",	"Greater Than",	"Less Than",	0,
X	"Ionization Energy",	"Greater Than",	"Less Than",	0,
X	"Discovery Year",	"After",	"Before",	0,
X	"Electronegativity",	"Greater Than",	"Less Than",	1,
X	"Specific Heat",	"Greater Than",	"Less Than",	2,
X	"Density",		"Greater Than",	"Less Than",	2,
X	"Atomic Radius",	"Greater Than",	"Smaller Than",	2,
X	"Return to Main Menu",	"0",		"0",		0,
X	"Clear ALL Characteristics",	"0",	"0",		0,
X	"0",			"0",		"0",		0
X};
X
X#define	EQUAL	0		/* Constants */
X#define GREATER	1
X#define LESS	2
X#define	CLOSE	3
X
Xint	sort_list[MAXLM];			/* Sort final list */
SHAR_EOF
chmod 0644 variables.h || echo "restore of variables.h fails"
set `wc -c variables.h`;Sum=$1
if test "$Sum" != "2007"
then echo original size 2007, current size $Sum;fi
echo "x - extracting windows.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > windows.h &&
X/*
X * chemtab - a periodic table data base (C) 1990 Jim King (pulsar@lsrhs)
X *
X * windows.h	Curses WINDOW init
X */
X
X#include <curses.h>
X
XWINDOW	*srt,				/* Sort chrst window */
X	*graph,				/* Graph/table Window */
X	*mn,				/* Main Window */
X	*btm;				/* Bottom line */
SHAR_EOF
chmod 0755 windows.h || echo "restore of windows.h fails"
set `wc -c windows.h`;Sum=$1
if test "$Sum" != "269"
then echo original size 269, current size $Sum;fi
echo "x - extracting elist (Text)"
sed 's/^X//' << 'SHAR_EOF' > elist &&
XName         Sy   Z   M FM R V MELT BOIL FIO YEAR ENG SPHT DENS ARD
X
Xhydrogen     H    1   1  1 1 1 -259 -252 313 1766 2.2 0.57 0.07 0.30
Xhelium	     He   2   4 18 1 2 -272 -269 563 1895 -1.5 -1.5 0.15 0.93
Xlithium	     Li   3   6  1 2 1  181 1342 124 1817 1.0 0.08 0.53 1.52
Xberyllium    Be   4   9  2 2 2  127 2970 214 1798 1.5 0.42 1.85 1.12
Xboron	     B    5  11 13 2 3 2079 2550 191 1808 2.0 0.30 2.34 0.88
Xcarbon	     C    6  12 14 2 4 3550 4827 259   -1 2.5 0.17 2.25 0.77
Xnitrogen     N    7  14 15 2 5 -210 -196 334 1772 3.0 0.39 0.81 0.70
Xoxygen	     O    8  16 16 2 6 -218 -183 313 1774 3.5 0.33 1.14 0.66
Xfluorine     F    9  19 17 2 7 -220 -188 401 1886 4.0 -1.5 1.11 0.64
Xneon	     Ne  10  20 18 2 8 -249 -246 496 1898 -1.5 -1.5 1.21 1.31
Xsodium	     Na  11  23  1 3 1   98  883 118 1807 0.9 0.30 0.97 1.86
Xmagnesium    Mg  12  24  2 3 2  649 1090 176 1755 1.2 0.25 1.74 1.60
Xaluminum     Al  13  27 13 3 3  660 2467 138 1827 1.5 0.21 2.70 1.43
Xsilicon	     Si  14  28 14 3 4 1410 2355 187 1824 1.8 0.17 2.33 1.17
Xphosphorous  P   15  31 15 3 5   44  280 350 1669 2.1 0.19 0.82 1.10
Xsulfur	     S   16  32 16 3 6  113  445 238   -1 2.5 0.18 2.06 1.04
Xchlorine     Cl  17  36 17 3 7 -101  -35 298 1774 3.0 0.19 1.37 0.99
Xargon	     Ar  18  40 18 3 0 -189 -186 362 1894 -1.5 0.16 1.40 1.74
Xpotassium    K   19  39  1 4 1   64  774 100 1807 0.8 0.19 0.86 2.31
Xcalcium	     Ca  20  40  2 4 2  839 1484 141 1808 1.0 0.15 1.54 1.97
Xscandium     Sc  21  45  3 4 9 1539 2832 150 1879 1.3 -1.5 2.99 1.60
Xtitanium     Ti  22  48  4 4 9 1660 3287 157 1791 1.4 0.11 4.54 1.46
Xvanadium     V   23  51  5 4 9 1890 3380 155 1831 1.6 0.12 6.09 1.31
Xchromium     Cr  24  52  6 4 9 1857 2672 156 1798 1.6 0.11 7.18 1.25
Xmanganese    Mn  25  55  7 4 9 1244 1962 171 1774 1.5 0.12 7.21 1.29
Xiron	     Fe  26  56  8 4 9 1535 2750 181   -1 1.8 0.11 7.87 1.26
Xcobalt	     Co  27  59  9 4 9 1495 2870 181 1735 1.8 0.10 8.90 1.25
Xnickel	     Ni  28  59 10 4 9 1453 2732 176 1751 1.8 0.11 8.90 1.24
Xcopper	     Cu  29  64 11 4 9 1083 2567 178   -1 1.9 0.09 8.96 1.20
Xzinc	     Zn  30  65 12 4 9  420  907 216 1746 1.6 0.09 7.13 1.33
Xgallium      Ga  31  70 13 4 3   30 2403 138 1875 1.6 0.08 5.91 1.22
Xgermanium    Ge  32  73 14 4 4  937 2830 182 1886 1.8 0.07 5.32 1.22
Xarsenic      As  33  75 15 4 5  817  613 226 1649 2.0 0.08 5.73 1.21
Xselenium     Se  34  79 16 4 6  217  685 224 1818 2.4 0.08 4.79 1.17
Xbromine      Br  35  80 17 4 7   -7   59 272 1826 2.8 0.09 3.12 1.14
Xkrypton      Kr  36  84 18 4 0 -157 -152 322 1898 -1.5 -1.5 2.16 1.89
Xrubidium     Rb  37  85  1 5 1   39  688  96 1861 0.8 0.08 1.53 2.44
Xstrontium    Sr  38  88  2 5 2  769 1384 131 1790 1.0 0.00 2.63 2.15
Xyttrium      Y   39  89  3 5 3 1523 3337 147 1794 1.2 0.07 4.47 1.62
Xzirconium    Zr  40  91  4 5 4 1852 4377 157 1824 1.4 0.07 5.80 1.48
Xniobium      Nb  41  93  5 5 5 2468 4742 158 1801 1.6 0.06 7.83 1.48
Xmolybdenum   Mo  42  96  6 5 6 2617 4612 163 1778 1.8 0.06 9.35 1.47
Xtechnetium   Tc  43  97  7 5 7 2172 4877 167 1925 1.9 0.06 11.5 1.47
Xruthenium    Ru  44 101  8 5 8 2310 3900 170 1827 2.2 0.06 10.9 1.46
Xrhodium      Rh  45 103  9 5 6 1966 3727 172 1803 2.2 0.07 11.1 1.45
Xpalladium    Pd  46 106 10 5 4 1554 3140 192 1803 2.2 0.06 10.7 1.44
Xsilver       Ag  47 108 11 5 2  962 2212 174   -1 1.9 0.06 9.32 1.53
Xcadminium    Cd  48 112 12 5 2  321  765 207 1817 1.7 0.06 8.02 1.48
Xindium       In  49 115 13 5 3  157 2080 133 1924 1.7 0.06 7.30 1.44
Xtin          Sn  50 119 14 5 4  232 2270 169   -1 1.8 0.05 6.98	1.40
Xantimony     Sb  51 122 15 5 5  631 1750 199 1700 1.9 0.05 6.69 1.41
Xtellurium    Te  52 128 16 5 6  450  990 207 1782 2.1 0.05 5.75 1.37
Xiodine       I   53 127 17 5 7  114  184 240 1811 2.5 0.01 4.94 1.33
Xxenon        Xe  54 131 18 5 0 -112 -107 279 1898 -1.5 0.04 0.00 2.09
Xcesium       Cs  55 133  1 6 1   28  669  90 1860 0.7 0.06 1.84 2.62
Xbarium       Ba  56 137  2 6 2  725 1640 120 1774 0.9 0.05 3.50 2.17
Xlanthanium   La  57 139  1 6 9  920 3454 128 1839 1.1 0.05 6.20 1.69
Xcerium       Ce  58 140  2 8 9  798 3257 126 1803 1.1 0.05 6.70 -1.5
Xpraeseodym.  Pr  59 141  3 8 3  931 3212 125 1841 1.2 0.05 6.80 -1.5
Xneodymium    Nd  60 144  4 8 3 1010 3127 126 1841 1.1 0.05 7.00 -1.5
Xpromethium   Pm  61 145  5 8 3 1080 2460 128 1902 1.1 0.04 0.00 -1.5
Xsamarium     Sm  62 150  6 8 2 1072 1778 129 1879 1.2 0.04 7.50 -1.5
Xeuropium     Eu  63 152  7 8 2  822 1597 130 1890 1.2 0.04 5.30 -1.5
Xgadolinium   Gd  64 157  8 8 3 1311 3233 141 1880 1.1 0.06 7.90 -1.5
Xterbium      Tb  65 159  9 8 3 1360 3041 135 1843 1.2 0.04 8.30 -1.5
Xdysprosium   Dy  66 163 10 8 3 1409 2335 136 1886 1.2 0.04 8.50 -1.5
Xholmium      Ho  67 165 11 8 3 1470 2720 138 1878 1.1 0.04 8.80 -1.5
Xerbium       Er  68 167 12 8 3 1522 2510 140 1842 1.2 0.04 9.10 -1.5
Xthulium      Tm  69 169 13 8 2 1545 1727 142 1879 1.2 0.04 9.10 -1.5
Xytterbium    Yb  70 173 14 8 2  824 1193 144 1878 1.2 0.03 7.00 -1.5
Xlutetium     Lu  71 175 15 8 3 1656 3315 125 1907 1.2 0.04 9.80 -1.5
Xhafnium      Hf  72 178  4 6 4 2227 4602 161 1923 1.3 0.04 13.1 1.65
Xtantalum     Ta  73 181  5 6 5 2996 5425 181 1844 1.5 0.03 16.6 1.62
Xtungsten     W   74 184  6 6 6 3410 5660 184 1779 1.7 0.03 19.3 1.60
Xrhenium      Re  75 186  7 6 7 3180 5627 181 1925 1.9 0.03 21.0 1.56
Xosmium       Os  76 190  8 6 8 3045 5027 200 1803 2.2 0.03 22.6 1.52
Xiridium      Ir  77 192  9 6 3 2410 4130 209 1803 2.2 0.03 22.5 1.48
Xplatinum     Pt  78 195 10 6 4 1772 3827 207 1735 2.2 0.03 21.4 1.45
Xgold         Au  79 197 11 6 1 1064 3080 212   -1 2.4 0.03 19.3 1.50
Xmercury      Hg  80 201 12 6 1  -39  357 240   -1 1.9 0.03 13.6 1.49
Xthallium     Tl  81 204 13 6 3  304 1457 140 1861 1.8 0.03 11.9 1.48
Xlead         Pb  82 207 14 6 4  328 1720 171   -1 1.8 0.04 11.4 1.75
Xbismuth      Bi  83 209 15 6 5  271 1560 168 1753 1.9 0.03 9.80 1.46
Xpolonium     Po  84 209 16 6 6  254  962 194 1898 2.0 0.03 9.20 1.40
Xastatine     At  85 210 17 6 7  302  337  -1 1940 2.2 -1.5 -1.5 1.40
Xradon        Rn  86 222 18 6 0  -71  -62 247 1908 -1.5 0.02 -1.5 2.14
Xfrancium     Fr  87 223  1 7 1   27  677  -1 1939 0.7 -1.5 -1.5 2.70
Xradium       Ra  88 226  2 7 2  700 1140 121 1898 0.9 0.03 -1.5 2.20
Xactinium     Ac  89 227  1 7 9 1050 3200 159 1899 -1.5 -1.5 10.1 -1.5
Xthorium      Th  90 232  2 9 4 1750 4790  -1 1828 -1.5 0.03 11.7 -1.5
Xprotactinium Pa  91 231  3 9 4 1600 -273  -1 1913 -1.5 0.03 15.4 -1.5
Xuranium      U   92 238  4 9 6 1132 3818  -1 1789 -1.5 0.03 19.1 -1.5
Xneptunium    Np  93 237  5 9 4  640 3902  -1 1940 -1.5 -1.5 19.5 -1.5
Xplutonium    Pu  94 244  6 9 5  641 3232 133 1940 -1.5 -1.5 19.5 -1.5
Xamericium    Am  95 243  7 9 9  994 2607 138 1944 -1.5 -1.5 11.7 -1.5
Xcurium       Cm  96 247  8 9 3 1340 -273  -1 1944 -1.5 -1.5 -1.5 -1.5
Xberkelium    Bk  97 247  9 9 3 -273 -273  -1 1949 -1.5 -1.5 -1.5 -1.5
Xcalifornium  Cf  98 251 10 9 9 -273 -273  -1 1950 -1.5 -1.5 -1.5 -1.5
Xeinsteinum   Es  99 254 11 9 9 -273 -273  -1 1952 -1.5 -1.5 -1.5 -1.5
Xfermium      Fm 100 257 12 9 9 -273 -273  -1 1952 -1.5 -1.5 -1.5 -1.5
Xmendelevium  Md 101 257 13 9 3 -273 -273  -1 1955 -1.5 -1.5 -1.5 -1.5
Xnobelium     No 102 259 14 9 4 -273 -273  -1 1958 -1.5 -1.5 -1.5 -1.5
Xlawrencium   Lr 103 260 15 9 3 -273 -273  -1 1961 -1.5 -1.5 -1.5 -1.5
Xrutherford.  Rf 104 260  4 7 9 -273 -273  -1 1969 -1.5 -1.5 -1.5 -1.5
Xhahnium      Ha 105 260  5 7 9 -273 -273  -1 1970 -1.5 -1.5 -1.5 -1.5
XUnnamed      Un 106 263  6 7 9 -273 -273  -1 1974 -1.5 -1.5 -1.5 -1.5
XUnnamed      Un 107 266  7 7 9 -273 -273  -1 1975 -1.5 -1.5 -1.5 -1.5
SHAR_EOF
chmod 0755 elist || echo "restore of elist fails"
set `wc -c elist`;Sum=$1
if test "$Sum" != "7456"
then echo original size 7456, current size $Sum;fi
echo "x - extracting pertab (Text)"
sed 's/^X//' << 'SHAR_EOF' > pertab &&
X  1                                                 18
X|--|      PERIODIC TABLE OF                        |--|
X|  | 2             THE ELEMENTS      13 14 15 16 17|  |1
X|--|--|                             |--|--|--|--|--|--|
X|  |  |                             |  |  |  |  |  |  |2
X|--|--|                             |--|--|--|--|--|--|
X|  |  | 3  4  5  6  7  8  9 10 11 12|  |  |  |  |  |  |3
X|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
X|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |4
X|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
X|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |5
X|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
X|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |6a (6)
X|--|--|  |--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
X|  |  |  |  |  |  |  |  |  |  |7a (7)
X|--|--|  |--|--|--|--|--|--|--|
X In this program, the below elements are classified in the groups in ()
X            |--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
XLanthanides |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |6b (8)
X            |--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
X  Actinides |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7b (9)
X            |--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
SHAR_EOF
chmod 0755 pertab || echo "restore of pertab fails"
set `wc -c pertab`;Sum=$1
if test "$Sum" != "1243"
then echo original size 1243, current size $Sum;fi
rm -f s2_seq_.tmp
echo "You have unpacked the last part"
exit 0