#include <stdio.h>
#include <string.h> // needed for strcpy()
// supporting structure for dates
struct date {
int day;
int month;
int year;
} ;
// Owner Information: Name, Address, Telephone Number
struct ownerInfo {
char name[ 60 ] ;
char address[ 100 ] ;
char phone[ 20 ] ;
} ;
// Animal Information: Name, Species, Sex, Age, Weight, Microchip Number
struct animalInfo {
char name[ 60 ] ;
char species[ 30 ] ;
char sex[ 10 ] ;
int age;
float weight;
char microchip[ 25 ] ;
} ;
// Rabies Information: Producer, lot number, date vaccinated, and validity (years)
struct rabiesInfo {
char producer[ 4 ] ; // first 3 letters + '\0'
char lotNumber[ 20 ] ; // alphanumeric
struct date dateVaccinated;
int validityYears;
} ;
// Veterinarian Information: Name, License Number, and date signed
struct vetInfo {
char name[ 60 ] ;
char license[ 20 ] ;
struct date dateSigned;
} ;
// Main DD2209 record combining all information
struct dd2209 {
struct ownerInfo owner; // stores owner's name, address, and phone number
struct animalInfo animal; // stores animal's details (name, species, sex, age, etc.)
struct rabiesInfo rabies; // stores rabies vaccination details
struct vetInfo vet; // stores veterinarian's name, license, and signature date
} ;
int main( void )
{
struct dd2209 form; // create one instance of the main structure
// Fill owner information
strcpy ( form.
owner .
name , "Jane Doe" ) ; strcpy ( form.
owner .
address , "123 Main Street, Columbia, SC" ) ; strcpy ( form.
owner .
phone , "803-555-1234" ) ;
// Fill animal information
strcpy ( form.
animal .
name , "Nala" ) ; strcpy ( form.
animal .
species , "Canine" ) ; strcpy ( form.
animal .
sex , "Female" ) ; form.animal .age = 5 ;
form.animal .weight = 18.5 ;
strcpy ( form.
animal .
microchip , "985112003456789" ) ;
// Fill rabies information
strcpy ( form.
rabies .
producer , "PFZ" ) ; // first three letters of producer strcpy ( form.
rabies .
lotNumber , "AB12X9" ) ; form.rabies .dateVaccinated .day = 12 ;
form.rabies .dateVaccinated .month = 4 ;
form.rabies .dateVaccinated .year = 2024 ;
form.rabies .validityYears = 3 ;
// Fill veterinarian information
strcpy ( form.
vet .
name , "Dr. Emily Carter" ) ; strcpy ( form.
vet .
license , "SCVET23456" ) ; form.vet .dateSigned .day = 15 ;
form.vet .dateSigned .month = 4 ;
form.vet .dateSigned .year = 2024 ;
// Print all information
printf ( "----- Veterinary Health Certificate (DD Form 2209) -----\n \n " ) ;
printf ( "Owner Information:\n " ) ; printf ( " Name: %s\n " , form.
owner .
name ) ; printf ( " Address: %s\n " , form.
owner .
address ) ; printf ( " Telephone: %s\n \n " , form.
owner .
phone ) ;
printf ( "Animal Information:\n " ) ; printf ( " Name: %s\n " , form.
animal .
name ) ; printf ( " Species: %s\n " , form.
animal .
species ) ; printf ( " Sex: %s\n " , form.
animal .
sex ) ; printf ( " Age: %d years\n " , form.
animal .
age ) ; printf ( " Weight: %.1f kg\n " , form.
animal .
weight ) ; printf ( " Microchip #: %s\n \n " , form.
animal .
microchip ) ;
printf ( "Rabies Vaccination Information:\n " ) ; printf ( " Producer: %s\n " , form.
rabies .
producer ) ; printf ( " Lot Number: %s\n " , form.
rabies .
lotNumber ) ; printf ( " Date Vaccinated: %02d/%02d/%d\n " , form.
rabies .
dateVaccinated .
day , form.rabies .dateVaccinated .month , form.rabies .dateVaccinated .year ) ;
printf ( " Valid for: %d years\n \n " , form.
rabies .
validityYears ) ;
printf ( "Veterinarian Information:\n " ) ; printf ( " Name: %s\n " , form.
vet .
name ) ; printf ( " License #: %s\n " , form.
vet .
license ) ; printf ( " Date Signed: %02d/%02d/%d\n " , form.
vet .
dateSigned .
day , form.vet .dateSigned .month , form.vet .dateSigned .year ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4gICAvLyBuZWVkZWQgZm9yIHN0cmNweSgpCgovLyBzdXBwb3J0aW5nIHN0cnVjdHVyZSBmb3IgZGF0ZXMKc3RydWN0IGRhdGUgewogICAgaW50IGRheTsKICAgIGludCBtb250aDsKICAgIGludCB5ZWFyOwp9OwoKLy8gT3duZXIgSW5mb3JtYXRpb246IE5hbWUsIEFkZHJlc3MsIFRlbGVwaG9uZSBOdW1iZXIKc3RydWN0IG93bmVySW5mbyB7CiAgICBjaGFyIG5hbWVbNjBdOwogICAgY2hhciBhZGRyZXNzWzEwMF07CiAgICBjaGFyIHBob25lWzIwXTsKfTsKCi8vIEFuaW1hbCBJbmZvcm1hdGlvbjogTmFtZSwgU3BlY2llcywgU2V4LCBBZ2UsIFdlaWdodCwgTWljcm9jaGlwIE51bWJlcgpzdHJ1Y3QgYW5pbWFsSW5mbyB7CiAgICBjaGFyICBuYW1lWzYwXTsKICAgIGNoYXIgIHNwZWNpZXNbMzBdOwogICAgY2hhciAgc2V4WzEwXTsKICAgIGludCAgIGFnZTsKICAgIGZsb2F0IHdlaWdodDsKICAgIGNoYXIgIG1pY3JvY2hpcFsyNV07Cn07CgovLyBSYWJpZXMgSW5mb3JtYXRpb246IFByb2R1Y2VyLCBsb3QgbnVtYmVyLCBkYXRlIHZhY2NpbmF0ZWQsIGFuZCB2YWxpZGl0eSAoeWVhcnMpCnN0cnVjdCByYWJpZXNJbmZvIHsKICAgIGNoYXIgICAgICAgIHByb2R1Y2VyWzRdOyAgICAgICAvLyBmaXJzdCAzIGxldHRlcnMgKyAnXDAnCiAgICBjaGFyICAgICAgICBsb3ROdW1iZXJbMjBdOyAgICAgLy8gYWxwaGFudW1lcmljCiAgICBzdHJ1Y3QgZGF0ZSBkYXRlVmFjY2luYXRlZDsKICAgIGludCAgICAgICAgIHZhbGlkaXR5WWVhcnM7Cn07CgovLyBWZXRlcmluYXJpYW4gSW5mb3JtYXRpb246IE5hbWUsIExpY2Vuc2UgTnVtYmVyLCBhbmQgZGF0ZSBzaWduZWQKc3RydWN0IHZldEluZm8gewogICAgY2hhciAgICAgICAgbmFtZVs2MF07CiAgICBjaGFyICAgICAgICBsaWNlbnNlWzIwXTsKICAgIHN0cnVjdCBkYXRlIGRhdGVTaWduZWQ7Cn07CgovLyBNYWluIEREMjIwOSByZWNvcmQgY29tYmluaW5nIGFsbCBpbmZvcm1hdGlvbgpzdHJ1Y3QgZGQyMjA5IHsKICAgIHN0cnVjdCBvd25lckluZm8gb3duZXI7ICAgIC8vIHN0b3JlcyBvd25lcidzIG5hbWUsIGFkZHJlc3MsIGFuZCBwaG9uZSBudW1iZXIKICAgIHN0cnVjdCBhbmltYWxJbmZvIGFuaW1hbDsgIC8vIHN0b3JlcyBhbmltYWwncyBkZXRhaWxzIChuYW1lLCBzcGVjaWVzLCBzZXgsIGFnZSwgZXRjLikKICAgIHN0cnVjdCByYWJpZXNJbmZvIHJhYmllczsgIC8vIHN0b3JlcyByYWJpZXMgdmFjY2luYXRpb24gZGV0YWlscwogICAgc3RydWN0IHZldEluZm8gdmV0OyAgICAgICAgLy8gc3RvcmVzIHZldGVyaW5hcmlhbidzIG5hbWUsIGxpY2Vuc2UsIGFuZCBzaWduYXR1cmUgZGF0ZQp9OwoKaW50IG1haW4odm9pZCkKewogICAgc3RydWN0IGRkMjIwOSBmb3JtOyAgLy8gY3JlYXRlIG9uZSBpbnN0YW5jZSBvZiB0aGUgbWFpbiBzdHJ1Y3R1cmUKCiAgICAvLyBGaWxsIG93bmVyIGluZm9ybWF0aW9uCiAgICBzdHJjcHkoZm9ybS5vd25lci5uYW1lLCAiSmFuZSBEb2UiKTsKICAgIHN0cmNweShmb3JtLm93bmVyLmFkZHJlc3MsICIxMjMgTWFpbiBTdHJlZXQsIENvbHVtYmlhLCBTQyIpOwogICAgc3RyY3B5KGZvcm0ub3duZXIucGhvbmUsICI4MDMtNTU1LTEyMzQiKTsKCiAgICAvLyBGaWxsIGFuaW1hbCBpbmZvcm1hdGlvbgogICAgc3RyY3B5KGZvcm0uYW5pbWFsLm5hbWUsICJOYWxhIik7CiAgICBzdHJjcHkoZm9ybS5hbmltYWwuc3BlY2llcywgIkNhbmluZSIpOwogICAgc3RyY3B5KGZvcm0uYW5pbWFsLnNleCwgIkZlbWFsZSIpOwogICAgZm9ybS5hbmltYWwuYWdlID0gNTsKICAgIGZvcm0uYW5pbWFsLndlaWdodCA9IDE4LjU7CiAgICBzdHJjcHkoZm9ybS5hbmltYWwubWljcm9jaGlwLCAiOTg1MTEyMDAzNDU2Nzg5Iik7CgogICAgLy8gRmlsbCByYWJpZXMgaW5mb3JtYXRpb24KICAgIHN0cmNweShmb3JtLnJhYmllcy5wcm9kdWNlciwgIlBGWiIpOyAgLy8gZmlyc3QgdGhyZWUgbGV0dGVycyBvZiBwcm9kdWNlcgogICAgc3RyY3B5KGZvcm0ucmFiaWVzLmxvdE51bWJlciwgIkFCMTJYOSIpOwogICAgZm9ybS5yYWJpZXMuZGF0ZVZhY2NpbmF0ZWQuZGF5ID0gMTI7CiAgICBmb3JtLnJhYmllcy5kYXRlVmFjY2luYXRlZC5tb250aCA9IDQ7CiAgICBmb3JtLnJhYmllcy5kYXRlVmFjY2luYXRlZC55ZWFyID0gMjAyNDsKICAgIGZvcm0ucmFiaWVzLnZhbGlkaXR5WWVhcnMgPSAzOwoKICAgIC8vIEZpbGwgdmV0ZXJpbmFyaWFuIGluZm9ybWF0aW9uCiAgICBzdHJjcHkoZm9ybS52ZXQubmFtZSwgIkRyLiBFbWlseSBDYXJ0ZXIiKTsKICAgIHN0cmNweShmb3JtLnZldC5saWNlbnNlLCAiU0NWRVQyMzQ1NiIpOwogICAgZm9ybS52ZXQuZGF0ZVNpZ25lZC5kYXkgPSAxNTsKICAgIGZvcm0udmV0LmRhdGVTaWduZWQubW9udGggPSA0OwogICAgZm9ybS52ZXQuZGF0ZVNpZ25lZC55ZWFyID0gMjAyNDsKCiAgICAvLyBQcmludCBhbGwgaW5mb3JtYXRpb24KICAgIHByaW50ZigiLS0tLS0gVmV0ZXJpbmFyeSBIZWFsdGggQ2VydGlmaWNhdGUgKEREIEZvcm0gMjIwOSkgLS0tLS1cblxuIik7CgogICAgcHJpbnRmKCJPd25lciBJbmZvcm1hdGlvbjpcbiIpOwogICAgcHJpbnRmKCIgIE5hbWU6ICVzXG4iLCBmb3JtLm93bmVyLm5hbWUpOwogICAgcHJpbnRmKCIgIEFkZHJlc3M6ICVzXG4iLCBmb3JtLm93bmVyLmFkZHJlc3MpOwogICAgcHJpbnRmKCIgIFRlbGVwaG9uZTogJXNcblxuIiwgZm9ybS5vd25lci5waG9uZSk7CgogICAgcHJpbnRmKCJBbmltYWwgSW5mb3JtYXRpb246XG4iKTsKICAgIHByaW50ZigiICBOYW1lOiAlc1xuIiwgZm9ybS5hbmltYWwubmFtZSk7CiAgICBwcmludGYoIiAgU3BlY2llczogJXNcbiIsIGZvcm0uYW5pbWFsLnNwZWNpZXMpOwogICAgcHJpbnRmKCIgIFNleDogJXNcbiIsIGZvcm0uYW5pbWFsLnNleCk7CiAgICBwcmludGYoIiAgQWdlOiAlZCB5ZWFyc1xuIiwgZm9ybS5hbmltYWwuYWdlKTsKICAgIHByaW50ZigiICBXZWlnaHQ6ICUuMWYga2dcbiIsIGZvcm0uYW5pbWFsLndlaWdodCk7CiAgICBwcmludGYoIiAgTWljcm9jaGlwICM6ICVzXG5cbiIsIGZvcm0uYW5pbWFsLm1pY3JvY2hpcCk7CgogICAgcHJpbnRmKCJSYWJpZXMgVmFjY2luYXRpb24gSW5mb3JtYXRpb246XG4iKTsKICAgIHByaW50ZigiICBQcm9kdWNlcjogJXNcbiIsIGZvcm0ucmFiaWVzLnByb2R1Y2VyKTsKICAgIHByaW50ZigiICBMb3QgTnVtYmVyOiAlc1xuIiwgZm9ybS5yYWJpZXMubG90TnVtYmVyKTsKICAgIHByaW50ZigiICBEYXRlIFZhY2NpbmF0ZWQ6ICUwMmQvJTAyZC8lZFxuIiwgZm9ybS5yYWJpZXMuZGF0ZVZhY2NpbmF0ZWQuZGF5LAogICAgICAgICAgIGZvcm0ucmFiaWVzLmRhdGVWYWNjaW5hdGVkLm1vbnRoLCBmb3JtLnJhYmllcy5kYXRlVmFjY2luYXRlZC55ZWFyKTsKICAgIHByaW50ZigiICBWYWxpZCBmb3I6ICVkIHllYXJzXG5cbiIsIGZvcm0ucmFiaWVzLnZhbGlkaXR5WWVhcnMpOwoKICAgIHByaW50ZigiVmV0ZXJpbmFyaWFuIEluZm9ybWF0aW9uOlxuIik7CiAgICBwcmludGYoIiAgTmFtZTogJXNcbiIsIGZvcm0udmV0Lm5hbWUpOwogICAgcHJpbnRmKCIgIExpY2Vuc2UgIzogJXNcbiIsIGZvcm0udmV0LmxpY2Vuc2UpOwogICAgcHJpbnRmKCIgIERhdGUgU2lnbmVkOiAlMDJkLyUwMmQvJWRcbiIsIGZvcm0udmV0LmRhdGVTaWduZWQuZGF5LAogICAgICAgICAgIGZvcm0udmV0LmRhdGVTaWduZWQubW9udGgsIGZvcm0udmV0LmRhdGVTaWduZWQueWVhcik7CgogICAgcmV0dXJuIDA7Cn0KCg==