
# SYSLIB ܿȤ

SYSLIB , ƥ˰¸, ե򤪤
ʤäꤹ롼󤬴ޤޤƤ, ܿκդɬפǤ. , 
٥Ǥε¸Ϥʤ. (Ĥޤ FORTRAN 77 λͤϰϤǽ
ȤǤ. )

* GLIQNP/GLRQNP/GLCQNP ˴ؤ

GLIQNP/GLRQNP ϥƥ˰¸ѥ᡼ޤǤΤ, Ϥ
ƽ񤭤Ƥɬפ. äդɬפʥѥ᡼: 

  'INTMAX'  : 1ɽǤ
  'REALMAX' : 1ɽǤμ¿
  'REALMIN' : 1ɽǤǾμ¿
  'REPSL'   : иδ(¿ɽиκͤ10)

Ǥ. ܤ, MATH1ץޥ˥奢򻲾Ȥ줿. Υѥ᡼
 make κ, ȥåץǥ쥯ȥˤ Mkinclude 
ͤ򻲾Ȥ gliqnp.g, glrqnp.g Υƥץ졼ʬ(@ǤϤޤ)
֤뤳ȤˤäƤʤ, η gliqnp.f, glrqnp.f, 
. ʳˤĤƤϥƥ˱Ŭѹ줿.

INTMAX ʤɤ, դĤ configure ˤäƼưŪꤵ. 

ޤ GLCQNP ⥷ƥ˰¸ѥ᡼ޤǤΤ, Ϥ˱
ƽ񤭤Ƥɬפ. äդɬפʥѥ᡼:

  'DSPATH'  : ƥब餫Ѱդѥ̾

Ǥ. ܤ, MATH1ץޥ˥奢򻲾Ȥ줿. Υѥ᡼
 make κ, ȥåץǥ쥯ȥˤ Mkinclude Ƥ
DBASEDIR ͤ򻲾Ȥ glcqnp.g Υƥץ졼ʬ(@ǤϤޤ)֤
뤳ȤˤäƤʤ, η glcqnp.f . 
ˤĤƤϥƥ˱Ŭѹ줿.

* RPNENV/RPNOPT/RPNXFL ˴ؤ

rpnenv.f, rpnopt.f, rpnxfl.f ϼ¹Իץ򤽤줾Ķѿ, 
ޥɥ饤, Υե뤫ɤ߹िΥ롼Ǥ. 
, math1 ʤΥ줿ΤǤ뤬, ¹Իץδ, 
Ǿ饤֥פκǲ̤Ǥʤ٤ΤǤΤ, SYSLIB 
Ƥ. rpnxfl.f Υ롼Ǥ, Ĺ 80 ʸѿ1쥳ɤ
ɤ褦ˤʤäƤ. ᥤե졼Ϥ, 1쥳ɤ 80 꾮
ĹΥեɤ⤦ȤȤ, ʬԹ򵯤ǽ. 
ξ, 쥳Ĺ 80 Ȥ뤫, ƤʸѿĹ1
ĹʲˤƤɬפ.

* IUFOPN ˴ؤ

IUFOPN  math1 ʤΥ줿ΤǤ뤬, rtpxfl.f,
rtcxlf.f 뤿 SYSLIB Ƥ. IUFOPN Ǥϡֹ
199ޤǤĴ٤ơ¸ߤס֥ץ󤵤Ƥʤֹ
֤Υå INQUIRE ʸˤäƤʤäƤ뤬֤
¸ߡפ˴ؤƵ¸줿Τǡ֤Ρ¸ߡפ򼨤ѿ
Ĥͤ .TRUE. Ȥ뤳ȤˤƤ롥

* CFSRCH ˴ؤ

Υ롼ϥѥ̾ƬʬʬΥꥹȤȹ礻, ¸ߤ
ե̾õ, ֤̾褦ʥ롼Ǥ, ƥ˰¸
. Ĥޤ, CFSRCH  UNIX Τ褦ʥĥ꡼¤äե륷
ǰƬˤƺƤ, ᥤե졼ϤΤ褦ʥե륷
ˤƤϥե̾Υ롼Ƥɬפ. , 
ѰդƤ롼Ǥ, Ūˤñ2ʸꥹȤ
礻ƥե뤬¸ߤ뤫ɤĴ٤ƤʤΤ, Ƭʬ, 
ʬפȤˤ餺, ե̾ǤȤƤ
ͿƤФΤޤѤ뤳ȤǤ. , ֥ѥ̾Ƭ
ʬȤƶꤹȥȥǥ쥯ȥ򸡺פȤͤ
󤫤, ꤷʤ褦ˤ뤫, 򤬻ꤵ줿Ȥư
(Ȥ, ⤷ʤ)ɬפ.

