/*************************************************************************/
/* Bibliothek */
/* Firma
: PDP-Hannover Uwe Mayer E.K. */
/*
Programm : COMMLIB.CMD */
/*
Datum : 10.04.1996
*/
/*
Beschreibung : */
/*
Hinweis : */
/*
*/
/*************************************************************************/
#include
dbank.h
/*************************************************************************/
/* ID-Checker */
/*
*/
sub check_id (char compare,short error)
fptr
fp;
short
eof;
char
buffer[255];
file
open (fp,"elcad_id","r") return (error);
if
(!error)
file
enter (fp,buffer,eof);
if
(compare<>buffer)
error=[1];
endif
else
error=[1];
endif
if
(error)
msg_error (("Modul"));
endif
subend
/*************************************************************************/
/*
Projekteinstellung */
/*************************************************************************/
/*
Einlesen des Geraetepfades */
sub ed_project (struct TDBANK startdb,struct
TDBANK db)
short
error=[0];
short
exit=[0];
struct
TDBANK db2;
char
dummy[32]="";
db2:path=db:path;
db2:proj=db:proj;
db2:nam1=db:nam1;
db2:nam2=db:nam2;
db2:nam3=db:nam3;
db2:nam4=db:nam4;
ed var
("Pfad :
","db2:path","select_path
(startdb,db2:path)","","?")
("Projekt :
","db2:proj","select_projekt
(db2:path,db2:proj)","","?")
("Kostenträger : ","db2:nam1","select_sheet
(db2,dummy,dummy,dummy,dummy)","","?")
("Baugruppe : ","db2:nam2","select_sheet
(db2,db2:nam1,dummy,dummy,dummy)","","?")
("Benennung/Gerät :
","db2:nam3","select_sheet
(db2,db2:nam1,db2:nam2,dummy,dummy)","","?")
("Benennung Lfd. Nr :
","db2:nam4","select_sheet
(db2,db2:nam1,db2:nam2,db:nam3,dummy)","","?")
title ("Auswahl eines Gerätes")
esc (exit);
if
(!exit)
check_project (db2,error);
if
(!error)
db:path=db2:path;
db:proj=db2:proj;
db:nam1=db2:nam1;
db:nam2=db2:nam2;
db:nam3=db2:nam3;
db:nam4=db2:nam4;
write_ini (db);
else
msg_error (("Bitte
Eingabe Überprüfen!"));
endif
endif
subend
/***************************************************************************/
/*
PDP.PRO anlegen, falls noch nicht vorhanden und Massenspeicher einlesen */
sub init_mp (struct TDBANK db)
short
exist;
short
error;
db:path="";
db:proj="PDP";
db:nam1="Massenspeicher";
db:nam2="";
db:nam3="";
db:list="Liste";
exist pro (exist,db:path,db:proj);
if
(!exist)
pro
create (db:path,db:proj) return (error);
endif
read_path (db);
subend
/*************************************************************************/
/*
Einlesen der Massenspeicherpfade in eine Datenbank */
/*
*/
sub read_path (struct TDBANK db)
short
exist;
short
error;
short
count;
char
nm[7];
char
pt[7];
char
cm[10];
short
id;
char section[12]="MassStorages";
char pfad[80];
char name[20];
char kommentar[20];
long rec_no;
unlink
(db:path,db:proj,db:nam1,db:nam2,db:nam3) return (error);
exist
(exist,db:path,db:proj,db:nam1,db:nam2,db:nam3);
if
(!exist)
create
(db:path,db:proj,db:nam1,db:nam2,db:nam3);
endif
use
(db:path,db:proj,db:nam1,db:nam2,db:nam3);
exist
table (exist,db:list);
if
(exist)
table unlink (db:list);
endif
create
(db:path,db:proj,db:nam1,db:nam2,db:nam3) !add
table (db:list)
comment ("")
structure
(name "Name"
code [32007] length [20]),
(name "Kommentar"
code [32008] length [20]),
(name "Pfad"
code [32009] length [80]);
use
(db:path,db:proj,db:nam1,db:nam2,db:nam3);
table
(db:list);
ini
open (id,"aucotec.ini") return (error);
if
(!error)
while (count<[16])
string format (nm,"%s%s","Name",count);
string format (pt,"%s%s","Path",count);
string format (cm,"%s%s","Comment",count);
count ++;
ini
read (id,section,pt,char,pfad);
ini read (id,section,nm,char,name);
ini read (id,section,cm,char,kommentar);
Name=name;
Pfad=pfad;
Kommentar=kommentar;
record insert record (rec_no) return (error);
exist=:rec_no;
endwhile
endif
ini
close (id,[0]);
subend
/*************************************************************************/
/*
Einen Projektpfad auswaehlen */
/* */
sub select_path (struct TDBANK db, char pf)
short
cancel;
long
rec_no;
short
error;
short
exit;
use
(db:path,db:proj,db:nam1,db:nam2,db:nam3);
table
(db:list);
edit
all
head_line ("Auswahl Massenspeicher")
exit_var (exit)
record (rec_no)
button ("&OK") call select_button (exit,cancel,([0]))
button ("&Abbruch") call select_button (exit,cancel,([1]))
record (rec_no)
field (Name)
field (Kommentar)
field (Pfad);
if
(!cancel)
record
enter (rec_no) return (error);
pf=Pfad;
string change (pf,"\\","/");
lwc
(pf);
endif
subend
/*************************************************************************/
/* */
/*
*/
sub select_button (short exit,short
cancel,short value)
exit=[1];
cancel=value;
subend
/*************************************************************************/
/*
Ein Projekt auswaehlen */
/*
*/
sub select_projekt (char pf, char pr)
select
dir (pr,pf,"*.pro",[0]);
subend
/*************************************************************************/
/*
Ein File auswaehlen
*/
/*
*/
sub select_file (char file,char path)
char
pt[255]=path;
select
file (file,pt,"*.*",[1]);
subend
/*************************************************************************/
/*
Die Ebenen auswaehlen dabei werden nur die Ebenen 1-4 benutzt */
/* */
sub select_sheet (struct TDBANK db,char n1,char
n2,char n3, char n4)
char nam[5][32];
nam[1]=n1;
nam[2]=n2;
nam[3]=n3;
nam[4]=n4;
nam[5]="";
select
sheet (db:path,db:proj,nam);
db:nam1=nam[1];
db:nam2=nam[2];
db:nam3=nam[3];
db:nam4=nam[4];
subend
/*************************************************************************/
/*
Stueklisten-Ini lesen */
/* */
sub read_ini (struct TDBANK db)
short
id;
short
error;
char
section[8]="projekt";
char path[4]="pfad";
char project[7]="projekt";
char eb1[6]="ebene1";
char eb2[6]="ebene2";
char eb3[6]="ebene3";
char eb4[6]="ebene4";
char nam2[12]="namlist2";
char nam3[12]="namlist3";
char
apath[12]="ascii-path";
char
aname[12]="ascii-name";
ini
open (id,"stueck.ini") return (error);
if
(!error)
ini
read (id,section,path,char,db:path);
ini
read (id,section,project,char,db:proj);
ini
read (id,section,eb1,char,db:nam1);
ini
read (id,section,eb2,char,db:nam2);
ini
read (id,section,eb3,char,db:nam3);
ini
read (id,section,eb4,char,db:nam4);
ini
read (id,section,nam2,char,db:namlist2);
ini read (id,section,nam3,char,db:namlist3);
ini
read (id,section,apath,char,db:asc_pt);
ini
read (id,section,aname,char,db:asc_nm);
endif
ini
close (id,[0]);
subend
/*************************************************************************/
/*
*/
/*
*/
sub read_rec_ini (struct TDBANK db)
short
id;
short
error;
char
section[9]="datenbank";
char path[4]="pfad";
char
project[7]="name";
char
eb1[6]="ebene1";
char eb2[6]="ebene2";
char eb3[6]="ebene3";
char nam2[12]="namlist2";
char nam3[12]="namlist3";
char
source[6]="quelle";
ini open (id,"stueck.ini") return (error);
if
(!error)
ini read (id,section,path,char,db:path);
ini
read (id,section,project,char,db:proj);
ini
read (id,section,eb1,char,db:nam1);
ini
read (id,section,eb2,char,db:nam2);
ini
read (id,section,eb3,char,db:nam3);
ini
read (id,section,source,char,db:source);
endif
ini
close (id,[0]);
db:list="DABA";
subend
/*************************************************************************/
/*
*/
/* */
sub write_ini (struct TDBANK db)
short
id;
short
error;
char
section[8]="projekt";
char path[4]="pfad";
char project[7]="projekt";
char eb1[6]="ebene1";
char eb2[6]="ebene2";
char eb3[6]="ebene3";
char eb4[6]="ebene4";
char nam2[12]="namlist2";
char nam3[12]="namlist3";
char
apath[12]="ascii-path";
char
aname[12]="ascii-name";
db:namlist2="Stückliste";
ini open
(id,"stueck.ini") return (error);
ini
write (id,section,path,char,db:path);
ini
write (id,section,project,char,db:proj);
ini
write (id,section,eb1,char,db:nam1);
ini
write (id,section,eb2,char,db:nam2);
ini
write (id,section,eb3,char,db:nam3);
ini
write (id,section,eb4,char,db:nam4);
ini
write (id,section,nam2,char,db:namlist2);
ini
write (id,section,nam3,char,db:namlist3);
ini
write (id,section,apath,char,db:asc_pt);
ini
write (id,section,aname,char,db:asc_nm);
ini
close (id,[1]);
subend
/*************************************************************************/
/*
*/
/*
*/
sub write_rec_ini (struct TDBANK db)
short
id;
short
error;
char section[9]="datenbank";
char
path[4]="pfad";
char
project[7]="name";
char
eb1[6]="ebene1";
char eb2[6]="ebene2";
char eb3[6]="ebene3";
char nam2[12]="namlist2";
char nam3[12]="namlist3";
char
source[6]="quelle";
db:namlist2="Stückliste";
ini open
(id,"stueck.ini") return (error);
ini
write (id,section,path,char,db:path);
ini
write (id,section,project,char,db:proj);
ini
write (id,section,eb1,char,db:nam1);
ini
write (id,section,eb2,char,db:nam2);
ini
write (id,section,eb3,char,db:nam3);
ini
write (id,section,source,char,db:source);
ini
close (id,[1]);
subend
/*************************************************************************/
/*
*/
sub check_project (struct TDBANK db,short
error)
short
exist=[0];
exist
pro (exist,db:path,db:proj);
if
(exist)
exist sheet
(exist,db:path,db:proj,db:nam1,db:nam2,db:nam3,db:nam4,"1");
if
(exist)
error=[0];
else
error=[1];
endif
else
error=[1];
endif
subend
/*************************************************************************/
/*
Ausgabepfad fuer ASCII-Liste */
/*************************************************************************/
/*
*/
/*
*/
sub ed_hostpath (struct TDBANK startdb,struct
TDBANK db)
char
pt[255];
char
nm[13];
short
exit=[0];
short
error=[0];
pt=db:asc_pt;
nm=db:asc_nm;
ed var
("Pfad :
","pt","select_path
(startdb,pt)","","?")
("Dateiname :
","nm","select_file
(nm,pt)","","?")
title ("Auswahl des
Ausgabepfades")
esc (exit);
if
(!exit)
check_path (pt,error);
if
(!error)
db:asc_pt=pt;
if
(nm<>"")
db:asc_nm=nm;
write_ini (db);
else
msg_error (("Es wurde
kein Dateiname angegeben!"));
endif
endif
endif
subend
/*************************************************************************/
/*
Einstellen der Zieldatenbank */
/*
*/
sub ed_dbase (struct TDBANK startdb,struct
TDBANK db,short allert)
short
exit=[0];
struct
TDBANK db2;
char
dummy[32]="";
short
error=[0];
db2:path=db:path;
db2:proj=db:proj;
db2:nam1=db:nam1;
db2:nam2=db:nam2;
db2:nam3=db:nam3;
ed var
("Pfad :
","db2:path","select_path
(startdb,db2:path)","","?")
("Projekt :
","db2:proj","select_projekt
(db2:path,db2:proj)","","?")
("Ebene 1 :
","db2:nam1","select_dbase
(db2,dummy,dummy,dummy)","","?")
("Ebene 2 :
","db2:nam2","select_dbase (db2,db2:nam1,dummy,dummy)","","?")
("Ebene 3 :
","db2:nam3","select_dbase
(db2,db2:nam1,db2:nam2,dummy)","","?")
title ("Auswahl der
Zieldatenbank")
esc (exit);
if
(!exit)
if
(allert)
check_db (db2,error);
endif
if
(!error or !allert)
db:path=db2:path;
db:proj=db2:proj;
db:nam1=db2:nam1;
db:nam2=db2:nam2;
db:nam3=db2:nam3;
write_rec_ini (db);
endif
endif
subend
/*************************************************************************/
/*
Die Ebenen auswaehlen dabei werden nur die Ebenen 1-3 benutzt */
/*
*/
sub select_dbase (struct TDBANK db,char n1,char
n2,char n3)
db:nam1=n1;
db:nam2=n2;
db:nam3=n3;
select
daba (db:path,db:proj,db:nam1,db:nam2,db:nam3);
subend
/*************************************************************************/
/*
Prueft, ob Verzeichnis vorhanden */
/* */
sub check_path (char name,short error)
short
exist;
exist
file (exist,name);
if
(!exist)
msg_error
(("Verzeichnispfad nicht vorhanden!"));
error=[1];
else
error=[0];
endif
subend
/*************************************************************************/
/*
Prueft, ob Datei vorhanden */
/*
*/
sub check_file (char name,short error)
short
exist;
exist
file (exist,name);
if
(!exist)
msg_error (("Datei nicht
vorhanden!"));
error=[1];
else
error=[0];
endif
subend
/*************************************************************************/
/*
Prueft, ob Datenbank vorhanden */
/*
*/
sub check_db (struct TDBANK db,short error)
short
exist;
exist
(exist,db:path,db:proj,db:nam1,db:nam2,db:nam3);
if
(!exist)
msg_error (("Datenbank
nicht vorhanden!"));
error=[1];
else
error=[0];
endif
subend
/*************************************************************************/
/*
Messageboxes */
/*************************************************************************/
/*
Abbruchbox */
/*
*/
sub msg_attention_abbort (short exit,char text)
confirm_box
text
(text)
bitmap_no ([3])
button ("&Abbruch","&OK")
ret_button (exit)
def_button([1]);
if
(exit=[2])
exit=[0];
endif
subend
/*************************************************************************/
/*
FATALER FEHLER ALWIN VERLASSEN */
/*
*/
sub msg_exit (char text)
confirm_box
text
(text)
bitmap_no ([3])
button ("&Abbruch");
exit;
subend
/*************************************************************************/
/* Normale Infobox */
/*
*/
sub msg (char text)
confirm_box
text
(text)
bitmap_no ([3])
button("&OK");
subend
/*************************************************************************/
/*
Fehlerbox */
/* */
sub
msg_error (char text)
confirm_box
text
(text)
bitmap_no ([4])
button("&OK");
subend
/*************************************************************************/
/*
Fehlerbox mit Wartezeit */
/*
*/
sub msg_error_delay (char text,short wait)
confirm_box
text
(text)
bitmap_no ([4])
delay (wait)
button("&OK");
subend
/*************************************************************************/
/* Statusbox */
/*
*/
sub st_box_create (char title,char text,long
max)
status_box create
title (title)
pos ([1])
max
(max)
width ([60])
(text);
subend
/*************************************************************************/
/* */
/*
*/
sub select_record (struct TDBANK db, struct
TDRECORD rec,long rec_no)
char
search_entry[3][1];
short
found=[0];
char
entry[2][10];
short
exit;
short
exist;
short
length;
exist
(exist,db:path,db:proj,db:nam1,db:nam2,db:nam3);
if
(exist)
use
(db:path,db:proj,db:nam1,db:nam2,db:nam3);
exist table (exist,db:list);
if
(exist)
table (db:list);
select
data ("Material",[0],search_entry,found,entry)
record (rec_no)
esc (exit);
record enter (rec_no);
rec:sachnummer=Sachnummer;
rec:materialgruppe=Materialgruppe;
rec:klasse=Klasse;
rec:hauptgruppe=Hauptgruppe;
rec:untergruppe=Untergruppe;
rec:bezeichnung=Bezeichnung;
rec:norm=Norm;
strlen
(Abmessung1,length);
if
(length<[8])
rec:abmessung1=Abmessung1;
endif
strlen (Abmessung2,length);
if
(length<[8])
rec:abmessung2=Abmessung2;
endif
strlen (Abmessung3,length);
if
(length<[5])
rec:abmessung3=Abmessung3;
endif
/* rec:abmessung2=Abmessung2;
rec:abmessung3=Abmessung3;*/
rec:abmessungstext=Abmessungstext;
rec:gewicht=Gewicht;
rec:test=Test;
rec:werkstoff=Werkstoff;
rec:werkstofftext=WerkstoffText;
rec:technbewertung=TechnBewertung;
else
msg_error (("Die Datenbank ist
nicht vorhanden!"));
endif
else
msg_error (("Datenbankeinstellungen
überprüfen!"));
endif
subend
/*************************************************************************/
/*
Bibliothek : edi1lib.cmd */
/*
Firma : PDP-Hannover Uwe Mayer
E.K. */
/* Programm
: EDI1LIB.CMD */
/*
Datum : 09.04.1996
*/
/*
Beschreibung : */
/*
Hinweis : */
/*
*/
/*************************************************************************/
#include dbank.h
/*************************************************************************/
/*
Tabellenstrukturen */
/*
add_table haengt eine neue Tabelle in einen Datenbankzweig ein */
/*
existiert die Tabelle bereits, so wird sie ueberschrieben */
/*
*/
sub add_list (struct TDBANK db, char tab)
remove_list (([0]),db,tab);
create(db:path,db:proj,db:nam1,db:namlist2,db:namlist3) add
table(tab)
comment("")
structure
(name "Position"
code [32001] length [ 3] typ
[17]),
(name "Sachnummer" code
[ 80] length [ 6]),
(name "Variante"
code [ 82] length [ 3] typ [1]),
(name "Menge"
code [ 149] length [ 4] typ [1]),
(name "Sachnr_Halbz" code [20080] length [ 6]),
(name "Anlage" code
[ 1] length [ 6]),
(name "Funktion"
code [ 2] length [ 6]),
(name "Einbauort"
code [ 3] length [20]),
(name "BMK"
code [ 4] length [ 6]),
(name "Abmessung1"
code [ 4003] length [ 7] typ [1]),
(name "Abmessung2"
code [ 4004] length [ 7] typ
[1]),
(name "Abmessung3"
code [ 4005] length [ 4] typ
[1]),
(name "Lot_hinten"
code [ 166] length [ 6] typ [1]),
(name "Lot_basis" code
[ 168] length [ 5] typ [1]),
(name "Lot_mitte"
code [ 167] length [ 5] typ [1]),
(name "Hand"
code [32002] length [ 1] typ
[4]),
(name "Rev"
code [32003] length [ 1] typ
[4]),
(name "BMKlang" code [32004] length [30])
level
("BMKKEY")(Anlage,Funktion,Einbauort,BMK),
("Sachnr")(Sachnummer),
("BMK")(BMKlang);
/*
("BMKKEY")(Anlage,Funktion,Einbauort,BMK,Sachnummer),*/
subend
/*************************************************************************/
/*
add_dir haengt eine neue Tabelle fuer das Inhaltsverzeichnis an */
/*
*/
sub add_dir (struct TDBANK db)
remove_dir (db);
create
(db:path,db:proj,db:nam1,db:namlist2,"") add
table (db:dir)
comment("")
structure
(name "Kostentraeger" code [
60] length [6]),
(name "Geraetkl"
code [ 61] length [6]),
(name "Geraet"
code [ 63] length [6]),
(name "Zeichtyp"
code [ 64] length [6]),
(name "Seite"
code [ 62] length [6]),
(name
"Konstr_de" code [ 66] length [40]),
(name "Konstr_gb" code [20166] length [40]),
(name
"Ort" code [ 3] length [20]),
(name
"Konstrukteur" code [ 78] length [6]),
(name "Abteilung" code [
79] length [4]),
(name "Zusatz_de" code [20065] length [80]),
(name "Zusatz_gb" code [20165] length [80]),
(name
"Datei" code [32006]
length [6])
level
("Geraeteauswahl")
(Kostentraeger,Geraetkl,Geraet,Zeichtyp),
("Seite")
(Kostentraeger,Geraetkl,Geraet,Zeichtyp,Seite),
("Datei") (Datei);
subend
/*************************************************************************/
/*
add_head haengt eine Tabelle fuer den Kopf an */
/*
*/
sub add_head (struct TDBANK db)
remove_head (([0]),db);
create
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3) add
table (db:head)
comment("")
structure
(name "Kostentraeger" code [
60] length [6]),
(name "Znummer" code [
61] length [20]),
(name "Konstr_de"
code [ 66] length [40]),
(name "Konstr_gb"
code [20166] length [40]),
(name
"Konstrukteur" code [ 78] length [6]),
(name "Abteilung" code [
79] length [4]),
(name "Zusatz_de" code [20065] length [80]),
(name "Zusatz_gb" code [20165] length [80]);
subend
/*************************************************************************/
/*
Kopftabelle loeschen, falls vorhanden */
/*
*/
sub remove_head (short allert,struct TDBANK db)
short
exist=[0];
short
exit=[0];
if (allert)
msg_attention_abbort (exit,("Achtung!
Tabelle wirklich löschen?"));
if (exit)
return;
endif
endif
exist
(exist,db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
if
(exist)
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
exist table (exist,db:head);
if
(exist)
table unlink (db:head);
else
if
(allert)
msg_error (("Tabelle
nicht vorhanden!"));
endif
endif
endif
subend
/*************************************************************************/
/*
Listentabelle loeschen, falls vorhanden
*/
/*
*/
sub remove_list (short allert,struct TDBANK
db,char tab)
short
exist=[0];
short
exit=[0];
if (allert)
msg_attention_abbort (exit,("Achtung!
Tabelle wirklich löschen?"));
if (exit)
return;
endif
endif
exist
(exist,db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
if
(exist)
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
exist table (exist,tab);
if
(exist)
table unlink (tab);
else
if
(allert)
msg_error (("Tabelle
nicht vorhanden!"));
endif
endif
endif
subend
/*************************************************************************/
/*
Inhaltsverzeichnis loeschen, falls vorhanden */
/*
*/
sub remove_dir (struct TDBANK db)
short
exist=[0];
exist
(exist,db:path,db:proj,db:nam1,db:namlist2,"");
if
(exist)
use
(db:path,db:proj,db:nam1,db:namlist2,"");
exist table (exist,db:dir);
if
(exist)
table unlink (db:dir);
endif
endif
subend
/*************************************************************************/
/*
Inhalte in Tabelle lesen */
/*************************************************************************/
/*
Inhaltsverzeichnis einfuegen */
/* */
sub
insert_dir (struct TDBANK db)
short exist=[0];
exist
(exist,db:path,db:proj,db:nam1,db:namlist2,"");
if (!
exist)
create (db:path,db:proj,db:nam1,db:namlist2,"");
endif
add_dir (db);
use
(db:path,db:proj,db:nam1,db:namlist2,"");
table
(db:dir);
append
directory;
subend
/*************************************************************************/
/*
Stueckliste in Tabelle einfuegen */
/* */
sub insert_list (struct TDBANK db, char
tab,struct TDBANK dbase)
long
rec_no=[1];
long
rel_no=[1];
long
max=[0];
char
buffer[20]="";
char
sheet_no[6]="";
char
dirbuf[13][80];
short
code[13];
short
count=[13];
short
error;
code[1]=[60];
code[2]=[61];
code[3]=[63];
code[4]=[64];
code[5]=[62];
code[6]=[66];
code[7]=[20166];
code[8]=[3];
code[9]=[78];
code[10]=[79];
code[11]=[20065];
code[12]=[20165];
code[13]=[32006];
quiet on;
insert_dir
(db);
run_batch (db);
quiet
off;
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
table
(tab);
append
sheet;
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
table
(tab);
relation (dbase:path,dbase:proj,dbase:nam1,dbase:nam2,dbase:nam3) table
("DABA") key ("Sachnummer");
quiet
on;
modify;
quiet
off;
if (error)
msg_error (("Fehler beim
Abgleich!"));
endif
relation (db:path,db:proj,db:nam1,db:namlist2,"") table
(db:dir);
status
last_record (max);
while
(rec_no<=max)
record enter (rec_no);
record status (rec_no) sheet_no (sheet_no);
relation get (rel_no) s_key ("Datei") (sheet_no)
(count,code,dirbuf) return (error);
if
(Einbauort<>dirbuf[8])
Menge=[0];
endif
/* string format
(buffer,"%s%s%s%s%s",Anlage,Funktion,Einbauort,BMK,Sachnummer);*/
string format
(buffer,"%s%s%s%s",Anlage,Funktion,Einbauort,BMK);
BMKlang=buffer;
record output (rec_no);
rec_no ++;
endwhile
subend
/*************************************************************************/
/*
Eingabemasken */
/*************************************************************************/
/*
Kopfdaten */
/*
*/
sub
ed_head (struct TDBANK db)
short exit=[0];
short
exist=[0];
short
error=[0];
long
rec_no=[1];
struct
THEAD hd;
char kost_text[255];
char znum_text[255];
char kons_text[255];
char abtl_text[255];
exist
(exist,db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
if (!exist)
create (db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
endif
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
exist
table (exist,db:head);
if
(exist)
table (db:head);
record enter (rec_no);
hd:znum=Znummer;
hd:bkde=Konstr_de;
hd:bkgb=Konstr_gb;
else
quiet on;
insert_dir(db);
quiet off;
use
(db:path,db:proj,db:nam1,db:namlist2,"");
table (db:dir);
record get (rec_no) s_key ("Geraeteauswahl")
(db:nam1,db:nam2,db:nam3,db:nam4);
string format
(hd:znum,"%s%s%s%s%s%s%s",Kostentraeger,"/",Geraetkl,"-",Geraet,"-",Zeichtyp);
string format (hd:bkde,"%s%s%s",Ort,"-",Konstr_de);
string format (hd:bkgb,"%s%s%s",Ort,"-",Konstr_gb);
endif
hd:kost=Kostentraeger;
hd:kons=Konstrukteur;
hd:abtl=Abteilung;
hd:zkde=Zusatz_de;
hd:zkgb=Zusatz_gb;
string format (kost_text,"Kostenträger %s",hd:kost);
string format
(znum_text,"Zeichnungsnummer %s",hd:znum);
string format
(kons_text,"Konstrukteur %s",hd:kons);
string format
(abtl_text,"Konstruktionsabteilung %s",hd:abtl);
ed
var
(!kost_text,"hd:kost")
(!znum_text,"hd:znum")
("Bemerkung Konstruktion
deutsch","hd:bkde")
("Bemerkung Konstruktion
englisch","hd:bkgb")
(!kons_text,"hd:kons")
(!abtl_text,"hd:abtl")
("Zusatzbemerkung Konstruktion
deutsch","hd:zkde")
("Zusatzbemerkung Konstruktion
englisch","hd:zkgb")
title("Kopfdaten")
esc (exit);
if (!exit)
rec_no=[1];
add_head (db);
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
table
(db:head);
1=hd:kost;
2=hd:znum;
3=hd:bkde;
4=hd:bkgb;
5=hd:kons;
6=hd:abtl;
7=hd:zkde;
8=hd:zkgb;
record insert;
endif
subend
/*************************************************************************/
/*
Datensatz editieren */
/*
*/
sub ed_record (struct TDBANK db,struct TDBANK
dbase,long rec_no)
short
exit=[0];
struct
TRECORD rec;
char
pos[30];
short
return=[1];
char
hand[30];
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
table
(db:list);
if
(rec_no)
record enter (rec_no);
rec:position=:1;
rec:sachnummer=2;
rec:variante=3;
rec:menge=4;
rec:sachnr_Halbz=5;
rec:anlage=6;
rec:funktion=7;
rec:einbauort=8;
rec:bmk=9;
rec:abmessung1=10;
rec:abmessung2=11;
rec:abmessung3=12;
rec:lot_hinten=13;
rec:lot_basis=14;
rec:lot_mitte=15;
rec:hand=16;
rec:rev=17;
if
(rec:hand)
hand="Handeintrag";
else
hand="";
endif
string format (pos,"Position %s",rec:position);
ed var
(!pos,"rec:position")
("Sachnummer","rec:sachnummer","get_record
(db,dbase,rec)","","?")
("Variante","rec:variante")
("Menge","rec:menge")
("Sachnr_Halbz","rec:sachnr_Halbz")
("Lot_hinten","rec:lot_hinten")
("Lot_basis","rec:lot_basis")
("Lot_mitte","rec:lot_mitte")
("Anlage","rec:anlage")
("Funktion","rec:funktion")
("Einbauort","rec:einbauort")
("BMK","rec:bmk")
("Abmessung1","rec:abmessung1")
("Abmessung2","rec:abmessung2")
("Abmessung3","rec:abmessung3")
(!hand,"rec:hand")
/*
("Rev","rec:rev")
(!BMKlang)*/
title ("Datensatz bearbeiten")
esc
(exit);
if
(!exit)
if
(!rec:hand)
confirm_box ("Achtung!
Dieser Eintrag ist automatisch erstellt","und wird wieder
überschrieben","Speichern?")
button
("&Ja","&Nein")
ret_button
(return);
endif
if
(return=[1])
1=rec:position;
2=rec:sachnummer;
3=:rec:variante;
4=:rec:menge;
5=rec:sachnr_Halbz;
6=rec:anlage;
7=rec:funktion;
8=rec:einbauort;
9=rec:bmk;
10=:rec:abmessung1;
11=:rec:abmessung2;
12=:rec:abmessung3;
13=:rec:lot_hinten;
14=:rec:lot_basis;
15=:rec:lot_mitte;
16=rec:hand;
17=rec:rev;
record output (rec_no);
endif
endif
endif
subend
/*************************************************************************/
/*
*/
/* */
sub get_record (struct TDBANK db,struct TDBANK
dbase,struct TRECORD rec)
struct
TDRECORD rec2;
long
rec_no;
rec2:sachnummer="";
select_record (dbase,rec2,rec_no);
if (rec2:sachnummer)
rec:sachnummer=rec2:sachnummer;
rec:abmessung1=rec2:abmessung1;
rec:abmessung2=rec2:abmessung2;
rec:abmessung3=rec2:abmessung3;
endif
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
table
(db:list);
subend
/*************************************************************************/
/*
*/
/*
*/
sub remove_record (struct TDBANK db,long
rec_no)
short
error;
short
return=[2];
confirm_box ("Datensatz
wirklich löschen?")
button
("&Ja","&Nein")
def_button (([2]))
bitmap_no ([1])
ret_button (return);
if
(return=[1])
record enter (rec_no) return (error);
empty_record ();
record output (rec_no) return (error);
endif
subend
/*************************************************************************/
/*
*/
/*
*/
sub end_ed_all (short exit)
exit=[1];
subend
/*************************************************************************/
/* Bibliothek edi2lib.cmd
*/
/* Firma
: PDP-Hannover Uwe Mayer E.K.
*/
/* Programm
: EDI2LIB.CMD */
/*
Datum : 10.04.1996
*/
/*
Beschreibung : */
/* Hinweis : */
/*
*/
/*************************************************************************/
#include dbank.h
/*************************************************************************/
/* Positionsdaten */
/*************************************************************************/
/* */
/*
*/
sub build_list (struct TDBANK db,struct TDBANK
dbase)
short
exist=[0];
short
error=[0];
short
return=[2];
check_project (db,error);
if
(!error)
check_db (dbase,error);
if (!error)
confirm_box ("Neue Positionsdaten
erstellen"," /bestehende Liste überarbeiten?")
button
("&Ja","&Nein")
bitmap_no
([1])
def_button ([2])
ret_button (return);
if (return=[1])
exist (exist,db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
if (!exist) /* Wenn Datenbank noch nicht
existiert, erstellen*/
create
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
endif
status_box create
title
("Positionsdaten erstellen")
pos ([1])
width([58])
("Die Erstellung der
Positionsdaten wird vorbereitet.","Dieses kann einen Moment
dauern.");
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
exist table (exist,db:list);
if (exist) /* Wenn Stueckliste schon
mal erstellt */
add_list (db,db:tmp); /* Neue Tabelle anhaengen */
insert_list
(db,db:tmp,dbase);
update_list
(db); /* Neue Stueckliste mit
alter abgleichen */
else
add_list (db,db:list); /* Neue Tabelle anhaengen
(original-Liste)*/
add_list (db,db:tmp); /* Neue Tabelle anhaengen */
insert_list
(db,db:tmp,dbase);
update_list
(db); /* Neue Stueckliste mit
alter abgleichen */
endif
endif
endif
else
msg_error (("Bitte die
Projekteinstellungen überprüfen!"));
endif
subend
/*************************************************************************/
/*
Neue Stueckliste mit alter abgleichen */
/*
*/
sub update_list (struct TDBANK db)
short
error=[0];
long
max=[0];
long
rec_no=[1];
long
rec_no_array[32];
long
maxcount;
long
count;
long
new_no=[0];
char
key[32];
key="";
char
buffer[18][40];
char
filterstring[80];
short test;
use
(db:path,db:proj,db:nam1,db:namlist2,db:namlist3);
table
(db:list);
table
(db:tmp);
status
last_record (max);
st_box_create
(("Positionsdaten aktualisieren"),("Neue Sätze
hinzufügen"),max);
while (rec_no<=max)
table select (db:tmp);
record enter (rec_no) return (error);
if
(Menge and !error)
key=BMKlang;
couple data_to_field (buffer);
table select (db:list);
couple field_to_data (buffer);
count=[0];
string format (filterstring,"BMKlang=\"%s\"",BMKlang);
filter filterstring;
quiet on;
record get all
(maxcount,rec_no_array)
order by (Position)
max ([32])
ignore_parent
return (error);
quiet off;
if
(maxcount > [0])
/*
record enter (rec_no_array[count]) return (error);*/
Rev=[1];
while ((count<maxcount) and Rev)
count ++;
record enter (rec_no_array[count]) return (error);
endwhile
if (Rev)
new_no=[0];
else
new_no=rec_no_array[count];
endif
else
new_no=[0];
endif
filter ();
couple field_to_data (buffer);
if
(!new_no)
record insert record (new_no);
endif
Rev="1";
record output (new_no);
endif
/* if
(Menge)
key=BMKlang;
couple data_to_field (buffer);
table select (db:list);
couple field_to_data (buffer);
record exist (new_no) s_key ("BMK")(key);
if
(!new_no)
record insert record (new_no);
endif
Rev="1";
record output (new_no);
endif*/
rec_no ++;
status_box update (rec_no);
endwhile status_box cancel;
table
select (db:list);
status
last_record (max);
st_box_create (("Positionsdaten
aktualisieren"),("Sätze überarbeiten"),max);
rec_no=[1];
while
(rec_no<=max)
record enter (rec_no);
if
((Rev="0") and (Hand="0"))
empty_record();
else
Rev="0";
endif
record output (rec_no);
rec_no ++;
status_box
update (rec_no);
endwhile
status_box cancel;
subend
/*************************************************************************/
/*
Aktuellen Datensatz "leermachen" */
/* */
sub empty_record
2=:"";
3=:"";
4=:[0];
5=:"";
6=:"";
7=:"";
8=:"";
9=:"";
10=:[0];
11=:[0];
12=:[0];
13=:[0];
14=:[0];
15=:[0];
/*16=:"";*/
17=:"";
subend
/*************************************************************************/
/*
Batchverarbeitung */
/*************************************************************************/
/*
Zurücksetzen des Projektes und dann geraet auswerten */
/*
*/
sub run_batch (struct TDBANK db)
char
symname[255];
char
batall[255];
char
batnew[255];
short
error=[0];
fspec
build (batall,"%s%p%e%f",db:path,db:proj,"pro","batchall.asc");
fspec
build
(batnew,"%s%p%e%f",db:path,db:proj,"pro","batchnew.asc");
set
ge_path (db:path);
set
ge_pro (db:proj);
load_symbols (db);
if
(!error)
batch create_all;
batch bin_to_ascii (batall);
quiet on;
batch offline;
quiet off;
create_batch (db,batall,batnew);
batch ascii_to_bin (batnew);
file
unlink (batnew);
batch online;
batch reset;
else
msg_error (("Die Symbolbiliothek kann
nicht geöffnet werden!"));
endif
subend
/*************************************************************************/
/* Symbolbibliotheken laden
*/
/* */
sub load_symbols (struct TDBANK db)
char
symname[4][80];
short
count=[4];
short
error=[0];
short
open[4];
set
ge_path (db:path);
set
ge_pro (db:proj);
get_symname (db,symname);
while
(count>[0])
if
(symname[count])
use symbol count (symname[count]) return
(error);
if (error)
confirm_box (symname[count],"kann
nicht geladen werden") button ("&OK");
endif
endif
count --;
endwhile
subend
/*************************************************************************/
/* ASCII-Stapel generieren
*/
/*
*/
sub create_batch (struct TDBANK db, char
batchall,char batch_new)
fptr
fp;
char
buffer[32];
char
filename[6];
char
fullname[255];
char
eb[5][32];
short
eof=[0];
short
anz=[0];
long
rec_no=[0];
long
max;
long
rec_array[4678];
short
error;
use
(db:path,db:proj,db:nam1,db:namlist2,"");
table
(db:dir);
file
open (fp,batchall,"r") return (error);
file
enter (fp,buffer,eof);
filename=buffer[1,6];
while
(!eof)
fspec build
(fullname,"%s%p%e%f",db:path,db:proj,"pro",filename);
sgetname (fullname,anz,eb);
record get (rec_no) s_key ("Seite")
(eb[1],eb[2],eb[3],eb[4],eb[5]);
Datei=filename;
record output (rec_no);
file
enter (fp,buffer,eof);
filename=buffer[1,6];
endwhile
/* die folgende zeile ist nur kontrolle*/
/*list
(Datei,Kostentraeger,Geraetkl,Geraet,Zeichtyp,Seite);*/
table close all;
use
(db:path,db:proj,db:nam1,db:namlist2,"");
table
(db:dir);
/* Diese Zeile ist
anscheinend noetig, damit das programm nicht abstuerzt*/
file close (fp);
file
unlink (batchall);
file
open (fp,batch_new,"w+") return (error);
if
(!error)
rec_no=[1];
record get all s_key ("Geraeteauswahl")
(db:nam1,db:nam2,db:nam3,db:nam4) (max,rec_array);
while (rec_no <= max)
record enter (rec_array[rec_no]) return (error);
if
(!error)
file output (fp,"%s\n",Datei);
else
msg_error (("Datensatz nicht
vorhanden!"));
endif
rec_no ++;
endwhile
file
close (fp);
else
msg_error (("Kann keinen Stapel
erstellen!"));
endif
subend
/*************************************************************************/
/*
Filterbearbeitung */
/*
*/
sub ed_filter (char name_buffer,char
inhalt_buffer)
short
id;
short
exit=[0];
short
error;
short
count=[1];
char name[40][36];
char inhalt[40][100];
char nm[7];
char
ct[10];
char
section[25]="Filter";
char
pos_asc[2];
short
pos;
ini
open (id,"stueck.ini") return (error);
if
(!error)
while (count <= [40])
string format (nm,"%s%s","Name",count);
string format (ct,"%s%s","Contens",count);
ini read (id,section,nm,char,name[count]);
ini read (id,section,ct,char,inhalt[count]);
count ++;
endwhile
endif
ed var
("Filternr (1-40)","pos_asc","load_filter
(pos_asc,name_buffer,inhalt_buffer,name,inhalt)","","?")
("Filtername","name_buffer","get_filter
(pos_asc,name_buffer,inhalt_buffer,name,inhalt)","","?")
("Filterstring","inhalt_buffer")
title ("Filter bearbeiten")
esc (exit);
if
(!exit)
string_to_num (pos_asc,pos);
if
((pos>[0]) and (pos<[41]))
name[pos]=name_buffer;
inhalt[pos]=inhalt_buffer;
count=[1];
while (count <= [40])
string format (nm,"%s%s","Name",count);
string format (ct,"%s%s","Contens",count);
ini write (id,section,nm,char,name[count]);
ini write (id,section,ct,char,inhalt[count]);
count ++;
endwhile
endif
if
(inhalt_buffer)
filter inhalt_buffer return
(error);
if (error)
msg_error (("Ungültiger
Filter!"));
endif
else
filter ();
endif
endif
ini
close (id,[1]);
subend
/*************************************************************************/
/*
*/
/*
*/
sub load_filter (char pos_asc,char nm,char
ct,char nm_ar,char ct_ar)
short
pos;
if
(pos_asc)
string_to_num (pos_asc,pos);
else
pos=[-1];
endif
if
((pos>[0]) and (pos<[41]))
nm=nm_ar[pos];
ct=ct_ar[pos];
endif
subend
/*************************************************************************/
/*
*/
/*
*/
sub get_filter (char pos_asc,char nm,char
ct,char nm_ar,char ct_ar)
short
exit;
long
rec_no;
short
error;
short
pos;
edit
all
head_line ("Filtername")
exit_var (exit)
record (rec_no)
button ("&OK") call end_ed_filter (([1]),exit,error)
button ("&Abbruch") call end_ed_filter (([0]),exit,error)
var_text ([40],nm_ar);
if
(!error)
pos=rec_no;
nm=nm_ar[pos];
pos_asc=:pos;
ct=ct_ar[pos];
endif
subend
/*************************************************************************/
/*
*/
/*
*/
sub end_ed_filter (short action,short
exit,short error)
exit=[1];
if
(action)
error=[0];
else
error=[1];
endif
subend
/*************************************************************************/
/* Bibliothek */
/* Firma
: PDP-Hannover Uwe Mayer E.K. */
/*
Programm : HELPLIB.CMD */
/*
Datum : 11.04.1996
*/
/*
Beschreibung : */
/*
Hinweis : */
/*
*/
/*************************************************************************/
#include
dbank.h
/*************************************************************************/
/*
Hilfefunktionen */
/*************************************************************************/
/*
Infotext zum Programm */
/*
*/
sub
help_info
char text1[80]="Version x.xx Datum:xx.xx.xxxx PDP-Hannover Uwe Mayer E.K. ";
char text2[80]=" I N F O R M A T I O N
!! ";
char text3[80]=" Aucotec Version ELCAD 5.5 / KS-ALWIN CC 5.5 ";
char text4[80]="Dieses Programm kann
nur dann eingesetzt werden, wenn auch
";
char text5[80]=" tatsächlich eine Lizenz und ELCAD_ID-Nr.:
vorliegt !! ";
char text6[80]="Alle Rechte,
insbesondere das Recht der Vervielfältigung und ";
char text7[80]=" Verbreitung bleiben der Firma PDP-Hannover
vorbehalten. ";
char
text8[80]="PDP-Hannover Uwe Mayer Wendlandstr.3 Tel.: 0511 / 279 56-0 ";
char
text9[80]=" Fax.: 0511 / 279 56-30 ";
confirm_box
(text1," ",text2," ",text3,"
",text4,text5,text6,text7," ",text8,text9)
button ("&OK");
subend
/*************************************************************************/
/* Bibliothek
: reclib.cmd */
/* Firma
: PDP-Hannover Uwe Mayer E.K. */
/*
Programm : RECLIB.CMD */
/*
Datum : 09.04.1996
*/
/*
Beschreibung : */
/*
Hinweis : */
/*
*/
/*************************************************************************/
#include
dbank.h
/*************************************************************************/
/*
Tabelle fuer Teiledatenbank */
/*************************************************************************/
/*
*/
/*
*/
sub add_reclist (struct TDBANK db,char
nam3,char tab)
create
(db:path,db:proj,db:nam1,db:nam2,nam3) add
table (tab)
comment
("")
structure
(name "Sachnummer" code
[80] length [6]),
(name "Materialgruppe"
code [152] length [6]),
(name "Klasse" code [32010] length [1]),
(name "Hauptgruppe" code [32011] length [1]),
(name "Untergruppe" code [32012] length [1]),
(name "Bezeichnung" code
[150] length [40]),
(name
"Norm" code [154] length [16]),
(name "Abmessung1"
code [4003] length [10]),
(name "Abmessung2"
code [4004] length [10]),
(name "Abmessung3"
code [4005] length [10]),
(name
"Abmessungstext" code [41]
length [35]),
(name "Gewicht" code [47] length [9]),
(name
"Test" code [32005]
length [12]),
(name
"Werkstoff" code [155] length [10]),
(name "WerkstoffText" code
[156] length [10]),
(name "TechnBewertung" code
[20053] length [1])
key (Sachnummer)
level ("Material")
(Klasse,Hauptgruppe,Untergruppe);
subend
/*************************************************************************/
/*
ASCII-Liste einlesen */
/*************************************************************************/
/*
*/
/* */
sub insert_reclist2 (struct TDBANK db,char
nam3,char tab)
short
exist=[0];
short
error=[0];
fptr
fp;
char
buffer[255];
char
c[1];
short
eof=[0];
short
str_len=[0];
short
found;
char
field[10][10];
char
delim[2][1];
short
rec_no;
char
error_msg[80];
use
(db:path,db:proj,db:nam1,db:nam2,nam3);
exist
table (exist,tab);
if
(exist)
table unlink (tab);
endif
add_reclist (db,nam3,tab);
use
(db:path,db:proj,db:nam1,db:nam2,nam3);
table
(tab);
file
open (fp,db:source,"r") return (error);
if
(!error)
status_box create
title ("Einlesen der
ASCII-Liste")
("Eingelesene
Datensätze",rec_no);
while (!eof)
file enter (fp,buffer,eof,[255]);
rec_no ++;
strlen (buffer,str_len);
if
(str_len=[147])
c=buffer[1,1];
if (c="S")
Sachnummer =buffer[2,7];
Klasse =buffer[8,8];
Hauptgruppe =buffer[9,9];
Untergruppe =buffer[10,10];
Materialgruppe=buffer[8,13];
Bezeichnung =buffer[14,53];
Norm =buffer[54,69];
Abmessungstext=buffer[70,104];
Gewicht =buffer[105,113];
Test =buffer[114,125];
Werkstoff =buffer[126,135];
WerkstoffText =buffer[136,145];
TechnBewertung=buffer[146,146];
field[1]="";
field[2]="";
field[3]="";
field[4]="";
delim[1]="X";
delim[2]="X";
buffer=Abmessungstext;
parse get_delimiter (buffer,found,field,delim);
Abmessung1=field[1];
Abmessung2=field[2];
Abmessung3=field[3];
record insert return (error);
else
string format (error_msg,"In Zeile %s : Fehlerhafter
Datensatz!",rec_no);
msg_error_delay
(error_msg,([2]));
endif
else
if (((str_len>[147]) or (str_len<[147])) and (str_len>[4]))
string
format (error_msg,"In Zeile %s : Fehlerhafter Datensatz!",rec_no);
msg_error_delay
(error_msg,([2]));
endif
endif
status_box update text
("Eingelesene Datensätze",rec_no);
endwhile
status_box cancel;
endif
subend
/*************************************************************************/
/*
*/
/*
*/
sub insert_reclist (struct TDBANK db,char nam3,char
tab)
short
exist=[0];
short
asc;
char zeichen[1];
fptr fp;
short eof=[0];
char
buffer[255];
short
error=[0];
short
found;
char
field[10][10];
char
delim[2][1];
short
rec_no;
status_box create
title ("Einlesen der ASCII-Liste")
("Eingelesene
Datensätze",rec_no);
use
(db:path,db:proj,db:nam1,db:nam2,nam3);
exist
table (exist,tab);
if
(exist)
table unlink (tab);
endif
add_reclist (db,nam3,tab);
use
(db:path,db:proj,db:nam1,db:nam2,nam3);
table
(tab);
file
open (fp,db:source,"r") return (error);
if
(!error)
while (!eof)
file get_char (fp,asc,eof);
chr (zeichen,asc);
if
((zeichen = "S") and !eof)
fgets (fp,([6]),buffer,eof);
Sachnummer=buffer;
if (!eof)
file get_char (fp,asc,eof);
chr
(zeichen,asc);
Klasse=zeichen;
file get_char (fp,asc,eof);
chr (zeichen,asc);
Hauptgruppe=zeichen;
file get_char (fp,asc,eof);
chr (zeichen,asc);
Untergruppe=zeichen;
file seek (fp,[-3],[1]);
fgets
(fp,([6]),buffer,eof);
Materialgruppe=buffer;
if (!eof)
fgets (fp,([40]),buffer,eof);
Bezeichnung=buffer;
if (!eof)
fgets
(fp,([16]),buffer,eof);
Norm=buffer;
if (!eof)
fgets (fp,([35]),buffer,eof);
Abmessungstext=buffer;
if (!eof)
fgets (fp,([9]),buffer,eof);
Gewicht=buffer;
if (!eof)
fgets (fp,([12]),buffer,eof);
Test=buffer;
if (!eof)
fgets (fp,([10]),buffer,eof);
Werkstoff=buffer;
if (!eof)
fgets (fp,([10]),buffer,eof);
WerkstoffText=buffer;
if (!eof)
file get_char (fp,asc,eof);
chr (zeichen,asc);
TechnBewertung=zeichen;
if (!eof)
file get_char (fp,asc,eof);
chr (zeichen,asc);
if ((zeichen=";") and !eof)
file get_char (fp,asc,eof);
if ((asc=[13]) and !eof)
file get_char (fp,asc,eof);
if ((asc<>[10]) or eof)
eof=[1];
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
if (eof)
msg
(("Unerwartetes Ende der Quelldatei."));
endif
endif
field[1]="";
field[2]="";
field[3]="";
field[4]="";
delim[1]="X";
delim[2]="X";
buffer=Abmessungstext;
parse get_delimiter (buffer,found,field,delim);
Abmessung1=field[1];
Abmessung2=field[2];
Abmessung3=field[3];
record insert return (error);
else
eof=[1];
endif
rec_no ++;
status_box update text
("Eingelesene Datensätze",rec_no);
endwhile
status_box cancel;
file
close (fp);
else
msg_error (("Datei konnte nicht
geöffnet werden!"));
endif
subend
/*************************************************************************/
/*
*/
/* */
sub fgets (fptr fp, short count, char txt,
short eof);
char
c[1];
short
asc;
txt="";
while
(count and !eof)
file
get_char (fp,asc,eof);
chr
(c,asc);
string format (txt,"%s%s",txt,c);
count --;
endwhile
subend
/*************************************************************************/
/* updatedb */
/*
*/
sub update_db (struct TDBANK db)
short
exist=[0];
short
error=[0];
long
rec_no=[0];
long
rel_no=[1];
long
max=[0];
char
rec[16][40];
short
codenr[16];
short
fieldcnt=[16];
short
share_no;
char
buffer[20];
check_path (db:path,error);
if
(!error)
exist pro (exist,db:path,db:proj);
if
(exist)
exist (exist,db:path,db:proj,db:nam1,db:nam2,db:nam3);
if
(exist)
share lock daba
(share_no,error,buffer,"w",[1],db:path,db:proj,db:nam1,db:nam2,db:nam3);
endif
if
(!error)
exist
(exist,db:path,db:proj,db:nam1,db:nam2,db:nam3);
if (!exist)
create (db:path,db:proj,db:nam1,db:nam2,db:nam3);
endif
exist (exist,db:path,db:proj,db:nam1,db:nam2,db:namlist3);
if (!exist)
create (db:path,db:proj,db:nam1,db:nam2,db:namlist3);
endif
use (db:path,db:proj,db:nam1,db:nam2,db:nam3);
exist table (exist,db:list);
if (!exist)
insert_reclist (db,db:nam3,db:list);
else
table (db:list);
insert_reclist2
(db,db:namlist3,db:tmp);
use
(db:path,db:proj,db:nam1,db:nam2,db:nam3);
table (db:list);
relation (db:path,db:proj,db:nam1,db:nam2,db:namlist3) table (db:tmp);
modify;
relation status last_record (max);
while (rel_no<=max)
relation enter (rel_no) (fieldcnt,codenr,rec);
record exist (rec_no) (rec[1]);
if (!rec_no)
couple field_to_data (rec);
record insert record (rec_no);
endif
rel_no ++;
endwhile
relation close;
unlink (db:path,db:proj,db:nam1,db:nam2,db:namlist3);
share unlock (share_no);
endif
else
msg_error (("Datenbankzugriff
nicht möglich!"));
endif
else
msg_error (("Datenbankeinstellung
überprüfen!"));
endif
endif
subend
/*************************************************************************/
/*
Eingabemaske fuer Quellenpfad */
/*
*/
sub ed_ascii (struct TDBANK db,struct TDBANK
startdb)
char
path[255];
char
file[13];
short
exit=[0];
char
buffer[255];
short
error=[0];
fspec
get_path (path,db:source);
fspec
get_name (file,db:source);
ed var
("Pfad :
","path","select_path
(startdb,path)","","?")
("Datei : ","file","select_file
(file,path)","","?")
title ("Auswahl der
Quelldatei")
esc (exit);
if
(!exit)
if
(file<>"")
fspec build (buffer,"%s%f",path,file);
check_file (buffer,error);
if
(!error)
db:source=buffer;
write_rec_ini (db);
endif
else
msg_error (("Es wurde
keine Datei ausgewählt!"));
endif
endif
subend
/*************************************************************************/
/* Bibliothek
: sendlib.cmd */
/* Firma
: PDP-Hannover Uwe Mayer E.K. */
/*
Programm : SENDLIB.CMD */
/*
Datum : 09.04.1996
*/
/*
Beschreibung : */
/*
Hinweis : */
/*
*/
/*************************************************************************/
#include dbank.h
/*************************************************************************/
/*
ASCII-Liste erstellen und "senden" */
/*
*/
sub send_ascii (struct TDBANK db,short free)
short share_no;
short
error;
char
buffer[20];
share
lock projekt (share_no,error,buffer,"w",[1],db:path,db:proj);
if
(!error)
create_ascii (db,free);
share unlock (share_no);
endif
subend
/*************************************************************************/
/*
*/
/*
*/
sub sep (fptr fp,short free)
if
(!free and free)
file
put_char (fp,[124]);
endif
subend
/*************************************************************************/
/*
*/
/* */
sub write_blank (fptr fp, short count)
while
(count)
file
put_char (fp,[32]);
count --;
endwhile
subend