如何在此COMMON语句中指定类型?

詹姆斯·马塔(James Matta)

我有一个旧的fortran代码,我试图破译并了解正在发生的事情,以便可以对其进行修改。不幸的是,我在fortran中还是个新手,所以我很难弄清这个说法。

C 15/04/97  IBM VERSION                                         ECIS96  CALC-000
      SUBROUTINE CALC(W,NW,DW,IDMX)                                     CALC-001
C MAIN SUBROUTINE OF THE PROGRAMME                                      CALC-002
C W,NW,DW ARE THE WORKING SPACE IN EQUIVALENCE BY CALL,STARTING AS      CALC-003
C REAL*8. THEY ARE RESPECTIVELY REAL, INTEGER AND DOUBLE PRECISION.     CALC-004
C IDMX IS THE LENGTH OF DW.                                             CALC-005
C                                                                       CALC-006
C ADDRESSES IN THE WORKING FIELD DEFINED HERE (FOR OTHERS, SEE CALX)    CALC-007
C IN COMMON /DECOU/                                                     CALC-008
C 34- NT       HERE, ALSO REDUCED NUCLEAR MATRIX ELEMENTS               CALC-009
C 35- NIVQ     TABLE OF MULTIPOLES                                      CALC-010
C 36- NIVY     TABLE OF FORM FACTOR IDENTIFICATION IVY (FOR COMPUTATION)CALC-011
C 37- NIVZ     TABLE OF FORM FACTOR IDENTIFICATION IVZ (FOR USE)        CALC-012
C 38- NCOI     ADDRESS OF THE TABLE FOR DISCRETISATION OF CONTINUUM     CALC-013
C 39- MIPI     SAME AS NIPI FOR THE DISCRETISATION OF CONTINUUM         CALC-014
C 40- NXD      ADDRESS OF WEIGHTS AND STEPS OF CONTINUUM                CALC-015
C 41- MWV      SAME AS NWV FOR THE DISCRETISATION OF CONTINUUM          CALC-016
C 42- NIXT     TRANSMISSION COEFFICIENTS OF UNCOUPLED STATES            CALC-017
C 43- NTY      TEMPORARY RESULTS OF COMPOUND NUCLEUS FOR INTERPOLATION  CALC-018
C 44- NTX      PARTIAL REACTION CROSS SECTIONS AND COMPOUND NUCLEUS     CALC-019
C 45- NRY      COMPOUND NUCLEUS COEFFICIENTS                            CALC-020
C 46- NRCO     STRENGTH OF COULOMB CENTRAL POTENTIALS FOR CORRECTIONS   CALC-021
C 47- NRDO     STRENGTH OF COULOMB TRANSITION POTENTIALS FOR CORRECTIONSCALC-022
C 48- NVC1     REAL POTENTIALS                                          CALC-023
C 49- NVC2     IMAGINARY POTENTIALS                                     CALC-024
C 50- NNC      FIRST FREE ADDRESS AFTER COMPUTATION OF POTENTIALS       CALC-025
C 51- NCX      FIRST FREE ADDRESS FOR COMPUTATION OF POTENTIALS         CALC-026
C OTHER INTEGER DATA OF COMMON /DECOU/                                  CALC-027
C 52- IDMT     TOTAL WORKING FIELD LENGTH AS SINGLE PRECISION           CALC-028
C 53-98          SEE CALX                                               CALC-029
C 99- KXT      NUMBER OF PENETRABILITIES FOR UNCOUPLED STATES           CALC-030
C100- NRZ      NUMBER OF RESULTS TO SAVE FOR MINIMUM CHI2               CALC-031
C101- NTZ      NUMBER OF MEMRIES TO INITIALISE TO ZERO FOR SCATTERING   CALC-032
C              MATRIX AND COMPOUND NUCLEUS RESULTS                      CALC-033
C102- LMAX3    EFFECTIVE NUMBER OF COULOMB FUNCTIONS                    CALC-034
C103- IPM      NUMBER PF J VALUES USED FOR SCATTERING MATRIX (IN CAL1)  CALC-035
C104- IPK      NUMBER PF J VALUES USED FOR COMPOUND NUCLEUS (IN CAL1)   CALC-036
C105-110         SEE CALX                                               CALC-037
C                                                                       CALC-038
C IN COMMON /DBLPR/  CHI2,CHI2M:    CHI-SQUARE AND MINIMUM CHI-SQUARE   CALC-039
C                    CM,CHB:        NUCLEAR MASS AND H BAR              CALC-040
C                    CK,CMB,CCZ:    DERIVED CONSTANTS                   CALC-041
C                    XE,XM,XN:      RELATIVISTIC ENERGY AND MASS (COLF) CALC-042
C                    XZ:            CONVERSION FACTOR TO MILLIBARNS     CALC-043
C FOR COMMONS /POTE1/ AND /POTE2/ SEE REDM                              CALC-044
C FOR COMMON /NCOMP/ SEE CALX, LECT AND COLF                            CALC-045
C                                                                       CALC-046
C*some information on logical variables that is unimportant to this*
      DOUBLE PRECISION CHI2,CHI2M,CM,CK,CHB,CMB,CZ,CCZ,XE,XM,XN,XZ,DW(1)CALC-095
      LOGICAL LO(250)                                                   CALC-096
      DIMENSION W(1),NW(1)                                              CALC-097
      COMMON /DECOU/ NJIT,NIPP,NIPI,NWV,NIPH,NSCN,NPAR,NNIV,NFIS,NGAM,NPCALC-098
     1OT,NBETA,NFM,NTGX,NDONN,NRC,NIW,NDE,NISE,NNVI,NNWI,NCC,MCC,NXA,NAMCALC-099
     21,NFAC,NFAM,NPAD,NFG,NXG,NSM,NRES,NXX,NT,NIVQ,NIVY,NIVZ,NCOI,MIPI,CALC-100
     3NXD,MWV,NIXT,NTY,NTX,NRY,NRCO,NRDO,NVC1,NVC2,NNC,NCX,IDMT,NCOLL,NJCALC-101
     4MAX,ITERM,NPP,JDM,JIT,NSEC,LMD,MCM(2),NCOLS,NCOLT,KMAX,KMIN,NVA,NBCALC-102
     5ET,NBT1,LMX,LMAX1,NLT,ISM,IQM,IQMAX,MS1,MS2,NCT(6),KBA,KAB,KBC,KCCCALC-103
     6,NJC,JTX,JTH,NCOLR,NREC,NTOT,NFA,LMAX2,KE,ITEMM,NPLACE,KXT,NRZ,NTZCALC-104
     7,LMAX3,IPM,IPK,H,BJM,EITER,ACONV,CONJ,ASPIN                       CALC-105
      COMMON /DBLPR/ CHI2,CHI2M,CM,CK,CHB,CMB,CCZ,XE,XM,XN,XZ           CALC-106
      COMMON /POTE1/ ITX(16),IMAX,INTC,INLS,INVC,INVD,ITXM              CALC-107
      COMMON /POTE2/ ITY(8),INVT,INTV,INSL,NPX                          CALC-108
      COMMON /NCOMP/ NSP(3),NFISS,NRD,NCONT,NCOJ,ACN1,ACN2,NCONS,NIE,NCOCALC-109
     1LX,NDP,NDQ,AZ(6),BZ1,BZ2,BZ3,TG0,BN,FNUG,EGD,GGD,TG1,SGSQ         CALC-110

