From 7dfcc480ba1e19bd3232349fc733caef94034292 Mon Sep 17 00:00:00 2001 From: stainer_t Date: Mon, 8 Sep 2025 13:48:49 +0200 Subject: Initial commit from Polytechnique Montreal --- Dragon/src/PSPFIL.f | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Dragon/src/PSPFIL.f (limited to 'Dragon/src/PSPFIL.f') 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 -- cgit v1.2.3