/*++++++++++++++
.IDENTIFICATION constel.c
.LANGUAGE       C
.AUTHOR         Francois Ochsenbein [CDS]  francois@astro.u-strasbg.fr
.ENVIRONMENT    Astronomical Catalogues (#6042), see
		http://vizier.u-strasbg.fr/viz-bin/VizieR?-source=6042
.KEYWORDS       Constellations
.VERSION  1.0   17-Jul-2001
.COMMENTS       Find out all boundaries of a Constellation.
		Argument to main may be a position (dec.deg. Eq=1875), or
		a constellation name.
   With argument as a constellation name, the 'graph' GNU plotting program
   can be used to generate the area covered by the constellation, e.g.
   constel -p Cyg | graph -T ps -q 1.0 -L Cyg -x 360 0 -y -90 90
---------------*/

#include <stdio.h>
#include <ctype.h>
double atof() ;

#define ITEMS(a)  (sizeof(a)/sizeof(a[0]))
typedef struct row { float ral, rau, del; char cst[4]; } ROW ;

/* The Constellation Boundaries as extracted from Cat.#6042,
   paper by N.G. Roman, 1987PASP...99..695R
*/
static ROW data[] = {
   { 0, 360, 90, "" },			/* North Pole */
 {  0.0000,360.0000, 88.0000,"UMi"},
 {120.0000,217.5000, 86.5000,"UMi"},
 {315.0000,345.0000, 86.1667,"UMi"},
 {270.0000,315.0000, 86.0000,"UMi"},
 {  0.0000,120.0000, 85.0000,"Cep"},
 {137.5000,160.0000, 82.0000,"Cam"},
 {  0.0000, 75.0000, 80.0000,"Cep"},
 {160.0000,217.5000, 80.0000,"Cam"},
 {262.5000,270.0000, 80.0000,"UMi"},
 {302.5000,315.0000, 80.0000,"Dra"},
 {  0.0000, 52.6250, 77.0000,"Cep"},
 {172.5000,203.7500, 77.0000,"Cam"},
 {248.0000,262.5000, 75.0000,"UMi"},
 {302.5000,310.0000, 75.0000,"Cep"},
 {119.5000,137.5000, 73.5000,"Cam"},
 {137.5000,170.0000, 73.5000,"Dra"},
 {195.0000,248.0000, 70.0000,"UMi"},
 { 46.5000, 51.2500, 68.0000,"Cas"},
 {306.2500,310.0000, 67.0000,"Dra"},
 {170.0000,180.0000, 66.5000,"Dra"},
 {  0.0000,  5.0000, 66.0000,"Cep"},
 {210.0000,235.0000, 66.0000,"UMi"},
 {353.7500,360.0000, 66.0000,"Cep"},
 {180.0000,202.5000, 64.0000,"Dra"},
 {202.5000,216.2500, 63.0000,"Dra"},
 {347.5000,353.7500, 63.0000,"Cep"},
 { 91.5000,105.0000, 62.0000,"Cam"},
 {300.0000,306.2500, 61.5000,"Dra"},
 {308.0500,309.0000, 60.9167,"Cep"},
 {105.0000,119.5000, 60.0000,"Cam"},
 {119.5000,126.2500, 60.0000,"UMa"},
 {296.5000,300.0000, 59.5000,"Dra"},
 {300.0000,308.0500, 59.5000,"Cep"},
 {343.0000,347.5000, 59.0833,"Cep"},
 {  0.0000, 36.5000, 58.5000,"Cas"},
 {291.2500,296.5000, 58.0000,"Dra"},
 { 25.5000, 28.6250, 57.5000,"Cas"},
 { 36.5000, 46.5000, 57.0000,"Cas"},
 { 46.5000, 47.5000, 57.0000,"Cam"},
 {334.7500,343.0000, 56.2500,"Cep"},
 { 75.0000, 91.5000, 56.0000,"Cam"},
 {210.5000,216.2500, 55.5000,"UMa"},
 {216.2500,291.2500, 55.5000,"Dra"},
 { 47.5000, 50.0000, 55.0000,"Cam"},
 {332.0000,334.7500, 55.0000,"Cep"},
 {309.0000,329.5000, 54.8333,"Cep"},
 {  0.0000, 25.5000, 54.0000,"Cas"},
 { 91.5000, 97.5000, 54.0000,"Lyn"},
 {181.2500,202.5000, 53.0000,"UMa"},
 {228.7500,236.2500, 53.0000,"Dra"},
 {329.5000,332.0000, 52.7500,"Cep"},
 { 50.0000, 75.0000, 52.5000,"Cam"},
 {343.0000,350.0000, 52.5000,"Cas"},
 {236.2500,255.0000, 51.5000,"Dra"},
 { 30.6250, 37.7500, 50.5000,"Per"},
 {255.0000,273.5000, 50.5000,"Dra"},
 {  0.0000, 20.5000, 50.0000,"Cas"},
 { 20.5000, 25.0000, 50.0000,"Per"},
 { 97.5000,102.0000, 50.0000,"Lyn"},
 {350.0000,360.0000, 50.0000,"Cas"},
 {202.5000,210.5000, 48.5000,"UMa"},
 {  0.0000, 16.7500, 48.0000,"Cas"},
 {353.7500,360.0000, 48.0000,"Cas"},
 {272.6250,273.5000, 47.5000,"Her"},
 {273.5000,286.2500, 47.5000,"Dra"},
 {286.2500,287.5000, 47.5000,"Cyg"},
 { 25.0000, 30.6250, 47.0000,"Per"},
 {126.2500,137.5000, 47.0000,"UMa"},
 {  2.5000, 13.0000, 46.0000,"Cas"},
 {180.0000,181.2500, 45.0000,"UMa"},
 {102.0000,110.5000, 44.5000,"Lyn"},
 {328.6250,329.5000, 44.0000,"Cyg"},
 {328.1250,328.6250, 43.7500,"Cyg"},
 {287.5000,291.0000, 43.5000,"Cyg"},
 {137.5000,152.5000, 42.0000,"UMa"},
 {152.5000,161.7500, 40.0000,"UMa"},
 {231.5000,236.2500, 40.0000,"Boo"},
 {236.2500,245.0000, 40.0000,"Her"},
 {138.7500,143.7500, 39.7500,"Lyn"},
 {  0.0000, 37.7500, 36.7500,"And"},
 { 37.7500, 38.5000, 36.7500,"Per"},
 {290.3750,291.0000, 36.5000,"Lyr"},
 { 67.5000, 70.3750, 36.0000,"Per"},
 {326.0000,328.1250, 36.0000,"Cyg"},
 {328.1250,330.0000, 36.0000,"Lac"},
 { 98.0000,110.5000, 35.5000,"Aur"},
 {110.5000,116.2500, 35.5000,"Lyn"},
 {  0.0000, 30.0000, 35.0000,"And"},
 {330.0000,342.2500, 35.0000,"Lac"},
 {342.2500,343.0000, 34.5000,"Lac"},
 {343.0000,352.5000, 34.5000,"And"},
 { 38.5000, 40.7500, 34.0000,"Per"},
 {161.7500,165.0000, 34.0000,"UMa"},
 {180.0000,185.0000, 34.0000,"CVn"},
 {116.2500,138.7500, 33.5000,"Lyn"},
 {138.7500,148.2500, 33.5000,"LMi"},
 { 10.7500, 21.1250, 33.0000,"And"},
 {227.7500,231.5000, 33.0000,"Boo"},
 {352.5000,356.2500, 32.0833,"And"},
 {185.0000,198.7500, 32.0000,"CVn"},
 {356.2500,360.0000, 31.3333,"And"}, 
 {209.3750,210.5000, 30.7500,"CVn"},
 { 36.2500, 40.7500, 30.6667,"Tri"},
 { 40.7500, 67.5000, 30.6667,"Per"},
 { 67.5000, 71.2500, 30.0000,"Aur"},
 {272.6250,290.3750, 30.0000,"Lyr"},
 {165.0000,180.0000, 29.0000,"UMa"},
 {295.0000,313.7500, 29.0000,"Cyg"},
 { 71.2500, 88.2500, 28.5000,"Aur"},
 {148.2500,157.5000, 28.5000,"LMi"},
 {198.7500,209.3750, 28.5000,"CVn"},
 {  0.0000,  1.0000, 28.0000,"And"},
 { 21.1250, 25.0000, 28.0000,"Tri"},
 { 88.2500, 98.0000, 28.0000,"Aur"},
 {118.2500,120.0000, 28.0000,"Gem"},
 {313.7500,326.0000, 28.0000,"Cyg"},
 {288.8750,295.0000, 27.5000,"Cyg"},
 { 28.7500, 36.2500, 27.2500,"Tri"},
 {242.5000,245.0000, 27.0000,"CrB"},
 {226.2500,227.7500, 26.0000,"Boo"},
 {227.7500,242.5000, 26.0000,"CrB"},
 {275.5000,283.0000, 26.0000,"Lyr"},
 {161.2500,165.0000, 25.5000,"LMi"},
 {283.0000,288.8750, 25.5000,"Lyr"},
 { 25.0000, 28.7500, 25.0000,"Tri"},
 { 10.7500, 12.7500, 23.7500,"Psc"},
 {157.5000,161.2500, 23.5000,"LMi"},
 {318.7500,321.2500, 23.5000,"Vul"},
 { 85.5000, 88.2500, 22.8333,"Tau"},
 {  1.0000,  2.1250, 22.0000,"And"},
 {238.7500,240.5000, 22.0000,"Ser"},
 { 88.2500, 93.2500, 21.5000,"Gem"},
 {297.5000,303.7500, 21.2500,"Vul"},
 {283.0000,288.7500, 21.0833,"Vul"},
 {  2.1250, 12.7500, 21.0000,"And"},
 {303.7500,308.5000, 20.5000,"Vul"},
 {117.1250,118.2500, 20.0000,"Gem"},
 {308.5000,318.7500, 19.5000,"Vul"},
 {288.7500,297.5000, 19.1667,"Vul"},
 { 49.2500, 50.5000, 19.0000,"Ari"},
 {283.0000,285.0000, 18.5000,"Sge"},
 { 85.5000, 86.5000, 18.0000,"Ori"},
 { 93.2500, 94.6250, 17.5000,"Gem"},
 {285.0000,297.5000, 16.1667,"Sge"},
 { 74.5000, 80.0000, 16.0000,"Tau"},
 {238.7500,241.2500, 16.0000,"Her"},
 {297.5000,303.7500, 15.7500,"Sge"},
 { 69.2500, 74.5000, 15.5000,"Tau"},
 { 80.0000, 84.0000, 15.5000,"Tau"},
 {192.5000,202.5000, 15.0000,"Com"},
 {258.7500,273.7500, 14.3333,"Her"},
 {178.0000,192.5000, 14.0000,"Com"},
 {112.5000,117.1250, 13.5000,"Gem"},
 {251.2500,258.7500, 12.8333,"Her"},
 {  0.0000,  2.1250, 12.5000,"Peg"},
 { 84.0000, 86.5000, 12.5000,"Tau"},
 {105.0000,112.5000, 12.5000,"Gem"},
 {316.7500,320.0000, 12.5000,"Peg"},
 { 94.6250,104.0000, 12.0000,"Gem"},
 {273.7500,283.0000, 12.0000,"Her"},
 {313.1250,315.7500, 11.8333,"Del"},
 {315.7500,316.7500, 11.8333,"Peg"},
 {172.7500,178.0000, 11.0000,"Leo"},
 { 93.6250, 94.6250, 10.0000,"Ori"},
 {104.0000,105.0000, 10.0000,"Gem"},
 {117.1250,118.8750, 10.0000,"Cnc"},
 {357.5000,360.0000, 10.0000,"Peg"},
 { 25.0000, 49.2500,  9.9167,"Ari"},
 {302.1250,304.5000,  8.5000,"Del"},
 {202.5000,226.2500,  8.0000,"Boo"},
 {341.2500,357.5000,  7.5000,"Peg"},
 {118.8750,138.7500,  7.0000,"Cnc"},
 {138.7500,161.2500,  7.0000,"Leo"},
 {273.7500,279.9333,  6.2500,"Oph"},
 {279.9333,283.0000,  6.2500,"Aql"},
 {312.5000,313.1250,  6.0000,"Del"},
 {105.0000,105.2500,  5.5000,"CMi"},
 {273.7500,276.3750,  4.5000,"Ser"},
 {241.2500,251.2500,  4.0000,"Her"},
 {273.7500,276.3750,  3.0000,"Oph"},
 {322.0000,325.0000,  2.7500,"Peg"},
 {  0.0000, 30.0000,  2.0000,"Psc"},
 {278.7500,283.0000,  2.0000,"Ser"},
 {304.5000,312.5000,  2.0000,"Del"},
 {312.5000,320.0000,  2.0000,"Equ"},
 {320.0000,322.0000,  2.0000,"Peg"},
 {330.0000,341.2500,  2.0000,"Peg"},
 {325.0000,330.0000,  1.7500,"Peg"},
 {105.2500,108.0000,  1.5000,"CMi"},
 { 53.7500, 69.2500,  0.0000,"Tau"},
 { 69.2500, 70.0000,  0.0000,"Ori"},
 {108.0000,121.2500,  0.0000,"CMi"},
 {220.0000,226.2500,  0.0000,"Vir"},
 {267.5000,273.7500,  0.0000,"Oph"},
 { 39.7500, 49.2500, -1.7500,"Cet"},
 { 49.2500, 53.7500, -1.7500,"Tau"},
 {226.2500,244.0000, -3.2500,"Ser"},
 { 70.0000, 76.2500, -4.0000,"Ori"},
 { 87.5000, 93.6250, -4.0000,"Ori"},
 {267.5000,269.5000, -4.0000,"Ser"},
 {273.7500,278.7500, -4.0000,"Ser"},
 {278.7500,283.0000, -4.0000,"Aql"},
 {341.2500,357.5000, -4.0000,"Psc"},
 {161.2500,172.7500, -6.0000,"Leo"},
 {172.7500,177.5000, -6.0000,"Vir"},
 {  0.0000,  5.0000, -7.0000,"Psc"},
 {357.5000,360.0000, -7.0000,"Psc"},
 {213.7500,220.0000, -8.0000,"Vir"},
 {238.7500,244.0000, -8.0000,"Oph"},
 {300.0000,308.0000, -9.0000,"Aql"},
 {320.0000,328.0000, -9.0000,"Aqr"},
 {257.5000,269.5000,-10.0000,"Oph"},
 { 87.5000,121.2500,-11.0000,"Mon"},
 { 73.7500, 76.2500,-11.0000,"Eri"},
 { 76.2500, 87.5000,-11.0000,"Ori"},
 {121.2500,125.5000,-11.0000,"Hya"},
 {143.7500,161.2500,-11.0000,"Sex"},
 {177.5000,192.5000,-11.0000,"Vir"},
 {263.7500,265.0000,-11.6667,"Oph"},
 {283.0000,300.0000,-12.0333,"Aql"},
 { 72.5000, 73.7500,-14.5000,"Eri"},
 {308.0000,320.0000,-15.0000,"Aqr"},
 {257.5000,273.7500,-16.0000,"Ser"},
 {273.7500,283.0000,-16.0000,"Sct"},
 {125.5000,128.7500,-17.0000,"Hya"},
 {244.0000,245.6250,-18.2500,"Oph"},
 {128.7500,136.2500,-19.0000,"Hya"},
 {161.2500,162.5000,-19.0000,"Crt"},
 {244.0000,245.6250,-19.2500,"Sco"},
 {235.0000,238.7500,-20.0000,"Lib"},
 {188.7500,192.5000,-22.0000,"Crv"},
 {192.5000,213.7500,-22.0000,"Vir"},
 {136.2500,146.2500,-24.0000,"Hya"},
 { 25.0000, 39.7500,-24.3833,"Cet"},
 { 39.7500, 56.2500,-24.3833,"Eri"},
 {162.5000,177.5000,-24.5000,"Crt"},
 {177.5000,188.7500,-24.5000,"Crv"},
 {213.7500,223.7500,-24.5000,"Lib"},
 {244.0000,251.2500,-24.5833,"Oph"},
 {  0.0000, 25.0000,-25.5000,"Cet"},
 {320.0000,328.0000,-25.5000,"Cap"},
 {328.0000,357.5000,-25.5000,"Aqr"},
 {357.5000,360.0000,-25.5000,"Cet"},
 {146.2500,153.7500,-26.5000,"Hya"},
 { 70.5000, 72.5000,-27.2500,"Eri"},
 { 72.5000, 91.7500,-27.2500,"Lep"},
 {300.0000,320.0000,-28.0000,"Cap"},
 {153.7500,158.7500,-29.1667,"Hya"},
 {188.7500,223.7500,-29.5000,"Hya"},
 {223.7500,235.0000,-29.5000,"Lib"},
 {235.0000,240.0000,-29.5000,"Sco"},
 { 68.7500, 70.5000,-30.0000,"Eri"},
 {251.2500,264.0000,-30.0000,"Oph"},
 {264.0000,267.5000,-30.0000,"Sgr"},
 {158.7500,162.5000,-31.1667,"Hya"},
 { 91.7500,110.5000,-33.0000,"CMa"},
 {183.7500,188.7500,-33.0000,"Hya"},
 {162.5000,183.7500,-35.0000,"Hya"},
 { 52.5000, 56.2500,-36.0000,"For"},
 {125.5000,140.5000,-36.7500,"Pyx"},
 { 64.0000, 68.7500,-37.0000,"Eri"},
 {267.5000,287.5000,-37.0000,"Sgr"},
 {320.0000,345.0000,-37.0000,"PsA"},
 {345.0000,350.0000,-37.0000,"Scl"},
 { 45.0000, 52.5000,-39.5833,"For"},
 {140.5000,165.0000,-39.7500,"Ant"},
 {  0.0000, 25.0000,-40.0000,"Scl"},
 { 25.0000, 45.0000,-40.0000,"For"},
 { 58.0000, 64.0000,-40.0000,"Eri"},
 {350.0000,360.0000,-40.0000,"Scl"},
 {212.5000,223.7500,-42.0000,"Cen"},
 {235.0000,240.0000,-42.0000,"Lup"},
 {240.0000,246.3125,-42.0000,"Sco"},
 { 72.5000, 75.0000,-43.0000,"Cae"},
 { 75.0000, 98.7500,-43.0000,"Col"},
 {120.0000,125.5000,-43.0000,"Pup"},
 { 51.2500, 58.0000,-44.0000,"Eri"},
 {246.3125,267.5000,-45.5000,"Sco"},
 {267.5000,287.5000,-45.5000,"CrA"},
 {287.5000,305.0000,-45.5000,"Sgr"},
 {305.0000,320.0000,-45.5000,"Mic"},
 { 45.0000, 51.2500,-46.0000,"Eri"},
 { 67.5000, 72.5000,-46.5000,"Cae"},
 {230.0000,235.0000,-48.0000,"Lup"},
 {  0.0000, 35.0000,-48.1667,"Phe"},
 { 40.0000, 45.0000,-49.0000,"Eri"},
 { 61.2500, 64.0000,-49.0000,"Hor"},
 { 64.0000, 67.5000,-49.0000,"Cae"},
 {320.0000,330.0000,-50.0000,"Gru"},
 { 90.0000,120.0000,-50.7500,"Pup"},
 {120.0000,122.5000,-50.7500,"Vel"},
 { 36.2500, 40.0000,-51.0000,"Eri"},
 { 57.5000, 61.2500,-51.0000,"Hor"},
 {  0.0000, 27.5000,-51.5000,"Phe"},
 { 90.0000, 92.5000,-52.5000,"Car"},
 {122.5000,126.7500,-53.0000,"Vel"},
 { 52.5000, 57.5000,-53.1667,"Hor"},
 { 57.5000, 60.0000,-53.1667,"Dor"},
 {  0.0000, 23.7500,-53.5000,"Phe"},
 { 32.5000, 36.2500,-54.0000,"Eri"},
 { 67.5000, 75.0000,-54.0000,"Pic"},
 {225.7500,230.0000,-54.0000,"Lup"},
 {126.7500,132.5000,-54.5000,"Vel"},
 { 92.5000, 97.5000,-55.0000,"Car"},
 {177.5000,192.5000,-55.0000,"Cen"},
 {212.5000,225.7500,-55.0000,"Lup"},
 {225.7500,230.0000,-55.0000,"Nor"},
 { 60.0000, 65.0000,-56.5000,"Dor"},
 {132.5000,165.0000,-56.5000,"Vel"},
 {165.0000,168.7500,-56.5000,"Cen"},
 {262.5000,270.0000,-57.0000,"Ara"},
 {270.0000,305.0000,-57.0000,"Tel"},
 {330.0000,350.0000,-57.0000,"Gru"},
 { 48.0000, 52.5000,-57.5000,"Hor"},
 { 75.0000, 82.5000,-57.5000,"Pic"},
 { 97.5000,102.5000,-58.0000,"Car"},
 {  0.0000, 20.0000,-58.5000,"Phe"},
 { 20.0000, 32.5000,-58.5000,"Eri"},
 {350.0000,360.0000,-58.5000,"Phe"},
 { 65.0000, 68.7500,-59.0000,"Dor"},
 {230.0000,246.3125,-60.0000,"Nor"},
 {305.0000,320.0000,-60.0000,"Ind"},
 { 82.5000, 90.0000,-61.0000,"Pic"},
 {227.5000,230.0000,-61.0000,"Cir"},
 {246.3125,248.7500,-61.0000,"Ara"},
 {223.7500,227.5000,-63.5833,"Cir"},
 {248.7500,251.2500,-63.5833,"Ara"},
 { 90.0000,102.5000,-64.0000,"Pic"},
 {102.5000,135.5000,-64.0000,"Car"},
 {168.7500,177.5000,-64.0000,"Cen"},
 {177.5000,192.5000,-64.0000,"Cru"},
 {192.5000,218.0000,-64.0000,"Cen"},
 {202.5000,205.0000,-65.0000,"Cir"},
 {251.2500,252.5000,-65.0000,"Ara"},
 { 32.5000, 48.0000,-67.5000,"Hor"},
 { 48.0000, 68.7500,-67.5000,"Ret"},
 {221.2500,223.7500,-67.5000,"Cir"},
 {252.5000,262.5000,-67.5000,"Ara"},
 {262.5000,270.0000,-67.5000,"Pav"},
 {330.0000,350.0000,-67.5000,"Tuc"},
 { 68.7500, 98.7500,-70.0000,"Dor"},
 {205.0000,221.2500,-70.0000,"Cir"},
 {221.2500,255.0000,-70.0000,"TrA"},
 {  0.0000, 20.0000,-75.0000,"Tuc"},
 { 52.5000, 68.7500,-75.0000,"Hyi"},
 { 98.7500,135.5000,-75.0000,"Vol"},
 {135.5000,168.7500,-75.0000,"Car"},
 {168.7500,205.0000,-75.0000,"Mus"},
 {270.0000,320.0000,-75.0000,"Pav"},
 {320.0000,350.0000,-75.0000,"Ind"},
 {350.0000,360.0000,-75.0000,"Tuc"},
 { 11.2500, 20.0000,-76.0000,"Tuc"},
 {  0.0000, 52.5000,-82.5000,"Hyi"},
 {115.0000,205.0000,-82.5000,"Cha"},
 {205.0000,270.0000,-82.5000,"Aps"},
 { 52.5000,115.0000,-85.0000,"Men"},
 {  0.0000,360.0000,-90.0000,"Oct"},
} ;

