/********************************* * STRUCTS - Test C02 structures * *********************************/ //Specify System Header using -H option #include #include #include #include #include #include char d, i; char aa,xx,yy; int yx; //Define Structure struct record { /* Sample Record */ char name[8]; //Name char index; //Index int addr; //Address char data[128]; //Data }; //Declare Structure Variable struct record srcrec; struct record dstrec; //Structs Containing Structs struct point {char x, y; }; struct point pnt; struct rect {struct point toplft, btmrgt; }; struct rect box; struct frame {struct rect outer, inner; }; struct frame fram; main: //Set Structure Members strdst(srcrec.name); strcpy("RECNAME"); srcrec.index = 1; srcrec.addr = &srcrec; for (i = 0; i<=@srcrec.data; i++) srcrec.data[i] = i; //Clear Destination Record memclr(@dstrec, dstrec); prtdst(); //Copy Source Record into Destination Record memdst(dstrec); memcpy(@srcrec, srcrec); prtdst(); //Clear Box memclr(@box, box); //Clear Box Members prtbox(""); //Print Box Members //Set Box Members box.toplft.x=1; box.toplft.y=2; box.btmrgt.x=8; box.btmrgt.y=9; prtbox(""); newlin(); //Clear Frame memclr(@fram, fram); //Clear Frame Members prtfrm(); //Print Frame Members //Set Frame Members fram.outer.toplft.x=10; fram.outer.toplft.y=11; fram.outer.btmrgt.x=98; fram.outer.btmrgt.y=99; fram.inner.toplft.x=22; fram.inner.toplft.y=23; fram.inner.btmrgt.x=86; fram.inner.btmrgt.y=87; prtfrm(); newlin(); goto exit; //Print Destination Record void prtdst() { setdst(dstrec.name); printf("REC.NAME=\"%s\"%n"); printf(dstrec.index, "REC.INDEX=%d%n"); setdst(dstrec.addr); printf("REC.ADDR=$%w%n"); puts("REC.DATA=["); for (i = 0; i<@dstrec.data; i++) { if (i) putc(','); putdec(dstrec.data[i]); } putln("]"); anykey(); } //Print Frame void prtfrm() { cpybox(fram.outer); prtbox("OUTER."); cpybox(fram.inner); prtbox("INNER."); anykey(); } void cpybox() { savrxy(); setdst(box); resrxy(); memcpy(@box); } //Print Box void prtbox(yx) { puts(yx); puts("TOPLFT."); prtpnt(box.toplft); puts(yx); puts("BTMRGT."); prtpnt(box.btmrgt); } //Print Point void prtpnt() { savrxy(); setdst(pnt); resrxy(); memcpy(@pnt); printf(pnt.x,"X=%d,"); printf(pnt.y,"Y=%d%n"); }