NUMBER

Материал из ПМК вики
Перейти к навигации Перейти к поиску

NUMBER — стандартное слово Каллисто.

Преобразует в число последовательность символов, начиная с a+1 с учётом BASE.

Ввод слова NUMBER

В режиме ЛАТ последовательно нажмите клавиши  4   3   ÷   В/О   ИП   × 

NUMBER в предыдущем стандарте Forth-83 (англ.)

     NUMBER       addr -- d
          Convert the count and character string at addr, to a signed
          32-bit integer, using the value of BASE .  If numeric
          conversion is not possible, an error condition exists.  The
          string may contain a preceding minus sign.

NUMBER в стандарте Forth-79 (англ.)

NUMBER         addr -- n
    Convert  the count and character string at addr,  to a  signed
    32-bit integer, using the current base.  If numeric conversion
    is not possible,  an error condition exists.   The string  may
    contain a preceding negative sign.

NUMBER в fig-FORTH Release 1 glossary, май 1979 (англ.)

NUMBER        addr   ---   d
       Convert a character string left at addr with a preceeding count, to
       a signed .double number, using the current numeric base. If a
       decimal point is encountered in the text, its position will be
       given in DPL, but no other effect occurs. If numeric conversion is
       not possible, an error message will be given.

История

Слово NUMBER появилось в 1958 году в самой первой версии интерпретатора Форта, написанного Чак Муром на Фортране для IBM EDPM 704 для САО. Тогда оно ещё не называлось NUMBER, так в то время команды Форта кодировались числами.

NUMBER использовался словом INTERPRET для преобразования слов в двоичный вид, в данном случае чисел с плавающей запятой.

Реализация

Описание и определение слова NUMBER в ядре ФОРТ-ЕС:

NUMBER    +  T->WD ПРЕОБРАЗОВАТЬ СТРОКУ Т В ЧИСЛО WD            39

                     Экран номер 39
( 31.03.86      DIGIT CONVERT  NUMBER )

: NUMBER  ( T->WD )
  0 0 ROT DUP >R COUNT OVER + OVER С@ С" - =
  DUP >R SWAP >R IF ELSE 1- THEN -1
  BEGIN DPL !  CONVERT DUP R@ <  WHILE DUP С@
  С" . <> IF RDROP RDROP R> BADWORD THEN 0
  REPEAT DROP RDROP R> IF DNEGATE THEN RDROP ;

Ссылки


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.