summaryrefslogtreecommitdiff
path: root/Utilib/src/GUITOC.f
diff options
context:
space:
mode:
authorstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
committerstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
commit7dfcc480ba1e19bd3232349fc733caef94034292 (patch)
tree03ee104eb8846d5cc1a981d267687a729185d3f3 /Utilib/src/GUITOC.f
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Utilib/src/GUITOC.f')
-rw-r--r--Utilib/src/GUITOC.f90
1 files changed, 90 insertions, 0 deletions
diff --git a/Utilib/src/GUITOC.f b/Utilib/src/GUITOC.f
new file mode 100644
index 0000000..1e11563
--- /dev/null
+++ b/Utilib/src/GUITOC.f
@@ -0,0 +1,90 @@
+*DECK GUITOC
+ SUBROUTINE GUITOC(INTVAR,CARVAR,NC4 ,NELEM )
+C
+C------------------------------ GUITOC ------------------------------
+C
+C PROGRAMME STATISTICS:
+C NAME : GUITOC
+C ENTRY : GUITOC
+C USE : GANLIB UTILITY PROGRAM
+C TRANSFERS INTEGER VARIABLE TO CHARACTER VARIABLE
+C MODIFIED : 98/11/23 G. MARLEAU
+C CREATION DATE
+C
+C ROUTINE PARAMETERS:
+C INPUT
+C INTVAR : INTEGER VARIABLE I(NC4,NELEM)
+C NC4 : NUMBER OF CHARACTER*4 BLOCKS IN
+C CARVAR TO TRANSFER IN INTVAR I
+C NBELEM : NUMBER OF ELEMENTS TO TRANSFER FROM
+C CARVAR
+C INPUT/OUTPUT
+C CARVAR : CHARACTER VARIABLE C(NELEM)*(*)
+C
+C------------------------------ GUITOC ------------------------------
+C
+ IMPLICIT NONE
+ INTEGER NC4,NELEM,INTVAR(NC4,NELEM)
+ CHARACTER CARVAR(NELEM)*(*)
+C----
+C LOCAL PARAMETERS
+C----
+ INTEGER LENCAR,NBC4,NRESTE,IELEM,IC4,IDC,IFC
+ CHARACTER FMT*8,BLANK*1
+ SAVE BLANK
+ DATA BLANK /' '/
+C----
+C FIND LENGTH OF CHARACTER VARIABLE
+C----
+ LENCAR=LEN(CARVAR(1))
+ NBC4 =LENCAR/4
+ IF(NBC4 .GE. NC4) THEN
+C----
+C CHARACTER VARIABLE LARGER OF EQUAL TO SPACE IN
+C INTEGER VARIABLE
+C TRANSFER FROM INTEGER VARIABLE ONLY 4*NC4 ELEMENTS
+C---
+ WRITE(FMT,1000) NC4
+ DO 100 IELEM=1,NELEM
+ WRITE(CARVAR(IELEM),FMT) (INTVAR(IC4,IELEM),IC4=1,NC4)
+ DO 101 IC4=4*NC4+1,LENCAR
+ WRITE(CARVAR(IELEM)(IC4:IC4),'(A1)') BLANK
+ 101 CONTINUE
+ 100 CONTINUE
+ ELSE
+C----
+C CHARACTER VARIABLE SHORTER THAN SPACE IN
+C INTEGER VARIABLE
+C TRANSFER FROM INTEGER VARIABLE ONLY 4*NBC4 ELEMENTS
+C AND PART OF NBC4+1 ELEMENT AS DESCRIBED BY NRESTE
+C---
+ WRITE(FMT,1000) NBC4
+C----
+C LENGHT OF CHARACTER VARIABLE IS A FACTOR OF 4
+C----
+ DO 110 IELEM=1,NELEM
+ READ(CARVAR(IELEM),FMT) (INTVAR(IC4,IELEM),IC4=1,NBC4)
+ 110 CONTINUE
+ NRESTE=MOD(LENCAR,4)
+ IF(NRESTE .NE. 0 ) THEN
+C----
+C LENGHT OF CHARACTER VARIABLE IS NOT A FACTOR OF 4
+C----
+ WRITE(FMT,1001) NRESTE
+ IDC=4*NBC4+1
+ IFC=4*NBC4+NRESTE
+ DO 120 IELEM=1,NELEM
+ WRITE(CARVAR(IELEM)(IDC:IFC),FMT) INTVAR(NBC4+1,IELEM)
+ 120 CONTINUE
+ ENDIF
+ ENDIF
+C----
+C RETURN
+C----
+ RETURN
+C----
+C FORMAT
+C----
+ 1000 FORMAT('(',I4,'A4)')
+ 1001 FORMAT('(A',I1,') ')
+ END