#include main() { int nc=0, mc, i, k; double glat, glon, latd, latf, lond, lonf, x, y; int io[24] = { 0, 1980, 1980, 2160, 1980, 2160, 2160, 2160, 2160, 2160, 2400, 2640, 2640, 2640, 1560, 1560, 1560, 1560, 2100, 2100, 2100, 1560, 1560, 1560 } ; int ko[24] = { 0, 7770, 7860, 7930, 8010, 8060, 8160, 8230, 8310, 8390, 8450, 8415, 8535, 8655, 8520, 7650, 7440, 7860, 8400, 8400, 8400, 7650, 7440, 7860 } ; fprintf(stderr, "\nLat. Long. to XY coordinates Conversion\n\n"); while ((nc<1) || (nc>23)) { gparmi("Select DATUM/ellipsoid: WGS (1) or OldTokyo (0) ==> ", &mc); if (mc == 1) mc = 200; else mc = 0; gparmi("Enter coordinates number ==> ", &nc); } i = io[nc]; k = ko[nc]; glat = (double)i; glon = (double)k; if (mc == 0) printf("\nOld:"); else printf("\nNew:"); printf(" XY-%d origin : %d.%02d'N, %d.%02d'E\n", nc,i/60,i%60,k/60,k%60); cvinit(mc, glat, glon); while (1) { latd = 99999.; latf = 0.; lond = 0.; lonf = 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); latd = latd*60.+latf; lond = lond*60.+lonf; cviken(latd, lond, &y, &x); printf(" N%7.3f E%8.3f : x = %8.3f y =%8.3f km\n", latd/60.,lond/60.,x,y); } }