如果有帮助,这就是调用函数的方式。

C 18/12/87  IBM VERSION CONVEX                                  ECIS88  ECIS-000
      REAL*8 W(600000)                                                  ECIS-001
      COMMON W                                                          ECIS-002
      CALL CALC(W,W,W,600000)                                           ECIS-003
      STOP                                                              ECIS-004
      END                                                               ECIS-005

我已经了解了行的延续,对于CALC-099到CALC-105的行,第一个非空白数字只是对延续进行计数,因为编译器跳至第7列进行延续。

我不明白类型是如何确定的。这是在第一次分配时自动确定的事情,我对通用块的工作原理的理解使这似乎不太可能。这是命名中的东西吗,第一个字符是否以某种方式确定了它?

另外,维度语句在这里做什么?如果数组的长度为600,000,为什么维度语句将其长度“设置”为1,还是正在做我没看到的事情?

法国

您的问题的两个部分都令现代人感到震惊。

首先,隐式键入。变量,除非它们具有显式类型,否则采用隐式类型。变量开头I-NINTEGER,其他变量REALIMPLICIT但是,语句将覆盖此内容,因此请注意这一点(永远不要低估程序员可以做什么)。另外,请注意,这IMPLICIT NONE是该标准的更高版本。

其次,在子程序DIMENSION(1)(或等效程序)中是的替代方法DIMENSION(*)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章