/* Gnu plotting utilities way of marking the Zodiacal constellations */
static char zodiac[] = "\
Ari\0\\AR\0\
Tau\0\\TA\0\
Gem\0\\GE\0\
Cnc\0\\CA\0\
Leo\0\\LE\0\
Vir\0\\VI\0\
Lib\0\\LI\0\
Sco\0\\SC\0\
Sgr\0\\SG\0\
Cap\0\\CP\0\
Aqr\0\\AQ\0\
Psc\0\\PI\0\
" ;

static char format[] = "%8.4f%+08.4f %s\n" ;	/* Standard format */
static char formap[] = "%8.4f %8.4f\n" ;	/* Opt. -p format  */

static char usage[] = "\
Usage: constel [-p] {constellation|position_1875_degrees}\n\
  e.g. constel Ant\n\
  or   constel 123.78-45.88\n\
 -p for plotting, e.g.\n\
       constel -p Cyg | graph -T ps -q 1.0 -L Cyg -x 360 0 -y -90 90\n\
"; 

void main(int argc, char **argv) 
/*++++++++++++++++
.PURPOSE  Convert argument 
	- into constellation name when it's a position (e.g. 123.45-12.78)
	- into a set of rectangles definining the constellation area
	  when it's a constellation name
.RETURNS  ---
-----------------*/
{
  ROW *pr, *pe, *br ;
  float ral, rau, ra, de ;
  char *pgm, *p, *form, *z ;
  int n ;

    /* Argument must be a position or a constellation name */
    pgm = *argv ;	/* Program name */
    form = format ;	/* -p option... */
    while (--argc > 0) {
	p = *++argv ;
	if (*p == '-') switch(p[1]) {
	    case 'p': form = formap ; continue ;
	    default:
	      fprintf(stderr, "****Invalid option: %s\n", p) ;
	    case 'h':	/* Assume Help */
	      fprintf(stderr, "%s", usage);
	      exit(1) ;
	}
	else break ;
    }
    if (argc != 1) {
	fprintf(stderr, "%s", usage);
	exit(1) ;
    }

    pe = data + ITEMS(data) ;	/* End-of-data sentinel */
    if (isalpha(*p)) {		/* Must be a constellation */
        for (n=0, pr=data+1; pr<pe; pr++) {
	    if (strncmp(p, pr->cst, 3)) continue ;
	    if ((!n) && (form == formap)) {	
				/* Comment = Constellation Name */
		printf("#%s", pr->cst) ;
		for (z=zodiac; *z && strcmp(pr->cst, z); z += 8);
		if (*z) printf(" (%s)", z+4) ;
		putchar('\n') ;
	    }
	    n++ ;
	    /* Find the surface as a set of rectangles:
	       from the southern boundaries, move northward
	       to match the next boundaries.
	    */
	    for (ral = pr->ral ; ral < pr->rau; ral = rau) {
	        for (br = pr; --br > data; ) {
		    if (br->del == pr->del) continue ;
		    if (ral <  br->ral) continue ;
		    if (ral >= br->rau) continue ;
		    break ;
		}
		rau = br->rau ;
		if (rau > pr->rau) rau = pr->rau ;
 
	        /* Print out just the low-left, up-right corners 
	          printf("  %8.4f %+08.4f  %8.4f %+08.4f\n", 
	          ral, pr->del, rau, br->del) ;
	        */
	        /* Print the 4 points of the rectangle 
		   this allows to represent the constellation
		   as a set of filled rectangles.
		*/
	        printf(form, ral, pr->del, pr->cst) ;
	        printf(form, rau, pr->del, pr->cst) ;
	        printf(form, rau, br->del, pr->cst) ;
	        printf(form, ral, br->del, pr->cst) ;
		if (form == formap)
		    putchar('\n'); 	/* Extra line between rectangles */
	    }
	}
	if (!n) fprintf(stderr, "++++Nothing found about: %s\n", p) ;
    }
    else {	/* From a 1875 Position */
	ra = atof(p) ;
	while (isdigit(*p) || (*p == '.')) p++ ;
	de = atof(p) ;
	for (pr=data+1; pr<pe; pr++) {
	    if ((ra >= pr->ral) && (ra < pr->rau) && (de >= pr->del)) break ;
	}
	if (pr < pe) p = pr->cst;
	else p = "???" ;
	printf("%8.4f%+08.4f %s\n", ra, de, p) ;
    }
    exit(0) ;
}
