執行結果
E:/Fortran_G95>appgetname 3 4 11 15 16 12<br />星號 星名 NAME 方式<br /> 3 地球 EARTH 地月+月球<br /> 4 火星 MARS 火星<br /> 11 太陽 SUN 太陽<br /> 15 月球天平動 LIBRATIONS 天平動<br /> 12 太陽系質心 SOLARBARY 太陽系置0<br />OK</p><p>E:/Fortran_G95>
源碼:
!C---------------------------------------------------------------<br />!主程式開始!<br />!C---------------------------------------------------------------<br />Program Main<br />IMPLICIT DOUBLE PRECISION (A-G)<br />integer nargin, I, QI(16), QLEN,IN,J,XH<br />CHARACTER*128argum(10)<br />CHARACTER*130tmpStr</p><p>!參數處理<br />nargin=iargc()<br />doi=1,nargin<br />call getarg(i,argum(i),QLEN)<br />end do</p><p>if (nargin.EQ.0) go to 11</p><p>!測試函數<br />write(*,'(A4,3A12)') "星號","星名","NAME","方式"</p><p>doi=1,nargin<br />READ(argum(I),'(I2)',ERR=11)XH<br />if (XH.LE.0.or.XH.GT.15) CYCLE<br />CALL ShowXXNames(XH)<br />end do<br />STOP"OK"<br />!//////////////////////////////////////<br />11do i=1,15<br />CALL ShowXXNames(I)<br />end do<br />stop"參數錯誤,請輸入指定星號。格式:exe II[1-15](N個)"<br />End Program<br />!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />!主程式結束<br />!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p><p>include"GETNAME.F90"
源碼:GETNAME.F90
!C---------------------------------------------------------------<br />!輸出指定星號三項名稱<br />!C---------------------------------------------------------------<br /> SUBROUTINEShowXXNames(XH)<br />INTEGER I,XH<br />!函式宣告<br />CHARACTER*10 GETXXNAME_CN,GETXXNAME_EN,GETXXDATA_CN,GETXXTYPE_CN<br />EXTERNAL GETXXNAME_CN,GETXXNAME_EN,GETXXDATA_CN,GETXXTYPE_CN</p><p>Write(*,'(i4,3A12)') XH,GETXXNAME_CN(XH),GETXXNAME_EN(XH),GETXXTYPE_CN(XH)<br /> END<br />!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />!取星名<br />!C---------------------------------------------------------------<br /> Function GETXXNAME_CN (XH)<br />CHARACTER*10 XNAME(15),GETXXNAME_CN<br />INTEGER I,XH<br />DATA (XNAME(i),i=1,5) /'水星','金星','地球','火星','木星'/<br />DATA (XNAME(i),i=6,9) /'土星','海王星','天王星','冥王星'/<br />DATA (XNAME(i),i=10,12) /'月球','太陽','太陽系質心'/<br />DATA (XNAME(i),i=13,15) /'地月系質心','章動','月球天平動'/</p><p>GETXXNAME_CN=XNAME(XH)<br />RETURN<br />End<br />!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />!取星名<br />!C---------------------------------------------------------------<br /> Function GETXXNAME_EN (XH)<br />CHARACTER*10 XNAME(15),GETXXNAME_EN<br />INTEGER I,XH<br />DATA (XNAME(i),i=1,4) /'MERCURY','VENUS','EARTH','MARS'/<br />DATA (XNAME(i),i=5,8) /'JUPITER','SATURN','URANUS','NEPTUNE'/<br />DATA (XNAME(i),i=9,12) /'PLUTO','MOON','SUN','SOLARBARY'/<br />DATA (XNAME(i),i=13,14) /'EARTHMBARY','NUTATIONS'/<br />DATA (XNAME(i),i=15,15) /'LIBRATIONS'/</p><p>GETXXNAME_EN=XNAME(XH)<br />RETURN<br />End<br />!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />!取資料星名<br />!C---------------------------------------------------------------<br /> Function GETXXDATA_CN (XH)<br />CHARACTER*10 XNAME(15),GETXXDATA_CN<br />INTEGER I,XH<br />DATA (XNAME(i),i=1,5) /'水星','金星','地月系','火星','木星'/<br />DATA (XNAME(i),i=6,9) /'土星','海王星','天王星','冥王星'/<br />DATA (XNAME(i),i=10,12) /'月球','太陽','章動'/<br />DATA (XNAME(i),i=13,13) /'月球天平動'/</p><p>GETXXDATA_CN=XNAME(XH)<br />RETURN<br />End<br />!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />!取資料方式<br />!C---------------------------------------------------------------<br /> Function GETXXTYPE_CN (XH)<br />CHARACTER*10 XNAME(15),GETXXTYPE_CN<br />INTEGER I,XH<br />DATA (XNAME(i),i=1,5) /'水星','金星','地月+月球','火星','木星'/<br />DATA (XNAME(i),i=6,9) /'土星','海王星','天王星','冥王星'/<br />DATA (XNAME(i),i=10,12) /'地月-月球.','太陽','太陽系置0'/<br />DATA (XNAME(i),i=13,15) /'地月系','章動','天平動'/</p><p>GETXXTYPE_CN=XNAME(XH)<br />RETURN<br />End<br />!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />!程式結束<br />!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
注意,從現在開始代碼都將使用F90的格式。
GROUP 1050
3 171 231 309 342 366 387 405 423 441 753 819 899
14 10 13 11 8 7 6 6 6 13 11 10 10
4 2 2 1 1 1 1 1 1 8 2 4 4
GROUP 1070
第一行表示開始資料項目。
第二行表示係數項數
第三行表示日期分塊
隱含項,屬性項。
除章動是2*2,共4項外,其它都是3*2,共6項。
第二行*第三行*屬性項數=行星總項數
各行星項數相加+2即得KSIZE/2。