#include main(int argc, char *argv[]) { char str; int m=0; double year=0.; double latd, latf, lond, lonf, alt, f, fm[6]; fprintf(stderr, "\nCalculate IGRF components\n\n"); while ((m<1) || (m>3)) gparmi("Select model - DGRF (1), PGRF (2) or IGRF (3) ==> ", &m); while ((year<1900.) || (year>2005.)) gparmd("Select the YEAR of calculation ==> ", &year); if (m == 1) { dgrfs(year); str = 'D'; } else if (m == 2) { pgrfs(year); str = 'P'; } else { igrfs(year); str = 'I'; } printf("\n%cGRF in %7.2f\n", str,year); while (1) { latd = 99999.; latf = 0.; lond = 0.; lonf = 0.; alt = 0.; prompt("\n Latitude ? (deg. min.)\n"); gparmd2(" < Hit RETURN to Quit > ==> ", &latd,&latf); if (latd == 99999.) { fputc('\n',stderr); break; } gparmd2(" Longitude ? (deg. min.) ==> ", &lond,&lonf); gparmd(" Altitude ? (in meters) ==> ", &alt); latd = latd+latf/60.; lond = lond+lonf/60.; igrfc(latd, lond, alt, &f); igrfm(fm); printf("%7.3f N %8.3f E %6.0f m : F =%8.1f H =%8.3f Z =%8.3f\n", latd, lond, alt, f, fm[3], fm[2]); printf(" dip =%8.3f dec =%8.3f\n", fm[4], fm[5]); } }