summaryrefslogtreecommitdiff
path: root/Dragon/src/PSPFIL.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 /Dragon/src/PSPFIL.f
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Dragon/src/PSPFIL.f')
-rw-r--r--Dragon/src/PSPFIL.f89
1 files changed, 89 insertions, 0 deletions
diff --git a/Dragon/src/PSPFIL.f b/Dragon/src/PSPFIL.f
new file mode 100644
index 0000000..0938b0b
--- /dev/null
+++ b/Dragon/src/PSPFIL.f
@@ -0,0 +1,89 @@
+*DECK PSPFIL
+ SUBROUTINE PSPFIL(ISPSP,JSPSP,NAMPSP,NPAGE)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* PSP file analysis.
+*
+*Copyright:
+* Copyright (C) 1999 Ecole Polytechnique de Montreal
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version
+*
+*Author(s):
+* G. Marleau
+*
+*Parameters: input/output
+* ISPSP PSP file unit.
+* JSPSP PSP file mode:
+* = 0 new;
+* = 1 update.
+* NAMPSP PSP file name.
+* NPAGE page number.
+*
+*-----------------------------------------------------------------------
+*
+ IMPLICIT NONE
+ INTEGER IOUT
+ CHARACTER NAMSBR*6,PROGNM*6
+ PARAMETER (IOUT=6,NAMSBR='PSPFIL',PROGNM='DRAGON')
+*----
+* ROUTINE PARAMETERS
+*----
+ INTEGER JSPSP,ISPSP,NPAGE
+ CHARACTER NAMPSP*12
+*----
+* LOCAL VARIABLES
+*----
+ INTEGER IRL,IDR,ILINE,IPF,IPN
+ CHARACTER CMDSTR*132,CFMT*16
+ REAL XYPOS(2)
+ NPAGE=0
+ IF(JSPSP .EQ. 1) THEN
+*----
+* TEST IF ADEQUATE DRAGON PS FILE TYPE
+*----
+ DO 100 IRL=1,3
+ READ(ISPSP,'(A132)') CMDSTR
+ 100 CONTINUE
+ READ(ISPSP,'(A132)') CMDSTR
+ IDR=INDEX(CMDSTR,PROGNM)
+ IF(IDR .EQ. 0) CALL XABORT(NAMSBR//
+ > ': NOT A DRAGON GENERATED POSTSCRIPT FILE')
+ ILINE=0
+ IPF=1
+*----
+* LOCATE LAST PAGE NUMBER
+*----
+ 110 CONTINUE
+ READ(ISPSP,'(A132)',END=115) CMDSTR
+ IPN=INDEX(CMDSTR,'%%Page')
+ IF(IPN .NE. 0) THEN
+ IPN=INDEX(CMDSTR,' ')
+ IPF=INDEX(CMDSTR(IPN+1:132),' ')-1
+ CFMT=' '
+ WRITE(CFMT,'(2H(I,I1,1H))') IPF
+ READ(CMDSTR(IPN+1:IPN+IPF),CFMT) NPAGE
+ ENDIF
+ GO TO 110
+ 115 CONTINUE
+ BACKSPACE ISPSP
+*----
+* SET NEXT PAGE NUMBER AND PREPARE FOR OUTPUT
+*----
+ NPAGE=NPAGE+1
+ XYPOS(1)=0.5
+ XYPOS(2)=0.5
+ CALL PSPAGE(ISPSP,NPAGE,XYPOS)
+ ELSE
+ CALL PSHEAD(ISPSP,NAMPSP,PROGNM)
+ NPAGE=NPAGE+1
+ XYPOS(1)=0.5
+ XYPOS(2)=0.5
+ CALL PSPAGE(ISPSP,NPAGE,XYPOS)
+ ENDIF
+ RETURN
+ END