File: setfnd.f

package info (click to toggle)
nastran 0.1.95-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye, sid
  • size: 122,540 kB
  • sloc: fortran: 284,409; sh: 771; makefile: 324
file content (64 lines) | stat: -rw-r--r-- 1,899 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
      SUBROUTINE SETFND(*,SET,LSET,ID,NEXT)
C*****
C  FINDS AN ID IN A SORTED SET LIST WHICH MAY HAVE THE NASTRAN THROUGH
C  NOTATION.  IE.  6,-18 IMPLIES 6 THRU 18.
C
C  -SET- IS THE LIST OF IDS.
C  -LSET- IS THE LENGTH OF THE LIST IN -SET-.
C  -ID- IS THE ID BEING LOOKED FOR IN THE LIST -SET-.
C  -NEXT- IS A RELATIVE INDEX INTO THE LIST -SET-.  IT SHOULD BE SET
C  TO 1 ON THE FIRST CALL TO THIS ROUTINE FOR A GIVEN LIST AND THEN
C  RETURNED ON FUTURE CALLS.
C
C  THIS ROUTINE MOVES FORWARD ONLY UNTIL AN ID IN THE LIST IS GREATER
C  THAN THE ID BEING ASKED FOR.    -NEXT-  IF NOT RESET TO 1 WILL ALLOW
C  THE ROUTINE TO SEARCH ONLY FROM WHERE LAST SEARCH LEFT OFF.
C
C  THE NON-STANDARD RETURN IS TAKEN IN THE EVENT THE ID IS NOT IN THE
C  LIST.  A NORMAL RETURN IS TAKEN IF THE ID IS IN THE LIST.
C
C  -NEXT- SHOULD BE SET TO 1 ON THE FIRST CALL TO THIS ROUTINE OR WHEN
C  AN ID TO BE LOOKED FOR IS SMALLER THAN AN ID PREVIOUSLY LOOKED FOR.
C
C  IF IDS TO BE LOOKED FOR ARE NOT IN SORT AND THE SET LIST IS IN SORT
C  WITHOUT THE NASTRAN THROUGH NOTATION, THEN THE NASTRAN BINARY SEARCH
C  ROUTINE -BISRCH- SHOULD BE USED.
C
C  IT IS OK TO CALL THIS ROUTINE WITH MORE THAN ONE OF THE SAME IDS
C  WITHOUT RESETTING -NEXT-.
C*****
      INTEGER SET(LSET)
C
   10 ID1 = SET(NEXT)
   20 IF( NEXT - LSET ) 30,80,100
C
C     STILL POSITIONED WITHIN THE SET LIST.
C
   30 IF( ID - ID1 ) 100,110,40
C
C     CHECK FOR THRU CASE
C
   40 ID1 = SET(NEXT+1)
      IF( ID1 ) 50,70,70
C
C     YES POSITIONED IN A THRU CASE
C
   50 IF( ID + ID1 ) 110,110,60
C
C     ID BEING LOOKED FOR IS BEYOND THIS THRU CASE.
C
   60 NEXT = NEXT + 2
      GO TO 10
C
C     NOT IN A THRU CASE
C
   70 NEXT = NEXT + 1
      GO TO 20
C
C     AT THE LAST ID IN THE LIST
C
   80 IF( ID - ID1 ) 100,110,90
   90 NEXT = NEXT + 1
  100 RETURN 1
  110 RETURN
      END