95 lines
1.8 KiB
C
95 lines
1.8 KiB
C
|
/***********************************************************************\
|
||
|
* *
|
||
|
* RELATE1.C Copyright (C) 1993 Sequiter Software Inc. *
|
||
|
* *
|
||
|
\***********************************************************************/
|
||
|
/* See User's Manual, page 131 */
|
||
|
|
||
|
#include "d4all.h"
|
||
|
|
||
|
#ifdef __TURBOC__
|
||
|
extern unsigned _stklen = 10000;
|
||
|
#endif
|
||
|
|
||
|
CODE4 code_base;
|
||
|
DATA4 *student = NULL,*enrollment = NULL;
|
||
|
RELATE4 *master = NULL,*slave = NULL;
|
||
|
TAG4 *id_tag,*name_tag;
|
||
|
|
||
|
void open_data_files() ;
|
||
|
void set_relation() ;
|
||
|
void print_record() ;
|
||
|
|
||
|
void open_data_files()
|
||
|
{
|
||
|
d4init(&code_base);
|
||
|
|
||
|
student = d4open(&code_base,"STUDENT");
|
||
|
enrollment = d4open(&code_base,"ENROLL");
|
||
|
|
||
|
name_tag = d4tag(student,"NAME");
|
||
|
id_tag = d4tag(enrollment,"STU_ID_TAG");
|
||
|
|
||
|
e4exit_test(&code_base);
|
||
|
|
||
|
}
|
||
|
|
||
|
void set_relation()
|
||
|
{
|
||
|
master = relate4init(student);
|
||
|
if(master == NULL) exit(1);
|
||
|
|
||
|
slave = relate4create_slave(master,enrollment
|
||
|
,"ID",id_tag);
|
||
|
|
||
|
relate4type(slave,relate4scan);
|
||
|
|
||
|
relate4top(master);
|
||
|
}
|
||
|
|
||
|
void print_record()
|
||
|
{
|
||
|
RELATE4 *relation;
|
||
|
DATA4 *data;
|
||
|
FIELD4 *field;
|
||
|
int j;
|
||
|
|
||
|
for(relation = master;relation != NULL
|
||
|
;relate4next(&relation))
|
||
|
{
|
||
|
data = relation->data;
|
||
|
|
||
|
for(j = 1;j <= d4num_fields(data);j++)
|
||
|
printf("%s "
|
||
|
,f4memo_str(d4field_j(data,j)));
|
||
|
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
|
||
|
void list_records()
|
||
|
{
|
||
|
int rc;
|
||
|
|
||
|
for(rc = relate4top(master);rc != r4eof;rc = relate4skip(master,1L))
|
||
|
print_record();
|
||
|
|
||
|
printf("\n");
|
||
|
|
||
|
relate4unlock(master);
|
||
|
}
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
open_data_files();
|
||
|
|
||
|
set_relation();
|
||
|
|
||
|
list_records();
|
||
|
|
||
|
relate4unlock(master);
|
||
|
relate4free(master,0);
|
||
|
|
||
|
d4close_all(&code_base);
|
||
|
}
|