                           - 1 -






                          

        "C"  ࠧࠡ⠭  BELL  LABORATORIES  ᮬ
  ; ଠ WHITESMITS LTD. ᤥ     -
  ࠭  ᯥ䨪権 몠. 譨 ᯥ䨪樨 -
  樮 ⥬ IDRIS,  ⠪ 設⢠ ⥬  ண-
  ࠬ ᭮,  ࠧ,    ᯥ䨪  ⥬
  UNIX, ࠧࠡ⠭ ⠬  ᮬ    ᮭ.
        ᢥ 짮⥫: UNIX - ࣮  ઠ  BELL
  LABORATORIES; IAS, PDP-11, RSTS/E, RSX-11M, RT-11, VAX, VMS
     ⠫ ନ  ன 11 - ࣮  ઠ
  DIGITAL EQUIPMENT CORPORATION; CP/M - DIGITAL RESEARCH CO.;
  MC68000    VERSADOS  -  MOTOROLA  INC.;   ISIS   -   INTEL
  CORPORATION; A-NATURAL  IDRIS - WHITESMITHS,LTD.
        ᠭ 楤, 室   ᮧ -
   ணࠬ,   㭪樨  몠 "C"    RT-11.


























                           - 2 -


            1


                             

                                                  1

  1.  䥩᭠ ⥪ ⥬ RT-11                3
  1.1.    襭 - ணࠬ ⥬ RT-11          5
  1.2.     "C"-ணࠬ                          6
  1.3.    _main  - 맮 㭪樨 MAIN                      7
  1.4.    _pname -  ணࠬ                           8
  1.5.    close  -  䠩                            9
  1.6.    create - ᮧ 䠩                            10
  1.7.    emt    - ⥬ 맮                         11
  1.8.    emt375 - ⥬ 맮 0375                    12
  1.9.    exit   - 뢠 믮 ணࠬ         13
  1.10.   fcall  - 맮 ࠭-ணࠬ                 13
  1.11.   lseek  - ⠭  䠩  㪠⥫
                   ⥭/                           14
  1.12.   mkexec - ᮧ ᯮ塞 䠩             15
  1.13.   onexit - 맮 㭪樨    室  
                   ணࠬ                               16
  1.14.   onintr - 誠 뢠                      17
  1.15.   open   -  䠩                            17
  1.16.   rad50  - ८ࠧ ASCII  RAD50            18
  1.17.   read   - ⥭  䠩                         19
  1.18.   remove - 㤠 䠩                            20
  1.19.   sbreak - ⠭ ⥬ ࠧ
                   (SYSTEM BREAK)                          20
  1.20.   uname  - ᮧ   䠩                 21
  1.21.   write  -   䠩                           22















                           - 3 -

               1. 䥩᭠ ⥪ ⥬ RT-11
              

        ࠭樨 ணࠬ, ᠭ  "C"   ࠡ
   設  PDP-11    ࠢ  樮  ⥬
  RT-11, 室 뢠 ᫥騥 :

         - 譨 䨪   ࠭     
           孥, ⠪       ॣ,    祭
            ⮫쪮  ॣ.  䨪  ࠧ-
               㪢.    ન
              '.'.   㯮ॡ-
            䨪 "__".

         -  㭪樨 (FUNCTION TEXT) 筮  
            ᥪ C$TEXT,        
            .  譨 㭪権 '  
            .GLOBC.

 ਬ砭. ࠧ稢,  .GLOBL.

         - ࠫ , ⠪    ப,  ⠭
           ⨯ DOUBLE  祢 ⠡ 筮 
            ᥪ C$DATA.

         - 樠㥬  筮   ᥪ-
            C$DATA.  譨  ' १
           .GLOBC.

         - 樠㥬 '      
           뫮  .GLOBC,  뫪   ணࠬ
           䠩.

         - 맮 㭪権 믮 ᫥騬 ࠧ:
                - 1. 㬥  ⥪   ६   ࠢ
                  .   ᨬ    ந室
                  ࠭   楫,    -
                   -  ﬨ  DOUBLE.
                - 2. 맮 १ 'JSR PC, FUNC'.
                - 3. 㬥 ⠫  ⥪.
         - 饭 祭  室    
           ॣ஢: R0, R1, FR0   FR1.    ᫮  
           ।.  ⠫ ॣ  ࠭.  
           ᨬ  ⨯, 饭  祭  -
           頥  R0 (CHAR, ࠭      
           INTEGER, INTEGER  POINTER TO), R0,  R1  (LONG),
           FR0 (FLOAT, ७  DOUBLE,  DOUBLE).  ᫨

                           - 4 -

            饩 窨    ᯮ짮-
           , ⮣   FR0      祩
            C$FAC,  C$FAC+010     FR1.
           ᫨  FPP  ᯮ, ⮣  -
             室  㭪樨 "C"  ०    
           DOUBLE  INTEGER.

         -  ⥪ ন  ᥬ  㭪ﬨ  "C",
            ᯮ R5  ⢥ 㪠⥫ .  
           맮 㭪樨 饭 'JSR R5, C$SAV'  㧨
            ⥪ ᮤন ॣ஢ R5, R4, R3  R2,    
           R5 ⠭ 㪠⥫  ᮤন R5, 饥 
           ⥪.  㬥  ⥯  室     ᠬ
           4(R5), 6(R5)    ..  AND  AUTO  STORAGE  MAY  BE
           RESERVED ON THE STACK AT -7(R5) ON DOWN.  -
             饭 'JMP  C$RET'  ॣ  R5  㤥
           ᯮ짮  ⠭ ᮤন R2, R3,
           R4, R5  SP, ⥬ ந   'RTS PC'.
           ।饥  ᮤন  SP  ,  ⮬
           ⥪  室 ⠭ ᠬ,  
           ॣ   ᯮ.    १
           'JMP C$RETS'  ⠭ ᮤন R2, R3,
           R4.

         - ।⠢ : INTEGER -    ᠬ,  
           SHORT, ࠭   ,    -  訩
           .  LONG  INTEGER  ࠭      塠⭮
           INTEGER,   訩 . 騥 ᫠
           ।⠢,   FPP   PDP-11,  4
             FLOAT, 8   DOUBLE,    ࠭
            2-  4-  ᫠ ⨯ SHORT INTEGER 
           뢠饬 浪 稬.

         - ࠭  (筮  樨):    -
             ࠭     묨
           ⠬.   ஢  ࠢ-
            , ᫨  㬥⮢ ⨯ LONG  DOUBLE
           㪠  祬  筮 樨.

         -  :   ࢠ ।  -
            뫪  ।  ப .TITLE.


   .     
       C$RET (4), C$RETS(4), C$SAV(4)



                           - 5 -

       1.1. 襭 - ணࠬ ⥬ RT-11
      

         
       #include <RT11.H>

          ⠭  㭪  ⥬  ⥪,
  뢠  "C" ணࠬ, 뢠   ।
  ᮣ襭,    ন  ६  -
  樨    祭  ⥬  䠩  
  <RT11.H>   ப ணࠬ.   ᯮ-
        ⠭⭮    <STD.H>.
  ⥬  । ࠧ ⥬ ࠬ-
    ஥ ⢮  ᮢ.
       ᭮ ।:

  __CTRLZ    - 032 (CTRL-Z), EOF ⥫⠩;

  __EMTERR   - ᨬ   052,  訡 EMT;

  __END      - INT   050, 訩 । 짮⥫;

  __FACRE    - 1, ᮧ 䫠;

  __FADEL    - 2, 㤠 䫠;

  __FAOPN    - 0,  䫠;

  __JSW      - INT   044, ᫮ ﭨ ணࠬ;

  __MAXCMD   - 183, ᨬ쭮 ⢮ ᨬ, ।-
                १ .CHAIN.

  __NFILES   - 10, ᨬ쭮 ⢮  䠩;

  __RCB      -  RCB,  ࠢ 䠩 
               WHITESMITHS;

  __SYSCLOS  - 03000,  EMT CLOSE;

  __SYSDEL   - 00000,  EMT DELETE;

  __SYSDSTAT - 0342,  EMT DSTATUS;

  __SYSENT   - 01000,  EMT ENTER;

  __SYSOPEN  -  EMT OPEN

                           - 6 -

  __SYSREAD  - 04000,  EMT READ;

  __SYSWRIT  - 04400,  EMT WRITE;

  __STARTCMD - 05510, 砫 ଠ樨  .CHAIN;

  __WCR      - 4,  ﭨ  RCB;

  __WDIRT    - 16;

  __WOPEN    - 1;

  __WTTY     - 2.

   .     
       RT-11 ADVANCED PROGRAMMER'S GUIDE (㪮⢮ ⭮-
   ணࠬ RT-11).


       1.2.  "C" ணࠬ
      

       ணࠬ, ᠭ  "C",   ᪮
   ।묨 '묨 ﬨ, ࠧ騬  ⠭-
   १⭮  㦥  "C".  ᯮ  ⠭
  '騪' ,     ।묨  묨 ࠭-
  ﬨ. ..  "C"  祭  ⥭ᨢ  ᯮ ⥪, 
  ᥣ  室 ᮧ   ,  祬  01000 ,
  ।⠢塞  㬮砭, ⮬  ᫥ ᯮ짮
  ⥪, 稭騩  03000   騩      
  ப, ᠭ   0510; ⮣   筮
   設⢠ "C"-ணࠬ. 稭 ⥪   
  室  㢥祭  ( ᯮ    /B:3000   
  /M:3000 ).

       CHDR.OBJ  -    ,  騩  ࠢ  
  ᪥ ணࠬ (᫨  ਪ).  뢠 -
  ᠭ    ⥪ RT-11 㭪 _main(),  뤠
  ᪠ ">", ⠥    ப,  ७ࠢ
  㪠  ⠭  /뢮,  뢠   짮⥫-
   㭪 main (ac,av)  묨 㬥⠬   -
    祭,  饭 main, 㭪樨 exit (). ᥣ
  ⮣   , ᫨  ᯨ᪥ <FILES> ᮤন -
  ।      _main(). <FILES> -  ᯨ᮪  
       ' 㫥, 뤠 ஬
  "C"  ᥬ஬ MACRO   ⮬ 䥩 ॡ
  "C", ᠭ  㪮⢥  ਬ १⭮ -

                           - 7 -

  ⥪  "C" (C COMPILER RUNTIME LIBRARY MANUAL).
     - ।  䠩     ।
  㭪 main()  _main(),  ⠪  㣨 㫨, -
  ,   ⠭⭮ ⥪ 騥.

        㫨 ७ᨬ ⥪,  ⠪ ,  -
  室  ⢨  ⥬ RT-11,  ᮤঠ  
  ⥪ CLIB.    ᫥.


       

       ஢   ணࠬ ECHO.C:

          RUN CPP
          SOURCE? ECHO
          MACRO
          *ECHO,=ECHO
          LINK
          *ECHO,ECHO=CHDR,ECHO,CLIB/B:3000/M:3000
          RUN ECHO


       1.3. _main - 맮 㭪樨 MAIN
      

    
       _main - 맮 㭪樨 MAIN.

         
       BOOL _main()

           
       _main -  㭪,  뢠      ᪥
  "C"-ணࠬ.  ਭ    ப,  ᫨  
  ,  , ࠧ   㬥,  ७-
  ࠢ STDIN  STDOUT,   㪠      ப,
  ⥬ 뢠 ୥  MAIN.
       ᫨ ணࠬ 뫠  饭  १  ⥬  맮
  .CHAIN,  ⠥,   ப  ᠭ  
   0510  ⥬  裡    稢  
  ᨬ NUL,  ⨢ 砥   .GTLIN,  ᯮ
  ᪠ '>', 뢠  ப  ⮬ .
        ப ਭ  ᫥⥫쭮
  㬥⮢, ࠧ ஡. ᫨ 㬥 稭
   ᨬ '<', ⮣ ⮪ ⮣ 㬥 ⠥ -
   뢠  ⥭ ⥪⮢ 䠩,  㤥

                           - 8 -

  ᯮ짮  STDIN. ᫨ 㬥 稭  ᨬ-
   '>', ⮣ ⠢   ⠥   䠩,
  뢠   ⥪  ᯮ㥬  䠩
  STDOUT.  ⠫  㬥  ।    MAIN,
  맮 ண ᠭ   ᠭ ணࠬ  "C"
  (C SUBROUTINE  MANUAL).      (av [0])   
  _pname.
        14    044  (᫮  ﭨ  ணࠬ  
  RT-11)  ⠭,  ࠧ    ᨬ  
  ॣ.

       
       E᫨    뢠 _main     易  
  ⨬ 䠩 /뢮,   ᢮  _main:

          COUNT _main()
          {
             <⥫ >
          }

          
       _main 頥 㫥᪮ 祭, 祭  ᫥
  맮 ୥ ,  ஥  ⥬  ᯮ  
  ⠭  ᯥ譮 砭 ࠡ SUCCS  053, ᫨
    ,    ⠭    訡  SEVER,  ᫨
  .

   .     
       _pname, exit


       1.4. _pname -  ணࠬ
      

    
       _pname -  ணࠬ.

           

       _pname -  稢饥 ᨬ NUL ,  -
  ஬ 뢠 ணࠬ,  ࠩ   ६  -
  樨.  ᫨    ணࠬ  짮⥫     ।
  _pname, ⮣ 筠 楤   "ERROR", ..
   筮 ᯮ  祭 ᯥ⪨ -
  ⨪.
       㫥 㬥  ப ⠭ ࠢ-

                           - 9 -

   _pname.

   .     
       main


       2.6. close -  䠩
      

    
       close -  䠩.


         

          FILE close (fd)
          FILE fd;

           
       楤 뢠 䠩, 易   䠩  -
  ਯ஬ fd,  ਯ 㯭    ᯮ짮
  ᫥騬 맮 open  create.  /뢮 ᢮-
    쭥襣 ᯮ짮.

          
       close 頥 ᯮ     䠩
  ਯ, ᫨ 䠩 ,  ⥫쭮 ᫮ (-1
    訡 RT-11,  ᫮  ᪨    祭
  -256).

       
       ஢ ந쭮 ᫠ 䠩:

          while (0 <= (fd = getfiles (&ac, &av, STDIN, -1)))
          {
             while (0 < (n = read(fd, buf, bufsize)))
               write (stdout, buf, n);
             close (fd);
          }

   .     
       create, open, remove, uname






                           - 10 -

       1.6. create - ᮧ 䠩
      

    
       create - ᮧ 䠩.


         
          FILE create (name, mode, rsize)
          TEXT *name;
          COUNT mode;
          BYTES rsize;

           
       楤   䠩 ⥬ 䠩    㪠
  . ᫨ 䠩  ⠪  㦥 ,  ।-
  ⥫쭮 㭨⮦.  䠩     ⥬
  㬮砭.
       ᫨ rsize=0, ⮣ ᨬ <CR>  NUL    㤠-
  ,   뢮 ।  ᨬ <LF> ⠢
  <CR>;  ⨢ 砥  ᨬ ।  -
  . mode .

          

       頥 䠩 ਯ ᮧ 䠩,  ᫨
  䠩 ᮧ,  ⥫쭮 ᫮ (-1    訡
  RT-11 ᫮ ᪨  祭 -256).

       

          if ((fd = create ("XEQ", write, 1)) < 0)
             putstr (stderr,
                  "  ᮧ XEQ\n", NULL);

   .     
       close, open, rad50, remove, uname

         
            㪠뢠  ࠧ  䠩
   室.







                           - 11 -
       1.7. emt - ⥬ 맮
      

    
       emt - ⥬ 맮.

    
       _pname -  ணࠬ.

         

          COUNT emt (code, r0, ...)
             COUNT code;
             TEXT *r0;
             ...

           
         楤 emt     ⥬
  맮 RT-11.  ந  emt,  祩  訩  
    訬  ⮬  code,    㬥  r0  
  ॣ r0, ⥬ 믮 emt   ⠢訬  㬥⠬
   ⥪. ᫨ - ⭠   emt
  ॡ  㬥⮢  ⥪,        -
  ⢮,     祭      뢠饩
  ணࠬ.

          
       ᫨ ⥬ 맮 ࠡ⠭ ( ७ 襭),
  emt 頥 ᮤন r0 ᫥  믮,  㬭
  ᪨  077777 ( ࠭⨨ ⥫쭮  祭
  ᨬ  ᮤন);  ⨢ 砥 emt  -
  頥  訡 RT-11, ᫮  ᪨    祭
  -0400 ( ࠭⨨  ⥫쭮).

       
        ᨬ  ᮫:

          while ((c=emt (0340, 0)) < 0)
                  ;
        䠩:

          if (emt (0374, sysclose + chan) < 0)
             error("  \n");

   .     
       emt375, rt-11 advanced programmer's guide.



                           - 12 -

         
       ਭ㤨⥫쭮 ⠭ r0  ⥫쭮  -
     , ਬ  砥  .SETTOP.


       1.8. emt375 - c⥬ 맮 0375
      

    
       emt375 - ⥬ 맮 0375.

         

          COUNT emt375 (code, args, ...)
             COUNT code;
             ...

           

       楤 emt375 ।祭  祭 믮-
   ⥬ 맮 RT-11, 믮 emt 0375    R0  
  ⢥ 㪠⥫  ᯨ᮪ 㬥⮢. 筮, ⠪ ᯨ-
  ᮪ 稭   ᫮,   ஬    
  襬 ,  ᮤন ।⢥      
  ᪮쪮 ⥫ 㬥⮢.  㬥  
   ᯨ᪠ 㬥⮢ emt375   -  ⥫쭮
  樨.

          

       ᫨ ⥬ 맮 ࠡ⠭ ( ७ 襭),
  emt375 頥 ᮤন R0 ᫥ 믮,  㬭-
   ᪨  077777 ( ࠭⨨ ⥫쭮  -
  祭 ᨬ  ᮤন);   ⨢  砥  emt
  頥  訡 RT-11, ᫮ ᪨  -
   -0400 ( ࠭⨨  ⥫쭮).

       
          䠩:

          emt375 ((11 << 8) + chan, blk, buf, wcnt, 0);

   .     
       emt, rt-11 advanced ...

         
       ᢮ R0 ⥫쭮 祭 ᫥  ࠡ⪨
  맮   .

                           - 13 -

       1.9. exit - 뢠 믮 ணࠬ
      

    
       exit - 뢠 믮 ணࠬ.

         

          VOID exit (success)
          BOOL success;

           

       楤 exit 뢠  㭪樨,  ॣ஢-
   楤ன onexit,  뢠    䠩    뢠
  믮 ணࠬ.  0   53  ⠭  
  ᯥ譮 襭,   3  ᯮ    祭
  訡, .. success==0.

          
        祣  頥.

       

          if ((fd = open("file", read)) < 0)
          {
             putstr (STDERR, "  \n", NULL);
             exit (NO);
          }

   .     
       ONEXIT


       1.10. fcall - 맮 ࠭-ணࠬ
      

    
       fcall - 맮 ࠭-ணࠬ.

         

          TYPE fcall(fn, nargs, arg1, ...)
          TYPE  (*fn)();
          COUNT nargs;
            ...

                           - 14 -

           
       fcall -  㭪 樨  䥩    맮
  ࠭-ணࠬ. fn - 뢠 ࠭᪠ 㭪 
  ணࠬ, nargs - ᫮ 㬥⮢, arg1  .. - -
  , ।  맮 㭪樨 fn. TYPE - ⨯ -
  頥 㭪樥 fn 祭.
       ࠭ ⠥ 㬥 ᠬ,   祭ﬨ.
       ᫨ "C"-㭪 뢠  ࠭,  ᤥ
  ᫥騩 室 :

          cfn(p)
             struct {
                  int nargs;
                  int *arg [1];
                    } *p;

          /* (&p)[-2] ->nargs   ᫮ 㬥⮢
           * (&p)[-2] ->arg[n]  㪠⥫ 
           *                   㬥 N
           */
       楫 祭    ࠧ.

          
       fcall 頥  ,  fn.

       
       fcall (&func, 1, &x);

         
       REAL 頥   LONG,    INTEGER*4,  REAL*8  
  COMPLEX   ⠪,  ⥫  .  ࠭  
  ন ﭨ FPP, ॡ饥  "C".


       1.11. lseek - ⠭  䠩  㪠⥫
       ⥭/ 
                   

    
       lseek - ⠭ 䠩 㪠⥫ ⥭/.


         

          COUNT lseek(fd, offset, sense)
          FILE fd;
          LONG offset;
          COUNT sense;

                           - 15 -

           
       lseek ᯮ ᬥ饭 offset    㪠-
  ⥫  ⥭/  䠩  fd    ࠢ  ࠬ
  sense. ᫨ sense==0, 㪠⥫ ⠭   -
  ⥫쭮 ᬥ饭;  ᫨  sense==1,  ᬥ饭  ࠨ᪨
  ᪫뢠   ⥪騬  㪠⥫;    ⨢  砥,
  sense==2  ᬥ饭  ࠨ᪨  ᪫뢠    
  䠩     祭    祭  㪠⥫.
  ⥬ RT-11 ᯮ ⮫쪮 訥  25    ᬥ饭,
  ⠫ .
       맮 lseek (fd,0l,1) ⠢ 䠩 㪠⥫ 
  , ,   , ࠡ뢠 ⮫쪮   ⮬
  砥,  ᫨ 맮 ਥ      䠩-
   ਯ, .. ᫨   .

          
       ᫨ 맮 ࠡ⠭ lseek 頥 fd,   ⨢
  砥 lseek 頥 ⥫쭮 ᫮  (-1    
  訡 RT-11, ᫮ ᪨  祭 -0400).

       
       ⥭ 512- ⭮ :

          BOOL getblock (buf, blkno)
          TEXT *buf;
          BYTES blkno;
          {
             lseek (STDIN, (long) blkno << 9, 0);
             return (fread (STDIN,  buf, 512) != 512);
          }

         
        ந ஢ઠ  ࠢ쭮 祭 ᬥ-
  饭. ᫨ 뢠 騩 䠩,      -
  ࠭⢮, ⢮  䠩,   , ᨬ
   ⮣, ᪮쪮  ᠬ  ᯮ짮 . ᫨ 
   , 祬 32 767 ,  ᮪頥 楤ன
  EMT375.


       1.12. mkexec - ᮧ ᯮ塞 䠩
      

    
       mkexec - ᮧ ᯮ塞 䠩.


                           - 16 -

         

          BOOL mkexec (fname)
          TEXT *fname;


           
       mkexec,  ਭ樯,  ८ࠧ뢠 䠩  fname
   ᯮ塞 , 筮      (
  ) ⥬-ᨬ 䨪  (  "⥭")  
  fname.   ⥬ 㭪 䨪⨢.

          
       mkexec ᥣ 頥 TRUE.

       

          if (load1() && load2())
             return (mkexec (xfile));


       1.13. onexit - 맮 㭪樨  室  ணࠬ
      

    
       onexit - 맮 㭪樨  室  ணࠬ.

         

          VOID (*onexit())(pfn)
          VOID (*(*pfn)())();

           
       onexit ॣ 㭪,   㪠뢠 pfn,
   ᫥饣 맮  室  ணࠬ. 㭪 
   pfn 易  㪠⥫, 頥 맮-
   onexit,  ⮣,⮡  뫮 맢  ࠭  -
  ஢ 㭪樨.

          
       onexit 頥 㪠⥫   㭪,   
  㤥 NULL.

       

          GLOBAL VOID (*(*nextguy)())(), (*thisguy())();

          if (!nextguy)
                  nextguy = onexit (&thisguy);

                           - 17 -

 ਬ砭. NEXT - 騩; THIS - ⥪騩.

   .     
       exit

         
       । ⨯ ᠭ  ,   ਢ
  - ⢨⥫쭮  ⢥.


       1.14. onintr - 誠 뢠
      

    
       onintr - 誠 뢠.

         

          VOID onintr (pfn)
          VOID (*pfn)();

           
        ਭ樯, onintr  ᯥ稢 맮  㭪樨,
    㪠뢠 pfn  뢠   ନ-
  .   ⥬  ࢨ  ᯥ稢  CTRL-C,
  ETX  DEL.
        㭪 䨪⨢, ⮬ pfn    -
  .

          
       १ .


       1.17. open -  䠩
      

    
       open -  䠩

         

          FILE open (name, mode, rsize)
          TEXT *name;
          COUNT mode;
          BYTES rsize;

                           - 18 -

           
       뢠 䠩  㪠  name    ᢠ
   䠩 ਯ, ᫨ rsize=0, ⮣ ᨬ <CR> 
  NUL   㤠,   뢮 ।  ᨬ
  <LF> ⠢ <CR>;  ⨢ 砥  ᨬ -
    . mode .

          
       頥 䠩 ਯ ᮧ 䠩,  ᫨
  䠩 ᮧ,  ⥫쭮 ᫮ (-1    訡
  RT-11 ᫮ ᪨  祭 -0400).

       

          if ((fd = open ("XEQ", WRITE, 1)) < 0)
             putstr (STDERR,
                  "   XEQ\n", NULL);

   .     
       close, create


       2.17. rad50 - ८ࠧ ASCII  RAD50
      

    
       rad50 - ८ࠧ ASCII  RAD50

         

          COUNT rad50 (s, n)
          TEXT *s;
          COUNT n;

           
       rad50 ८ࠧ뢠   ᨬ  ப,  -
  饩   s,   㯠  ᫮,  ᮤঠ饥  3
  ᨬ  RADIX-50. ᫨ n    3,  ப  
  ࠢ ஡; ⥫쭮  㫥 祭 n ᮧ-
   ᫮  ஡, .. .
        ࠤ  ⢮ ᫥騥 ᨬ: -
   ' ', 窠 '.',  '$',   '0'  '9'  㪢
   ॣ  ''    'Z'.  ᥬ  ⠫  ᨬ
  ᮮ⢥ ࠧ襭 ᨬ ࠤ.

       
       ८ࠧ  䠩 ⥬ RT-11:

                           - 19 -

          n = scnstr (fn, ':');
          if (fn [n])    {
             dblk [0] = rad50 (fn, n);
             fn += n + 1;
          }
          else
             dblk [0] = 0
          n = scnstr (fn, '.');
          dblk [1] = rad50 (fn, n);
          dblk [2] = rad50 (fn + 3, n - 3);
          dblk [3] = (fn [n] == '.') ? rad50 (fn + n + 1,
                  lenstr (fn + n + 1)) : 0;


       1.17. read - ⥭  䠩
      

    
       read - ⥭  䠩

         

          COUNT read (fd, buf, size)
          FILE fd;
          TEXT *buf;
          BYTES size;

           
       read ⠥   size  ᨬ    䠩,  㪠
  ਯ஬ fd,  , 稭騩   buf.  ᫨
  ⠥ 䠩 STDIN     ७ࠢ  ᮫, 
  ᨬ   ࢮ  ⪨    ॢ
  ப ⥫쭮;  ⪨    ॢ
  ப. ᫨ 䠩    ࠬ஬ rsize==0, -
   ⪨  ᨬ NUL 㤠;  ⨢ 砥 ᨬ-
    室  .

          
        訡 read 頥 ⥫쭮 ᫮ (-1 
   訡 RT-11, ᫮ ᪨  祭 -0400),
  ᫨ 㦥  䠩 - 頥 ,  ⨢
  砥 饭 祭   ।  1   size
  ⥫쭮.   ⥭  ᪮  䠩    ࠧ
   ᥣ,   .

       
       ஢ 䠩:

          while (0 < (n = read (STDIN, buf, bufsize))
             write (STDOUT, buf, n);

                           - 20 -


   .     
       emt, emt375, open, write


       1.18. remove - 㤠 䠩
      

    
       remove - 㤠 䠩

         

          FILE remove (fname)
          TEXT *fname;

           
       remove 㤠 䠩 fname  䠩 ⥬.

          
       remove 頥 , ᫨   浪,   -
  ⥫쭮 ᫮ (-1   訡 RT-11, ᫮  -
  ᪨  祭 -0400).

       

          if (remove (uname ()) < 0)
          putstr (STDERR,
            "  㤠 ६.\n", NULL);


       1.19. sbreak - ⠭ ⥬ ࠧ
       (SYSTEM BREAK) 
                    

    
       sbreak - ⠭ ⥬ ࠧ (SYSTEM BREAK)

         

          TEXT *sbreak (size)
          BYTES size;

           
       sbreak ⠭  ࠭  짮-
  ⥫ ࠨ᪨  size ⮢,  㣫    

                           - 21 -

  ஭  ⭮  ᫥.

          
       ᫨   浪,  sbreak  頥  㪠⥫  
  砫   , 㣫    ࠭
  ᫮, ᫨  室;  ⨢ 砥, 頥-
   NULL.

       

          if (!(p = sbreak (nsyms * sizeof (symbol)))) {
              putstr (STDERR, " \n", NULL);
              exit (NO);
          }

         
        ⥬ RSTS ᫥ ᯮ짮  KLUDGE  VERSION
  ⮩ 㭪樨, .. , 宦,  㫨 .SETTOP.


       1.20. uname - ᮧ   䠩
      

    
       uname - ᮧ   䠩

         

       TEXT *uname ()


           
       uname 頥 㪠⥫   砫  稢饣
  ᨬ NUL , ஥, ⥫쭮,     ᨫ쭮
  ⫨     䠩.      䨪ᮢ
   ᮧ ᥬ⢠ 䠩.    ᯮ짮
   ⢥ ࢮ 㬥 ᫥ 맮  create  
  open,  ᫮,   ᮧ 䠩  㤠 
  砭 ࠡ ணࠬ. ⠢ ᫥ ᥡ ࠭
  㦭 䠩 - ਧ ୮ ⮭.

          
       uname 頥      㪠⥫    
  맮,          ᮮ⢥   ப
  "CTEMPC." . ⥫   㤥 㫥.

                           - 22 -

       

          if ((fd = create (uname(), WRITE, 1)) < 0)
            putstr (STDERR, "  ᮧ
                          ६. \n",  NULL);

   .     
       close, create, open, remove


       1.21. write -   䠩
      

    
       write -   䠩

         

          COUNT write (fd, buf, size)
          FILE fd;
          TEXT *buf;
          COUNT size;

           
       write 뢠 size ᨬ, 稭    buf,
   䠩, । ਯ஬ fd. ᫨   
  STDOUT  STDIN    뫨  ७ࠢ    ᮫,
   ᫨ 䠩  ᮧ     ࠬ஬  rsize=0,
  ⮣  뢮 ।    ᨬ  <LF>  ⠢
  <CR>;  ⨢ 砥  ᨬ ।  -
  .

          
       ᫨ ந諠 訡, write 頥  ⥫쭮
  ᫮ (-1   訡 RT-11 ᫮ ᪨  -
  祭 -0400). ᫨   浪, write 頥 size.

       
       ஢ 䠩:

          while (0 < (n = read (STDIN, buf, size)))
             write (STDOUT, buf, n);

   .     
       create, emt, open, read




                           - 23 -

            2

                              

        2. ७ᨬ १⭠ ⥪ 몠 ""                                       2
        2.1.    ᮣ襭                                      26
        2.2.    std.h - ⠭ 䠩               26
        2.3.    sio - 楤 /뢮                    28
        2.4.    fio -  /뢮  䠩          31
        2.5.    abs - 室 ᮫⭮ 祭               33
        2.6.    alloc - १ࢨ   (heap)        34
        2.7.    amath -  䨪஢ ᮮ⢥⢨       35
        2.8     arctan - ⠭                             37
        2.9.    bldks - ந 祢 ⠡          38
        2.10.   btod - ८ࠧ ᨬ쭮
                  ⨯ double                             38
        2.11.   btoi - ८ࠧ ᨬ쭮
                  ⨯ integer                            39
        2.12.   btol - ८ࠧ ᨬ쭮
                  ⨯ long                               40
        2.13.   btos - ८ࠧ ᨬ쭮
                  ⨯ short                              41
        2.14.   buybuf - १ࢨ        43
        2.15.   cmpbuf - ࠢ  ࠢ⢮       43
        2.16.   cmpstr - ࠢ  ப                  44
        2.17.   cos - ᨭ  ࠤ                        44
        2.18.   cpybuf - ஢    㣮     45
        2.19.   cpystr - ஢ ᪮쪨 ப           46
        2.20.   decode - ଠ⭮ ८ࠧ               47
        2.21.   decrypt -  ஢  ⥪  47
        2.22.   doesc - ᨬ esc-᫥⥫쭮       48
        2.23.   dtento - 㬭 double  ⥯       49
        2.24.   dtoe - ८ࠧ ⨯ double  
                 樠쭮 ଠ                       50
        2.25.   dtof - ८ࠧ ⨯ double  
                 ଠ  䨪஢ 窮                51
        2.26.   encode - ८ࠧ ⥪  㬥
                 ࠢ ଠ                         52
        2.27.   encrypt - ஢  ⥪              52
        2.28.   enter -  ࠢ饩                 53
        2.29.   errfmt - ଠ 뢮  䠩 訡          54
        2.30.   error - ᯥ⪠ ᮮ饭  訡
                 室                                 55
        2.31.   exp                                             56
        2.32.   fclose -  䠩,ࠢ塞 ஬ fio   56
        2.33.   fcreate - ᮧ 䠩  樠஢
                ࠢ騩                                57

                           - 24 -

        2.34.   fill -   ᨬ       58
        2.35.   finit - 樠 ࠢ騩  fio    58
        2.36.   fopen -  䠩  樠஢    59
        2.37.   fread - ⥭                                  60
        2.38.   free - ᢮ ࠭⢮           61
        2.39.   frelst - ᢮ ᯨ᮪ १ࢨ஢    62
                祥
        2.40.   getbfiles - ᮡࠥ 䠩   ப  63
        2.41.   getc -  ᨬ  室           64
        2.42.   getch -  ᨬ  室  stdin   65
        2.43.   getf - ⠥ ଠ                     66
        2.44.   getfiles - ⨥ ⥪⮢ 䠩            71
        2.45.   getflags - 뢠 䫠   ப  72
        2.46.   getfmt - ଠ   stdin                75
        2.47.   getl - ⠢ ⥪⮢ ப  .   76
        2.48.   getlin - ஢ ⥪⮢ ப  stdin  77
        2.49.   inbuf -  ᨬ                    78
        2.50.   instr - 宦 ᨬ  ப             78
        2.51.   isalpha - ஢ઠ  稥 䠢
                ᨬ                                        79
        2.52.   isdigit - ஢ઠ                       80
        2.53.   islower - ஢ઠ  ᨬ .ॣ     81
        2.54.   isupper - ஢ઠ  ᨬ .ॣ     81
        2.55.   iswhite - ஢ઠ  "" ᨬ       82
        2.56.   itob - ८ࠧ integer  ⥪       83
        2.57.   itols - ८ࠧ integer  ப         84
        2.58.   leave - 室  ࠢ饩             85
        2.59.   lenstr -   ப                  86
        2.60.   ln - ࠫ                        86
        2.61.   lower - ॢ ᨬ   .ॣ  87
        2.62.   lstoi - ८ࠧ ப  楫           87
        2.63.   lstol - ८ࠧ  䠩 ⥬
                 ⨯ long                                      88
        2.64.   ltob - ८ࠧ ⨯ long  ⨯ text
                                                         89
        2.65.   ltols - ८ࠧ ᫠ ⨯ long 
                 䠩 ⥬                           90
        2.66.   mapchar - 뤠 ⭮ ।⠢
                 ᨬ                                  91
        2.67.   match - ᮮ⢥⢨ ࠢ쭮 ࠦ      91
        2.68.   max - ஢ઠ  ᨬ                      92
        2.69.   min - ஢ઠ                         93
        2.70.   mkord - ஥ 㭪樨 㯮冷祭         94
        2.71.   nalloc - १ࢨ   (neap)       96
        2.72.   notstr - 宦   饣     97
                ᨬ


                           - 25 -

        2.73.   notstr - 宦  ப 饣     98
                ᨬ
        2.74.   ordbuf - ᪮ ࠢ  ஢     99
        2.75.   pathname - ஥ -離              100
        2.76.   pattern - ஥  ॣ୮
                ࠦ                                       101
        2.77.   prefix - ஢ઠ ப  䨪            103
        2.78.   print - 뢮 ப  ନ                104
        2.79.   putc -  ᨬ  室         105
        2.80.   putch -  ᨬ   stdot          106
        2.81.   putf - ଠ 뢮 㬥⮢               107
        2.82.   putfmt - ଠ 뢮  stdout               110
        2.83.   putl - ஢ ப ⥪        111
        2.84.   putlin - 頥 ப ⥪  stdout        112
        2.85.   putstr - ஢ ᪮쪨 ப  䠩    113
        2.86.   remark -  ᮮ饭                       113
        2.87.   scnbuf -  ᨬ                   114
        2.88.   scnstr -  ᨬ  ப                 115
        2.89.   sin - ᨭ  ࠤ                          115
        2.90.   sort - ஢                        116
        2.91.   sqrt -  ७                        118
        2.92.   squeeze - 㤠 㪠 ᨬ   118
        2.93.   stdin - ⠭ ࠢ騩       119
        2.94.   stdout - ⠭ ࠢ騩  뢮   119
        2.95.   stob - ८ࠧ short  text          120
        2.96.   subbuf -  ப                 121
        2.97.   substr -  ப                        122
        2.98.   tolower - ॢ ᨬ  .ॣ      122
        2.99.   toupper - ॢ ᨬ  .ॣ      123
        2.100.  usage - 뢮 ⠭⭮ ଠ樨 
                ᯮ짮 ணࠬ                         124


















                           - 26 -

           2. ७ᨬ १⭠ ⥪ 몠 "".
          

            2.1.  襭
           

        
             ᮣ襭 - ᯮ짮 "" ᮢ⭮  ⠭-
        묨 ⥪.

        
                   ᫥ ࠧ 뢠 㭪樨,
            맢  ணࠬ  ""   
         ⥬,  ন  ମ  "WHITESMITHS  LTD".
        ᫥   筮  㭪樨    ⠭
        ᮣ襭   ஢,    ⠢-
          㦥 몠 ""  "WHITESMITS".  ᮣ-
        襭  室 ᢮  襣  ᫥-
        饣 ᠭ,  ࠢ쭮 맮   㭪権
        ,    ,   ᠭ ७ᨬ ணࠬ 
        몥 "".
              設⢮  ⠭ ᮣ襭 ন 
        ६ 樨  祭  ⠤⭮ 2 䠩-
        "std.h", ᠭ  ண  ਢ      ࠧ.
            ਢ  ⮫쪮    ᮡ: 
        ணࠬ  몥 ""   ᮤঠ  㭪   
        "main",  뢠  室  (outset)  祩
          ᨣ    砭  믮 ணࠬ.
           楤  ᪠ ⠭⭮ -
        ஢ (᫮)  main.   "㭪権", ᠭ
          ࠧ, ।⠢  ᥡ  ᠬ  -
        , ।  ⠭⭮ .  ᠭ 
         ⮩ 稭,    ᪫祭 , ᮡ -
        ७,   䥪⮢  룫 筮  ⠪ ,  
        ணࠬ.  㣮 ஭,   -
        ,     ᠭ     㣮  
        㪮⢠;    稭  ન  ᪫-
        祭 砩 ᮢ  , ।塞묨 짮-
        ⥫.
              ਢ ⪮  ᠭ  ᥪ権    筮
        ଠ ᠭ    㭪権.    ᭮  
        ।⠢   ᥢ-࠭ 㪮⢠,   ᭥-
        ﬨ   ᥪ樨.  ⮩  ࠭ 㪠뢠,
          ᮣ襭.
              ⠪:
              "" - ਢ   ⪮ ᠭ 㭪樨.
         ⮬  㭪 뢠  "C"-ணࠬ.
              "" -  ਢ 頥 ⨯  ᯨ-

                           - 27 -

        ᮪  㬥⮢ 㭪樨  筮  ⠪ ,   ஬ 
        㪠뢠  ணࠬ, ।饩 㭪.  ᥣ
        ⨯ 㬥⮢  㭪樨      ᥢ-⨯,
        ।  ⠭  .      ᥢ-⨯
        , 襩 , ⠬ ⨯,  ।।-
           "".   २   襭 ,
        襭  設ᨬ,   ᮤ⢨ ࠢ쭮
        ணࠬ஢  ,   筮  뢠,  ᥣ ⮣
        .
              "" - 筮,  ⮩ ᥪ樨   -
        ,       (  祭 )  ࠧ.
         砫 ਢ १ ⢨ 㭪樨, ..  
         ,      .     ⪮
        ᠭ  㬥⮢ 㭪樨    騬 ﭨ  
        ࠡ.  㬥 뢠  ⥬  , -
        ஥     ᨭ 㭪樨.     筮 
        ᪨    ᭮    ᠬ।塞 뫮.
         ⥫쭮 ࠣ (ࠣ)   ਢ-
         ⥫쭠 ଠ  ࠡ 楤   -
            祭 㬥⮢.     ᫥
         筮 ᢮  ࠧ㬭 .
               ,   ᯮ ⠭ ᨬ-
           NULL   祭 㫥 㪠⥫   NUL  
        祭㫥    ASCII, .. "\0".  ६ 
        ६    㣨  ⠭ ᨬ,  -
          ⠭⭮ .  㣠 .
                祭 ।⠢ ᫥騬 ࠧ:
        (0,4)  砥  ࢠ,   .. 祭 "1,2,3",
        ⮣  [0,4] 砥  ࢠ,   .. 祭
        "0,1,2,3,4".    ࠧ 祭 [0,4)  訡, 
        ᮪饭  ⮣ ࢠ "0,1,2,3".
              "" -  ⮩ ᥪ樨 ਢ  -
          祭,  頥  㭪樥,     -
        ⥫⢠ 㤥     祭.  -
          (location)  뢠饩 ணࠬ,  
         㪠⥫쭮  㯠  (pointer access)   㭪樨
        ⠪ 뢠 ,   筮    㦥 㯮 
        ।饩 ᥪ樨.
              "" -  ਢ   ᪮쪮 ਬ-
        ஢ 饭  뢠 㭪樨  ()  १-
        . ਬ ᤥ ⪨  ⥫묨,  
        אַ  ⢮  ணࠬ 짮⥫.    
        易 㭪権 ਢ 宦 ਬ   
        ન  ࠧ稩    楤ࠬ,   믮騬
        宦 ⢨,         ⠭⭮  ᯮᮡ
        ᯮ짮,    ਬ  ᥬ ᥬ-
         楤.

                           - 28 -

               " "  -   ਢ  ᯨ᮪ 㭪権,
          蠥 ᬮ  裡   ⥪饩 㭪樥.
        㭪樨, ᠭ  ⮬  ࠧ 㪮⢠ 祭
         , ᫥ 檨, ᠭ  㣨  ࠧ, -
          ࠧ.
               ᫨ ᠭ 㭪樨     
        , ᬮ 㣨  ਢ. 筮 ⠪-
        , ᫨  㭪   㤮⢮ , 
         ᤥ 㣠  ਢ ᯨ᪠.
             "" -  ਢ  筮 
        ⪨ 㭪樨.    ⭮  
        ஢થ ⢨⥫  祭 ࠬ஢,  㪠뢠
        짮⥫.  ਢ ⪫   ᫥⥫-
         맮  室.     祭, ᥣ 㪠-
        ,    "㭪"  ᠬ  ᮬ.

         
             , , main, std.h


             2.2.  std.h - ⠭ 䠩 
            

        
             std.h - ⠭ 䠩 

        
             #include <std.h>

        
              ⠭   㭪樨,  뢠  
        "", 稭 । ⠭ ᮣ襭, -
           ন  ६ 樨 祭-
         ⠭⭮ 䠩    <std.h>     ப
        ணࠬ.  䠩 । ᥢ-⨯   
        (storage classes)  ନ ⠭ ⨯ "C", ࠧ-
         ⥬ ࠬ,  ࠢ , ᯮ-
          ਧ /뢮   室-
         .      <std.h> ᠭ  㪮⢥
         ⤥쭮,   ..   ᪫祭    
        䥪⮢,  易⥫쭮 ਢ,   祬
         ⫨  ணࠬ  ணࠬ.
               ⨯    ࠬ  ⥫쭮    襣
         ᠭ ணࠬ,  ᯥ祭  ७ᨬ
        ணࠬ, ᯮ  ⪨      ࠡ⪨  ⨫
        ணࠬ஢.  ਢ ᭮ ।:

                           - 29 -

                        -
                       

                - BITS   -   ⪨,  ᯮ 
                            16 ;

                - BOOL   - 楫,  ஢ઠ ⮫쪮  ࠢ⢮ 0,
                           ᢠ  祭 - YES  NO;

                - BYTES  -   楫,   ᭮ 䬥-
                           ⨪, 樨;

                - COUNT  - ⪨,   [-32 768, 32 768);

                - DOUBLE -  筮  饩 窮;

                - FILE   - ⪨, ᯮ  ᠭ
                           䠩;

                - LONG   -  楫;

                - METACH - ⪨, EOF  [0, 256);

                - TBOOL  - ᨬ     ᨬ-
                           , ᯮ  BOOL;

                - TEXT   - ᨬ   ᨬ-
                           , ᮤন  ⥪;

                - TINY   -  ᨬ,   [-128, 128);

                - UCOUNT -  ⪨,  
                           [0, 65 536);

                - ULONG  -  ;

                - UTINY  -  ᨬ,  
                           [0, 256);

                - VOID   - 楫,  㭪権,  祣
                            .

                - 
               

                - FAST   - ॣ;

                - GLOBAL -  ,  譨, ᯮ
                           譨 㭪樨;

                           - 30 -


                - IMPORT -  ,  譨, ᯮ
                           ७ 㭪樨;

                - INTERN -  ,  ᪨, ᯮ
                           ७ 㭪樨;

                - LOGAL  -  ,  ᪨, ᯮ
                           譨 㭪樨.

                 
               

                - BUFSIZE  - 512, ⠭ ࠧ 
                             /뢮;

                - BWRITE   - ० - 1, ⨥  -
                              ;

                - BYTMASK  - 0377, ᪨஢ 襣 
                             楫;

                - EOF      -  -1,  䠩 ᨬ;

                - FOREWER  - for ( ; ; );

                - NO       - ᪨ 0;

                - NULL     - 㫥 㪠⥫;

                - READ     - ० 0, ⨥ 㯠  ⥭;

                - STDERR   - file 2, ⠭ 뢮 訡;

                - STDIN    - file 0, ⠭ ;

                - STDOUT   - file 1, ⠭ 뢮;

                - UPDATE   - ० 2, ⨥  ⥭  ;

                - WRITE    - ० 1, ⨥  ;

                - YES      - ᪠ 1.

                           - 31 -


                     /
                 

                - FIO      -  䠩 /뢮 
                             ਧ 맮 /뢮

                   
                  

                ABS
                ISALPHA
                ISDIGIT
                ISLOWER
                ISUPPER
                ISWHITE
                MAX
                MIN
                TOLOWER
                TOUPPER


        
                /* the minimum progpamm
                 * (c) 1981 by whitesmiths,ltd.
                 */
                #include <std.h>
                /*  ப  stdout
                 */
                bool main ()
                    {
                     write(STDOUT, "hello world|n",12);
                     return (YES);
                    }

               
                 ⢮ ᮢ ਮ᪨ 뢠,
         ਢ  祭 ᪮쪮 ࠭ -
           ८।.


          2.3. sio - 楤 /뢮
         

            sio - 楤 /뢮

        
              ⢮ 楤 /뢮,  ࠡ
         ࠧ筮 ஢ ᫮.      㯯஢  
        ਭ樯 ᮢ⨬ ࠡ.

                           - 32 -

             ᥣ /뢮  ⢫     -
        楤 putfmt, ᯥ稢饩  ଠ  뢮  ⠭-
         ன⢮ 뢮.    ᮮ饭     訡
         뤠 楤ன errfmt.
             ᨬ     /뢮 ⢫
        楤ࠬ   getch, putch, getlin, putlin.   ந室
        뢮 ⥪⮢ ப, .. ᨬ  ᫥⥫쭮⥩,
        稢  ப (newline),  ஢ -
        ⢫ ⮬᪨.     楤  뢠
        塞  楤ࠬ  getfmt    putfmt.
             ᠭ     ⠭⭮      ࠢ饣      
        /뢮,  ⨯ FIO, 砥  ⠭ 䠩 -
         <std.h>.      襭  楤   
        {楤ࠬ}   뢮 ࠢ饣  ,  뢠-
        묨     ⥪,   ஧筮  -
        ⥫.   뢠  뢠 䠩 
        ,  ⠪ 뢠     ஬ FIO 맮 楤
        fopen, fcreate  fclose.  ନ஢   FIO 
        ᯮ짮    ଠ⭮  뢮  饭  -
        ࠬ  getf  putf.  ᨬ    /뢮
         ࠢ ᮮ⢥ ஢  FIO   -
        ⢫ 맮 楤  getc,putc,getl,putl.
               ஢    ⠪  뢠 "䠩-
         ਯ",   ..  ᫠  ⨯  FILE,  । 
        ⠭⭮  ,    ।  
        楤    㣮. ।।  䠩 ਯ-
        : stdin, stdout  stderr,     筮 ନ-
         ,  ନ 뢮  뢮 訡 ᮮ-
        ⢥. 㣨 ਯ   祭 ⨥
        䠩 㬥⮢,  ।  main,   ᯮ짮
        楤  getfiles,   ⥬  뢠   ࠬ
        FIO   楤 finit.    䠩 ਯ
            ᯮ짮    ।⢥      楤ࠬ
        /뢮 ᠬ  ஢,  ᠭ .
            楤  open  create     ⨨   
         䠩  䠩 ਯ,   楤 close
        㫨 ( discredit )  䠩 ਯ,   ⬥ 
          䠩.    ᮧ ᥬ⢠ -
          䠩    ୥  , 頥 楤ன
        uname.   㤠 䠩  䠩 ⥬ ᯮ
        楤  remove.
              ਯ   ᯮ  楤ࠬ ᠬ
         ஢  read  write   ६饭 ᫥⥫-
             䠩.     ⥭   
            䠩  ᯮ  楤  אַ
        㯠 lseek.  ᫥, 㭪 putstr   ᯮ짮-

                           - 33 -

          ⥭樨 ᫥⥫쭮 ப   
          㪠 䠩,  㤮     ᮮ-
          訡.

                      
                 ᥬ ⨬ 楤ࠬ .


                2.4. FIO -  /뢮  䠩.
               

          
             FIO -  /뢮  䠩.

               
                FIO stdin, stdout;

                 
             FIO -  ⨯, ।  <std.h>   ࠢ
        ஢,  ᯮ㥬    묨  楤ࠬ
        /뢮.  ⠬ :

                - FILE _fd - ᮤন 䠩 ਯ  䠩,
                    ந 樨 /뢮.

                - COUNT _nleft -   ᮤন ᫮ ⠢
                   ᨬ  ;  뢮 ᮤন
                  ᫮ ᨬ, 饭    뢮.
                  ⠭ _nleft   樠   FIO.
                  楤  ⠭ _nleft  -1  
                  䠩,    㪠    ,   ⪨ ⥭
                   ।ਭ  .

                - COUNT _mode - ⠭    BWRITE, READ 
                  WRITE  㪠 ० ࠡ.

                - TEXT *_pnext -      㪠뢠  ᫥騩
                  । ᨬ,  뢮   ᯮ 
                  ⪨      襭  樨.   ᫨
                  _nleft==0,  ,  _pnext ।.

                - TEXT _buf (bufsize) -   ᨬ   ,    
                                          BUFSIZE=512.
             BWRITE -    ०,   ᯮ  䥩묨
        楤ࠬ  ஢.      ᯮ  㪠
        ஢ , ..  뢮  ⮫쪮   -
          襭 ࠡ ணࠬ.     ଠ쭮 뢮
         頥  ࠧ,    뢮 ᫥⥫-
         稢  ப.

                           - 34 -

                䨧᪨      ᯮ짮  ࠢ
        ஢  FIO  ந      getc  getl, 
        뢮 -   putc  putl.


                2.5. abs - 室 ᮫⭮ 祭.
               

          
                abs - 室 ᮫⭮ 祭.

               
                abs(a)

                 
             楤 abs  뤠  ᮫⭮  祭  㬥.
        ..    ।      ।  "C",  
        㬥    ᫮ ⨯.

                
                ᫮ r-祭 : ((a<0)?-a:a).

             
                putfmt("balance %i%p|n",abs(bal),(bal<0)?"CR":"");

               
               楤 abs  ᮬ,     
        뢠     ⮫쪮  -ணࠬ. 㬥
         묨 䥪⠬     ८।  ᪮쪮
        ࠧ.


                2.6. alloc - १ࢨ    (heap).
               

          
                alloc - १ࢨ    (heap).

               

                 TEXT *alloc(nbyts,link)
                    BYTES nbytes, link;

                 
             ࢨ       ࠧ஬  nbytes,  ⥬
        뢠 뫪 link   㫥  뤥 -
        .  १ࢨ஢  㤥   nbytes,

                           - 35 -

        稭  饭  祭  㪠⥫,  ஥  
         砥 㤥 ४⭮.   室 १ࢨ-
        ஢   .   ᫨  ࠭⢮
        ,  뤠 ᮮ饭  "OUT OF HEAP SPACE"   
        䠩 STDERR  ந室 室  訡.

                
                ᫨  頥  祭,  祭 㪠⥫
         㤥 NULL.

             
                ᮧ  (cell):

                struct cell
                   struct cell  *prev;
                   ...  ⠫쭠  ...
                    *top
                top = alloc(sizeof (*top),; /*pushes a cell*/

         .     
                buybuf, free, frelst, nalloc, sbreak

               
                १ࢨ஢   ࠭⢠  ࠭  
        楫    ।⢥   ।  ᯮ㥬  
        ⮣  ࠭⢠,  ⮬         '.
         ᫮ ᨫ쭮   ஥ ⥬, ⮬ ᮡ
           ⮨.
             ⪠  १ࢨ஢          ᭮
        ࠭⢠ ॢ ᫥⢨ﬨ.


                2.7.  match
               

          
                amatch -  䨪஢ ᮮ⢥⢨  -
        ୮ ࠦ.

               

                    BYTES amatch (buf, n, idx, pat, psubs)
                        TEXT *buf;
                        BYTES n, idx;
                        TEXT *pat;

                           - 36 -

                        struct {
                                TEXT *mtext;
                                BYTES mlen;
                               } *psubs;

                 
              楤 ࠢ   n ᨬ, -
        騩   buf[idx]  ஢  ᫥⥫쭮,
        稭饩  pat.  ⮬ ᫥⥫쭮  
        ஥   㭪樨 pattern,    ᠭ  ன
        ਢ 祭  ॣ  ࠦ,  ਭ
        ⨬ 楤ࠬ.
            ᫨ psubs  ࠢ NULL,   ⮣  ᡠ஢-
           {...}   㤥  ᮮ⢥  ப,
        ᠭ  psubs[i],   i   ᠬ  ᪮-
           "{"       ᫥⥫쭮.        
        psubs[i].mtext 㪠뢠   ᨬ ᮢ饩  -
        ப,  pusubs[i].mlen ᮤন  .      psubs[0]
        ᥣ 뢠  ᮮ⢥⢨.
              ᫥⥫쭮  ᫥⥫쭮 ⮢
         ᫥騬 祭ﬨ:

              

           1      ccha   ᫥ ⠥ ᨬ
           2      any    ᪠ ᮮ⢥⢨ ᥬ ஬ \n
           3      sbol   ᮮ⢥⢨ 砫 ப (㫥 ਭ)
           4      seol   ᮮ⢥⢨  ப  ।⢥-
                          । 騬 \n
           5      close  ᮮ⢥⢨ ᫥饩 ᫥⥫쭮
                         0   ࠧ
           6      ccl    ᫥  ᨬ (cchar  rang)
           7      nccl   ᫥ 栥 (negated)  ᨬ
           8      range  ᫥ ᨬ 孥   ࠭
           9      cclend  ᨬ 稢
          10      pend    ᫥⥫쭮
          19      rpar   ࠢ ᪮ "}" ,  ன ᫥
                          浪 
          20      left    ᪮ "{" ,  ன ᫥
                          浪 
        .   室 ⮫쪮  ⮬ 砥, ᫨
        ᫥⥫쭮 ந .

                
             amatch 頥  ᠬ ࠢ ᨬ  ᮮ-
        饩  ᫥⥫쭮,  ᫨   ࠢ   諮
        ᯥ譮,  ⨢ 砥 頥 -1. ᫨ -
         ᨢ  psubs,   ⠪ .

                           - 37 -

             
                宦 ᮮ⢥⢨ ᫥⥫쭮:

                if (pattern(pbuf,av[1][0],&av[1][1]))
                   while  (n=getlin(buf,maxbuf))
                        if  ((n=amatch(buf,n,0,pbuf,null))!=-1)
                                putlin(buf,m);


         .     
                match, pattern


                        2.8. arctan - ⠭
                       

          
                arctan - ⠭

               

                double arctan(x)
                        double  x ;

                 
             㭪  ⠭ 㣫, 祩  ⠭  ࠢ
        ,   筮.  頥      ࢠ [0,1],
        ⥬  ௮       쬨室  ⠡
        (eight entry table), ᯮ   㬬  ⠭ᮢ  
        ᫥⥫쭮 ਡ  ⮣ 浪.

                         
             㭪 頥 襥  ⠭ x  ७-
         ।⠢, ࠦ  ᫮  筮  
        饩 ⮩  ࢠ (-PI/2 , PI/2).

             
             宦 䠧 㣫 :

             theta = arctan(y/x) * 180.0/PI;


                           - 38 -

              2.9 bldks - ந 祢 ⠡   .
             

          
             bldks - ந 祢 ⠡  .

               

                TYNY *bldks(ks,key)
                   TYNY ks[16][8];
                   TYNY key[8];

                 
             楤 ந 祢 ⠡, ᯮ㥬  ⠭-
         ⬮ ஢      ஢  
        ஢ ଠ樨.  ନ஢ ⠡  ᯮ-
          8 ᨬ ,  訩     
        .

                
           祭 ks ,  ஬ ᮤন 祢 ⠡.

             
           ஢ 䠩,  ࠭  passwd:

                 bldks(ks,passwd);
                 while (read(STDIN,buf,8) == 8)
                        write(STDOUT,decrypt(buf,ks),8);


         .     
                decrypt,encrypt


                2.10. btod - ८ࠧ ᨬ쭮
                  ⨯ double. 
                           

          
             btod - ८ࠧ ᨬ쭮   ⨯ double

               

             BYTES btod(s,n,pdnum)
                TEXT *s;
                BYTES n;
                double *pdnum;

                 
             btod ८ࠧ뢠 n ᨬ ப, 稭  s
       ⨯ double  ࠭   rdnum. ப    
      ⥪⮢  ।⠢  筮  ᫠ ,    易-
      ⥫묨 ᮩ    浪. 騥  㫨  ய᪠-

                           - 39 -

       ,    易⥫  .  ८ࠧ   -
      稢             ࢮ  
      ᯮ  ᨬ.       ᨬ    
      ᮮ⢥⢮ ᫥饩 ᫥⥫쭮:
         [+|-]d*[.d*][e[+|-]dd*] .ਬ.,
          d    筮 ᫮ ,       ""  
      孥   ॣ.

      :      ਬ ᨬ "|" 祭 ࠧ-
      ⥫ ﬠ  ( 174).
           ஢ப    ९ ,    -
        ⮫ ᫥⥫쭮  ந.

              
          btod    頥  ᫮    ᠬ   ࠡ⠭
      ᨬ ,  筮   0 ,        n.
      ८ࠧ ᫮ ࠭  pdnum.

           
          ८ࠧ  㬥  ࢮ  ப  ணࠬ  
      double  ࠭   dbl:

           if (2<ac)
              btod(av[1], lenstr(av[1]),&dbl);
           else
              dbl=0.0;

       .     
           dtento,dtoe,dtof

             
           㤭 ᪠    砥 ९.

           2.11. btoi - ८ࠧ ᨬ쭮
             ⨯ integer.
                      

        
           btoi - ८ࠧ ᨬ쭮   ⨯ integer.

             

          BYTES btoi(s,n,plnum,base)
             TEXT *s;
             BYTES n,*pinum;
             COUNT base;

                           - 40 -

               
           btoi ८ࠧ뢠 ப  n ᨬ,稭  s,
       ⨯ integer  ࠭   plnum.ப ਭ
       ⥪⮢ ।⠢ ᫠    㪠  ᭮
      (base).騥 ஡ ய ,  ᯮ짮
      易⥫쭮 .  ᫨ (᭮ == 16) ,  騥
      ᨬ "0" ய᪠.  ८ࠧ ४頥  
             ࢮ  ᯮ
      ᨬ.᫨ ⠭ ந襫  ᨬ "l"  ॣ-
       ,  ய᪠.
           ᯮ짮        㪢 , 
     孥, ⠪   ॣ,  ᨬ ""  ᢮
     祭 "10",  筮 ⭠筮 ।⠢.
     㪢  祭 訬  ࠢ ᭮  ࠧ襭.
        ࠧ  祭  ᭮      ।  
     10  36.
          ஢ப  ९ , ୮ 祭  ᭮
        ⮫  ந.

             
          btoi  頥  ⢮  䠪᪨   ࠡ⠭
     ᨬ,  筮  0,    n. ᫮ ८-
     ࠧ ᨬ ࠭  plnum.

          
             BYTES num;

             if (btoi(buf,size,&num,10)!=size)
                 putstr(stderr, " . ᫮\n",NULL);

      .     
          btol,btos,itob,ltob,stob

            
           砥 ९ ᪠ -  祭 -
      쬠 㤭⥫쭮.


           2.12. btol - ८ࠧ ᨬ쭮
              ⨯ LONG.
                      

        
           btol - ८ࠧ ᨬ쭮   ⨯ LONG.

             

          BYTES btol(s,n,plnum,base)
             TEXT *s;
             BYTES n;
             LONG *plnum;
             COUNT base;

                           - 41 -

               
           btol ८ࠧ뢠 ப  n ᨬ,稭  s,
       ⨯ LONG  ࠭   plnum.   ப ਭ
       ⥪⮢ ।⠢ ᫠    㪠  ᭮
      (base).騥 ஡ ய ,  ᯮ짮
      易⥫쭮 .  ᫨ (᭮ == 16) ,  騥
      ᨬ "0" ய᪠.  ८ࠧ ४頥  
             ࢮ  ᯮ
      ᨬ.᫨ ⠭ ந襫  ᨬ "l"  ॣ-
       ,  ய᪠.
           ᯮ짮        㪢 , 
     孥, ⠪   ॣ,  ᨬ ""  ᢮
     祭 "10",  筮 ⭠筮 ।⠢.
     㪢  祭 訬  ࠢ ᭮  ࠧ襭.
        ࠧ  祭  ᭮      ।  
     10  36.
          ஢ப  ९ , ୮ 祭  ᭮
        ⮫  ந.

             
          btol  頥  ⢮  䠪᪨   ࠡ⠭
     ᨬ ,  筮  0,    n. ᫮ ८-
     ࠧ ᨬ ࠭  plnum.

          

             LONG lnum;

             if (btol(buf,size,&lnum,16)!=size)
                 putstr(stderr, " . ᫮\n",NULL);

      .     
          btoi,btos,itob,ltob,stob



           2.13. btos - ८ࠧ ᨬ쭮
             ⨯ short. 
                      

        
           btos - ८ࠧ ᨬ쭮   ⨯ short.

                           - 42 -

             

          BYTES btos(s,n,pinum,base)
             TEXT *s;
             BYTES n;
             COUNT base,*pinum;

               
           btos ८ࠧ뢠 ப  n ᨬ,稭  s,
       ⨯ short   ࠭   pinum. ப ਭ
       ⥪⮢ ।⠢ ᫠    㪠  ᭮
      (base). 騥 ஡ ய᪠,  ᯮ짮
      易⥫쭮 .  ᫨ (᭮ == 16) ,  騥
      ᨬ "0" ய᪠.  ८ࠧ ४頥  
             ࢮ  ᯮ
      ᨬ.  ᫨  ⠭ ந襫  ᨬ "l"  -
       ,  ய᪠.
           ᯮ짮        㪢 , 
     孥, ⠪   ॣ, ᨬ  ""  ᢮
     祭 "10",  筮 ⭠筮 ।⠢.
     㪢  祭 訬  ࠢ ᭮  ࠧ襭.
        ࠧ  祭  ᭮      ।  
     10  36.
          ஢ப  ९ , ୮ 祭  ᭮
        ⮫  ந.

             
          btos  頥  ⢮  䠪᪨   ࠡ⠭
     ᨬ,  筮  0,     n. ᫮ ८-
     ࠧ ᨬ ࠭  pinum.

          

             COUNT snum;

             if (btos(buf,size,&snum,10)!=size)
                 putstr(stderr, " ᬥ. ᫮\n",NULL);

      .     
          btol,btoi,itob,ltob,stob


            

           砥 ९ ᪠ -  祭 -
      쬠 㤭⥫쭮.

                           - 43 -

          2.14. buybuf -१ࢨ    .
         

      
          buybuf - १ࢨ ⮪     
     ⥪⮢ .

            

             TEXT *buybuf(s,n)
                TEXT *s;
                BYTES n;

              
           buybuf १ࢨ ⮪  ࠧ஬ n  -
      맮 alloc , ⥬    n ᨬ ,稭
      s. ᫨  ९,  ணࠬ  alloc -
      믮 ணࠬ buybuf.

             
          㪠⥫  १ࢨ஢ ⮪

          
          뢠 ⥪⮢ 䠩  :

                struct {
                        TEXT *text;
                        BYTES size;
                       } lines [];
                for (p=lines; 0 < (n=getlin(buf,bufsize));++p)
                    {
                     p->text = buybuf(buf,n);
                     p->size = n;
                    }

          .    
            alloc,free,halloc

               
              -, ९   ⮩ ணࠬ
        -  ᤥ...

                2.15. cmpbuf - ࠢ  ࠢ⢮  .
               

          
             cmpbuf - ࠢ  ࠢ⢮  .

               

                  bool cmpbuf(s1,s2,n)
                     text *s1,*s2;
                     bytes n;

                           - 44 -

                 
             cmpbuf ந ᨬ쭮  ࠢ  ࠢ⢮
         ⥪⮢ ஢.    稭  s1, -
        ன -  s2.     ࠢ n.   
        ࠢ묨, ᫨ n ᨬ   ࠢ.

                
              YES, ᫨ ࠢ  NO, ᫨  ࠢ.

             

              if (cmpbuf (name,"include",7))
                  doinclude ();

         .    
            cmpstr,prefix


               2.16. cmpstr - ࠢ  ப.
              

          
             cmpstr - ࠢ  ப

               

                bool cmpstr(s1, s2)
                    text *s1,*s2;

                 
               cmpstr ந ᨬ쭮 ࠢ  ப.
        ࢠ  ப 稭  s1  稢 NUL   ('\0');
         - ⠪ , 稭  s2. ப  ᮢ
        ,   ᨬ NUL.

                
              YES, ᫨ ப ࠢ  NO -  ⨢ 砥.

             

                 if(cmpstr(name,"include"))
                        doinclude();

                           - 45 -

         .     
             cmpbuf,prefix


                     2.17.cos - ᨭ  ࠤ.
                    

          
              cos - ᨭ  ࠤ

               

                double cos(x)
                  double x;

                 
            cos  ᨭ 㬥 x, ࠦ  ࠤ,
          筮.  ࠡ⠥ ⠪ : । ࠭
        x, ⥬  ᮮ⢥騩 ᨭ  ᨭ  -
         㪢࠭ १ ᫥⥫쭮 ਡ  
        ⮣ 浪. ᫨ 冷 x ᫨誮 , ⮡ ᮤঠ
        ஡  ࠭, 祭 ᨭ = 1.

                
              襥    cos x  ७ ।⠢,  
        ᫠  饩 窮    筮.

             
              饭   㣮 

               xnew = xold * cos() - yold * sin();
               ynew = xold * sin() + yold * cos();

         .    
             sin



                   2.18.cpybuf - ஢   
                   㣮.
                               

          
              cpybuf - ஢    㣮.

               

                 bytes cpybuf(s1,s2,n)
                    text *s1,*s2;
                    bytes n;

                           - 46 -

                 
              cpybuf   n  ᨬ,稭  s2,   ,
        稭騩  s1.

                
              ⢮ ᪮஢ ᨬ n.

             
               first string  second string  :

                    n = cpybuf(buf,"first string" ,12);
                    cpybuf (buf + n,"second string",15);

         .     
             cpystr


                2.19. cpystr - ஢ ᪮쪨 ப.
               

          
              cpystr - ஢ ᪮쪨 ப.

               

               text *cpystr(ds,arg1,arg2,arg3,arg4 ...,null)
                 text *ds,*arg1,*arg2,*arg3,*arg4,...;

                 
              cpystr ந  ⥭  ᪮쪨  ப  
        ப ds  .  ப 稭  argx  稢
        NUL ('\0').    ᨬ arg2 頥 ।⢥
         ᫥  ᨬ  (। NUL)  㬥  arg1  ..
        ᫥⥫쭮 ப 㬥⮢ 稢  -
        ⮬-㪠⥫ NUL.  ப,       ந
        ஢ ,  NULL   ଠ쭮 .

                
            ⥫  ᫥ NUL  ⮣ ப.

             
            ஢ ப ss1,"middle" , ss2,  "end."  buf:

               cpystr  (buf,ss1,"middle" , ss2, "end." ,null);

               
                   ᯮᮡ  ࠧ  祭 
        ।饭 ९. ᫨  ᫥ 㪠⥫
        NULL,     祣 襣...

                           - 47 -

                     2.20.decode - ଠ⭮ ८ࠧ.
                    

          
             decode - ८ࠧ뢠 㬥  ⥪  ࠢ-
         ଠ.

               

           bytes decode(s,n,fmt,arg1,arg2,...)
                 text *s;
                 bytes n;
                 text *fmt;

                 
            decode 뢠 ᨬ  n-ᨬ ,稭  s,
        筮 ⠪ ,  ᫨          䠩  楤ன
        putfmt.        ࠢ ଠ⭮ ப fmt
         ᪮쪨   㬥⮢  arg1 , arg2     ( ᫮  
        ࠢ 0).     ⠥ 訡  讣 ᫠ ᨬ-
        ,  祬        , 譨 ᨬ 
         祭.

                
            ⢮   ᨬ,  ᠭ    , ᫮  0 
        n ⥫쭮.

             
            ८ࠧ 楫 symno  ᨬ᪮ :

                  decode(&name,6,"l%+051",symno);

         .    
           dtoe,dtof,encode,putf,putfmt


                  2.21. decrypt -  ஢ 
                  ⥪ 
                                
          
              decrypt -  ஢  ⥪


                           - 48 -

               

                text *decrypt(data,ks)
                  text data{8};
                  tiny ks{16} {8};

                 
             decrypt ஢뢠 8  ᨬ      
        data,  ᯮ  祢  ⠡,  ⠢  ks 
         楤 bldks.   ᯮ ⠭ 
        ஢  ,  ਭ騩    1    訩  
        data[0]   64  訩  data[7].

                
               ⥫  砫 , ᮤঠ ஢
        ⥪.

             
            ஢ 䠩  箬, ࠭  passwd:

                  bldks(ks,passwd);
                  while (read(stdin, buf, 8)==8);
                    write(stdout,decrypt(buf, ks),8);

         .    
            bldks,encrypt

                    2.22. doesc - ᨬ escare - ᫥⥫쭮.
                   

          
              doesc - ᨬ escape-᫥⥫쭮.

               

               count doesc(pp,magic)
                 text **pp, *magic;

        . magic -  ⥭.

                 
           doesc -   ᫥⥫쭮 ᨬ,稭-
          *,,  *[0]  escape-ᨬ, ᮮ-
        ⢨  ᫮ﬨ ࠡ⪨ escape-᫥⥫쭮⥩
        ஬ "C".  ⠪  㪠⥫    ⥬,
        ⮡  㪠뢠   escape-᫥⥫쭮, ,
        ६ .

                           - 49 -

             ᫨ (*) [1]    NUL, ⮣ 祭  㤥
        (*)[0], .. ᮡ⢥ escape-ᨬ;  ⢥
        escape-᫥⥫쭮 筮 .  ᫨ (*)[1]
         , ⮣  ⢥ 쬥筮 祭  
           . ᫨ (*)[1]    
         ᫥⥫쭮 "bfnrtv",   㥬   
        㤥 ᮮ⢥騬 童 ᫥饩  ᫥⥫쭮:
        BACKSPACE,  FORMFEED,  NEWLINE,  CARRIAGERETURN,    HORTAB,
        VERTAB), ..     蠣,  ॢ ଠ,  ॢ
        ப,    ⪨, ਧ⠫쭠 ⠡, -
        쭠 ⠡. ᫨ magic  NULL  (*pp)[1]  I-
        ᨬ ப, 稢饩 ᨬ NUL   magic,  ⮣
          (-1 -I).  ⨢  砥  
         (*pp)[1].
              *pp   㪠뢠   ᫥
        ࠡ⠭ ᨬ.


                
             doesc 頥 祭      㪠⥫
        *pp , ⠪ ⮡  㪠뢠  escape-᫥⥫쭮.

             

                     for (s = buf; *s; ++s)
                        *t++ = (*s == '') ? doesc(&s, NULL): *s++;

         .     
              mapchar



                   2.23. dtento - 㬭 DOUBLE  ⥯
                   . 
                                

          
             dtento - 㬭 DOUBLE  ⥯ 

               

             DOUBLE dtento(d,exp)
                DOUBLE d;
                COUNT  exp;

                 
             ᫮ d ⨯ DOUBLE 㬭  10**. ஢ઠ 
        ९    ந.

                           - 50 -

                
             頥 D*10**exp ⨯ DOUBLE.

             
              ப   ப 浪:

             btoi(fr,nfr,&intpart,10);
             btoi(sexp,nsexp,&exp,10);
             dbl = dtento((DOUBLE)intpart, exp - nfr);

         .     
             btod, dtoe, dtof

               
             ᫨ 冷 ᯮ ᮪, 㭪   ࠡ
        쭮  .  (d == 0.0)  ᯥ樠 ⢨
         ந.



                2.24. dtoe - ८ࠧ ⨯ DOUBLE   
                ᯮ樠쭮 ଠ. 
                           

            
                dtoe - ८ࠧ ⨯ DOUBLE    ᯮ樠-
         ଠ

               

                BYTES dtoe(s,dbl,p,q)
                   TEXT *s;
                   DOUBLE dbl;
                   BYTES p,q;

                 
                dtoe ८ࠧ뢠 ᫮ dbl ⨯ DOUBLE  ᨬ-
         ।⠢  , 稭  s,  ᫥饬 ଠ:

                [-]d*.d*\(+i-)\d* .ਬ.

        . | ।⠢ ᮡ ᨬ "⨪.", 
        174. (᪮ ).
             d  筠 .  । ᫮  ࠧ冷
          筮 窨, q - ᫮ ࠧ冷 ࠢ.  -
        ᨬ  ᯮ㥬 設,   ⠪      
        ࠧ鸞  ᯮ.

                           - 51 -

                
             頥 ᫮ ᨬ, ᯮ짮  ।-
        ⠢ ⨯ DOUBLE.

             

                putfmt("area = %b\n", buf, dtoe(buf, area, 1, 5));

         .    
                dtoe



                2.25. dtoe - ८ࠧ뢠  ⨯  DOUBLE  
                  ଠ  䨪஢ 窮
                           

            
                dtof - ८ࠧ뢠 ⨯ DOUBLE    ଠ-
          䨪஢ 窮.

               

                BYTES dtof(s, dbl, p, q)
                   TEXT *s;
                   DOUBLE dbl;
                   BYTES p, q;

                 

            ८ࠧ뢠 ᫮ dbl  ⨯  DOUBLE    ⥪⮢
        ।⠢  , 稭  s,  ᫥饬 ଠ:

                [-]d*.d*

          㪠뢠 ᨬ쭮 ᫮ ࠧ冷   -
        筮 窨, q - 饥 ᫮ ࠧ冷 ࠢ.

                
             ᫮ ᨬ, ᯮ짮  ।⠢ ᫠
        ⨯ DOUBLE.

             

                putfmt("area = %b\n", buf, dtof(buf, area, 10,5));

         .    
                dtoe

                           - 52 -

                2.26. encode - ८ࠧ뢠  ⥪ 
                㬥  ࠢ ଠ.
                             

            
             encode - ८ࠧ뢠 ⥪  㬥  ࠢ-
         ଠ.

               

                COUNT encode(s, n, fmt, parg1, parg2, ...)
                    TEXT *s;
                    BYTES n;
                    TEXT *fmt;

                 
           ८ࠧ뢠 ᮤন n-ᨬ쭮  ,  -
        饣  s, ᯮ ଠ ப fmt    㪠⥫
        㬥⮢ pargx 筮 ⠪,   ᫨      ᮤন
        ⠫  䠩 楤ன getf. ᮡ  ᯮ-
            楤,     室  ⭮
         室 ப.

                
             ⢮ ᯥ譮 ८ࠧ 㬥⮢  EOF
        (-1), ᫨  砫 ८ࠧ     ࠡ⠭  
         ᨬ.

             

                wnile (0<(n=getlin(buf, BYFSIZE)))
                   if (encode(buf, n, "x=%i", &x) <= 0&&
                     (encode(buf, n, "y=%i", &y) <= 0)
                     errfmt(" ࠬ %b\n", buf, n);

         .    
              btod, decode, getfmt,

                 2.27. encrypt - ஢  ⥪
                

          
             encrypt - ஢  ⥪

               

             TEXT *encrypt(data, ks)
                TEXT data [8];
                TINY ks[16][8];

                           - 53 -


                 
             encrypt ८ࠧ뢠 8  ᨬ      
        ஢ , ᯮ 祢 ⠡, ᮧ
         ks  㭪樥  bldks.  ᯮ  ⠭  
        ஢ ,  ஬  1 ⠥ 訬 ⮬
        data[0],   64 - 訬 ⮬ data[7].

                
             ⥫  砫 , ᮤঠ  ஢
        ⥪.

             
             ஢ 䠩 祬, ࠭騬  passwd:

                bldks(ks, passwd);
                while (0<(n=read(STDIN, buf, 8)))
                    {
                     while (n<8)
                        buf[n++]='\0';
                     write(STDOUT, encrypt(buf, ks), 8);
                    }

         .    
                bldks, decrypt



                2.28. enter -  ࠢ饩 
               

          
             enter -  ࠢ饩 

               

                BYTES enter(pfn, arg)
                   BYTES (*pfn)();
                   BYTES arg;


                 
             enter ᮧ  "ࠢ ", ..  -
         㭪 ⠪ ࠧ,       -
        砭  믮 १ 楤 leave,   ⥬  믮-

                           - 54 -

         ᫥ ᫥⥫쭮:

                leave((*pfn)(arg));

               ᫥⥫쭮 㭪,   㪠-
         pfn, 뢠  㬥⮬  arg;  祭,  ஥
         頥, ᯮ   ⢥  㬥  맮
        楤 leave.   ࠢ饩        
        砭 ࠡ  (*pfn) १  맮  楤  leave  
        (*pfn)    ᪨ ஦ ⮬.   
        砥,  ⨢訩 맮 leave 㭨⮦ ᮧ-
         ࠢ    蠥  믮  楤
        enter  祭, 㪠   㬥    맮
        楤  leave.  蠥    ஢  
        ࠢ ⥩.

                
             祭 㬥 ࢮ ⨢襣 맮  -
        楤 leave,   祭 㭪樨  pfn, ᫨ 楤
        leave  믮﫠.

             
              㭪樨 ᫥  ᮮ饭  訡:

                while (s = enter)%func, file))
                    putstr(stderr, s, "\n", NULL);

         .    
             _raize, _when, leave

               
               ᯮᮡ ।  㭪樨  (*pfn)  
        祬  㬥.



                2.29. errfmt - ଠ 뢮  䠩 訡
               

          
             errfmt - ଠ 뢮  䠩 訡

               

                VOID errfmt(fmt, arg1, arg2, ...)
                   TEXT *fmt;

                           - 55 -

                 
             errfmt 믮 ଠ 뢮  䠩 STDERR,  ⠪
        ,  ᭮, ᯮᮡ,   putf.   뢮  ந
        ᫥⥫  맮 楤 write,    -
         䥪⨢  讣 ⢠ ,  
        ⠪ ᯮᮡ  ᥣ ⭮    ⨪
         ᡮ  ࠡ ணࠬ.

                
             . ᫨  訡    楤  write , ⮣
        ந 室  訡.

             

                errfmt("   䠩 %p\n", fname);

         .    
             putf, putfmt



                2.30. error - ᯥ⪠ ᮮ饭  訡
                 室  . 
                            

          
             error - ᯥ⪠ ᮮ饭  訡  室
                      

               

                VOID error(s1, s2)
                   TEXT *s1, s2;

                 
             error 뢮 ᮮ饭  訡  䠩 STDERR. -
          饭 ⮨   ணࠬ pname, , ஡-
          , ப s1  s2  稢 ॢ ப. ⥬
          ந室 室  訡. ப s1  s2   -
          묨 (NULL).

                
            祣  頥 맢襩 ணࠬ.

             

                if((fd=open(file,  READ,  0))<0)
                   error ("    ",file);

         .    
             _pname(),exit()

                           - 56 -

                   2.31. exp
                  

          
             exp - ᯮ

               

              double exp(x)
                 double x;

                 
               筮 ᯮ  x: x/ln(2)
           ࠦ  楫  ஡  ࢠ (-1/2, 1/2).
           ᯮ ஡ பᨬ   ᥤ-
            浪.

                
            襥  exp(x) ७ ।⠢, ࠦ
             ᫮ ⨯ double  饩 窮.᫨ १
            ᫨誮 , ⢫ 室  訡, ᫨ -
             饭,⮣ 頥 襥 ।⠢-
             祭.

             

            sinh(x) = (exp(x) - exp(-x)) / 2.0

         .     
             _range, ln


              2.32. fclose -  䠩, ࠢ塞
              ஬ fio. 
                           

          
             fclose -  䠩, ࠢ塞 ஬ fio.

               

              fio *fclose(pfio)
                 fio *pfio;

                           - 57 -


                 
             fclose 뢠 䠩, ࠢ塞 ஬ fio,  -
           㪠뢠 pfio. ᫨ ࠢ騩    樠-
          ஢ ० WRITE    BWRITE,    ⠢
          뢥 ଠ  ய    ࠢ騩  
          㤠  ᯨ᪠ ஢;  㤥 㤠 ᫥  -
          砭 ࠡ ணࠬ.

                
             fclose 頥 祭 pfio, ᫨  䠩    -
          쭮 , ⨢ 砥- NULL.᫨ (pfio ==NULL),
          ⮣ ந室 室  訡.

         .     
             fcreate, finit, fopen


             2.33. fcreate - ᮧ 䠩  樠஢
             ࠢ騩 . 
                           

          
             fcreate - ᮧ 䠩  樠஢ ࠢ騩
        

               

                 fio *fcreate(pfio, fname, mode)
                    fio  *pfio;           .ਬ.
                    text *fname;
                    count mode;

        .  ਣ 㪠: fio *fcreate;

                 
             fcreate ᮧ 䠩   fname  ० mode,
        ᫨ 䠩 ᮧ, ⮣ 樠 ࠢ騩 
          pfio  ଠ쭮 ࠡ  䠩.mode 
           ᫥ 祭: BWRITE, READ, WRITE.

                
             ᫨ 䠩 ᮧ,fcreate 頥 pfio, ⨢-
           砥 NULL. ᫨ (pfio == NULL),⮣ ந室
          室  訡.

             

                if (!fcreate(&fio, "file", READ))
                   errfmt("   ᮧ 䠩\n");

                           - 58 -

         .     
             create, fclose, finit, fopen


             2.34. fill -   ᨬ
             . 
                        

          
             fill -   ᨬ .

               

                 bytes fill(s, n, c)
                    text *s, c;
                    bytes n;

                 
              n-ᨬ , 稭騩  s, ᨬ-
          c.

                
             ᫮ n.

             
              512-   ᨬ NUL.

               write(fd, buf, fill(buf, BUFSIZE, '\0'));

         .     
             queeze



              2.35. finit - 樠 ࠢ騩
               fio. 
                          

          
             finit - 樠 ࠢ騩  fio.

               

               fio *finit(pfio,fd, mode)
                 fio *pfio;
                 file fd;
                 count mode;

                           - 59 -

                 
              finit 樠 ࠢ騩   fio    -
        쭮 ࠡ  䠩,  稭  pfio,   䠩-
         - fd,० - mode.  ᫨ (mode == BWRITE),  ⮣   
        ⠭  ஢ , ..   頥-
         ⮫쪮      砭  ࠡ  ணࠬ.
        ᫨ (mode == READ), ⮣ ࠢ騩   ⠭-
          ⥭.   ⨢ 砥, (mode == WRITE)   ࠢ-
        騩  ⠭  .    㤥  -
        ஢ ⠪ ,     ०  BWRITE  ⮫쪮    ⮬
        砥, ᫨  䠩 fd  ॠ뢠 맮  lseek,
        .. 뢮 ந  䠩,     ࠪ⨢  -
        ன⢮    (㯯  ,  '  ண-
        ࠬ묨 ) (pipeline).    ਧ  뢮
          뢮    ⮫쪮  室  ᥣ  砥
        ᨬ  ப  ணࠬ ४頥 ࠡ.

                
             pfio. ᫨ (pfio == null),⮣ ந室 室 
        訡.

             
             ன STDOUT   䥪⨢ ஢-
        :

                finit(&stdout, STDOUT, WRITE);

         .     
             fclose, fcreate, fopen

              
              ஢   (mode == update),
         ࠡ.


              2.36. fopen -  䠩  樠஢
              ࠢ騩 . 
                          

          
             fopen -  䠩  樠஢ ࠢ騩
        .

               

                 fio *fopen(pfio, fname, mode)
                    fio *pfio;           . ਬ.
                    text *fname;
                    count mode;

                           - 60 -

        .  ਣ: fio *fopen;

                 
             뢠 䠩   fname   㪠  ०
        mode.᫨ 䠩 ,樠 ࠢ騩 
          pfio  ଠ쭮 ࠡ  䠩.  祭
        mode: BWRITE, READ, WRITE.

                
             pfio,᫨   浪, - NULL.᫨ (pfio ==
        NULL),⮣ ந室 室  訡.

             

             if(!fopen(&fio, file, read))
                errfmt("    %p|n", file);

        .     
             fclose, fcreate, finit, open


             2.37. fread - ⥭
            

          
             fread - ⥭   稪.

               

                count fread(fd, buf, size)
                   file fd;
                   text *buf;
                   bytes size;

                 
             fread ⠥ ᨬ  䠩,㪠  fd,   -
        ,稭騩  buf,⢮ ᨬ 㪠  size.
        ⥭ ந室  맮 楤 read  
         䠩    뢠 㪠 ᫠   ᨬ-
        . ࠧ fread ᫥ ᯮ짮    -
        ,  室   ࠧ  楫 ,
        ..read  ࠧ      ⪨  稪
        (short count).

                           - 61 -

                
            ᫨  뫮  䠩,fread ᥣ 頥 size,
         ⨢ 砥, 頥 祭    0   size
        ⥫쭮.

             
             ᪮஢ 䠩 ᥩ ⨯ integral:

                 while (fread(stdin,buf,recsize) == recsize)
                    write(stdout, buf, recsize);


        .    
             read(111)


             2.38. free - ᢮ ࠭⢮ 
             . 
                        

            
               free - ᢮ ࠭⢮  .

                 

                    text *free(pcell,link)
                        text *pcell;
                        text *link;

                   
               頥 १ࢨ஢ 祩    -
            饣 ᯮ짮,⥬ 頥 맢襩 ண-
            ࠬ 離 link.⥫ 祩 pcell   -
            祭  ࠭  १ 맮 alloc; ⨢ 砥 ந-
             ࠧ襭  .楤 free -
             ᥬ ᨫ  ᥡ  ४ 맮
            ,᫨   ࠢ 㪠 ࠬ, 멤  
            訡. 䠩 STDERR 㤥 ᠭ ᮮ饭 "BAD FREE
            CALL" (४ 맮 free)  ⮬ 砥,᫨ 
            pcell   ࠭ १ࢨ஢  ᫨  ࠧ
             - 稭 ࠧ襭.᫨ 楤 free -
            뢠  ᮬ,室騬  ᢮ 
            (free chain),⮣  ᮮ饭 "FREEING A FREE
            CELL" (᢮  ᢮  祩).   㪠뢠
            NULL  ⢥ pcell, ⠪ 砥  .


                           - 62 -

                  
               ᫨ 頥, ⮫쪮 link, ⨢ 砥 
           ᯮ.

               
               ⮫   ⥪:

                   struct cell {
                      struct cell *prev;
                      ...⮪ 祩...
                      }

                   top = free(top, top->prev); /*⠫ 祩*/

           .    
               alloc, frelst, nalloc, sbreak(III)

                 
                १ࢨ஢  祩  ࠭    楫
            ।⢥  ।  ᯮ㥬  祩,
          ⮬       (clobbered).   ᢮-
              ⮪  ࠧ뢮  (t
          lower system break), ⮬  ,  ࠡ  
           (heap)    ᮡ ⭮   -
            ⥪,  ࠩ ,   ⥬.


               2.39. frelst - ᢮ ᯨ᮪
               १ࢨ஢ 祥.
                            

            
               frelst - ᢮ ᯨ᮪ १ࢨ஢ 祥.

                 

          struct list *frelst(plist,pstop)
               struct list {struct list *next; ...} *plist, *pstop;

                   
               frelst 室    ᥬ 易 ᯨ,஥-
           १ 맮 楤 alloc, ᢮    祩
          ᯨ᪠.  祩    ⨯     ⠭-
             ᫮:   ࢮ      
          ⮨ 㪠⥫  ᫥ 祩.  ᮪   稢
          㪠⥫ NULL  pstop.

                  
               ⥫, 稢騩 ᯨ᮪ - NULL  pstop.

                           - 63 -

               

                struct list {
                    struct list *next;
                    ...}2 *list;

                list = frelst(list, NULL);

           .     
              alloc, free

                 
               ᫨ ᢮ ᯨ᮪,ᤥ - 㣨
          ᯮᮡ, ஬  맮  alloc, ᫥⢨  ᥣ  㤭
          ।⠢



               2.40. getbfiles - ᮡࠥ 䠩   ப.
              

            
              getbfiles - ᮡࠥ 䠩   ப.

                 

                   file getbfiles(pac, pav, dfd, efd, rsize)
                      bytes *pac, rsize;
                      text ***pav;
                      file dfd, efd;

                   
               getbfiles ᬠਢ 䠩 㬥, ।-
            ,  뢠  室 䠩    ⥭.
          室 㬥 㪠뢠 稪,  㪠-
          뢠 pac,  ⠪ ᨢ ⥪⮢ 㪠⥫,  -
           㪠뢠 pav; ⠥,     䫠  -
          ᪠,ਬ,맮 getflags. ᫨ ᫥ ࢮ -
           getbfiles  㬥⮢    ⠫ (*pac == 0), ⮣
          頥  ਯ  䠩    㬮砭  dfd,   
          ᫥騥 맮    ⢥࣭.   ⨢  砥
           맮 getbfiles 㤥  ᬠਢ  ᫥⥫-
           ᫥騩 㬥.
               ᫨  䠩 ᮮ⢥ ப "-", ⮣ -
          頥 dfd.   ⨢ 砥    ⪠  

                           - 64 -

          䠩  ⥭  ࠧ஬ , 㪠  rsize. ᫨ 
          䠩 ᮤঠ  ,   ⠥ ⥪,⮣-
           rsize    ࠢ . ᫨ 楤 믮-
           ᯥ譮, 頥 ਯ ⮣ 䠩. ᫨
           䠩  㤠, 頥 efd. ᫥  ࠡ⪨
          ᫥  䠩  맮 getbfiles    ⢥-
          .䠩, 楤ன getbfiles,  뢠-
           뢠饩 ணࠬ.

                  
                 䠩 ਯ,祭 ᠭ  -
          ⥬,    訡 -1;  맮  getbfiles  
           頥  訡.  ᫥  맮 *pac  *pav
            ᮮ⢥⢨   ⠢訬 ᫮ 㬥⮢.
             㬥 ௠, *pac ⠭   -1.
          ᫨ 饭 䠩 ਯ -  dfd,  ⮣  
          ࠡ뢠饣 䠩 (⮣  )  ᮤন   
          (*pav)[-1].

               
               室 ᯨ᪠  䠩:

               bytes ac;
               text **av;

               while(0<=(fd=getbfiles(&ac,&av,STDIN,STDERR,1)))
                   if(fd==STDERR)
                     errfmt("   %p\n", av[-1]);
                   else
                     {
                     process(fd);
                     close(fd);
                     }

           .     
               getfiles, getflags, open


               2.41. getc -  ᨬ  室 .
              

            
               getc -  ᨬ  室 .

                 

                  metach getc(pfio)
                     fio *pfio;

                           - 65 -

                   
               getc 砥  ᫥騩 室 ᨬ, ᫨ ⠪
          , 䠩, ࠢ塞 ஬ FIO   pfio.
          ᫨ 祭  䠩, 頥 ,  
          ⫨   ᨬ.

                  
                   ( '\0')  쪮 ⥫-
           楫;  䠩 砥  -1. ᫨  ⥭
           㤠  (pfio==0), ⮣ 室  訡.

               
               ᨬ쭮 ஢ 䠩:

                  while (putc(&stdout,getc(&stdin)) != EOF)

           .     
               getch, putc, puch


               2.42. getch -  ᨬ  室 
               stdin. 
                           

            
               getch -  ᨬ  室  stdin.

                 

                   metach getch()

                   
               getch 砥 ᫥騩 室 ᨬ, ᫨ ⠪
          ,   䠩,  ࠢ塞 ஬  FIO stdin; ᫨
          祭  䠩, 頥 ,   ⫨-
             ᨬ.

                  
                 ( NUL)   쪮 ⥫쭮
          楫;  䠩 砥  -1. ᫨  ⥭  
          㤠 - ⮣ 室  訡.

               
               ᨬ쭮 ஢ 䠩:

                  while (putch(getch()) != EOF)

           .     
               getc, putc, putch

                           - 66 -

               2.43. getf - ⠥ ଠ .
              

            
               getf - ⠥ ଠ 

                 

              count getf(pfio, fmt, arg1, arg2, ...)
                  fio *pfio;
                  text *fmt;
                    ...

                   
               getf ⠥ ⥪  䠩, ࠢ塞  ஬  
           pfio,    ᮮ⢥⢨  ࠢ饩
          ଠ⭮  ப, 稭饩    fmt,   ⮣  ⮡
          ᢮ ८ࠧ 祭 ᫥⥫쭮  -
          ६,  㪠뢠 㬥 arg1  .. ଠ-
           ப ⮨  ॢ ப (newline)   ⥪,
          ஬ 室  ᮮ⢥⢨.  ⥪  
          ᯥ䨪 ,।騥 ᯮᮡ ⥭  ८ࠧ-
           室 ⥪  ᢮.室 ⥪ ࠡ-
           筮. ⢮  ࠡ⠭      맮
          ப ࠢ   <>   ଠ⭮ ப(
          , ᫨  ᫥ ॢ ப  ଠ  
             ᨬ).  ᪫祭  砩,  
          ଠ⭮ ப   ᨬ "%".    ᫥⥫쭮
          ᮮ⢥ ந ஡,ࠢ୮ ।-
            ᪮쪨 ப.

          :
               getf(&stdin, "%i\n%i\n%i, &arg1, &arg2, &arg3);

           ⮩ ப ६ 楫 㬥⠬ ᢠ 祭
           ᫥⥫ ப  stdin,⮣   ᫥饬
          ਬ 祭 ६ 楫 㬥⠬  ᢠ   
           ࠧ ஡   ப stdin:

                getf(&stdin, "%i%i%i", &arg1, &arg2, &arg3);

                ࠡ⪠ ᨬ쭮 ⥪  ந室  ᨬ쭮.
          ᫨ ᨬ   ଠ⭮ ப  ᮮ⢥ ᫥饬
          ࠡ뢠 ᨬ  室 ப,ࠡ⪠ ४-

                           - 67 -

          頥.  <>  ଠ⭮ ப ᮮ⢥ 
          ⠢襬  室 ப ᨬ, ᫥ -
          ॢ ப,᫨ ⠪ . .. <>  ࠡ뢠-
           ⮫쪮  㪢쭮 ᮮ⢥⢨,  㦥  "%"
           (  )  ଠ⭮ ப, 訬  ᯮ-
           ⥭ ᪮쪨 ப    饭  
          getf  ᯮ짮  "\n".
               䨪   ᫥騩 :

               %[+z\!-z][#]< >

                 ࠧ,ᯥ䨪   ⮨    ᨬ
          "%",    ᫥ +z  -z, z   
           ᨬ,  ᫥ 易⥫쭠    #,
          稢 ப  .᫨ 㪠 "+z",⮣ -
          室    ᨬ z,᫨ "-z",  -
           ࠢ . ᫨   "#", ⮣ 
          㪠뢠    ᨬ  ,   
            筮 楫, ᨬ "n". ᫨ 㪠 n,
          ⮣  ⢥    ᫥騩  㬥  
          ᯨ᪠ 㬥⮢.

                :
               ⥭ ᨬ쭮 ,
          ᫥  "*",    ᫠  饩
          窮:

               getf(&stdin, "%+*9f", &arg1);

          
               getf(&stdin, "%+*nf", &arg1);

               ⢮ ᨬ,  ࠡ⪥  ६  -
          ࠧ , 㪠뢠  .᫨  ᫥饣
            <>    ᨬ,  祬  㪠, ࠡ뢠
          ⠢  ப. ᫨ ਭ  㪠,騥 -
           ய᪠      ਭ  ᫥  㯯
          ᨬ.  ⢮  ࠩ    ⫨-
            ஡ ᨬ. ⢮  ८ࠧ  ᨬ
          ࠢ  ᨬ    ᨬ .   ᫨
          ᨬ  , getf ⠥,  -
           ᫥ ஡.
                 $ 100.53   ⠭   楫 ᫠ 
           ப:
               getf(&stdin, "$%61.%21", &dollars, &cents);
                  ᫮   筮   ᫥-
           ᯮᮡ:
               getf(&stdin, "%+$10d", &cash);
                :
               getf(&stdin, "$%d", &cash);

                           - 68 -

                   ⮨  䨪 | ᯥ䨪.
          䨪 ।  ᯮᮡ  ८ࠧ 室 -
            ।⠢  ᥡ   ᫥ ᨬ:

               c - ᨬ 楫
               s - ⪮ 楫
               i - 楫
               l -  楫
               p - ப,稢 <NUL>
               b -  㪠 
               d - 
               f -  饩 ⮩
               x - ࠡ⪠  ८ࠧ
             䨪  ᯮ    ஢ 室
          楫 ६ ᫥騬 ࠧ:

          a -  ascii  뢠饬 浪 ᫮ 祭.
          h - ⭠筮 祭 ( 騬 ﬨ   )
           - 쬥筮 祭 ( 騬 ﬨ   )
          u -  筮 祭
               ᫨  ᯥ䨪    㪠, 㬮砭  "i",
            㪠  㤥  ࠭  䨪, ᮮ⢥-
          騩 ࠧ㬥 楫  . ᫨  祭  ᯥ䨪-
           ࠢ '','s','i'  'l'    祭  䨪  
          㪠,⮣         -
          .
               ஬  ⮣,  易⥫  䨪  筮 ".#"
          ࠭稢 ⢮ ᨬ,      -
            ᯥ䨪ࠬ 'p'  'b'.   ᮢ⨬   -
          楤ன rutf, ᯮ짮 ⮣ 䨪 ࠧ襭 
          ᯥ䨪ࠬ 'd'  'f',   祭    砥
          .   ,   ᯥ䨪   , -
          䨪 #  㪠뢠 ⭮  祭   'n' , 
          ⠪ 砥   ⢥    祭    ᫥騩
          㬥 ᫥⥫쭮.
                ࠧ ,   ।⠢  ᥡ , 筮,
            ᫥  権 ᯥ䨪  䨪:

          [a\!h\!o\!u]{c\!s\!i\!l}   /* 楫*/
          [.#]{b\!p\!d\!f}     /*筮   f  d*/
          {a\!h\!o\!u}         /*ᯥ䨪  㬮砭 - i */
          {x}                  /*ய */


                           - 69 -

                㣮 ᨬ      ਭ
            ᨬ, ஬ 㦭   ᮮ⢥⢨  室-
           ப.  ࠧ , ᨬ '%'   ਭ
           ᯥ䨪஬ "%%",  ᨬ '\n'    ਭ
          ( ய᪠ ᨬ  室 ப )   ᯥ-
          䨪 "%\n". , . . ᨬ "%"    "\n"    
          ᯥ樠쭮 祭, ᫥⥫쭮  "%\n"   " " ᮮ-
           ⮫쪮  ᨬ.
                 ᯥ䨪஬ , 騬    ଠ⭮
          ப,   ᯨ᮪ 㬥⮢,  ஬    ⮩ 
          ᫥⥫쭮    室 㪠⥫   
          ᮮ⢥饣 ⨯. 㬥-㪠⥫ ᯮ  
          祭 ࠢ쭮 ८ࠧ .
                ᫥饬 ਬ 楫 ⠥   ⭠-
           , ᨬ쭮 祭 (char-sized) -  ASCII,⪮
          - 筮  . 㬥 ࠧ  易⥫-
          묨 ஡:

                getf(&stdin, "%8h%ac%s",&addr, &code, &offset);

                 楫   ᮤঠ 騥 ஡,
          ᫥ 㡨࠭  ᨬ , 易⥫  
          "+"  "-",  ⠪ 易⥫쭮  ᨬ  "l"    
          ॣ (⨬ ᨬ    몥 "C" 砥  
          ⠭).   ⢮   ᠭ
          ᨬ ८ࠧ, . .  ⮬ 砥 ࠡ⪠ 㤥
          祭, ० 祬 㤥 ᤥ ᢮  ᮮ⢥-
          饣 㬥.
                 䨪 '' ࠡ뢠 室   ᫥⥫-
           ᨬ  ८ࠧ뢠    ᫮    ᭮
          256, ࠧ鸞 ண  ᨬ .  㬥  -
           祭 , ।⠢ 訬  ⠬ ⮣
          ᫠.
                㬥⠬    ''  'b'    ᢠ-
            楫  ப  ⥪.     ࢮ  砥  㬥
           㪠⥫   砫  ப,   室  ᨬ
               ப  稢騬 ᨬ  'NUL'.
           ஬ 砥 㬥 ⠪  㪠⥫  ⥪
           ஢ ந室    饣  ᨬ
          'NUL',  ⢮ 뢠 ᨬ  ।   
          ᯮ짮 ᫥饣  㪠⥫ 㬥,  
           㪠⥫  楫 .     砥 , ᫨  -
           䨪 筮      ࠢ ,  -
          ⢮ ⢨⥫쭮 ᪮஢ ᨬ  㤥   -
          , 祬  祭.
               ਬ, ப str    ᢮  筮  
          ᨬ  室 80-ᨬ쭮 ᫥⥫쭮 ᫥-
          騬 ࠧ:

                getf(&stdin, "%80.np", 1, str);

                           - 70 -

            ᫠  饩 窮   ⠭   ᯮ-
         'd'  'f'  ६     筮  
         ᮮ⢥⢥.   砥,    
         䨪஢ ⮩, ⠪   ᯮ樠쭮 -
        祭 (. btod). 騥 ஡  ய饭,  
        ᫥ 㤠 ᨬ .  䨪  筮
        .
              '' 㪠뢠   㬥⮢;    ᯮ-
          ய᪠ ⥪.

                        
            頥  ⢮  ᢮  㬥⮢  
        EOF,  ᫨  砫 ८ࠧ    㦥  
        室 䠩. ᫨ pfio==NULL, ⮣ ந室 室 
        訡.

                  
             ࠣ ணࠬ:

        FIO input;
        TEXT wuf1 [BUFSIZE], buf2[10];
        BYTES nargs, x, y, z;

        nargs=getf(&input, "%b%-*i%.6p%4i", &buf1, &x,&y,&buf2,&z);
        if (narg != 5)
            putstr(STDERR, "ࠢ ଠ \n", NULL);

         室 ப:
                line 17** identifier 263

        ⢨ ᫥騥 ᢮:

        "line" >> wuf1,  稢饣 NUL
        4 >> x
        17 >> y
        "ident" >> buf2,  稢騬 NUL
        263 >> z

         .     
                btod, encode, getfmt



                           - 71 -

                2.13. getfiles - ⨥ ⥪⮢ 䠩
               

          
                getfiles - ⨥ ⥪⮢ 䠩

               

                file getffiles(pac, pav, dfd, efd)
                    BYTES *pac;
                    TEXT ***pav;
                    FILE dfd, efd;

                 
              楤 ஢ ।  䠩
        㬥  뢠 ⥪⮢ 䠩  ⥭. ஢-
         㬥 㪠뢠 稪,     㪠뢠
        ,  ᨢ ⥪⮢ 㪠⥫,    㪠뢠
        pav. ⠥,        ய饭, -
        ਬ,   맮 getflags. ᫨  ࢮ  맮
        getfiles  㬥⮢, .. *pac==0,  ⮣  頥
        ਯ 䠩  㬮砭 dfd,   ᫥騥 맮
         ⢥࣭.  ⨢  砥,      맮
        getfiles 㤥 ࠡ뢠 ᫥騩   ᫥⥫쭮
        㬥.
            ᫨  䠩 ᮮ⢥ ப "-", ⮣  -
        頥 dfd.  ⨢  砥    ⪠  
        䠩  ⥭  ⥪⮢ 䠩. ᫨ 䠩   㤠-
        , 頥  䠩 ਯ. ᫨ ⪠ 
        㤠 - 頥 efd. ᫥ ࠡ⪨ ᫥ -
         䠩  饭  getfiles  ⢥࣠. -
         䠩,  楤ன  getfiles,  맢
         ணࠬ.

                
            頥 䠩 ਯ, 祭  㪠
         ᯮᮡ,    訡  -1;        
        뤠  饭  getfiles. ᫥  맮
        楤 㪠⥫ *  *pav ,  ࠦ  -
        ⢮ ⠢ ࠡ⠭묨 㬥⮢.    -
         ௠, * ਭ 祭 -1.  ᫨  -
        饭  䠩  ਯ  ⫨祭    dfd,   ⮣  
        (*pav) [-1] 室  䠩 (⮣   ).

             
                ᬮ ᯨ᪠ 䠩:

                           - 72 -

        BYTES ac;
        TEXT **av;

        while (0<=(fd=getfiles(&ac, &av, stdin, stderr)))
                if (fd==STDERR)
                    errfmt("訡 ⥭ %p\n", av[-1]);
                else
                    {
                        process(fd);
                        close(fd);
                    }

         .    
                getfiles, getflags, open



                2.45. getflags - 뢠 䫠  
                ப. 
                               

          
                getflags - 뢠 䫠   ப

               

                TEXT *getflags(pac, pav, fmt, arg1, arg2, ...)
                   BYTES  *pac;
                   TEXT ***pav;
                   TEXT *fmt;
                        ...
            楤 getflags  ࠡ뢠  䫠,  ।
          ⠭ 䫠, 稪, ᨬ  -
           ப, 㪠 ଠ⭮ ப. ࠡ-
        뢠 㬥 । 稪,   㪠-
        뢠 ,  ᨢ ⥪⮢  㪠⥫,    
        㪠뢠 pav.  㬥 ⠥   
        ய᪠.  ᫥騩  㬥  ਭ
            䫥  ᫥ ᫮:
           1.  稭   '-'  '+';
           2.    ப "-"  "--".
         ⨢ 砥   㬥  ய᪠
        騩  '-'.
            fmt -   ਯ஢, ।,   
        ஢ 㬥 arg1  .. ਯ  ।-
        ⠢  ᥡ ᫥⥫쭮 ᨬ ᮮ⢥⢨,
        稢  ',' , '>' , ' n'   ':',  
        稢 ଠ ப.  ଠ஢ -
         ᫥騬 ࠧ:

                           - 73 -

        '*'
                - ᥣ ᮮ⢥  ⠢襩    ⥪饣
                㬥,  ᫨    -  ⠫,  
                ᥬ ᫥饬  㬥, ᫨ ⠪ -
                ,    ⮩  ப    ⨢  砥.
                祭 ᮮ⢥⢨    㫥  㪠-
                ⥫  砫 ࠭ ப.
        '?'
                - ᥣ ᮮ⢥ ᫥饬 ᨬ 㬥,
                ᫨  ,   ᨬ   NUL.   祭  ᮮ-
                ⢨   ࠭  ᨬ,    
                楫 ⠭.
        '#'
                - ⠥    ⮪  ⥪饣  㬥,
                ᫨   ,      ᫥騩  㬥,  
                楫. 祭  ᮮ⢥⢨    筮
                祭 ப,  ᫨      稭    '0',
                  ⭠筮 祭,  ᫨    -
                  '0' , ,  ⨢ 砥,   쬥-
                筮 祭. ᫨ 㬥       ᫨
                     ࠡ⠭,    楫  
                ࠭ ᭮, ந室 室  訡.
        '##'
                -  ,   '#',     楫  ᯮ
                LONG.
        ','
                - ᢠ ࠭ 祭  ᮮ⢥饬
                㬥     ᫥⥫쭮  arg1,   ...  ᫨
                ࠭ 祭 ,  ⮣  㬥 
                ᬠਢ , 稭   ᫥,  -
                ஬ 뫮 ࠭  ᮮ⢥⢨    ᯮ짮
                ᫥饣 ਯ.
        '>'
                -  ,   ',',   㬥-  㪠⥫  -
                 ன ᫥饣 :

                struct {
                   BYTES ntop;
                   TEXT *val[max];
                   } args [max];

                - ᫨ (0<ntop), ⮣ ntop 㬥蠥    祭
                뫠  val[ntop],   ⨢  砥  ந-
                室 訡.
        '\0'
                -  ,    ','  ,    ᫨    ᮮ⢥⢨,
                ந室 訡.

        ':'     - ᫨  ଠ⭮ ப  ᯥ譮 ࠡ⪨ 䫠-
                 砥 稥, ⮣ ᫥    -

                           - 74 -

                稥 ப, 稢  ᨬ  NUL,  -
                뢠  STDERR.  ।  ⮩  ப    :
                "usage:  <pname>",    ..   "ᯮ짮:    <
                ணࠬ>",  <pname>  -    ,    
                뫠  맢  ⥪  ணࠬ.  ⥬  楤
                getflags   ⠭    뤠  ᮮ饭  
                訡.  ᫨    ᪮  ப  室
                㪢 'F' ( 孥  ॣ),  ⮣    -
                   ७  ।⠢  ப
                ଠ⮢ 䫠,  ।饩  .  -
                ,  稨 ଠ⭮ ப:

            "a*>+b,c?,z:f<files>

        㤥 뤠 ᫥饥 ᮮ饭:
            usage: pname -la*^ +b c? z] <files>

              㣮  ᨬ  맮   ᯥ譮   ᮮ⢥⢨
        ⮫쪮  ⮬ 砥, ᫨ ᫥騩 ᨬ   ப
        㤥    祭.   祭   ᮮ⢥⢨   
        㫥᪮ YES.
            ࠢ,      楤  getflags  ࠡ뢠
        ப, 뢠    ࠭祭    冷  㪠
        䫠  ଠ⭮  ப.    䫠,      ண
         䨪ᮬ   㣮  䫠,      
        ଠ⭮ ப ᫥   䫠.  ᫥,
         ﭭ 䫠, ⠪  "-#", "-*"  㪠뢠-
         ᫥.

                        
           楤 getflags  頥  㪠⥫    ⠢
        ப 㬥⮢ ணࠬ,  ᫨  ந諠  訡,    
        ଠ⭮ ப   .   ⨢  砥,
        訡 뢠 뢮 ⨪  室    ணࠬ  
        訡. ᫨  㬥 ᯥ譮 ࠡ⠭,  頥
        NULL. 祭,   㪠뢠 pac  pav,  ,
        ࠦ ᫮ ࠡ⠭ 㬥⮢. ப  "__"  ࠡ-
        뢠  ਧ  䫠,   ப  "_"  ਭ-
           ᯥ樠쭮  䠩      ࠡ-
        .  ᠬ,     㪠뢠  㬥  arg1,
        arg"  ..   ᠭ    祭.
              ,    㪠뢠  祭  
        楫묨  㪠⥫ﬨ,   ᪫祭    ਯ
        "##" (long)  '>' (struct),  ᠭ .

                           - 75 -

                  
                  ப:
        cmd +3 -3  filename -mx -010000 <files>
                 :

                  BOOL mxflag {no};
                  BYTES mont {0};
                  BYTES from {0};
                  BYTES to {0};
                  LONG bias {0};
                  TEXT *fname "default";

                  COUNT main(ac, av)
                  BYTES ac;
                  TEXT **av;
                  {
                  getflags(&ac, &av, "b##,f*,mx,+#,#*f<files>",
                  &bias, &fname, &mxflag, &mont, &from, &to)
                  }

         .    
                getfiles, usage

               
                ਯ  "##"    ᯮ짮    ⥪
        樥 '>'.



                2.46. getfmt - ଠ   stdin
               

          
                getfmt - ଠ   stdin

               

                COUNT getfmt(fmt, arg1, arg2, ...)
                    TEXT *fmt;

                 
               楤  getfmt  ⠥  ଠ      䠩,
        ࠢ塞  ஬  FIO  stdin,  筮  ⠪      -
        ,   getf.

        .   砥 "stdin"        
        ॣ - ⠪ ࠧ  砥  ,   ⫨稥  
        "STDIN"  孥 ॣ: ⠪ 砥 䠩.

                           - 76 -

                
           getfmt  頥  ⢮   ᯥ譮   ८ࠧ
        㬥⮢   EOF (-1),  ᫨    ८ࠧ    
         㬥  ⨫    䠩.  ᫨  -
        㬥  ⠫, ந室 室  訡.

             

                for (lsum=0; 0<getfmt("%1", &lnum);)
                   lsum=++lnum;

         .     
                encode, getf, stdin



                2.47. getl - ⠢ ⥪⮢ ப
                 室 . 
                           

          
            getl - ⠢ ⥪⮢ ப  室 

               

                BYTE getl(pfio, s, n)
                   FIO *pfio;
                   TEXT *s;
                   BYTES n;

                 
           楤 getl  ᨬ    䠩,  ࠢ塞-
         ஬ FIO   pfio,   n-ᨬ  ,  -
        稭騩  s. ஢ ந室      :
        1. ᪮஢ <LF>;
        2. 諨   䠩;
        3. ᪮஢ n ᨬ.

                
           楤 getl 頥  稪  ᫠  ᪮஢
        ᨬ, 祭 ண 㤥   1    n,  ᫨  
        ⨫  䠩,  ⮣      饭  
        楤  getl      .  ᫨  ந
        訡 ⥭  (pfio==NULL) - 室  訡.

                           - 77 -

             
                筮 ஢ 䠩:

        while (putl(&stdout, buf, getl(&stdin, buf, BUFSIZE)));

         .     
                getlin, putl, putlin



                2.48. getlin - ஢ ⥪⮢ ப
                 stdin. 
                             
          
                getlin - ஢ ⥪⮢ ப  stdin

               

                BYTES getlin(s, n)
                        TEXT *s;
                        BYTES n;

                 
            楤 getlin  ᨬ    䠩,   ࠢ-
         ஬ FIO stdin,   n-ᨬ  ,  稭騩
          s. ஢  ந室          :
        1. ᪮஢ <LF>;
        2. 諨     䠩;
        3. ᪮஢ n ᨬ.

                
           楤  getlin  頥  稪  ᫠  ᪮஢-
         ᨬ, 祭 ண 㤥  1   n,  ᫨  
        ⨫  䠩,    ⮣      饭  
        楤  getlin      .  ᫨  ந
        訡 ⥭ - 室  訡.

             
                筮 ஢ 䠩:

        while (putlin(buf, getlin(buf, BUFSIZE)));

         .     
                getl, putl, putlin, stdin


                           - 78 -

                2.49. inbuf -  ᨬ  
               

          
                inbuf -  ࢮ    ᨬ
                 

               

                BYTES inbuf(p, n, s)
                   TEXT *p, *s;
                   BYTES n;

                 
              楤  inbuf  ᬠਢ  n-ᨬ  ,
        稭騩   ,   ࢮ  ᨬ  
         s,   ண   ⮨  NUL.  ᫨  ᨬ  NUL
          , ⮣        ࢮ
        .

                
            楤 inbuf 頥 浪   ᨬ  
        ,  ⠪   s,  n, ᫨   
          ᨬ  .

             
           ஢  ᨬ NUL:

                while ((i= inbuf(buf, n, "\0")) <n)
                   buf{i}=' ';

         .     
           instr, notbuf, notstr, scnbuf, scnstr, subbuf, substr



                2.50. instr - 宦 ᨬ  ப
               

          
           instr - 室 ࢮ   ப ᨬ
                    

               

                BYTES instr(p,s)
                   TEXT *p, *s;

                 
           楤 instr ᬠਢ ப, 稭  
         ,   ன ⮨ NUL,  ࢮ 
        ᨬ   s,   ண ⠪ ⮨ NUL.

                           - 79 -

                
            楤 instr 頥 浪  ᨬ 
        ,  ⠪   s,   浪  
        ᨬ NUL, ᫨  ,  .

             
               ⠥  ᨬ  (  64-ᨬ쭮
        ନ):

                while (string{i = instr(string, " 
                                ᨬ")})
                        string{i} = '`';

        .   "  ᨬ"  ਣ-
         﫮  ந       
        ନ   ன  .

         .     
                inbuf, notbuf, notstr, scnbuf, substr



                2.51. isalpha - ஢ઠ  稥
                䠢 ᨬ
                              

          
            isalpha - ஢ઠ  稥 䠢 ᨬ

               
                BOOL isalpha (c)

                 
           楤 isalpha ஢,      㬥
        䠢 ᨬ,  孥   ॣ. ..
         楤 믮   ९ "C", 
        㬥    ᫮ ⨯.

                
                isplpha  㫥᪮ r - 祭

             
           宦 砭 䠢⭮ ப:

                if (isalpha(*first))
                   for (last = first: isalpha(*last); ++last)

                           - 80 -

         .     
            isdigit, islower, isupper, iswhite, tolower, toupper

               
                ..    楤  ᮬ,  
        뢠 ⮫쪮  "C"-ணࠬ     .
        㬥  묨 䥪⠬   ᫥  
         ࠧ.



                2.52. isdigit - ஢ઠ  
               

          
                isdigit - ஢ઠ  

               
                BOOL isdigit(c)

                 
              楤 ஢,    㬥 -
         ன,  ..     ஬⮪  '0'  '9'
        ⥫쭮. ..  楤 믮   -
         ९ "C",   㬥    ᫮-
         ⨯.

                
                isdigit  㫥᪮ r-祭.

             
                ८ࠧ ப   ᫮:

                  for (sum = 0; isdigit(*s); ++s)
                        sum = sum * 10 + *s - '0';

         .     
             isalpha, islower, isupper, iswhite, tolower, toupper

               
             ..   楤    ᮬ,    
        뢠 ⮫쪮  "C"-ணࠬ     .
        㬥  묨 䥪⠬   ᫥  
         ࠧ.


                           - 81 -

                2.53. islower - ஢ઠ  ᨬ 
                ॣ. 
                              

          
                islower - ஢ઠ  ᨬ  ॣ

               
                BOOL islower(c)

                 
               楤 ஢,     㬥
        ᨬ  ॣ. ..  楤 믮
           ९ "C",  㬥    
         ᫮ ⨯.

                
                islower  㫥᪮ r-祭.

             
                ॢ   ॣ:

                  if (islower(c))
                        c =+ 'a' - '|a|'; /* .toupper()*/

        .   ਬ ᨬ '|a|' 祭 㪢
        ''  ॣ.

         .     
                isalpha, isdigit, isupper, iswhite, tolower, toupper

               
              ..    楤    ᮬ,  
        뢠 ⮫쪮  "C"-ணࠬ      .
        㬥  묨 䥪⠬    ᫥  
         ࠧ.



                2.54. isupper  - ஢ઠ  ᨬ 孥
                ॣ. 
                               

          
                isupper - ஢ઠ  ᨬ  ॣ

               
                BOOL isupper(c)

                 
              㭪 ஢,    㬥 ᨬ-

                           - 82 -

         孥 ॣ. ..  楤 믮  
          ९  "",    㬥    
         ᫮ ⨯.

                
                isuper  㫥᪮ r-祭.

             
                ॢ   ॣ:

                   if (isupper(c))
                        c =+ '|a|' - 'a'; /*. tolower()*/

          .     
                isalpha, isdigit, islower, iswhite, tolower, toupper

               
                ..  楤   ᮬ,    
        뢠 ⮫쪮  "C"-ணࠬ      .
        㬥  묨 䥪⠬    ᫥  
         ࠧ.



                2.55. iswhite - ஢ઠ   ᨬ
               

          
                iswhite - ஢ઠ   ᨬ

               
                BOOL iswhite(c)

                 
              楤 ஢,       㬥
         ⭮ ᨬ, ..    ।⠢-
           ASCII 訬  ࠢ ' ' (040)    -
        訬  ࠢ DEL (0177).  NUL ('\0')  '\n'  ⠪
         묨. ..   楤  믮  
          ९  "C",    㬥    
         ᫮ ⨯.

                
                iswhite  㫥᪮ r- 祭.

                           - 83 -

             
                ய  ᨬ:

                        while (iswhite(*s))
                           ++s;

        .     
                isalpha, isdigit, islower, isupper, tolower, toupper

               
             ..    楤    ᮬ,    
        뢠 ⮫쪮  ""-ணࠬ      .
        㬥  묨 䥪⠬    ᫥  
         ࠧ.



                2.56. itob - ८ࠧ뢠 integer  TEXT 
                . 
                           

          
                itob - ८ࠧ뢠 integer  TEXT b 

               

                BYTES itob(s, i, base)
                    TEXT *s;
                    argint i;
                    COUNT base;

                 
               楤 ८ࠧ뢠 楫 i  ᨬ쭮
        ।⠢  , 稭饬  s.  ᫮  ।⠢-
            㪠  ᭮  (base),  ᨬ  
        ॣ, 稭  '' ᯮ  祭  ᥫ
         10  . ᫨ (0 < base), ᫮ i    -
        ,  ⨢ 砥, ᫨  (base < 0),  ⥫
        ᫠      ८ࠧ뢠  ᭮-
         -base. ᫨ (base == 0),  ᭮ ਭ -10.
        筮,   ᭮  2  36,    ஢ப  
        ᫥  ந.

                
             頥 ᫮ ᨬ,  ।⠢ 楫,
        ஥    ⭠筮     4  8
        ࠧ冷  ,  ᨬ  ⨯ .

                           - 84 -

             
                뢥 i  筮 :
                write(STDOUT, buf, itob(buf, i, 10));

         .     
                btoi, btol, ltob, stob

               
              㪠 . ᫨ ᭮    
        ࠢ 1, ࠡ ணࠬ 㤭 ।᪠. ᫨  ᭮-
            36,      祭 -
         ᨬ.



                2.57. itols - ८ࠧ integer  ப
               

          
                itols - ८ࠧ integer  ப 
                騬 訬 ⮬.

               

                TEXT *itols(s, val)
                    TEXT *s;
                    COUNT val;

                 
             itols 뢠 楫 祭  塠⮢ ப
          s, 祬 訩  뢠    s[0],  
        ᫥騩 -  [1].   s  ந   ⮩   
        筮,    ⨯ char.
              設, ७ ।⠢  楫  ᥫ  
         ᮢ  襮ᠭ,  ᫥ ६ -
         ⠭ de facto ଠ 䠩. 楤  itols
        ।⠢  設-ᨬ  ⠪
        䠩.

                
           楤 itols 뢠         s  
        頥 s  祭 㭪樨.

             
                 筮 :

                        struct {
                           TEXT name{14};
                           COUNT size;
                           } *p
                        write(STDOUT, p->name, 14);
                        write(STDOUT, itols(buf, p->size), 2);

                           - 85 -

         .     
                lstoi, lstol, lstols



                2.58. leave - 室  ࠢ饩 
               

          
                leave - 室  ࠢ饩 

               

                VOID leave(val)
                   BYTES val;

                 
              楤 leave ।祭  室  ࠢ-
        饩 ,  ᮧ  ᫥ 맮 楤 enter.
        믮 த,  ᫨  楤 enter 믮-
           ணࠬ  祭 val. (return) 맮
        楤 leave  ४  믮    -
        ⢠ 㭪権,    ⮬,  筮,  砥,  ᫨    
         ᪨ ⮬    맮 -
        楤  enter.     맮  楤  leave  ࠢ
         ࠧ蠥.

             
                 㭪樨 ᫥  ᮮ饭  訡:

                  while (s = enter(&func, file))
                        putstr(stderr, s, "\n", NULL);

           ,         ᪨  ⮬-
         㭪樨 ᫥饥 ᮮ饭:

                if (counterr)
                   leave("ய饭 ࠬ");

         .     
                raise, when, enter


                           - 86 -

                2.59. lenstr -   ப
               

          
                lenstr -   ப

               

                BYTES lenstr(s)
                    TEXT *s;

                 
             楤  ᬠਢ  ᨬ  ப,
        稭  s,  । ⢠ ᨬ 
        饣 NUL.

                
               頥 ⢮ ᨬ  ப.

             
               뢥 ப:

                   write(STDOUT, s, lenstr(s));



               2.60. ln - ࠫ 
              

            
               ln - ࠫ 

                 

                 double ln(x)
                     double x;

                   
               楤      筮  ࠫ
            . It works by expressing x  as  a fpaction  in
          the interval {1/2,1), times  an  integer power of two. -
            ஡    பᨬ  ᫥⥫  -
           ਡ ⮣ 浪.

                  
               楤  頥  襥    ln(x)  ७
          ।⠢ , ࠦ   ᫮     筮.
          ᫨  ⥫쭮  ࠢ  ,  訡 -
            (domain error condition).

                           - 87 -

               
               arcsinh = ln(x + sqrt(x * x + !));

            .     
                 domain, exp




                 2.61. lower - ॢ ᨬ   
                  ॣ. 
                             

            
                lower - ॢ ᨬ    ॣ

                 

                  BYTES lower(s,n)
                     TEXT *s;
                     BYTES n;

                   
               楤 ८ࠧ n ᨬ  , 稭饣
           s,   ॣ, ᫨ ⠪ .

                  
               楤 lower 頥 n.

               
               buf{lower(buf, size)} = '\0';

           .     
                tolower



                2.62. lstoi - ८ࠧ ப  楫
               

            
               lstoi - ८ࠧ ப  騬 訬 ⮬
           integer

                 

                  COUNT lstoi(s)
                     TEXT *s;

                           - 88 -

                   
               楤 ८ࠧ 塠 ப    s 
          楫 ᫮. 騩  ப ⠥   訬  ⮬
          楫. 筮 樨   s - ⠪ ,   ⨯ char.
                , ७  ।⠢  integer     
          ⢫  ࠧ ,  ᫥ ६  -
           ⠭ de facto ଠ  䠩.  楤  lstoi
          ᯥ稢 設-ᨬ ᯮᮡ ⥭  ⠪ 䠩

                  
               lstoi 頥 ।⠢  ⨯  integer  塠-
           楫 ᫠, ࠭饣  s.

               
               ⥭ 筮 :

                  struct {
                     TEXT name [14];
                     COUNT size;
                          } *p;

                  read(STDIN, p,16);
                  p->size = lstoi(&p->size);

            .     
                itols, lstol, ltols



                2.63. lstol - ८ࠧ  䠩
                ⥬  ⨯ LONG. 
                            
            
               lstol - ८ࠧ  䠩 ⥬  ⨯ LONG.

                 

                  LONG lstol(s)
                     TEXT *s;

                   
               楤 ८ࠧ 4-  ப    s 
          ⨯ long  ᫮ ,       ᫥饬  浪:
          2, 3, 0, 1,  0 - 訩 .  冷 ᯮ
           ।⠢      䠩  ⥬   IDRIS, -
             த  PDP-11. 筮 樨   s - ⠪
           ,   ⨯ char.

                           - 89 -

                  
               頥 ।⠢ ⨯ long 塠⭮ -
          , 室饣  s.

               
               time = lstol(&pi->n actime);

           .     
               itols, lstoi, ltols




              2.33. ltob - ८ࠧ ⨯ LONG  ⨯ TEXT
               . 
                         

            
               ltob - ८ࠧ ⨯ LONG  ⨯ TEXT  

                 

                 BYTES  ltob(s, l, base)
                    TEXT *s;
                    LONG l;
                    COUNT base;

                   
               ८ࠧ ᫮ l  ⨯ long   ⥪⮢ ।⠢-
           (⨯ text)  , 稭騬     3.  ᫮
          ।⠢  㪠 ᭮ (base),  ᨬ  -
           ॣ , 稭  '' ᯮ   祭
          ᥫ  10  . ᫨ (0<base),  ᫮  i     
           ,  ⨢ 砥 , ᫨ (base< 0),   -
          ⥫ ᫠      ८ࠧ뢠 
          ᭮ -base. ᫨ (base == 0),  ᭮  ਭ-
           -10. 筮,   ᭮  2  36,   ஢-
          ப  ᫥  ந.

                  
               頥 ᫮ ᨬ , ᯮ짮  ।-
          ⠢ ᫠ ⨯ long ,஥  ⭠筮  
             8  ࠧ冷  .

                           - 90 -

               
               뢥 ᫮ l   筮 ᫮:

                   write(STDOUT, buf, ltob( buf, l, 10));

            .     
                btoi, btol, itob, stob


                 
                㪠  .  ᫨  ᭮
          ࠢ 1 , ᫥⢨ ।᪠㥬; ᫨  36 - 
              ᨬ.




               2.65. ltols - ८ࠧ ᫠ ⨯ LONG
                 䠩 ⥬. 
                           

            
               ltols - ८ࠧ ᫠ ⨯ LONG   䠩
          ⥬

                 

                  TEXT *ltols(plong, lo)
                     TEXT *plong;
                     LONG lo;

                   
               楤 뢠 4- ⭮  ᫮  ⨯  LONG  
           , 稭騩   plong; 冷 ⮢:  2, 3,
          0, 1,  0 - 訩 .   冷 ᯮ 
          ।⠢   䠩 ⥬   IDRIS,  
           த  PDP-11.

                  
               ltols 뢠 4     plong  頥
          plong   祭.

               
               ltols(&pi->n actime, time);

            .     
                itols, lstoi, lstol



                           - 91 -

               2.35. mapchar - 뤠 ⭮ ।⠢
                ᨬ. 
                             

            
               mapchar - 뤠 ⭮ ।⠢  ᨬ

                 

                   VOID mapchar(c, ptr)
                         TEXT c, *ptr;

                   
               楤 뢠  ।⠢ ᨬ  
          2-  ,    㪠뢠   ptr.  ⠥
          ᨬ ( ஡  '~' ⥫쭮)  ।⠢  
            ஡,   ᫥  ᨬ.  ⠫-
           룫 ᫥騬  ࠧ:

               ᨬ          ।⠢
               [0, 7]          \0 - \7
               蠣        \b
               ⠡       \t
               ॢ ப  \n
               . ⠡.      \v
               . ଠ    \f
               . ⪨  \r
               稥          \?

                  
               楤 mapchar 뢠  ᨬ  ptr{0}  
          ptr{1}.

               
                祭 ⭮ ।⠢  ந쭮
          ᨬ   :

                  TEXT c, str{2};
                  MAPCHAR(c, str);
                  putfmt("%4b\n", str, 2);

           .     
               doesc


               2.67. match - ᮮ⢥⢨ ࠢ쭮
               ࠦ. 
                           

            
               mapch - ᮮ⢥⢨ ࠢ쭮 ࠦ

                           - 92 -

                 

                 BOOL mapch(buf, n, pat)
                    TEXT *buf;
                    BUTES n;
                    TEXT *pat;

                   
               楤 ஢ n ᨬ  , 稭饣 
          buf    ᮮ⢥⢨  ஢   ᫥⥫쭮,
          稭饩  pat. ⠥,  ᫥⥫쭮  뫠
          ஥   楤 pattern,  ᠭ  ன
          ਢ  ࠢ ࠦ , ਭ -
          묨 楤ࠬ.

                  
               ᫨ ᫥⥫쭮 ᮢ, 頥 YES.

               
               ஢ઠ ப  ⢨  稩:

          if (match(line, n, pattern(pbuf, '\0', ":*:*:*)))
                   return (YES);

           .     
               amatch, pattern



               2.68.  max - ஢ઠ  ᨬ
              

                 
               max (a, b)

                   
               楤 砥 ᨬ   ᢮ 㬥⮢ 
           b. ..   믮   ९  "C",  
          㬥    ᫮ ⨯, ਢ ⨯
          ⢫ ⮬᪨.

                  
               max  ᫮ r-祭 :

                  ((  < ) ?  : ),

          祭 ᮮ⢥⢥ ࠧ  ᪮.

                           - 93 -

               
               hiwater = max ( hiwater, level);

           .     
                min

                 
               . .   楤    ᮬ,  
          뢠 ⮫쪮  "C"-ணࠬ     .
          㬥  묨 䥪⠬   ᫥ 
           ࠧ.



              2.69. min - ஢ઠ  
             

            
               min - ஢ઠ  

                 
               min(a, b)

                   
               楤 砥    ᢮ 㬥⮢  
          b. ..  믮     ९   "C",   
          㬥    ᫮ ⨯, ਢ  ⨯
          ⢫ ⮬᪨.

                  
                min  ᫮ r-祭 :

                (( a < b ) ? b : a),

          祭 ᮮ⢥⢥ ࠧ   ᪮.

               
               nmove = min ( spase, size );

           .     
               max

                 
               . .  楤    ᮬ,    
          뢠 ⮫쪮  "C"-ணࠬ     .
          㬥  묨 䥪⠬   ᫥ 
           ࠧ.

                           - 94 -

               2.70. mkord - ஥ 㭪樨 㯮冷祭
              

            
               mkord - ஥ 㭪樨 㯮冷祭

                 

                  COUNT (*mkord(keyarray, lnordrule))()
                       TEXT **keyarray, *lnordrule;

                   
               楤 mkord  ᯮ  ஢  ⥪⮢
          ப,   㪠뢠 lnordrule   祢
          ᨢ  keyarray,    祭  㭪樨,   
          ᯮ짮  楤㯮 sort, ࠢ饩   ⥪⮢
             㯮冷祭.   祭 㭪
            ।  ( ࠩ ,  ਭ樯) ᫥-
          騬 ࠧ:

                  COUNT ordfun(i, j, rra)
                     BYTES i, j;
                     STRUCT {
                          UCOUNT len;
                          TEXT xbuf{len};
                            } ***ppa;

          ..   㪠⥫  ᨢ 㪠⥫  -
          ,    ⮨   len 2-  ⭮
          ,  ன ᫥ ᠬ  ⥪⮢  .  㭪
           ࠢ ⥪  ,    㪠뢠
          (*)[i],  ⥪⮬   ,      㪠뢠
          (*)[j],  ⥫쭮 ᫮, ᫨  -
           ண,  - ᫨  ࠢ  ⥫쭮 ᫮  
          ⨢ 砥.
               keyarray  稢騩 㫥  㪠⥫  NULL
          ᯨ᮪ "祩"  ࠢ 㯮冷祭, ᯮ㥬 㭪-
          権 ordfun, ਢ  浪, ⭮ 浪  ਬ-
          , .. keyarray{0} 㪠뢠 ࠢ, ਬ ⮫-
            ⮬ 砥, ᫨ keyarray{1} == NULL, , ᫨   
          ᫥騥 ࠢ  訬 ࠬ ,   -
           饭  ordfun    ࠢ.
                 祩,  ⠪  lnordrule,  稢-
          騥 ᨬ NUL ப, ।騥 (  )
          ࠢ 㯮冷祭  ⥪⮢ ஢. lnordrule -


                           - 95 -

           ,  ஬ ordfun 頥  ᫥ ।;
           ⠪ 㪠뢠 ⮤ ࠢ  㬮砭   
          祩  ᨢ keyarray,    ⮤    㪠  
           , .. ᫨ keyarray[0]==0, ᯮᮡ  㯮冷祭
          । ᪫⥫쭮 lnordrule.
                   ப  lnordrule   ᨢ keyarray  :
                   [adln][b][r][t?][#.#-#.#] ,
          

          
                -ᨬ쭮 ࠢ  ᮮ⢥⢨    浪
                  ASCII. 騩 ᨬ ⠥  
                   ASCII;
          b
               -  뢠 騩 ய;
          d
               - ᨬ쭮 ࠢ  䠢⭮ 浪.  -
                 뢠 ⮫쪮 㪢,    ஡,  ࠧ
                 ॣ஢  ;
          l
                - ᨬ쭮 ࠢ   ASCII  ஢-
                   ࠧ稩 ॣ஢;
          n
                - ࠢ    䬥᪮  祭,  
                   ⠥  ᫮  ப, 饩  
                  易⥫쭮 ய᪠,  易⥫쭮  
                      易⥫쭮 筮  窮;
          r
                - ॢ 冷 ࠢ;
          t?
                - ᯮ ?  ᨬ ⠡樨  ।
                  ᬥ饭 ( ᠭ  );
          #.#-#.#
                - 㪠뢠 ᬥ饭  砫 ⥪⮢ ஢  
                  砫 ( ᯮ㥬 ᨬ) , ᫥ 
                  ,    (   ᯮ㥬  ᨬ)
                  ⥪⮢, 뢠 ࠢ. ᫮  窨 '.'
                  砥 ⢮ ய᪠ ⠡権,  ᫥
                  窨 - ᫮ ᨬ, ய᪠ ᫥  ய-
                   ⠡権.  ࠧ,  ப  "d=efgh",
                   '=' ᯮ  ⢥  ᨬ ⠡樨,
                  ᬥ饭 "1.2" 㪠  'g',    ᬥ饭   "0.0"
                  㪠  ''. ய饭 祭  '#'  -
                    㫥,  ய饭 "-#.#"  㪠뢠  筮
                   ᫥ ᨬ  ࠢ  ⥪⮢  -
                  ஢. ᫨  ࢮ  ᬥ饭  㪠뢠    ஥,
                   ⠥ .


                           - 96 -

              ᫨ ᨬ ⠡樨   ।,     -
          ᪠ ப ஡,  ன ᫥   ⫨-
            ஡ ᨬ ஬ '\n'.  ࠧ, ᬥ饭
          "3"  ப "abc def ghi"  㪠  ஡ ࠧ ᫥
          'i'.
                 ࠢ   㪠 ⮫쪮    ᨬ:
          '', 'd', 'l'  'n';  祢 ᨢ  keyarray  
             10 ࠢ.

                  
               ᫨      , ⮣  mkord  頥
          㪠⥫  ७ 㭪 㯮冷祭,   㪠
          ;  ⨢ 砥 - NULL.   ७  ⠡-
             맮 mkord ९뢠, ⮬  -
            ६   । ⮫쪮   㭪-
           㯮冷祭.

               

                  #define MAXKEY 10
                  INTERN struct {
                  BYTES n;
                  TEXT *key[MAXKEY+1];
                                 } kstack  {MAXKEY};
                   /* kstack.key[MAXKEY] ᥣ NULL*/
          getflags(&ac,&av,"+*>:+[#.#-#.# abdlnrt?]2",&kstack);
          order = mkord(&kstack.key[kstack.n], "a");
          sort(nlines, order, &swapfn, linptrs);

           .     
                sort

                 
               㪠 ,  ᫮.



               2.71. nalloc - १ࢨ   
               (heap). 
                            

            
               nalloc - १ࢨ     (heap).


                           - 97 -

                 

                  TEXT *nalloc(nbytes, link)
                     BYTES nbytes;
                     TEXT *link;

                   
               ࢨ       ࠧ஬   nbytes, ⥬
          뢠  뫪 link  㫥   뤥 -
          .  १ࢨ஢  㤥    nbytes,
          稭  饭  祭  㪠⥫,  ஥  
           砥 㤥 ४⭮.   室  १ࢨ-
          ஢   .

                  
               nalloc 頥 祭  㪠⥫    १ࢨ-
           (᫨) ,  ⨢ 砥 - NULL.

               
               ஥ ⥪:

                  struct cell {
                      strukt cell *prev;
                      ...  ⠫쭠  ...
                               } * top
                  top = nalloc(sizeof (*top),top); /*pushes a cell*/

          .     
               alloc, free, sbreak

                 
                 १ࢨ஢  ࠭⢠  ࠭  
          楫   ।⢥  ।  ᯮ㥬  
          ⮣ ࠭⢠ , ⮬     '.
          ᫮ ᨫ쭮   ஥  ⥬, ⮬  ᮡ
             ⮨.



               2.72.  notbuf - 室 ࢮ   
               饣   ᨬ.
                             

            
               notbuf -  室 ࢮ     ᨬ,
          饣  .


                           - 98 -

                 

                BYTES notbuf(p, n, s)
                   TEXT *p, *s;
                   BYTES n;

                   
               楤 ᬠਢ n-ᨬ ,  稭-
          騩       ࢮ       ᨬ,
          饣   稢饬  ᨬ NULL  
           s. ᫨ ᨬ nul  室  ⠢  ,
               ᨬ.

                  
               頥 浪  ᨬ   , -
          饣   s,   祭 n, ᫨  ᨬ 
            .

               
               ஢ઠ  宦  室 ப   ⮫쪮
          :

                 if (notbuf(buf, n, "0123456789") <n)
                    errfmt("୮ ᫮\n");

           .     
               inbuf,instr,lenstr,notstr,scnbuf,scnstr,substr,subbuf



               2.73. notstr - 宦  ப 饣
               ᨬ.
                            

            
                 notstr - 宦  ப 饣
          ᨬ.

                 

                 BYTES notstr(p, s)
                  TEXT *p,*s;

                   
                楤 ᬠਢ n-ᨬ ப, 稭-
                  ࢮ        ᨬ,
          饣   稢饬 ᨬ NUL    -
           s.

                           - 99 -

                  
                頥 浪  ᨬ  p, -
          饣   s,   浪   饣  ᨬ-
           NUL, ᫨  ᨬ ப   .

               
                ஢ઠ  宦  室 ப   ⮫쪮
           :

                    if (str[nostr(str, 201234567892)])
                       errfmt("୮ ᫮\n");

           .     
                inbuf, instr, notbuf, scnbuf, scnstr, subbuf, substr



                2.74. ordbuf - ᪮ ࠢ 
                ஢.
                             

            
               ordbuf - ᪮ ࠢ  ஢, -
           ᨬ NUL.

                 

                      COUNT ordbuf(s1, s2, n)
                          TEXT *s1, *s2;
                          COUNT n;

                   
                楤 ࠢ ᨬ쭮  ⥪⮢ 
           䠢⭮ 浪.   稭   s1,
          ன - s2,     - n ᨬ.
                  ,  ᫠, ࠭騥   ᢮ -
           , ⠪  integer  double, ।  
          ଠ쭮, ᫨  ࠡ뢠  ⥪⮢ ப.

                  
                ᫨ s1  - 頥 -1, ᫨ s1 == s2 - -
          頥 0, ᫨ s2  - 頥 +1.

               
                sort(nthings, &ordbuf, &swap, &data);

           .     
                sort

                           - 100 -

                     2.75. pathname - ஥ -離
                    

            
               pathname - ஥  離

                 

                 TEXT *pathname(buf, n1, n2)
                    TEXT *buf, n1, *n2;

                  
               楤 ந -離   buf   -
          稢 ᨬ NUL ,   㪠뢠 n1  n2.
               ᫨ ,  ஥ 㪠뢠 n2, 稢 ᨬ-
           ':'  ']', ⮣       -
            䨪 ப,   㪠뢠 n1,  -
          ঠ騩 ᨬ ':', ']'  '/'. ᫨  ப,   -
           㪠뢠 n2, 稢  㣨 ᨬ,-
           ':'  ']', ⮣      ᠬ 䨪,
          ।  ⠢ ᨬ '/'.
                ࠧ  ᫥騥 १ :

                n1      n2      buf

                x       y       y/x
                x       a:      a:x
                x       [2,3]   [2,3]x
                z/x     y       y/x
                a:x     b:      b:x
                :f1:x   :f2:    :f2:x

                 ⥬ ᮧ  ࠧࠡ⠭ ⠪, ⮡ -
          쭮 ᯮ짮    ࠧ  樮  ⥬;
          ⥫쭮, 筮,    ᯮ짮  ᪨  
          ⨯ "a/3:".

                  
                楤 頥 ப,   n2,  ᨬ
          '/' (易⥫쭮)  䨪  n1, 稢  ᨬ-
           NUL  ᯮ  ,      㪠뢠
          buf. 祭 楤 ᥣ  buf.

                 
                 ᯮᮡ 㪠   ,    ஬  
             lenstr(n1)+lenstr(n2)+2 ᨬ.


                           - 101 -

                    2.76. pattern - ஥  ॣ୮
                    ࠦ.
                                  

            
               pattern - ஥  ॣ୮ ࠦ

                 

                  TEXT *pattern(pat, delim, p)
                     TEXT *pat, d0elim, *p;

                   
               楤 pattern ந ஢ ᫥⥫-
            ப , 稭饬   pat, ।-
          祭  ᯮ짮  楤ࠬ match   amatch
           ⠭ ᮮ⢥⢨ ॣ ࠦ. -
            ந  ᭮ ப , , -
          -,    稢  易⥫   ࠭⥫
          delim,   ᠬ   稢  ᨬ  NUL  
               ணࠬ   ࠢ쭮   ନ஢
          . ⠥,   㪠뢠 ।⢥   -
           ࠭⥫.
               祭    ஢  ᫥⥫쭮
          ਢ  ᠭ 楤 amatch;      
          ணࠬ ⠪ ஡   室묨. -
          筮 ,   ஢ ப   pat  㤥
          ᮤঠ   祬   ࠧ  ,  -
          ⥫   殢, 祬 ப 3.
               ୮ ࠦ  -    ᮪饭 < 祭
          ᫥⥫쭮   室  ᨬ,  ᮤঠ  
          ப ६ 䠩. ,    ᨬ "ᮮ⢥-
          " ॣ୮ ࠦ.  ᯮ짮  ᫥騥
          ॣ ࠦ :

                -  ᨬ ⠥ ॣ  ࠦ,
                  ᮮ⢥騬  ᨬ.

                - ᫥⥫쭮 ᨬ :   "\b",  "\f",  "\n"
                  "\r", "\t", "\v"   ॣ   ॣ-
                  묨 ࠦﬨ, ।⠢騬  ᨬ-
                   ६饭   થ:  <蠣 >,  <ॢ
                  ଠ>,  <ॢ  ப>,  <  ⪨>,
                  <⠡>,  <⨪쭠 ⠡>  ᮮ⢥-
                  . ஬ ⮣ ,  騩  ᨬ-
                     ।⠢  : "\ddd",  ddd


                           - 102 -

                   쬥筮  ।⠢  ᨬ.   
                  ᯮᮡ  ᥣ  ⠭   ᮮ⢥⢨
                  襭 ⮡ࠦ ᨬ    -
                   ᯮᮡ ⠭ ᮮ⢥⢨ ᨬ  NUL
                  (\0).

          '?'
                - ⢥  筮 ᨬ, ஬  -
                  ॢ ப.

          '^'
                -  ⢥ ᠬ  ᨬ ᫥⥫쭮-
                   ॣ ࠦ ⠭ 砫 ᮮ-
                  ⢨  砫 ப.

          '^'  ᨬ
                - ᮮ⢥ 㪠 ᨬ    -
                  .   , ⠪ ࠧ, ᮮ⢥⢮-
                   ⮩ ᫥⥫쭮 ᨬ, -
                  饩  砫 ப,   ᨬ  
                   ப. ᫨ ᨢ '^'  祭    
                  ᪮ "{"  "}",  ᫨  ।      '\'
                   '^', ਭ  ࠫ '^'.  室
                    樨, ஬ 㪠 , ᨬ  '^'
                  ਭ  ࠫ.

          '*'
                - ᮮ⢥    ᨬ,   
                  <ॢ ப>.  楯㠫쭮  祭  ᫥
                  ⥫쭮 "?^".

           ᫥⥫쭮 ᨬ   ᪮ "[]"
                - ᮮ⢥ ⤥쭮  ᨬ   -
                  祭  ᪮,   㣮. ᫨  -
                   ᨬ ᫥⥫⭮  '!',⮣-
                    ࠦ ᮮ⢥   ᨬ,
                  ஬ <ॢ  ப>    , 祭   
                  ᪮.    㪠  ᨬ     
                  浪  ᫥   ᫥⥫쭮-
                  : <訩 ᨬ>, '-', <訩 ᨬ>.  -
                  ⥫쭮 ⨯ [z-a]  㤥 ஢ .
                   ࠧ, ᫥⥫쭮  [ej-mae] 㤥
                  ॣ ࠦ, ᮮ⢥騬   
                  ᨬ: a, e, j, k, l, m.  ⠭ ᮮ-
                  ⢨ ࠫ "-"       
                  ᫥ ᨬ 祭  ᪮ ᯨ᪠.
                   ⨢ 砥  㤥 ਭ  ᯥ-
                    ᨬ.


                           - 103 -

              - ॣ୮ ࠦ, 祭    묨
                ᪮ "{"   "}" ,  砥  ࠦ  
                ⠭,      ࠧ  ᨬ-
                ,   ࠦ ᮮ⢥  (.
                 s  쭥 ࠧ'᭥).

              - ⥭  ॣ  ࠦ  ᮮ⢥
                ⥭樨  ப,   ᮮ⢥   ⤥
                ॣ ࠦ. 㣨 ᫮, ॣ୮
                ࠦ, ⠢  ᪮쪨 "ࠦ-
                ",  㤥 ᮮ⢥⢮  ⥭樨  ப,
                ।塞  "ࠦ".

        '$'
              -   ⢥  ᠬ  ࠢ  ᨬ  ᫥ ਨ
                ॣ ࠦ  ࠭稢   ᮮ⢥⢨,
                ᫨ ⠪ , 殬 ப    <ॢ
                ப>.

              - ⤥쭮 㫥  ॣ୮  ࠦ  
                ᫥ ᯮ짮襥 ॣ୮ ࠦ.

                 , ந쭠 㯯஢  -
        稢   樥,..ᯮ㥬 ⥪-
        ⮢   ⠢   ॣ  -
        , ᯮ㥬  ⥬⨪.

                
               楤 pattern 頥 pat,  ᫨  ᨭ⠪-
        ᪨ 訡,  ⨢ 砥 - NULL.

             
                pattern(pbuf, '0', "^??????t ");
                while (match(buf, n = getlin(buf, maxbuf), pbuf))
                        putlin(buf, n);

         .    
             amatch, match


                2.77. prefix - ஢ઠ ப  䨪
               


          
             prefix - ஢,    ப 䨪ᮬ
             㣮

                           - 104 -

               

                BOOL prefix(s1, s2)
                   TEXT *s1, *s2;

                 
             楤 ࠢ ᨬ쭮    ப.  ࢠ
        稭      s1    稢  ᨬ  NUL
        ('\0'),  -   s2,    筠 -
          ᥬ ᨬ,  ᪫祭 ᫥  NUL,  ..
         䨪ᮬ ࢮ ப.

                
             ᫨ s2  䨪ᮬ s1, ⮣ 頥 YES,
         ⨢ 砥 - NO.

             

                if prefix(line, "#include ")
                      doinclude();

         .    
             cmpbuf, cmpstr


                2.78. print - 뢮 ப  ᮫
               

          
             print - 뢮 ப  ᮫.

               

          VOID print( buf )
          TEXT *buf;

                 
             print 뢮 ᨬ  ᮫, 稭   buf
          ᨬ "\0".  ᨬ ।  -
        .

                
             print 祣  頥.

             
             print( "\nConsole output.\n" )

       .     
             write

                           - 105 -

                2.79. putc -  ᨬ  室 
               

          
             putc -  ᨬ  室 

               

                COUNT purtc(pfio, c)
                    FIO *pfio;
                    COUNT c;

                 
              ᫨  "" ⥫쭮 ⮣  ਭ 
        ᨬ,     ᪮஢  䠩  ࠢ塞
        ஬ FIO    pfio;   ⨢ 砥  楤
        puts    ᯥ稢   室  
        ᨬ  室 䠩.      室  
         ⪨ 室 ,  ᯮ짮 楤
        puts  ஢ 뢮, ᫨ 筮  pfio 
         樠஢ 楤ன finit,   ᠬ 
        室   室  ணࠬ 짮⥫.   ᫨
         pfio      (WRITE),  室  
        頥,  ⮫쪮 砥 <\n>.

                
                楤 putc 頥 ,  ᫨ ⪠  
        㤠, , ᫨ pfio==NULL, ந室 室  訡.

             
                ᨬ쭮 ஢ 䠩:

                        while (putc(&stdout, gets(&stdin)) != EOF)
                        ;

          .     
                finit, getc, getch, putch

               
                ந ᨬ,  ⫨稥  ⥪  
        ascii,  ந ࠭      -
         ⥫ 楫 ᥫ;   祧  맮
        楤 putc.


                           - 106 -

                2.80.  putch -  ᨬ   stdout
               

          
                putch -  ᨬ   stdout.

               
                COUNT putch(c)
                        count(c);

                 
              ᫨ "" ⥫쭮, ⮣  ਭ 
        ᨬ,    ᪮஢  䠩,  ࠢ塞
        ஬ FIO stdout; ⨢ 砥 楤 putch -
         ᯥ稢   室   ᨬ 
        室 䠩.  室   ⪥  室
         ⠪ ࠧ, ᫨ 楤 putch ᯮ 
        ஢ 뢮 ⥪.

                
             楤 putch 頥 . ᫨ ⪠    
        㤠, ந室 室  訡.

             
             ᨬ쭮 ஢ 䠩:

                while (putch(getch()) != EOF)
                    ;

         .     
             finit, getc, getch, putc, stdout

               
              stdout 頥  ⮫쪮    '\n', ᫨
            樠஢ ᫥騬 ࠧ:

                finit(&stdout, stdout, WRITE);

          ப      뢥   砭
        ࠡ ணࠬ. ᫨  stdout 뢮  ⥪⮢ -
        ଠ, ।  ᯮ짮 室  ⠪  맮
        finit:
                finit(&stdout, stdout, BWRITE);
         ந ᨬ,  ⫨稥  ⥪   ASCII,
         砥 ᯮ࠭    (  ࠧ
        ⥫ 楫 ᥫ); ⠪ ᨬ 祧  -
         putch, ᫨ ⮫쪮   ᪨஢.


                           - 107 -

                2.81. putf - ଠ 뢮 㬥⮢
               

          
             putf - ଠ 뢮 㬥⮢

               

                VOID putf(pfio, fmt, arg1, arg2, ...)
                   FIO *pfio;
                   TEXT *fmt;
                   ...

                 
             楤 putf ८ࠧ ( ࠢ ଠ⭮
        ப fmt)  ᫥⥫쭮  㬥⮢   arg1,  ... 
        ⥪, 뢮  䠩, ࠢ塞 ஬  FIO 
         pfio. ଠ⭠ ப ⮨  뢮  ⥪-
         ࠫ,  ࠧ ᯥ䨪ࠬ ,  ।-
        ,    ஢    ८ࠧ뢠
         뢮 㬥.
                䨪   ᫥騩 :

                        %[+z|-z][#]< >

                 ࠧ,ᯥ䨪  ⮨  ࠫ
        "%",    ᫥ "+z"  "-z",   z 
          ᨬ,    ᫥  易⥫쭠  
         #, 稢 ப  . ᫨ 㪠  "+z",
        ⮣ ந室    ᨬ z,    ᫨
        "-z",   ࠢ .   ᫨  ᫮
        #,   ⮣  㪠뢠      ᨬ 
        ,     筮 楫,      ᨬ
        'n'. ᫨ 㪠 'n',⮣     롨ࠥ
        ᫥騩 㬥  ᯨ᪠ 㬥⮢.
                ਬ, ᫨ arg1 ਭ  ⨯ DOUBLE  
        祭 - 100.53, ⮣ ᫥騥  ப 뤠  -
         १:***100.53:

                        putf(&stdout, "%+*9.2f, arg1);
                        putf(&stdout, "%+*n.nf", 9, 2, arg1);

                ᫨  ।⠢  ⥪ 㦭 
        ᨬ, 祬 㪠  ਭ ,    ⮣  
        ࠢ    ᯮ ᨬ .  
        㬮砭 ᯮ  ᫥ ஡.    ਭ
          㬮砭 - 0.

                           - 108 -

                 ⮨  䨪 / ᯥ䨪.
        䨪 । ᯮᮡ ८ࠧ 室  
         ।⠢  ᥡ   ᫥ ᨬ:

                 - ᨬ 楫
                s - ⪮ 楫
                i - 楫
                l -  楫
                p - ப, 稢 <nul>
                b -  㪠 
                d -   ᯮ樠쭮 ଥ
                        (ਬ: 1.00+00)
                f -   䨪஢ 窮
                        (ਬ:1.00)
                x - ⮫쪮 ᨬ 
                        (筮, ஡)
              <䨪> ᯮ  뢮 楫 ᫥騬
        ࠧ:

         - ᨬ ASCII
        h - ⭠筮 祭 (  㫥 "0x")
         - 쬥筮 祭 (  㫥 "0")
        u -  筮 祭
              ᫨ ᯥ䨪  㪠,  㬮砭  "i",
          㪠   <䨪>,   ᮮ⢥騩
        ࠧ㬥 楫 .    ᫨ 祭 ᯥ䨪
        ࠢ 'c', 's', 'l'  'i',   祭  䨪   
        㪠, ⮣ ᮮ⢥饥 祭 뢮   -
         筮.
             ஬ ⮣, 易⥫ 䨪 筮 ".#"
        ࠭稢 ⢮ ᨬ,    -
          ᯥ䨪ࠬ ''   'b'     㪠뢠  ⢮
        ஡ ࠧ冷, 뢮  ᯥ䨪ࠬ 'd'    'f'.
         ,   ᯥ䨪  , 䨪 #  
        㪠뢠 ⭮ 祭  'n',   ⠪   砥  
        ⢥  祭  ᫥騩 㬥 ᫥-
        ⥫쭮.
              ࠧ,   ।⠢  ᥡ,  筮,
          ᫥ 権 ᯥ䨪  䨪:

        [a|h|o|u]{c|s|i|l}      /*뢮 楫*/
        [.#]{b|p|d|f}           /*ப  騩 뢮*/
        {a|h|o|u}               /*ᯥ䨪  㬮砭 - i*/
        {x}                     /*뢮 ⮫쪮 ᨬ */


                           - 109 -

              㣮 ᨬ      ਭ
         ࠫ; ⠪ ࠧ, ᨬ '%'    뢥
         ᯥ䨪஬ "%%".
             䨪 'a' ࠡ뢠 楫   ᫥⥫-
         ᨬ ᮮ⢥饩    뢮  ᨬ  
        뢠饬 浪  稬  । ᫠.  
        뢠     䠩  設--
        ᨬ ࠧ.
             ப ᨬ   뢥     'p',
        ᫨  稢 ᨬ NUL,    'b' ,  ᫨
        ⭠  .
             , ᫨ arg2  , ᮤঠ騩 11-  ᨬ-
         ப "HELLO WORLD", 稢 ᨬ NUL, ⮣-
          ப 㤥  뢥 ᫥騬  -
        ࠬ:

                putf(&stdout, "%p\n", arg2);

                putf(&stdout, "%b\n", arg2, 11);

         ࢮ 砥  㬥    㪠⥫    砫
        ப,  ஬ 砥 ᯮ  㬥:  -
        㪠⥫  砫 ப, ன 㪠뢠    .  
         砥, ᫮ 뢥 ᨬ 㤥     ,
        祬 䨪 筮, ᫨  ,    㤥
        ࠢ .
               ᫮  饩 窮    뢥-
          ᯥ䨪ࠬ 'd'  'f', 祬 䨪 筮-
         㪠뢠 ᫮ ᨬ ࠢ  筮 窨. 
         'd' ᫮ 뢠  ᯮ樠쭮 :

                [-]#.#*E{+|-}#*

               筮 窨 ᥣ   ࠧ,  
        ᯮ,  ᨬ  ⨯  - 2  3 ࠧ鸞.
          'f' ⠥ ᫮  ଠ  䨪஢ -
        , ..  ᯮ.   砥 㤥 뢥 
         24 ᨬ.
             ਬ, ᫨ arg1 ਭ ⨯  DOUBLE,    
        祭 ࠢ 100.53, ⮣ 

             putf(&stdout, "%1.4d\n", arg1);

        뢥 ᫮ 1.0053+02,  

             putf(&stdout, "$%6.nf\n", arg1);

        뢥 ᫮  䨪஢ 窮 $100.53.


                           - 110 -

               'x' 㪠뢠   㬥⮢;    ᯮ-
         ⮫쪮  ᨬ .

                
             祣  頥. ᫨ ⪠    㤠
         ᫨ pfio==NULL, ⮣ ந室 室  訡.

             

        putf(&stdout, "%i 訡  䠩 %p\n", nerrors, fname);

          .     
                decode, dtoe, dtof, errfmt, putfmt

               
             ᫨  맮  楤 ᯥ䨪஢  
        , 祬 㬥⮢, १ 㤭 ।᪠㥬.


                2.82. putfmt - ଠ 뢮  stdout
               

          
             putfmt - 䮯 뢮 㬥⮢  stdout

               

                VOID putfmt(fmt, arg1, arg2, ...)
                   TEXT *fmt;

                 
             楤 ந ଠ 뢮  䠩, ࠢ-
         ஬ fio stdout, ᯮ ଠ  ப  fmt  
        㬥 argn 筮 ⠪ ,   putf.

                
             祣  頥. ᫨ ⪠    㤠,
        ந室 室  訡.

             

                putfmt("%i:%p\n", lineo, line);


                           - 111 -

          .     
                decode, errfmt, finit, putf, stdout

               
              stdout 頥, ⮫쪮 ᫨ ᫥ ᠭ-
         ᨬ - <\n>.  ᫨    stdout  뢮  ⥪⮢
        ଠ, ।  ᯮ짮 室 ⠪  맮
        finit:

                finit(&stdout, stdout, BWRITE);



                2.83. putl - ஢  ப  ⥪  
                .
                           

          
             putl - ஢ ப ⥪  

               

                BYTES putl(pfio, s, n)
                   FIO *pfio;
                   TEXT *s;
                   BYTES n;

                 
             楤  ᨬ   n - ᨬ쭮  ,
        稭饣   s ,  䠩, ࠢ塞 ஬ FIO
          pfio.

                
             putl 頥 n. ᫨ ⪠   㤠, 
        ᫨ pfio==NULL, ⮣ ந室 室  訡.

             
             筮 ஢ ⥪⮢ 䠩:

        while (putl(&stdout,buf,getl(&stdin,buf,bufsize))) ;

         .     
                getl, getlin, putlin


                           - 112 -

                2.84. putlin - 頥 ப ⥪ 
                stdout.
                             

          
             putlin - 頥 ப ⥪  stdout

               

                BYTES putlin(s, n)
                   TEXT *s;
                   BYTES n;

                 
             楤  ᨬ    n-ᨬ쭮  ,
        稭饣    s ,  䠩 ,  ࠢ塞  ஬
        FIO stdout.

                
             putlin 頥 n. ᫨ ⪠     㤠,
         ᫨ pfio==NULL, ⮣ ந室 室  訡.

             
             筮 ஢ ⥪⮢ 䠩:

             while (putlin(buf, getlin(buf, bufsize))) ;

         .     
             finit, getl, getlin, putl, stdout

               
              stdout 頥, ⮫쪮 ᫨ ᫥ ᠭ-
         ᨬ - <\n>. ᫨       樠஢
        ᫥騬 맮:

                finit(&stdout, stdout, WRITE);

        ⮣  ப      뢥    砭
        ࠡ  ணࠬ.  ᫨    stdout  뢮  ⥪⮢
        ଠ, ।  ᯮ짮 室 ⠪ 맮
        finit:

                finit(&stdout, stdout, BWRITE);



                           - 113 -

                2.85. putstr - ஢ ᪮쪨 ப 
                䠩.
                             

          
             putstr - ஢ ᪮쪨 ப  䠩

               

                VOID putstr(fd, arg1, arg2, ..., NULL)
                   FILE fd;
                   TEXT *arg1, *arg2, ...;

                 
             楤 뢠 ᪮쪮 ப  䠩  ਯ-
        ஬ fd.  ப 稭   argn   -
        稢 ᨬ NUL '\0'.  ᫥⥫쭮  㬥⮢
        稢 㫥 㪠⥫ NULL.      ப
        楤 putstr 뢠 楤 lenstr   ।
           뤠 אַ 맮 楤 write;  ᫥⢨
        ⮣, 楤 putstr   ᯮ짮  ⮫쪮  
        뢮  ஢ (flow volume output).

                
             祣  頥.

             

                putstr(STDERR, fname, ":   ଠ\n", NULL);

          .     
             lenstr, write(3)

               
              뢠 ⠢ ᫥ NULL -   
        .



                2.85. remark -  ᮮ饭
               

          
             remark -  ᮮ饭  ᬥ⥫ 訡

               

                VOID remark(s1, s2)
                   TEXT *s1, *s2;

                 
             楤 뢮 ᮮ饭  訡   䠩  STDERR.
        C饭 ।⠢ ᮡ ⥭ ப  s1    s2,
        稢 '\n'. ⥬ ࠢ । 뢠襩
        ணࠬ  쭥襩 ࠡ⪨.


                           - 114 -

                
             祣  頥.

             

                if ((fd = open(name, READ, 0)) < 0)
                      remark("  :", name);

         .     
             errfmt, error, putstr



                2.87. scnbuf -  ᨬ  
               

          
             scnbuf -  ᨬ  .

               

                BYTES scnbuf(s, n, c)
                   TEXT *s;
                   BYTES n;
                   TEXT  c;

                 
             楤 ᬠਢ n-ᨬ  ,  稭-
        騩   s,  ࢮ    ᨬ .

                
             頥 浪  ᮮ⢥饣   ᨬ-
        , ᫨    - n.

             
             ⠭ ᮮ⢥⢨ ᨬ ᨢ keybuf[] ᨬ-
         ᨢ substr[]:

        if ((n = scnbuf(keybuf, keysiz, *s)) != keysiz)
                  *s = substr[n];

         .     
              inbuf, instr, notbuf, notstr, scnstr, subbuf, substr


                           - 115 -

                2.88. scnstr -  ᨬ  ப
               

          
             scnstr -  ᨬ  ப

               

                BYTES scnstr(s, c)
                   TEXT *s, c;

                 
             楤 ᬠਢ ப s, 稢  ᨬ-
         NUL,  ࢮ    ᨬ .

                
             頥 浪  ᮮ⢥饣   ᨬ-
        , ᫨     -  浪    ᫥
        ᨬ NUL.

             
             ⠭ ᮮ⢥⢨ ᨬ ᨢ keystr[] ᨬ-
         ᨢ subst[]:

            if (s[n = scnstr(keystr, *s)])
                      *s = subst[n];

         .     
            inbuf, instr, notbuf, notstr, scnbuf, subbuf, substr



                2.89. sin - ᨭ  ࠤ
               

          
             sin - ᨭ  ࠤ

               

             double sin(x)
                double x;

                 
              sin(x) (x -  ࠤ)   筮.
        砫 । ࠭ 㬥 , ⥬ -
         ᨭ   ᨭ  㣫  ࢮ    ࠭  


                           - 116 -

        ᯮ짮    ᫥⥫쭮  ਡ
         ⮣ 浪.  ᫨  冷  㬥  ᫨誮
          ஡  ࠭, 祭  㭪樨  ࠢ
        .

                
             頥 襥  sin(x) ७ ।⠢,
        ࠦ   double  饩 窮.

             
             饭   㣮 THETA:

           xnew = xold * cos(THETA) - yold * sin(THETA);
           ynew = xold * sin(THETA) + yold * cos(THETA);



                2.90. sort - ஢  
               

          
             sort - ஢  

               

                VOID sort(n, ordf, excf, base)
                   ARGINT n;
                   COUNT  (*ordf)();
                   VOID   (*excf)();
                   TEXT   *base;

                 
             楤 sort 㯮冷稢 n  '⮢      
        ᯮ짮 ⬠ ன  ஢.    ।-
        , 㯮冷祭  ' i  j ᫥騬 맮:

                (*ordf)(i, j, &base);

         i  j 易 室  ஬⪥ [0, n). ᫨ i<j,
        ⮣ 頥 祭      , ᫨
        i=j, ⮣ 頥 祭     ࠢ  ;
         祭 । .
            '⮢ ⠬ ந 맮:

                (*excf)(i, j, &base);

        ᫥ 祣 '  ⠢묨.


                           - 117 -

               ,   㭪 ।  ࠬ
        base.   㪠뢠  砫쭮 ᯨ᪥ 㬥⮢
        ᫥  base ⢥ ࠬ,      
        ⢫   ⠢  ,  
        㪠뢠 &base,  ᫮,   뫠  '
        ணࠬ⮬, 騬 ਭ樯 ࠡ⪨ 㬥⮢  "".
         㭪樨 㯮冷祭    ⭮  (IN
        THE KNOW), 㬥 base  ஢.

                
             祣  頥. '       襬
        .

             
             ஢  ᨢ  ⪨  楫     饬
        浪:

                COUNT   iord(i, j, pa)
                  COUNT  i, j, **pa;
                {
                 return((*pa)[i] - (*pa)[j]);
                }

                VOID    iswap(i, j, pa)
                  COUNT  i, j, **pa;
                {
                 COUNT  t;
                 t = (*pa)[i]; (*pa)[i] = (*pa)[j]; (*pa)[j] = t;
                }

                VOID    isort(a, n)
                  COUNT  a[], n;
                {
                 sort(n, &iord, &iswap, a);
                }

               
              楤   ஢    
        , .. n        ⥫-
        .


                           - 118 -

                2.91. sqrt -  ७
               

          
             sqrt -  ७

               

                double sqrt(x)
                  double x;


                 
               ७     筮.

                
             頥 襥     ⭮ ७
        ।⠢, ࠦ  double    饩  窮.
        ᫨ x ⥫쭮, ᯮ ᫮ 訡 .

             
             宦 浪 :
             mag = sqrt(x * x + y * y);

         .     
             _domain, exp



                2.92. squeeze - 㤠  㪠  ᨬ
                 .
                              

          
             squeeze - 㤠 㪠 ᨬ  .

               

                BYTES   squeeze(s, n, c)
                   TEXT  c, *s;
                   BYTES n;

                 E
             楤 㤠 ᨬ     n-ᨬ쭮  ,
        稭饣    s   ᦨ .

                
             頥 ⢮ ⠢      ᨬ,
        饥  ࢠ [0, n].


                           - 119 -

             
             뢮  ᫥ 㡨࠭ ᨬ NUL    ⮢
        ⪨:

        write(STDOUT, buf, squeeze(buf, BUFSIZE, '0'), '\r'));


         .     
             fill




                2.93. stdin - ⠭  ࠢ騩  
                .
                            

          
             stdin - ⠭ ࠢ騩  뢮.

               
             FIO stdin;

                 
             stdin -  ࠢ騩    fio,  樠㥬
           STDIN.

             
              ப:

                for (nl = 0;  getl(&stdin, buf, BUFSIZE); ++nl)
                ;

         .        stdout



                2.94. stdout - ⠭ ࠢ騩  
                뢮.
                             

          
             stdout - ⠭ ࠢ騩  뢮.

               
             FIO  stdout;

                 
             dout -  ࠢ騩  FIO,   樠㥬
         뢮  STDOUT.


                           - 120 -

             
                putl(&stdout, outbuf, outsize);

         .     
                finit, stdin

               
               ᯮ짮  stdout    뢮  ⥪⮢
        ଠ樨, ᫨   樠஢ ।⥫쭮  ᫥-
        騬 ࠧ: finit(&stdout, STDOUT, BWRITE);



                2.95. stob - ८ࠧ  SHORT  TEXT  
               

          
                stob - ८ࠧ  SHORT  TEXT  .

               

                BYTES stob(s, i, base)
                        TEXT *s;
                        COUNT i;
                        COUNT base;

                 
                楤 ८ࠧ ᫮ i ⨯ SHORT   ᨬ쭮
        ।⠢  (⨯ TEXT)   ,  稭饬    
        s.  ᫮ ।⠢  㪠    base,  㪢 -
         ॣ, 稭   '',   ।⠢ ᫠   10   
        . ᫨ (0 < base ),  ᫮  i   ,   
        ⨢  砥,  ᫨  ( base < 0 ),   ⥫  ᫠
                 ८ࠧ뢠    ᭮
        -base.  ᫨  ( base == 0 ),    ᭮  ਭ  -10.
        筮,    ᭮    2  36,    ஢ப  
        ᫥  ந.

                
                頥 ᫮ ᨬ, ᯮ짮  ।-
        ⠢ ᫠  i,  ஥    ⭠筮    
          4 ࠧ冷  .

             
                뢥 i  筮 :
                write(STDOUT, buf, stob(buf, i, 10));

                           - 121 -

          .     
                btoi, btol, btos, itob, ltob

               
                  㪠 .   ᫨    ᭮
        ࠢ 1,  ணࠬ   ,  ᫨    36,   
           ਢ ᨬ.



                2.96. subbuf -  ப  
               

          
             subbuf -  ப  .

               
                BYTES subbuf(s, ns, p, np)
                        TEXT *s, *p;
                        BYTES ns, np;

                 
                楤 ᬠਢ  ࠧ஬ ns,  稭騩-
           s,       ப  ᮬ  p  ࠧ஬
        np.

                
                頥  浪       s    ᨬ
        ப, ᫨  , ⨢ 砥 頥 ns.

             

                for(p = buf, i = size;
                        (j = subbuf(p, i, "\r\n", 2)) < i;
                                p =+ j + 2, i =- j + 2)
                        {
                        write(fd, p, j);
                        write(fd, "\n", 1);
                        };

          .     
                amatch, inbuf, instr, match, notbuf, notstr, scnbuf,
        scnstr, substr


                           - 122 -

                2.97. substr -  ப
               

          
                substr -  ப

               
                BYTES substr(s, p)
                        TEXT *s, *p;

                 
                楤 ᬠਢ ப, 稭  
        s,     ப  ᮬ p.

                
                頥  浪      s    ᨬ
        ப, ᫨  ,   ⨢  砥  頥-
          ᫥ ᨬ NUL.

             
                if (line[substr(line, "page")])
                        putfmt("%s: %\n", lno / 66 + 1, line);

          .     
                amatch, inbuf, instr, match, notstr, notbuf, scnbuf,
        scnstr, subbuf



                2.98. tolower - ॢ ᨬ   ॣ
               

          
                tolower - ॢ ᨬ   ॣ.

               
                tolower(c)

                 
                ॢ ᨬ 孥 ॣ   ᮮ⢥騥
         ᨬ  ॣ,  ண ⠫ ᨬ.

                
                tolower -  ᫮ r-祭,   饥 ᨬ-
         孥 ॣ.

                           - 123 -

             
                 ⭠筮 ࠧ鸞:

                        if ('a' <= c && <= 'f'
                                \!\! 'A' <= c && <=  'F')
                                sum = sum * 10 + tolower(c) + (10 - 'a');

          .    
                isalfa, isdigit, islower, isupper, iswhite, toupper

               
                ..  楤    ᮬ,    
        뢠  ணࠬ, ᠭ  㣨 몠,   ⠪
          .   㬥    묨  䥪⠬  
         ᫥   ࠧ.



                2.99. toupper - ॢ ᨬ  孨 ॣ
               

          
                toupper - ॢ ᨬ  孨 ॣ

               
                toupper(c)

                 
                ॢ ᨬ  ॣ    ᮮ⢥騥
         ᨬ 孥 ॣ,  ண ⠫ ᨬ.

                
                toupper -  ᫮ r-祭,  饥  ᨬ-
          ॣ.

             
                ॢ ப ᨬ  孨 ॣ:

                        for (i = 0; i < sign; ++i)
                                buf[i] = toupper(buf[i]);

         .     
                isalfa, isdigit, islower, isupper, iswhite, tolower

               
                ..  楤    ᮬ,    
        뢠  ணࠬ, ᠭ  㣨 몠,   ⠪
          .   㬥    묨  䥪⠬  
         ᫥   ࠧ.


                           - 124 -

                2.100. usage - 뢮 ⠭⭮ ଠ樨 
                ᯮ짮 ணࠬ.
                            

          
                usage - 뢮 ⠭⭮ ଠ樨  ᯮ짮
        ணࠬ.

               

                COUNT usage(msg)
                        TEXT *msg;

                 
                楤 뢮  STDERR ப:  "usage":  <pname>",
           ன  ᫥  ப,        㪠뢠   msg.
        <pname> -  ⥪饩 ணࠬ,   ᫨  msg  稢 ᨬ-
         '\n', 楤 usage 室  訡.

                
                ᫨ -   頥,      㤥  ᫮
        ᨬ, 뢥  STDERR.

             
                if (1 < aflag + bflag + nflag)
                usage("=[a b n] <files>\n");

          .     
                _pname, getflags