Υǥ쥯ȥѰդƤץǤ, ե̾Ƭʬ
ȡʬפʸñϢ뤹뤳Ȥˤä. ä, 
ȤХե̾ /usr/local/bin/dclfrt ˤĤ, ƬʬפȤ
 /usr/local/bin/ ꤷ, ʬפȤƤ dclfrt ꤹ뤳
(ƬʬפκǸ / ˺ʤ褦դ줿). 

* LCHREQ ˴ؤ

SYSLIB ˤ, xxPGET/xxPSET (ºݤˤϤβ xxPQID)ΰ CP 
˴ؤʸȾʸζ̤ʤʸӤ뤿Υ롼 LCHREQ 
. ASCII ɤˤĤƤϺǽΥץѤФ褤. ¾
ɷϤˤĤƤ2ĤΥץѤФ褤. ξ 
misc1/chglib  cupper ѤƤ뤳Ȥդ뤳. ޤʸ
ʤ褦ʥƥˤƤ LCHREQ ǸΥץΤ褦ˤ
Ф褤.

ʤ, ΥѥåǤ ASCII ɷϤбΤɸȤƤ.

*-----------------------------------------------------------------------
*     LCHREQ FOR ASCII CHARACTER CODE
*-----------------------------------------------------------------------
      LOGICAL FUNCTION LCHREQ(CH1,CH2)

      CHARACTER CH1*(*),CH2*(*)


      LCHREQ=.TRUE.
      LCH1=LEN(CH1)
      LCH2=LEN(CH2)
      LCHMAX=MAX(LCH1,LCH2)
      LCHMIN=MIN(LCH1,LCH2)

      DO 10 I=1,LCHMIN
        IDX1=ICHAR(CH1(I:I))
        IDX2=ICHAR(CH2(I:I))
        IF (IDX1.NE.IDX2) THEN
          IF (65.LE.IDX1 .AND. IDX1.LE.90) THEN
            LCHREQ=(IDX2-IDX1).EQ.32
          ELSE IF (97.LE.IDX1 .AND. IDX1.LE.122) THEN
            LCHREQ=(IDX1-IDX2).EQ.32
          ELSE
            LCHREQ=.FALSE.
          END IF
          IF (.NOT.LCHREQ) RETURN
        END IF
   10 CONTINUE
      IF (LCH1.EQ.LCH2) RETURN

      IBLK=ICHAR(' ')
      IF (LCH1.GT.LCH2) THEN
        DO 20 I=LCHMIN+1,LCHMAX
          LCHREQ=ICHAR(CH1(I:I)).EQ.IBLK
          IF (.NOT.LCHREQ) RETURN
   20   CONTINUE
      ELSE
        DO 30 I=LCHMIN+1,LCHMAX
          LCHREQ=ICHAR(CH2(I:I)).EQ.IBLK
          IF (.NOT.LCHREQ) RETURN
   30   CONTINUE
      END IF

      END
*-----------------------------------------------------------------------
*     LCHREQ FOR GENERAL CHARACTER CODE (CUPPER IN MISC1/CHGLIB IS USED)
*-----------------------------------------------------------------------
      LOGICAL FUNCTION LCHREQ(CH1,CH2)

      CHARACTER CH1*(*),CH2*(*)

      CHARACTER CX1*1,CX2*1


      LCHREQ=.TRUE.
      LCH1=LEN(CH1)
      LCH2=LEN(CH2)
      LCHMAX=MAX(LCH1,LCH2)
      LCHMIN=MIN(LCH1,LCH2)

      DO 10 I=1,LCHMIN
        CX1=CH1(I:I)
        CX2=CH2(I:I)
        CALL CUPPER(CX1)
        CALL CUPPER(CX2)
        LCHREQ=LCHREQ.AND.(CX1.EQ.CX2)
        IF (.NOT.LCHREQ) RETURN
   10 CONTINUE
      IF (LCH1.EQ.LCH2) RETURN

      IBLK=ICHAR(' ')
      IF (LCH1.GT.LCH2) THEN
        DO 20 I=LCHMIN+1,LCHMAX
          LCHREQ=ICHAR(CH1(I:I)).EQ.IBLK
          IF (.NOT.LCHREQ) RETURN
   20   CONTINUE
      ELSE
        DO 30 I=LCHMIN+1,LCHMAX
          LCHREQ=ICHAR(CH2(I:I)).EQ.IBLK
          IF (.NOT.LCHREQ) RETURN
   30   CONTINUE
      END IF

      END
*-----------------------------------------------------------------------
*     LCHREQ FOR THE SYSTEM ONLY ALLOWING UPPER CASE CHARACTERS
*-----------------------------------------------------------------------
      LOGICAL FUNCTION LCHREQ(CH1,CH2)

      CHARACTER CH1*(*),CH2*(*)


      LCHREQ=CH1.EQ.CH2

      END
