You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.5 KiB
82 lines
2.5 KiB
C Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
C NTESS, the U.S. Government retains certain rights in this software.
|
|
C
|
|
C See packages/seacas/LICENSE for details
|
|
|
|
C=======================================================================
|
|
SUBROUTINE USIDS (IFLD, INTYP, CFIELD, IFIELD,
|
|
& LOLD1, IDOLD1, LOLD2, IDOLD2, LENNEW, IDNEW, *)
|
|
C=======================================================================
|
|
|
|
C --*** USIDS *** (GEN3D) Read list of IDs
|
|
C -- Written by Amy Gilkey - revised 05/21/86
|
|
C --
|
|
C --USIDS processes a list of IDs. The ID list is checked for
|
|
C --repetitions with the existing list and with itself. Repetitions
|
|
C --are flagged with an error message and ignored.
|
|
C --
|
|
C --Parameters:
|
|
C -- IFLD - IN/OUT - the free-field index
|
|
C -- INTYP - IN - the free-field type
|
|
C -- CFIELD - IN - the free-field characters
|
|
C -- IFIELD - IN - the free-field integers
|
|
C -- LOLD1, LOLD2 - IN - the length of the existing IDs
|
|
C -- IDOLD1, IDOLD2 - IN - the existing IDs
|
|
C -- LENNEW - OUT - the length of the returned IDs
|
|
C -- IDNEW - OUT - the returned IDs
|
|
C -- * - return statement iff serious error
|
|
|
|
PARAMETER (MAXSET=10)
|
|
|
|
INTEGER INTYP(*)
|
|
CHARACTER*8 CFIELD(*)
|
|
INTEGER IFIELD(*)
|
|
INTEGER IDOLD1(*), IDOLD2(*)
|
|
INTEGER IDNEW(*)
|
|
|
|
CHARACTER*5 STRA
|
|
LOGICAL DUPID
|
|
|
|
CALL INIINT (MAXSET, 0, IDNEW)
|
|
LENNEW = 0
|
|
|
|
10 CONTINUE
|
|
IF (INTYP(IFLD) .GE. -1) THEN
|
|
|
|
CALL FFINTG (IFLD, INTYP, IFIELD,
|
|
& 'set id', 0, ID, *50)
|
|
|
|
IF (LENNEW .GE. MAXSET) THEN
|
|
CALL INTSTR (1, 0, MAXSET, STRA, LSTRA)
|
|
CALL PRTERR ('CMDERR',
|
|
& 'Number of IDs must be less than ' // STRA(:LSTRA))
|
|
GOTO 60
|
|
END IF
|
|
|
|
DUPID = .FALSE.
|
|
DO 20 I = 1, LOLD1
|
|
IF (ID .EQ. IDOLD1(I)) DUPID = .TRUE.
|
|
20 CONTINUE
|
|
DO 30 I = 1, LOLD2
|
|
IF (ID .EQ. IDOLD2(I)) DUPID = .TRUE.
|
|
30 CONTINUE
|
|
DO 40 I = 1, LENNEW
|
|
IF (ID .EQ. IDNEW(I)) DUPID = .TRUE.
|
|
40 CONTINUE
|
|
IF (DUPID) THEN
|
|
CALL INTSTR (1, 0, ID, STRA, LSTRA)
|
|
CALL PRTERR ('CMDWARN',
|
|
& 'Duplicate ID ' // STRA(:LSTRA) // ' ignored')
|
|
GOTO 50
|
|
END IF
|
|
|
|
LENNEW = LENNEW + 1
|
|
IDNEW(LENNEW) = ID
|
|
50 CONTINUE
|
|
GOTO 10
|
|
END IF
|
|
|
|
60 CONTINUE
|
|
RETURN
|
|
END
|
|
|