*IF DEF,CONTROL PPCTL2.2
C ******************************COPYRIGHT****************************** GTS2F400.7435
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.7436
C GTS2F400.7437
C Use, duplication or disclosure of this code is subject to the GTS2F400.7438
C restrictions as set forth in the contract. GTS2F400.7439
C GTS2F400.7440
C Meteorological Office GTS2F400.7441
C London Road GTS2F400.7442
C BRACKNELL GTS2F400.7443
C Berkshire UK GTS2F400.7444
C RG12 2SZ GTS2F400.7445
C GTS2F400.7446
C If no contract has been raised with this copy of the code, the use, GTS2F400.7447
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.7448
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.7449
C Modelling at the above address. GTS2F400.7450
C ******************************COPYRIGHT****************************** GTS2F400.7451
C GTS2F400.7452
CLL Routine: PPCTL ---------------------------------------------------- PPCTL2.3
CLL PPCTL2.4
CLL Purpose: 1. Opens all active input and output files on initial PPCTL2.5
CLL call to routine. PPCTL2.6
CLL 2. Files to be processed on each call are controlled by PPCTL2.7
CLL the switch LPP_SELECT set on step 0 and at regular PPCTL2.8
CLL intervals thereafter. PPCTL2.9
CLL 3. On step 0 all active PP or boundary output files are PPCTL2.10
CLL intialised with user-specified number of LOOKUP headers PPCTL2.11
CLL (fields). PPCTL2.12
CLL 4. On step 0 or the initial call for a continuation run PPCTL2.13
CLL all boundary output files are accessed. PPCTL2.14
CLL 5. All calls to this routine after initial deal only PPCTL2.15
CLL with files which are periodicaly reintialised. PPCTL2.16
CLL PPCTL2.17
CLL Author: R.A.Stratton Date: 23 March 1992 PPCTL2.18
CLL PPCTL2.19
CLL Tested under compiler: cft77 5.02 PPCTL2.20
CLL Tested under OS version: UNICOS 6.1.5.a PPCTL2.21
CLL PPCTL2.22
CLL Model Modification history from model version 3.0: PPCTL2.23
CLL version Date PPCTL2.24
CLL 3.1 12/02/93 Add TYPE_LETTER_1 to calling args of INIT_PP TJ130293.1
CLL 3.1 3/02/92 : Use newly defined NUNITS for loops over i/o units. RS030293.149
CLL 3.1 1/2/93 : Cater for boundary files for multiple LAM areas. DR240293.942
CLL D. Robinson DR240293.943
CLL 3.2 13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for TS150793.114
CLL portability. Author Tracey Smith. TS150793.115
CLL RR260493.1
CLL 3.2 26/04/93 Add dummy read of fixed header of pre-assigned pp RR260493.2
CLL files to circumvent heap fragmentation. R.Rawlins RR260493.3
CLL 3.2 13/04/93 Dynamic allocation of main arrays. R T H Barnes. @DYALLOC.2920
CLL 3.4 17/06/94 Argument LCAL360 passed to GET_NAME GSS1F304.510
CLL S.J.Swarbrick GSS1F304.511
CLL 4.0 18/04/95 Do not cause fatal error if preassigned PPfile has GTJ1F400.1
CLL already been archived (climate mode only). T Johns GTJ1F400.2
CLL 3.5 24/03/95 Changed OPEN to FILE_OPEN and GPB1F305.105
CLL CLOSE to FILE_CLOSE P.Burton GPB1F305.106
CLL 4.1 26/03/96 Introduce Wave sub-model. RTHBarnes WRB1F401.635
CLL 4.2 27/11/96 Parallelise writes to archiving system for t3e. GLW2F402.48
!LL 4.4 21/05/97 If using 365d, allow reinitialisation of non-mean GMG1F404.297
!LL files on Gregorian month boundaries. M.Gallani GMG1F404.298
CLL 4.4 09/10/97 Change the closes on unit 8 to flushes GBCCF404.13
CLL Author: Bob Carruthers, Cray Research GBCCF404.14
CLL 4.4 15/10/97 Added code to protect non-operational, climate GBC2F404.83
CLL jobs from aborting via IOERROR when an empty GBC2F404.84
CLL PP file is opened, following a previous run GBC2F404.85
CLL that terminated in error. GBC2F404.86
CLL Author: Bob Carruthers, Cray Research GBC2F404.87
CLL 4.5 03/08/98 Modify the code to declare 'filename' GBC5F405.1
CLL and set it for all platforms. GBC5F405.2
CLL Author: Bob Carruthers, Cray Research GBC5F405.3
CLL 4.5 29/07/98 Rename CINTF to CINTFA. New naming convention GDR2F405.120
CLL for boundary files. D. Robinson. GDR2F405.121
!LL 4.5 29/07/98 Rename CINTF to CINTFA. Call INTF_AREA. New GMB1F405.472
!LL naming convention for boundary files. D. Robinson. GMB1F405.473
CLL DR240293.944
CLL Programming standard: UM Doc Paper 3, version 4 (05/2/92) PPCTL2.26
CLL PPCTL2.27
CLL Logical components covered: PPCTL2.28
CLL PPCTL2.29
CLL Project task: C4 PPCTL2.30
CLL PPCTL2.31
CLL External documentation: UM documentation paper C0 - The top-level PPCTL2.32
CLL control system; and C4 - Storage handling PPCTL2.33
CLL and diagnostic system PPCTL2.34
CLL PPCTL2.35
CLL ------------------------------------------------------------------- PPCTL2.36
C*L Interface and arguments: ------------------------------------------ PPCTL2.37
C PPCTL2.38
SUBROUTINE PPCTL( 3,38@DYALLOC.2921
*CALL ARGSIZE
@DYALLOC.2922
*CALL ARGD1
@DYALLOC.2923
*CALL ARGDUMA
@DYALLOC.2924
*CALL ARGDUMO
@DYALLOC.2925
*CALL ARGDUMW
WRB1F401.636
*CALL ARGINFA
@DYALLOC.2926
*CALL ARGINFO
GMB1F405.474
*CALL ARGPPX
GMB1F405.475
& I_AO,MEANLEV,LINITIAL,PPNAME,ICODE,CMESSAGE ) @DYALLOC.2927
C PPCTL2.41
IMPLICIT NONE PPCTL2.42
*CALL CMAXSIZE
@DYALLOC.2928
*CALL CINTFA
GDR2F405.122
*CALL CMAXSIZO
GMB1F405.476
*CALL TYPSIZE
@DYALLOC.2929
*CALL TYPD1
@DYALLOC.2930
*CALL TYPDUMA
@DYALLOC.2931
*CALL TYPDUMO
@DYALLOC.2932
*CALL TYPDUMW
WRB1F401.637
*CALL TYPINFA
@DYALLOC.2933
*CALL TYPINFO
GMB1F405.477
GMB1F405.478
*CALL CSUBMODL
GMB1F405.479
*CALL CPPXREF
GMB1F405.480
*CALL PPXLOOK
GMB1F405.481
@DYALLOC.2934
INTEGER I_AO ! IN - Atmosphere/Ocean indicator PPCTL2.43
INTEGER MEANLEV ! IN - Mean level indicator PPCTL2.44
LOGICAL LINITIAL ! IN - TRUE if called from INITIAL PPCTL2.45
CHARACTER*14 PPNAME ! OUT - PP filename generated by GET_NAME PPCTL2.46
INTEGER ICODE ! OUT - Return code from routine PPCTL2.47
CHARACTER*(80) CMESSAGE ! OUT - Return message if failure occurred TS150793.116
C PPCTL2.49
C*---------------------------------------------------------------------- PPCTL2.50
C Common blocks PPCTL2.51
C PPCTL2.52
*CALL CHSUNITS
GDR3F305.148
*CALL CHISTORY
RS030293.150
*CALL CCONTROL
PPCTL2.53
*CALL CTIME
PPCTL2.56
*CALL CENVIR
PPCTL2.57
*CALL CINTFO
GMB1F405.482
C PPCTL2.58
C Subroutines called PPCTL2.59
C PPCTL2.60
EXTERNAL GET_NAME,INIT_PP,IN_INTF,INTF_AREA GMB1F405.483
C PPCTL2.62
C Local variables PPCTL2.63
C PPCTL2.64
INTEGER NFTUNIT ! FORTRAN unit PPCTL2.65
INTEGER SMID ! Submodel id for filenaming PPCTL2.66
INTEGER I,IPOS ! Indices within filename string PPCTL2.67
INTEGER TOGGLE ! Dummy toggle switch PPCTL2.68
INTEGER STEP_PP ! Number of pa files written so far PPCTL2.69
INTEGER STEP ! Timestep of model PPCTL2.70
*,LEN_PPNAME PPCTL2.71
INTEGER JINTF ! Interface area index DR240293.945
INTEGER FIXHD_DUMMY(LEN_FIXHD) ! Array for reading header RR260493.4
INTEGER LEN_IO ! I/O output length RR260493.5
REAL A ! I/O output code RR260493.6
CHARACTER*1 FILETYPE ! File type letter PPCTL2.72
CHARACTER*80 STRING ! Work array PPCTL2.73
CHARACTER*14 OLDPPFILE ! Previous PPfile on given unit PPCTL2.74
C PPCTL2.75
*IF DEF,MPP GLW2F402.49
*CALL PARVARS
GLW2F402.50
*ENDIF GLW2F402.51
character*80 filename ! Used to hold the filename of the GBC5F405.4
! pipe file, so that the unit can be GBC5F405.5
! closed if necessary to flush it. GBC5F405.6
CL---------------------------------------------------------------------- DR240293.951
TOGGLE=1 ! Dummy argument needed for GET_NAME PPCTL2.77
CL---------------------------------------------------------------------- PPCTL2.78
GBCCF404.26
C Get name of pipe GBCCF404.27
call get_file
(8, filename, 80, icode) GBCCF404.28
CL 1. Called from INITIAL PPCTL2.79
CL PPCTL2.80
IF (LINITIAL) THEN PPCTL2.81
PPCTL2.82
DO NFTUNIT=20,NUNITS RS030293.151
CL PPCTL2.84
CL 1.1 OPEN all active units using most recent filenames (as assigned by PPCTL2.85
CL script). PPCTL2.86
CL Close unit again if reinitialisation is indicated to prevent PPCTL2.87
CL heap fragmentation later. PPCTL2.88
CL PPCTL2.89
IF (FT_ACTIVE(NFTUNIT).EQ.'Y') THEN PPCTL2.90
WRITE(6,*)'PPCTL: Opening preattached file on unit ',NFTUNIT GIE0F403.485
CALL FILE_OPEN
(NFTUNIT,FT_ENVIRON(NFTUNIT), GPB1F305.107
& LEN_FT_ENVIR(NFTUNIT),1,0,ICODE) GPB1F305.108
IF (ICODE.NE.0) THEN DR240293.952
CMESSAGE='PPCTL : Error opening preassigned PPfile' DR240293.953
GO TO 999 ! Return DR240293.954
ENDIF DR240293.955
CL Perform dummy read of fixed header of pre-assigned file to RR260493.7
CL circumvent heap fragmentation problem in operational global CRUNs RR260493.8
CL NB: only trap a fatal error on read in Operational mode; in GTJ1F400.3
CL climate mode, the file may have been closed and archived in GTJ1F400.4
CL a previous run which failed later, but is not needed again. GTJ1F400.5
CALL BUFFIN
(NFTUNIT,FIXHD_DUMMY,LEN_FIXHD,LEN_IO,A) GTJ1F400.6
IF(A.NE.-1.0.OR.LEN_IO.NE.LEN_FIXHD) THEN GTJ1F400.7
CMESSAGE='PPCTL2: I/O ERROR' GTJ1F400.10
IF (MODEL_STATUS.EQ.'Operational ') THEN GTJ1F400.11
ICODE=1 GTJ1F400.12
CALL IOERROR
('buffer in pp fixed header', GBC2F404.88
2 A,LEN_IO,LEN_FIXHD) GBC2F404.89
RETURN GTJ1F400.13
ELSE GTJ1F400.14
ICODE=-1 GTJ1F400.15
write(6,8831) a, len_io, len_fixhd GBC2F404.90
8831 format(/'PP_CTL: Error Buffering in Fixed length Header' GBC2F404.91
2 /' Empty PP File in Climate Mode?'// GBC2F404.92
3 'Error code = ',f6.2/ GBC2F404.93
4 'Length requested = ',i9/ GBC2F404.94
5 'Length actually transferred = ',i9) GBC2F404.95
*IF DEF,T3E,AND,DEF,MPP GBC2F404.96
if(mype.eq.0) write(6,8831) a, len_io, len_fixhd GBC2F404.97
*ENDIF GBC2F404.98
ENDIF GTJ1F400.16
ENDIF GTJ1F400.17
CL RR260493.16
IF(FT_STEPS(NFTUNIT).GT.0)CALL FILE_CLOSE(NFTUNIT, GTD0F400.28
& FT_ENVIRON(NFTUNIT),LEN_FT_ENVIR(NFTUNIT),0,0,ICODE) GTD0F400.29
ENDIF PPCTL2.97
CL PPCTL2.98
CL 1.2 Take action on all selected units PPCTL2.99
CL PPCTL2.100
IF (LPP_SELECT(NFTUNIT)) THEN PPCTL2.101
CALL FILE_CLOSE
(NFTUNIT,FT_ENVIRON(NFTUNIT), GTD0F400.30
& LEN_FT_ENVIR(NFTUNIT),0,0,ICODE) GTD0F400.31
PPCTL2.104
CL Set SMID from TYPE_LETTER_2 PPCTL2.105
PPCTL2.106
IF (TYPE_LETTER_2(NFTUNIT).EQ.'a') THEN PPCTL2.107
SMID=1 PPCTL2.108
ELSEIF (TYPE_LETTER_2(NFTUNIT).EQ.'o') THEN PPCTL2.109
SMID=2 PPCTL2.110
ELSEIF (TYPE_LETTER_2(NFTUNIT).EQ.'w') THEN WRB1F401.638
SMID=4 WRB1F401.639
ELSE PPCTL2.111
SMID=I_AO PPCTL2.112
ENDIF PPCTL2.113
PPCTL2.114
CL PPCTL2.115
CL 1.3 Open reinitialised files provided not already active. PPCTL2.116
CL Filename required. PPCTL2.117
CL PPCTL2.118
IF (FT_STEPS(NFTUNIT).NE.0.and. GMG1F404.299
* .NOT. FT_ACTIVE(NFTUNIT).EQ.'Y') THEN PPCTL2.120
CL PPCTL2.122
CL 1.4 Construct PPfile name from model information using defined PPCTL2.123
CL naming convention (INPUT files) PPCTL2.124
CL PPCTL2.125
IF (FT_INPUT(NFTUNIT).EQ.'Y') THEN PPCTL2.126
CALL GET_NAME
(EXPT_ID_IN,JOB_ID_IN,SMID,MEANLEV,TOGGLE, PPCTL2.127
* FT_STEPS(NFTUNIT),TYPE_LETTER_1(NFTUNIT), PPCTL2.128
* TYPE_LETTER_3(NFTUNIT), PPCTL2.129
* MODEL_STATUS,TIME_CONVENTION,0,PPNAME,ICODE,CMESSAGE, GSS1F304.512
* LCAL360) GSS1F304.513
IF (ICODE.GT.0) GOTO 999 PPCTL2.131
ELSE PPCTL2.132
CL PPCTL2.133
CL 1.5 Construct PPfile name from model information using defined PPCTL2.134
CL naming convention (OUTPUT files) PPCTL2.135
CL PPCTL2.136
CALL GET_NAME
(EXPT_ID,JOB_ID,SMID,MEANLEV,TOGGLE, PPCTL2.137
* FT_STEPS(NFTUNIT),TYPE_LETTER_1(NFTUNIT), PPCTL2.138
* TYPE_LETTER_3(NFTUNIT), PPCTL2.139
* MODEL_STATUS,TIME_CONVENTION,0,PPNAME,ICODE,CMESSAGE, GSS1F304.514
* LCAL360) GSS1F304.515
IF (ICODE.GT.0) GOTO 999 PPCTL2.141
ENDIF PPCTL2.142
CL PPCTL2.143
WRITE(6,*)'PPCTL: Opening new file ',PPNAME,' on unit ', GIE0F403.486
* NFTUNIT PPCTL2.145
LEN_PPNAME=LEN(PPNAME) PPCTL2.146
CALL FILE_OPEN
(NFTUNIT,PPNAME,LEN_PPNAME,1,1,ICODE) GPB1F305.110
IF (ICODE.NE.0) THEN DR240293.956
CMESSAGE='PPCTL : Error opening new PPfile' DR240293.957
GO TO 999 ! Return DR240293.958
ENDIF DR240293.959
CL PPCTL2.149
CL 1.6 Update history file record for appropriate unit with new filename PPCTL2.150
CL PPCTL2.151
STRING=MODEL_FT_UNIT(NFTUNIT) PPCTL2.152
STRING(11:17)='$DATAM/' PPCTL2.153
STRING(18:31)=PPNAME PPCTL2.154
STRING(32:80)=' ' PPCTL2.155
MODEL_FT_UNIT(NFTUNIT)=STRING PPCTL2.156
ENDIF PPCTL2.157
CL PPCTL2.158
CL 1.7 Initialise or read in the direct access lookup headers of the PPCTL2.159
CL input/output file. PPCTL2.160
CL PPCTL2.161
CL (a) PP files PPCTL2.162
IF (TYPE_LETTER_1(NFTUNIT).EQ.'p') then PPCTL2.163
PPCTL2.164
IF (FT_OUTPUT(NFTUNIT).EQ.'Y' PPCTL2.165
* .AND..NOT.FT_ACTIVE(NFTUNIT).EQ.'Y') THEN PPCTL2.166
*IF DEF,ATMOS PPCTL2.167
IF (SMID.EQ.1) THEN PPCTL2.168
CL PPCTL2.169
CL Open file if not to be re-initialised, i.e. file name is in PPCTL2.170
CL environment variable. PPCTL2.171
IF(FT_STEPS(NFTUNIT).EQ.0) PPCTL2.172
* CALL FILE_OPEN
(NFTUNIT,FT_ENVIRON(NFTUNIT), GPB1F305.111
* LEN_FT_ENVIR(NFTUNIT),1,0,ICODE) PPCTL2.174
WRITE(6,*)'PPCTL: Initialising new file on unit ',NFTUNIT GIE0F403.487
CALL INIT_PP
(NFTUNIT,TYPE_LETTER_1(NFTUNIT), TJ130293.2
* LEN1_LOOKUP,PP_LEN2_LOOK(NFTUNIT), PPCTL2.177
* A_FIXHD,A_INTHD,A_REALHD,A_LEVDEPC, PPCTL2.178
* LEN_FIXHD,A_LEN_INTHD,A_LEN_REALHD,A_LEN1_LEVDEPC, PPCTL2.179
* A_LEN2_LEVDEPC,ICODE,CMESSAGE) PPCTL2.180
IF (ICODE.GT.0) GOTO 999 PPCTL2.181
FT_LASTFIELD(NFTUNIT)=0 PPCTL2.182
ENDIF PPCTL2.183
*ENDIF PPCTL2.184
*IF DEF,OCEAN PPCTL2.185
IF (SMID.EQ.2) THEN PPCTL2.186
CL PPCTL2.187
CL Open file if not to be re-initialised, i.e. file name is in PPCTL2.188
CL environment variable. PPCTL2.189
IF(FT_STEPS(NFTUNIT).EQ.0) PPCTL2.190
* CALL FILE_OPEN
(NFTUNIT,FT_ENVIRON(NFTUNIT), GPB1F305.112
* LEN_FT_ENVIR(NFTUNIT),1,0,ICODE) PPCTL2.192
WRITE(6,*)'PPCTL: Initialising new file on unit ',NFTUNIT GIE0F403.488
CALL INIT_PP
(NFTUNIT,TYPE_LETTER_1(NFTUNIT), TJ130293.3
* LEN1_LOOKUP,PP_LEN2_LOOK(NFTUNIT), PPCTL2.195
* O_FIXHD,O_INTHD,O_REALHD,O_LEVDEPC, PPCTL2.196
* LEN_FIXHD,O_LEN_INTHD,O_LEN_REALHD,O_LEN1_LEVDEPC, PPCTL2.197
* O_LEN2_LEVDEPC,ICODE,CMESSAGE) PPCTL2.198
IF (ICODE.GT.0) GOTO 999 PPCTL2.199
FT_LASTFIELD(NFTUNIT)=0 PPCTL2.200
ENDIF PPCTL2.201
*ENDIF PPCTL2.202
*IF DEF,WAVE WRB1F401.640
IF (SMID.EQ.4) THEN WRB1F401.641
CL WRB1F401.642
CL Open file if not to be re-initialised, i.e. file name is in WRB1F401.643
CL environment variable. WRB1F401.644
IF(FT_STEPS(NFTUNIT).EQ.0) WRB1F401.645
* CALL FILE_OPEN
(NFTUNIT,FT_ENVIRON(NFTUNIT), WRB1F401.646
* LEN_FT_ENVIR(NFTUNIT),1,0,ICODE) WRB1F401.647
WRITE(6,*)'PPCTL: Initialising new file on unit ',NFTUNIT GIE0F403.489
CALL INIT_PP
(NFTUNIT,TYPE_LETTER_1(NFTUNIT), WRB1F401.649
* LEN1_LOOKUP,PP_LEN2_LOOK(NFTUNIT), WRB1F401.650
* W_FIXHD,W_INTHD,W_REALHD,W_LEVDEPC, WRB1F401.651
* LEN_FIXHD,W_LEN_INTHD,W_LEN_REALHD,W_LEN1_LEVDEPC, WRB1F401.652
* W_LEN2_LEVDEPC,ICODE,CMESSAGE) WRB1F401.653
IF (ICODE.GT.0) GOTO 999 WRB1F401.654
FT_LASTFIELD(NFTUNIT)=0 WRB1F401.655
ENDIF PPCTL2.203
*ENDIF WRB1F401.656
ENDIF WRB1F401.657
CL PPCTL2.204
CL (b) Boundary files input and output PPCTL2.205
CL PPCTL2.206
ELSE IF (TYPE_LETTER_1(NFTUNIT).EQ.'b') THEN GDR2F405.123
CL PPCTL2.209
CL Call boundary file initialisation routine even if a continuation PPCTL2.210
CL run and file already exists. PPCTL2.211
CL PPCTL2.212
IF (FT_OUTPUT(NFTUNIT).EQ.'Y')THEN PPCTL2.213
WRITE(6,*)'PPCTL: Opening boundary output file on unit ', GIE0F403.490
* NFTUNIT PPCTL2.215
CL PPCTL2.216
CL Open file if not to be re-initialised, i.e. file name is in PPCTL2.217
CL environment variable. PPCTL2.218
IF(FT_STEPS(NFTUNIT).EQ.0) PPCTL2.219
* CALL FILE_OPEN
(NFTUNIT,FT_ENVIRON(NFTUNIT), GPB1F305.113
* LEN_FT_ENVIR(NFTUNIT),1,0,ICODE) PPCTL2.221
GMB1F405.484
! Get interface area number GMB1F405.485
call intf_area
( SMID, NFTUNIT, JINTF) GMB1F405.486
GDR2F405.124
*IF DEF,ATMOS GDR2F405.125
if ( SMID .eq. a_im ) then GDR2F405.126
GDR2F405.127
CALL IN_INTF
( @DYALLOC.2935
*CALL ARGSIZE
@DYALLOC.2936
*CALL ARGD1
@DYALLOC.2937
*CALL ARGDUMA
@DYALLOC.2938
*CALL ARGINFA
@DYALLOC.2939
* NFTUNIT,ICODE,CMESSAGE) @DYALLOC.2940
GDR2F405.128
IF (ICODE.GT.0) THEN GDR2F405.129
WRITE (6,*) ' PPCTL : Error in IN_INTF - Atmos.' GDR2F405.130
GO TO 999 ! Return GDR2F405.131
ENDIF GDR2F405.132
GDR2F405.133
endif ! if SMID GDR2F405.134
*ENDIF GDR2F405.135
*IF DEF,OCEAN,AND,-DEF,ATMOS GMB1F405.487
if ( SMID .eq. o_im ) then GMB1F405.488
GMB1F405.489
! Modset is required for IN_INTF to work for ocean GMB1F405.490
! until next release. GMB1F405.491
GMB1F405.492
CALL IN_INTF
( GMB1F405.493
*CALL ADUMLENO
GMB1F405.494
*CALL AINFLENO
GMB1F405.495
*CALL ARGDUMO
GMB1F405.496
*CALL AINTFO
GMB1F405.497
*CALL ARGINFO
GMB1F405.498
*CALL ARGPPX
GMB1F405.499
& km, jmt, jmt-1, imt, GMB1F405.500
& SMID,NFTUNIT,JINTF,ICODE,CMESSAGE) GMB1F405.501
GMB1F405.502
IF (ICODE.GT.0) THEN GMB1F405.503
WRITE (6,*) ' PPCTL : Error in IN_INTF - Ocean.' GMB1F405.504
GO TO 999 ! Return GMB1F405.505
ENDIF GMB1F405.506
GMB1F405.507
end if ! SMID GMB1F405.508
*ENDIF GMB1F405.509
IF (FT_STEPS(NFTUNIT).GT.0) THEN PPCTL2.224
IF (I_AO.EQ.1) THEN PPCTL2.225
STEP=STEPim(a_im) GDR5F305.141
ELSE IF (I_AO.EQ.2) THEN PPCTL2.227
STEP=STEPim(o_im) GDR5F305.142
ENDIF PPCTL2.229
IF (STEP.EQ.0.OR.(STEP-FT_FIRSTSTEP(NFTUNIT).NE.0.AND. PPCTL2.230
* MOD(STEP-FT_FIRSTSTEP(NFTUNIT), PPCTL2.231
* FT_STEPS(NFTUNIT)).EQ.0)) THEN PPCTL2.232
FT_LASTFIELD(NFTUNIT)=0 PPCTL2.233
ENDIF PPCTL2.234
ENDIF PPCTL2.235
CL Call routine to open and read boundary input file. PPCTL2.236
C ELSE IF (FT_INPUT(NFTUNIT).EQ.'Y')then PPCTL2.237
CL This is where IN_BOUND should be called PPCTL2.238
ENDIF PPCTL2.239
CL PPCTL2.240
CL (c) Ancillary files ? May be added at some future date PPCTL2.241
CL PPCTL2.242
PPCTL2.243
ENDIF PPCTL2.244
PPCTL2.245
C Close unit to release IO buffer if later reinitialisation indicated PPCTL2.246
IF(FT_STEPS(NFTUNIT).NE.0)THEN GMG1F404.300
LEN_PPNAME=LEN(PPNAME) PPCTL2.248
CALL FILE_CLOSE
(NFTUNIT,PPNAME,LEN_PPNAME,1,0,ICODE) GTD0F400.32
ENDIF PPCTL2.250
CL Reset unit as active PPCTL2.251
FT_ACTIVE(NFTUNIT) = 'Y' PPCTL2.252
ENDIF PPCTL2.253
PPCTL2.254
END DO PPCTL2.255
PPCTL2.256
ELSE PPCTL2.257
CL---------------------------------------------------------------------- PPCTL2.258
CL 2.0 Call to PPCTL to reintialise non-mean files ie PP or boundary PPCTL2.259
CL files after the initial call (in this case FT_STEPS > 0) PPCTL2.260
PPCTL2.261
IF (MEANLEV.EQ.0) THEN PPCTL2.262
PPCTL2.263
CL---------------------------------------------------------------------- PPCTL2.264
CL 2.1 Loop over all valid FORTRAN units and select those to be PPCTL2.265
CL initialised this timestep as set by SETTSCTL PPCTL2.266
CL PPCTL2.267
SMID=I_AO PPCTL2.268
PPCTL2.269
DO NFTUNIT=20,NUNITS RS030293.152
PPCTL2.271
IF (LPP_SELECT(NFTUNIT)) THEN PPCTL2.272
CL PPCTL2.273
CL 2.2 Generate output processing requests for previous file on PPCTL2.274
CL this unit, which is now complete PPCTL2.275
CL PPCTL2.276
STRING=MODEL_FT_UNIT(NFTUNIT) PPCTL2.277
DO I=1,80 PPCTL2.278
IF(STRING(I:I).EQ."/") IPOS=I PPCTL2.279
ENDDO PPCTL2.280
OLDPPFILE=STRING(IPOS+1:IPOS+14) PPCTL2.281
PPCTL2.282
IF (FT_SELECT(NFTUNIT).EQ.'Y') THEN PPCTL2.283
IF (FT_ARCHSEL(NFTUNIT).EQ.'Y') THEN PPCTL2.284
IF (NFTUNIT.GE.60.AND.NFTUNIT.LT.70) THEN PPCTL2.285
IF (FT_PLOTSEL(NFTUNIT).GE.1) THEN PPCTL2.286
IF (SMID.EQ.1) THEN PPCTL2.287
STEP_PP=(STEPim(a_im)-FT_FIRSTSTEP(NFTUNIT)) GDR5F305.143
& /FT_STEPS(NFTUNIT) PPCTL2.289
ELSE IF (SMID.EQ.2) THEN PPCTL2.290
STEP_PP=(STEPim(o_im)-FT_FIRSTSTEP(NFTUNIT)) GDR5F305.144
& /FT_STEPS(NFTUNIT) PPCTL2.292
ELSE IF (SMID.EQ.4) THEN WRB1F401.658
STEP_PP=(STEPim(w_im)-FT_FIRSTSTEP(NFTUNIT)) WRB1F401.659
& /FT_STEPS(NFTUNIT) WRB1F401.660
ENDIF PPCTL2.293
IF(MOD(STEP_PP,FT_PLOTSEL(NFTUNIT)).EQ.0) THEN PPCTL2.294
*IF DEF,MPP GLW2F402.52
IF (mype.eq.0) THEN GLW2F402.53
WRITE(8,100) OLDPPFILE GLW2F402.54
*IF DEF,T3E GBCCF404.35
call flush(
8, icode) GBCCF404.36
*ELSE GBCCF404.37
close(8) GBCCF404.38
open(8, file=filename) GBCCF404.39
*ENDIF GBCCF404.40
ENDIF GLW2F402.55
*ELSE GLW2F402.56
WRITE(8,100) OLDPPFILE PPCTL2.295
close(8) GBCCF404.41
open(8, file=filename) GBCCF404.42
*ENDIF GLW2F402.57
ENDIF PPCTL2.296
ELSE PPCTL2.297
*IF DEF,MPP GLW2F402.58
IF (mype.eq.0) THEN GLW2F402.59
WRITE(8,110) OLDPPFILE GLW2F402.60
*IF DEF,T3E GBCCF404.43
call flush(
8, icode) GBCCF404.44
*ELSE GBCCF404.45
close(8) GBCCF404.46
open(8, file=filename) GBCCF404.47
*ENDIF GBCCF404.48
ENDIF GLW2F402.61
*ELSE GLW2F402.62
WRITE(8,110) OLDPPFILE PPCTL2.298
close(8) GBCCF404.49
open(8, file=filename) GBCCF404.50
*ENDIF GLW2F402.63
ENDIF PPCTL2.299
ELSE PPCTL2.300
IF (TYPE_LETTER_1(NFTUNIT).EQ.'b') THEN GDR2F405.136
*IF DEF,MPP GLW2F402.64
IF (mype.eq.0) THEN GLW2F402.65
WRITE(8,130) OLDPPFILE GLW2F402.66
*IF DEF,T3E GBCCF404.51
call flush(
8, icode) GBCCF404.52
*ELSE GBCCF404.53
close(8) GBCCF404.54
open(8, file=filename) GBCCF404.55
*ENDIF GBCCF404.56
ENDIF GLW2F402.67
*ELSE GLW2F402.68
WRITE(8,130) OLDPPFILE PPCTL2.302
close(8) GBCCF404.57
open(8, file=filename) GBCCF404.58
*ENDIF GLW2F402.69
ELSE PPCTL2.303
*IF DEF,MPP GLW2F402.70
IF (mype.eq.0) THEN GLW2F402.71
WRITE(8,110) OLDPPFILE GLW2F402.72
*IF DEF,T3E GBCCF404.59
call flush(
8, icode) GBCCF404.60
*ELSE GBCCF404.61
close(8) GBCCF404.62
open(8, file=filename) GBCCF404.63
*ENDIF GBCCF404.64
ENDIF GLW2F402.73
*ELSE GLW2F402.74
WRITE(8,110) OLDPPFILE PPCTL2.304
close(8) GBCCF404.65
open(8, file=filename) GBCCF404.66
*ENDIF GLW2F402.75
ENDIF PPCTL2.305
ENDIF PPCTL2.306
ELSE PPCTL2.307
IF (NFTUNIT.GE.60.AND.NFTUNIT.LT.70) THEN PPCTL2.308
IF (FT_PLOTSEL(NFTUNIT).GE.1) THEN PPCTL2.309
IF (SMID.EQ.1) THEN PPCTL2.310
STEP_PP=(STEPim(a_im)-FT_FIRSTSTEP(NFTUNIT)) GDR5F305.145
& /FT_STEPS(NFTUNIT) PPCTL2.312
ELSE IF (SMID.EQ.2) THEN PPCTL2.313
STEP_PP=(STEPim(o_im)-FT_FIRSTSTEP(NFTUNIT)) GDR5F305.146
& /FT_STEPS(NFTUNIT) PPCTL2.315
ELSE IF (SMID.EQ.4) THEN WRB1F401.661
STEP_PP=(STEPim(w_im)-FT_FIRSTSTEP(NFTUNIT)) WRB1F401.662
& /FT_STEPS(NFTUNIT) WRB1F401.663
ENDIF PPCTL2.316
IF(MOD(STEP_PP,FT_PLOTSEL(NFTUNIT)).EQ.0) THEN PPCTL2.317
*IF DEF,MPP GLW2F402.76
IF (mype.eq.0) THEN GLW2F402.77
WRITE(8,120) OLDPPFILE GLW2F402.78
*IF DEF,T3E GBCCF404.67
call flush(
8, icode) GBCCF404.68
*ELSE GBCCF404.69
close(8) GBCCF404.70
open(8, file=filename) GBCCF404.71
*ENDIF GBCCF404.72
ENDIF GLW2F402.79
*ELSE GLW2F402.80
WRITE(8,120) OLDPPFILE PPCTL2.318
close(8) GBCCF404.73
open(8, file=filename) GBCCF404.74
*ENDIF GLW2F402.81
ENDIF PPCTL2.319
ENDIF PPCTL2.320
ENDIF PPCTL2.321
ENDIF PPCTL2.322
IF (NFTUNIT.GE.60.AND.NFTUNIT.LT.70) THEN PPCTL2.323
IF (FT_WSSEND(NFTUNIT).EQ.'Y') THEN PPCTL2.324
*IF DEF,MPP GLW2F402.82
IF (mype.eq.0) THEN GLW2F402.83
WRITE(8,140) OLDPPFILE GLW2F402.84
*IF DEF,T3E GBCCF404.75
call flush(
8, icode) GBCCF404.76
*ELSE GBCCF404.77
close(8) GBCCF404.78
open(8, file=filename) GBCCF404.79
*ENDIF GBCCF404.80
ENDIF GLW2F402.85
*ELSE GLW2F402.86
WRITE(8,140) OLDPPFILE PPCTL2.325
close(8) GBCCF404.81
open(8, file=filename) GBCCF404.82
*ENDIF GLW2F402.87
ENDIF PPCTL2.326
ENDIF PPCTL2.327
*IF DEF,MPP GLW2F402.88
IF (mype.eq.0) THEN GLW2F402.89
WRITE(8,150) OLDPPFILE GLW2F402.90
*IF DEF,T3E GBCCF404.83
call flush(
8, icode) GBCCF404.84
*ELSE GBCCF404.85
close(8) GBCCF404.86
open(8, file=filename) GBCCF404.87
*ENDIF GBCCF404.88
ENDIF GLW2F402.91
*ELSE GLW2F402.92
WRITE(8,150) OLDPPFILE PPCTL2.328
close(8) GBCCF404.89
open(8, file=filename) GBCCF404.90
*ENDIF GLW2F402.93
ENDIF PPCTL2.329
100 FORMAT('%%% ',A14,' ARCHIVE PPCHART') PPCTL2.330
110 FORMAT('%%% ',A14,' ARCHIVE PPNOCHART') PPCTL2.331
120 FORMAT('%%% ',A14,' PLOTONLY PPCHART') PPCTL2.332
130 FORMAT('%%% ',A14,' ARCHIVE BNDY') PPCTL2.333
140 FORMAT('%%% ',A14,' HPSEND') PPCTL2.334
150 FORMAT('%%% ',A14,' DELETE') PPCTL2.335
CL PPCTL2.336
CL 2.2 Construct PPfile name from model information using defined PPCTL2.337
CL naming convention (INPUT files) PPCTL2.338
CL PPCTL2.339
IF (FT_INPUT(NFTUNIT).EQ.'Y') THEN PPCTL2.340
CALL GET_NAME
(EXPT_ID_IN,JOB_ID_IN,SMID,MEANLEV,TOGGLE, PPCTL2.341
* FT_STEPS(NFTUNIT),TYPE_LETTER_1(NFTUNIT), PPCTL2.342
* TYPE_LETTER_3(NFTUNIT), PPCTL2.343
* MODEL_STATUS,TIME_CONVENTION,0,PPNAME,ICODE,CMESSAGE, GSS1F304.516
* LCAL360) GSS1F304.517
IF (ICODE.GT.0) GOTO 999 PPCTL2.345
ELSE PPCTL2.346
CL PPCTL2.347
CL 2.3 Construct PPfile name from model information using defined PPCTL2.348
CL naming convention (OUTPUT files) PPCTL2.349
CL PPCTL2.350
CALL GET_NAME
(EXPT_ID,JOB_ID,SMID,MEANLEV,TOGGLE, PPCTL2.351
* FT_STEPS(NFTUNIT),TYPE_LETTER_1(NFTUNIT), PPCTL2.352
* TYPE_LETTER_3(NFTUNIT), PPCTL2.353
* MODEL_STATUS,TIME_CONVENTION,0,PPNAME,ICODE,CMESSAGE, GSS1F304.518
* LCAL360) GSS1F304.519
IF (ICODE.GT.0) GOTO 999 PPCTL2.355
ENDIF PPCTL2.356
CL PPCTL2.357
CL 2.4 Open file on unit NFTUNIT PPCTL2.358
CL PPCTL2.359
LEN_PPNAME=LEN(PPNAME) PPCTL2.360
CALL FILE_CLOSE
(NFTUNIT,PPNAME,LEN_PPNAME,1,0,ICODE) GTD0F400.33
WRITE(6,*)'PPCTL: Opening new file ',PPNAME,' on unit ', GIE0F403.491
* NFTUNIT PPCTL2.363
LEN_PPNAME=LEN(PPNAME) PPCTL2.364
CALL FILE_OPEN
(NFTUNIT,PPNAME,LEN_PPNAME,1,1,ICODE) GPB1F305.116
IF (ICODE.NE.0) THEN DR240293.974
CMESSAGE='PPCTL : Error opening new PPfile' DR240293.975
GO TO 999 ! Return DR240293.976
ENDIF DR240293.977
CL PPCTL2.367
CL 2.5 Update history file record for appropriate unit if new filename PPCTL2.368
CL PPCTL2.369
STRING=MODEL_FT_UNIT(NFTUNIT) PPCTL2.370
STRING(11:17)='$DATAM/' PPCTL2.371
STRING(18:31)=PPNAME PPCTL2.372
STRING(32:80)=' ' PPCTL2.373
MODEL_FT_UNIT(NFTUNIT)=STRING PPCTL2.374
CL PPCTL2.375
CL 2.6 Initialise the direct access LOOKUP headers if OUTPUT file PPCTL2.376
CL PPCTL2.377
CL (a) PP files PPCTL2.378
IF (TYPE_LETTER_1(NFTUNIT).EQ.'p') THEN PPCTL2.379
PPCTL2.380
*IF DEF,ATMOS PPCTL2.381
IF (SMID.EQ.1.AND.FT_OUTPUT(NFTUNIT).EQ.'Y') THEN PPCTL2.382
WRITE(6,*)'PPCTL: Initialising new file on unit ',NFTUNIT GIE0F403.492
CALL INIT_PP
(NFTUNIT,TYPE_LETTER_1(NFTUNIT), TJ130293.4
* LEN1_LOOKUP,PP_LEN2_LOOK(NFTUNIT), PPCTL2.385
* A_FIXHD,A_INTHD,A_REALHD,A_LEVDEPC, PPCTL2.386
* LEN_FIXHD,A_LEN_INTHD,A_LEN_REALHD,A_LEN1_LEVDEPC, PPCTL2.387
* A_LEN2_LEVDEPC,ICODE,CMESSAGE) PPCTL2.388
ENDIF PPCTL2.389
*ENDIF PPCTL2.390
*IF DEF,OCEAN PPCTL2.391
IF (SMID.EQ.2.AND.FT_OUTPUT(NFTUNIT).EQ.'Y') THEN PPCTL2.392
WRITE(6,*)'PPCTL: Initialising new file on unit ',NFTUNIT GIE0F403.493
CALL INIT_PP
(NFTUNIT,TYPE_LETTER_1(NFTUNIT), TJ130293.5
* LEN1_LOOKUP,PP_LEN2_LOOK(NFTUNIT), PPCTL2.395
* O_FIXHD,O_INTHD,O_REALHD,O_LEVDEPC, PPCTL2.396
* LEN_FIXHD,O_LEN_INTHD,O_LEN_REALHD,O_LEN1_LEVDEPC, PPCTL2.397
* O_LEN2_LEVDEPC,ICODE,CMESSAGE) PPCTL2.398
ENDIF PPCTL2.399
*ENDIF PPCTL2.400
*IF DEF,WAVE WRB1F401.664
IF (SMID.EQ.4.AND.FT_OUTPUT(NFTUNIT).EQ.'Y') THEN WRB1F401.665
WRITE(6,*)'PPCTL: Initialising new file on unit ',NFTUNIT GIE0F403.494
CALL INIT_PP
(NFTUNIT,TYPE_LETTER_1(NFTUNIT), WRB1F401.667
* LEN1_LOOKUP,PP_LEN2_LOOK(NFTUNIT), WRB1F401.668
* W_FIXHD,W_INTHD,W_REALHD,W_LEVDEPC, WRB1F401.669
* LEN_FIXHD,W_LEN_INTHD,W_LEN_REALHD,W_LEN1_LEVDEPC, WRB1F401.670
* W_LEN2_LEVDEPC,ICODE,CMESSAGE) WRB1F401.671
ENDIF WRB1F401.672
*ENDIF WRB1F401.673
CL PPCTL2.401
CL (b) Boundary files PPCTL2.402
CL PPCTL2.403
ELSE IF (TYPE_LETTER_1(NFTUNIT).EQ.'b') THEN GDR2F405.137
C PPCTL2.405
IF (FT_OUTPUT(NFTUNIT).EQ.'Y') THEN PPCTL2.406
WRITE(6,*)'PPCTL: Initialising new boundary file on unit', GIE0F403.495
* NFTUNIT PPCTL2.408
GMB1F405.510
! Get interface area number GMB1F405.511
call intf_area
( SMID, NFTUNIT, JINTF) GMB1F405.512
GMB1F405.513
*IF DEF,ATMOS GDR2F405.138
if ( SMID .eq. a_im ) then GDR2F405.139
CALL IN_INTF
( @DYALLOC.2941
*CALL ARGSIZE
@DYALLOC.2942
*CALL ARGD1
@DYALLOC.2943
*CALL ARGDUMA
@DYALLOC.2944
*CALL ARGINFA
@DYALLOC.2945
* NFTUNIT,ICODE,CMESSAGE) @DYALLOC.2946
GDR2F405.140
IF (ICODE.GT.0) THEN GDR2F405.141
WRITE (6,*) ' PPCTL : Error in IN_INTF - Atmos.' GDR2F405.142
GO TO 999 ! Return GDR2F405.143
ENDIF GDR2F405.144
GDR2F405.145
endif ! if SMID GDR2F405.146
*ENDIF GDR2F405.147
*IF DEF,OCEAN,AND,-DEF,ATMOS GMB1F405.514
if ( SMID .eq. o_im ) then GMB1F405.515
GMB1F405.516
! Modset is required for IN_INTF to work for ocean GMB1F405.517
! until next release. GMB1F405.518
GMB1F405.519
CALL IN_INTF
( GMB1F405.520
*CALL ADUMLENO
GMB1F405.521
*CALL AINFLENO
GMB1F405.522
*CALL ARGDUMO
GMB1F405.523
*CALL AINTFO
GMB1F405.524
*CALL ARGINFO
GMB1F405.525
*CALL ARGPPX
GMB1F405.526
& km, jmt, jmt-1, imt, GMB1F405.527
& SMID,NFTUNIT,JINTF,ICODE,CMESSAGE) GMB1F405.528
GMB1F405.529
IF (ICODE.GT.0) THEN GMB1F405.530
WRITE (6,*) ' PPCTL : Error in IN_INTF - Ocean.' GMB1F405.531
GO TO 999 ! Return GMB1F405.532
ENDIF GMB1F405.533
GMB1F405.534
end if ! SMID GMB1F405.535
*ENDIF GMB1F405.536
C ELSE PPCTL2.410
C This is where a new boundary input file should be read in PPCTL2.411
ENDIF PPCTL2.412
ENDIF PPCTL2.413
C PPCTL2.414
FT_LASTFIELD(NFTUNIT)=0 PPCTL2.416
C Close unit to release IO buffer if later reinitialisation indicated PPCTL2.417
LEN_PPNAME=LEN(PPNAME) PPCTL2.418
CALL FILE_CLOSE
(NFTUNIT,PPNAME,LEN_PPNAME,1,0,ICODE) GTD0F400.34
C Set FT_ACTIVE if initialising first file of a sequence PPCTL2.420
C (i.e. not initialised from INITIAL but within the run) PPCTL2.421
C PPCTL2.422
IF (SMID.EQ.1) THEN PPCTL2.423
STEP = STEPim(a_im) GDR5F305.147
ELSE IF (SMID.EQ.2) THEN PPCTL2.425
STEP = STEPim(o_im) GDR5F305.148
ELSE IF (SMID.EQ.4) THEN WRB1F401.674
STEP = STEPim(w_im) WRB1F401.675
ENDIF PPCTL2.427
C PPCTL2.428
IF (STEP-1.EQ.FT_FIRSTSTEP(NFTUNIT)) THEN PPCTL2.429
C PPCTL2.430
FT_ACTIVE(NFTUNIT)='Y' PPCTL2.431
C PPCTL2.432
ELSE IF (TYPE_LETTER_1(NFTUNIT).EQ.'b') THEN GDR2F405.148
DR240293.991
! Get interface area number GMB1F405.537
call intf_area
( SMID, NFTUNIT, JINTF) GMB1F405.538
IF (STEP-1+INTERFACE_STEPSim(JINTF,A_IM) .EQ. GDR5F305.149
* FT_FIRSTSTEP(NFTUNIT)) THEN DR240293.994
DR240293.995
FT_ACTIVE(NFTUNIT)='Y' DR240293.996
DR240293.997
END IF DR240293.998
DR240293.999
END IF PPCTL2.437
C PPCTL2.438
ENDIF PPCTL2.439
PPCTL2.440
END DO PPCTL2.441
CL---------------------------------------------------------------------- PPCTL2.442
ELSE ! MEANLEV not=0, so following deals with mean files GMG1F404.301
CL---------------------------------------------------------------------- PPCTL2.444
CL 3. If called to initialise mean PP files ... PPCTL2.445
CL Initialise only the relevant unit PPCTL2.446
CL PPCTL2.447
SMID=I_AO PPCTL2.448
*IF DEF,ATMOS PPCTL2.449
IF (SMID.EQ.1) THEN PPCTL2.450
NFTUNIT = FT_MEANim(A_IM) GDR3F305.149
ENDIF PPCTL2.452
*ENDIF PPCTL2.453
*IF DEF,OCEAN PPCTL2.454
IF (SMID.EQ.2) THEN PPCTL2.455
NFTUNIT = FT_MEANim(O_IM) GDR3F305.150
ENDIF PPCTL2.457
*ENDIF PPCTL2.458
*IF DEF,WAVE WRB1F401.676
IF (SMID.EQ.4) THEN WRB1F401.677
NFTUNIT = FT_MEANim(W_IM) WRB1F401.678
ENDIF WRB1F401.679
*ENDIF WRB1F401.680
CL PPCTL2.459
CL 3.1 Construct PPfile name from model information using defined PPCTL2.460
CL naming convention (OUTPUT files) PPCTL2.461
CL PPCTL2.462
CALL GET_NAME
(EXPT_ID,JOB_ID,SMID,MEANLEV,TOGGLE, PPCTL2.463
* FT_STEPS(NFTUNIT),TYPE_LETTER_1(NFTUNIT), PPCTL2.464
* TYPE_LETTER_3(NFTUNIT), PPCTL2.465
* MODEL_STATUS,TIME_CONVENTION,0,PPNAME,ICODE,CMESSAGE, GSS1F304.520
* LCAL360) GSS1F304.521
IF (ICODE.GT.0) GOTO 999 PPCTL2.467
CL PPCTL2.468
CL 3.2 Open named file on unit NFTUNIT PPCTL2.469
CL PPCTL2.470
LEN_PPNAME=LEN(PPNAME) PPCTL2.471
CALL FILE_CLOSE
(NFTUNIT,PPNAME,LEN_PPNAME,1,0,ICODE) GTD0F400.35
WRITE(6,*)'PPCTL: Opening new file ',PPNAME,' on unit ',NFTUNIT GIE0F403.496
LEN_PPNAME=LEN(PPNAME) PPCTL2.474
CALL FILE_OPEN
(NFTUNIT,PPNAME,LEN_PPNAME,1,1,ICODE) GPB1F305.119
IF (ICODE.NE.0) THEN DR240293.1000
CMESSAGE='PPCTL : Error opening new PPfile' DR240293.1001
GO TO 999 ! Return DR240293.1002
ENDIF DR240293.1003
CL PPCTL2.477
CL 3.2.1 Update history file record PPCTL2.478
CL PPCTL2.479
STRING=MODEL_FT_UNIT(NFTUNIT) PPCTL2.480
! Check that a name exists in STRING(1:8), if not set from CENVIRDT GDR3F305.153
IF (STRING(1:8) .eq. ' ') THEN GDR3F305.154
STRING(1:8) = FT_ENVIRON(NFTUNIT) GDR3F305.155
STRING(9:9) = ':' GDR3F305.156
END IF GDR3F305.157
STRING(11:17)='$DATAM/' PPCTL2.481
STRING(18:31)=PPNAME PPCTL2.482
STRING(32:80)=' ' PPCTL2.483
MODEL_FT_UNIT(NFTUNIT)=STRING PPCTL2.484
CL PPCTL2.485
CL 3.3 Initialise the direct access LOOKUP headers (OUTPUT file) PPCTL2.486
CL PPCTL2.487
*IF DEF,ATMOS PPCTL2.488
IF (SMID.EQ.1) THEN PPCTL2.489
WRITE(6,*)'PPCTL: Initialising new file on unit ',NFTUNIT GIE0F403.497
CALL INIT_PP
(NFTUNIT,TYPE_LETTER_1(NFTUNIT), TJ130293.6
* LEN1_LOOKUP,PP_LEN2_MEANim(MEANLEV,A_IM), GDR3F305.151
* A_FIXHD,A_INTHD,A_REALHD,A_LEVDEPC, PPCTL2.492
* LEN_FIXHD,A_LEN_INTHD,A_LEN_REALHD,A_LEN1_LEVDEPC, PPCTL2.493
* A_LEN2_LEVDEPC,ICODE,CMESSAGE) PPCTL2.494
IF (ICODE.GT.0) GOTO 999 PPCTL2.495
FT_LASTFIELD(NFTUNIT)=0 PPCTL2.496
ENDIF PPCTL2.497
*ENDIF PPCTL2.498
*IF DEF,OCEAN PPCTL2.499
IF (SMID.EQ.2) THEN PPCTL2.500
WRITE(6,*)'PPCTL: Initialising new file on unit ',NFTUNIT GIE0F403.498
CALL INIT_PP
(NFTUNIT,TYPE_LETTER_1(NFTUNIT), TJ130293.8
* LEN1_LOOKUP,PP_LEN2_MEANim(MEANLEV,O_IM), GDR3F305.152
* O_FIXHD,O_INTHD,O_REALHD,O_LEVDEPC, PPCTL2.503
* LEN_FIXHD,O_LEN_INTHD,O_LEN_REALHD,O_LEN1_LEVDEPC, PPCTL2.504
* O_LEN2_LEVDEPC,ICODE,CMESSAGE) PPCTL2.505
IF (ICODE.GT.0) GOTO 999 WRB1F401.681
FT_LASTFIELD(NFTUNIT)=0 WRB1F401.682
ENDIF WRB1F401.683
*ENDIF WRB1F401.684
*IF DEF,WAVE WRB1F401.685
IF (SMID.EQ.4) THEN WRB1F401.686
WRITE(6,*)'PPCTL: Initialising new file on unit ',NFTUNIT GIE0F403.499
CALL INIT_PP
(NFTUNIT,TYPE_LETTER_1(NFTUNIT), WRB1F401.688
* LEN1_LOOKUP,PP_LEN2_MEANim(MEANLEV,W_IM), WRB1F401.689
* W_FIXHD,W_INTHD,W_REALHD,W_LEVDEPC, WRB1F401.690
* LEN_FIXHD,W_LEN_INTHD,W_LEN_REALHD,W_LEN1_LEVDEPC, WRB1F401.691
* W_LEN2_LEVDEPC,ICODE,CMESSAGE) WRB1F401.692
IF (ICODE.GT.0) GOTO 999 PPCTL2.506
FT_LASTFIELD(NFTUNIT)=0 PPCTL2.507
ENDIF PPCTL2.508
*ENDIF PPCTL2.509
LEN_PPNAME=LEN(PPNAME) PPCTL2.510
CALL FILE_CLOSE
(NFTUNIT,PPNAME,LEN_PPNAME,1,0,ICODE) GTD0F400.36
ENDIF PPCTL2.512
ENDIF PPCTL2.513
C----------------------------------------------------------------------- PPCTL2.514
999 RETURN DR240293.1004
END PPCTL2.525
*ENDIF PPCTL2.526