#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==