/***********************************************************************\ * * * 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); }