home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / m2posx14 / src / lcusa.ipp < prev    next >
Encoding:
Modula Implementation  |  1994-05-27  |  11.0 KB  |  284 lines

  1. IMPLEMENTATION MODULE LCusa;
  2. __IMP_SWITCHES__
  3. __DEBUG__
  4. #ifdef HM2
  5. #ifdef __LONG_WHOLE__
  6. (*$!i+: Modul muss mit $i- uebersetzt werden! *)
  7. (*$!w+: Modul muss mit $w- uebersetzt werden! *)
  8. #else
  9. (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
  10. (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
  11. #endif
  12. #endif
  13. (****************************************************************************)
  14. (* 27-Mai-94, Holger Kleinschmidt                                           *)
  15. (****************************************************************************)
  16.  
  17. FROM SYSTEM IMPORT
  18. (* PROC *) ADR;
  19.  
  20. FROM LCTypes IMPORT
  21. (* TYPE *) LCCtype, LCTime, LCNumeric, LCMonetary, LCMessages, CType,
  22.            CClass, CClasses, CTrans;
  23.  
  24. IMPORT LCPOSIX;
  25.  
  26. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  27.  
  28. TYPE
  29.   VNumeric = RECORD
  30.     Vdecimalpoint : ARRAY [0..1] OF CHAR;
  31.     Vthousandssep : ARRAY [0..1] OF CHAR;
  32.     Vgrouping     : ARRAY [0..1] OF CHAR;
  33.   END;
  34.  
  35.   VMonetary = RECORD
  36.     Vintcurrsymbol   : ARRAY [0..5] OF CHAR;
  37.     Vcurrencysymbol  : ARRAY [0..1] OF CHAR;
  38.     Vmondecimalpoint : ARRAY [0..1] OF CHAR;
  39.     Vmonthousandssep : ARRAY [0..1] OF CHAR;
  40.     Vmongrouping     : ARRAY [0..1] OF CHAR;
  41.     Vpositivesign    : CHAR;
  42.     Vnegativesign    : ARRAY [0..1] OF CHAR;
  43.   END;
  44.  
  45. #if ISO_value_constructor && (defined HM2)
  46. CONST
  47.  vctype = LCCtype{
  48.    CClasses{
  49.      CClass{IScntrl}                                          BY 9,
  50.      CClass{IScntrl,ISspace,ISblank}                          BY 1,
  51.      CClass{IScntrl,ISspace}                                  BY 4,
  52.      CClass{IScntrl}                                          BY 18,
  53.      CClass{ISspace,ISblank,ISprint}                          BY 1,
  54.      CClass{ISpunct,ISgraph,ISprint}                          BY 15,
  55.      CClass{ISdigit,ISxdigit,ISalnum,ISgraph,ISprint}         BY 10,
  56.      CClass{ISpunct,ISgraph,ISprint}                          BY 7,
  57.      CClass{ISxdigit,ISupper,ISalpha,ISalnum,ISgraph,ISprint} BY 6,
  58.      CClass{ISupper,ISalpha,ISalnum,ISgraph,ISprint}          BY 20,
  59.      CClass{ISpunct,ISgraph,ISprint}                          BY 6,
  60.      CClass{ISxdigit,ISlower,ISalpha,ISalnum,ISgraph,ISprint} BY 6,
  61.      CClass{ISlower,ISalpha,ISalnum,ISgraph,ISprint}          BY 20,
  62.      CClass{ISpunct,ISgraph,ISprint}                          BY 4,
  63.      CClass{IScntrl}                                          BY 1,
  64.      CClass{ISgraph,ISprint}                                  BY 128
  65.    },
  66.    CTrans{
  67.      0C,1C,2C,3C,4C,5C,6C,7C,10C,11C,
  68.      12C,13C,14C,15C,16C,17C,20C,21C,22C,23C,
  69.      24C,25C,26C,27C,30C,31C,32C,33C,34C,35C,
  70.      36C,37C,40C,41C,42C,43C,44C,45C,46C,47C,
  71.      50C,51C,52C,53C,54C,55C,56C,57C,60C,61C,
  72.      62C,63C,64C,65C,66C,67C,70C,71C,72C,73C,
  73.      74C,75C,76C,77C,100C,141C,142C,143C,144C,145C,
  74.      146C,147C,150C,151C,152C,153C,154C,155C,156C,157C,
  75.      160C,161C,162C,163C,164C,165C,166C,167C,170C,171C,
  76.      172C,133C,134C,135C,136C,137C,140C,141C,142C,143C,
  77.      144C,145C,146C,147C,150C,151C,152C,153C,154C,155C,
  78.      156C,157C,160C,161C,162C,163C,164C,165C,166C,167C,
  79.      170C,171C,172C,173C,174C,175C,176C,177C,200C,201C,
  80.      202C,203C,204C,205C,206C,207C,210C,211C,212C,213C,
  81.      214C,215C,216C,217C,220C,221C,222C,223C,224C,225C,
  82.      226C,227C,230C,231C,232C,233C,234C,235C,236C,237C,
  83.      240C,241C,242C,243C,244C,245C,246C,247C,250C,251C,
  84.      252C,253C,254C,255C,256C,257C,260C,261C,262C,263C,
  85.      264C,265C,266C,267C,270C,271C,272C,273C,274C,275C,
  86.      276C,277C,300C,301C,302C,303C,304C,305C,306C,307C,
  87.      310C,311C,312C,313C,314C,315C,316C,317C,320C,321C,
  88.      322C,323C,324C,325C,326C,327C,330C,331C,332C,333C,
  89.      334C,335C,336C,337C,340C,341C,342C,343C,344C,345C,
  90.      346C,347C,350C,351C,352C,353C,354C,355C,356C,357C,
  91.      360C,361C,362C,363C,364C,365C,366C,367C,370C,371C,
  92.      372C,373C,374C,375C,376C,377C
  93.    },
  94.    CTrans{
  95.      0C,1C,2C,3C,4C,5C,6C,7C,10C,11C,
  96.      12C,13C,14C,15C,16C,17C,20C,21C,22C,23C,
  97.      24C,25C,26C,27C,30C,31C,32C,33C,34C,35C,
  98.      36C,37C,40C,41C,42C,43C,44C,45C,46C,47C,
  99.      50C,51C,52C,53C,54C,55C,56C,57C,60C,61C,
  100.      62C,63C,64C,65C,66C,67C,70C,71C,72C,73C,
  101.      74C,75C,76C,77C,100C,101C,102C,103C,104C,105C,
  102.      106C,107C,110C,111C,112C,113C,114C,115C,116C,117C,
  103.      120C,121C,122C,123C,124C,125C,126C,127C,130C,131C,
  104.      132C,133C,134C,135C,136C,137C,140C,101C,102C,103C,
  105.      104C,105C,106C,107C,110C,111C,112C,113C,114C,115C,
  106.      116C,117C,120C,121C,122C,123C,124C,125C,126C,127C,
  107.      130C,131C,132C,173C,174C,175C,176C,177C,200C,201C,
  108.      202C,203C,204C,205C,206C,207C,210C,211C,212C,213C,
  109.      214C,215C,216C,217C,220C,221C,222C,223C,224C,225C,
  110.      226C,227C,230C,231C,232C,233C,234C,235C,236C,237C,
  111.      240C,241C,242C,243C,244C,245C,246C,247C,250C,251C,
  112.      252C,253C,254C,255C,256C,257C,260C,261C,262C,263C,
  113.      264C,265C,266C,267C,270C,271C,272C,273C,274C,275C,
  114.      276C,277C,300C,301C,302C,303C,304C,305C,306C,307C,
  115.      310C,311C,312C,313C,314C,315C,316C,317C,320C,321C,
  116.      322C,323C,324C,325C,326C,327C,330C,331C,332C,333C,
  117.      334C,335C,336C,337C,340C,341C,342C,343C,344C,345C,
  118.      346C,347C,350C,351C,352C,353C,354C,355C,356C,357C,
  119.      360C,361C,362C,363C,364C,365C,366C,367C,370C,371C,
  120.      372C,373C,374C,375C,376C,377C
  121.    }
  122.  };
  123. #else
  124. VAR
  125.   vctype : LCCtype;
  126. #endif
  127.  
  128. VAR
  129.   vnumeric  : VNumeric;
  130.   vmonetary : VMonetary;
  131.  
  132. VAR
  133.   numeric  : LCNumeric;
  134.   monetary : LCMonetary;
  135.  
  136. VAR
  137.   c : CHAR;
  138.  
  139. BEGIN
  140.  Time     := LCPOSIX.Time;
  141.  Messages := LCPOSIX.Messages;
  142.  
  143. #if ISO_value_constructor
  144.  vnumeric := VNumeric{".",",","3"};
  145. #else
  146.  WITH vnumeric DO
  147.    Vdecimalpoint := ".";
  148.    Vthousandssep := ",";
  149.    Vgrouping     := "3";
  150.  END;
  151. #endif
  152.  WITH numeric DO WITH vnumeric DO
  153.    decimalpoint := ADR(Vdecimalpoint);
  154.    thousandssep := ADR(Vthousandssep);
  155.    grouping     := ADR(Vgrouping);
  156.  END; END;
  157.  Numeric := ADR(numeric);
  158.  
  159. #if ISO_value_constructor
  160.  vmonetary := VMonetary{"USD ","$",".",",","3",0C,"-"};
  161. #else
  162.  WITH vmonetary DO
  163.    Vintcurrsymbol   := "USD ";
  164.    Vcurrencysymbol  := "$";
  165.    Vmondecimalpoint := ".";
  166.    Vmonthousandssep := ",";
  167.    Vmongrouping     := "3";
  168.    Vpositivesign    := 0C;
  169.    Vnegativesign    := "-";
  170.  END;
  171. #endif
  172.  WITH monetary DO WITH vmonetary DO
  173.    intcurrsymbol   := ADR(Vintcurrsymbol);
  174.    currencysymbol  := ADR(Vcurrencysymbol);
  175.    mondecimalpoint := ADR(Vmondecimalpoint);
  176.    monthousandssep := ADR(Vmonthousandssep);
  177.    mongrouping     := ADR(Vmongrouping);
  178.    positivesign    := ADR(Vpositivesign);
  179.    negativesign    := ADR(Vnegativesign);
  180.  
  181.    intfracdigits   := 4; (* ?? *)
  182.    fracdigits      := 2;
  183.    pcsprecedes     := 1; (* ?? *)
  184.    psepbyspace     := 1; (* ?? *)
  185.    ncsprecedes     := 1; (* ?? *)
  186.    nsepbyspace     := 0; (* ?? *)
  187.    psignposn       := 1; (* ?? *)
  188.    nsignposn       := 1; (* ?? *)
  189.  END; END;
  190.  Monetary := ADR(monetary);
  191.  
  192. #if !(ISO_value_constructor && (defined HM2))
  193. #if ISO_value_constructor
  194.  vctype := LCCtype{
  195.    CClasses{
  196.      CClass{IScntrl}                                          BY 9,
  197.      CClass{IScntrl,ISspace,ISblank}                          BY 1,
  198.      CClass{IScntrl,ISspace}                                  BY 4,
  199.      CClass{IScntrl}                                          BY 18,
  200.      CClass{ISspace,ISblank,ISprint}                          BY 1,
  201.      CClass{ISpunct,ISgraph,ISprint}                          BY 15,
  202.      CClass{ISdigit,ISxdigit,ISalnum,ISgraph,ISprint}         BY 10,
  203.      CClass{ISpunct,ISgraph,ISprint}                          BY 7,
  204.      CClass{ISxdigit,ISupper,ISalpha,ISalnum,ISgraph,ISprint} BY 6,
  205.      CClass{ISupper,ISalpha,ISalnum,ISgraph,ISprint}          BY 20,
  206.      CClass{ISpunct,ISgraph,ISprint}                          BY 6,
  207.      CClass{ISxdigit,ISlower,ISalpha,ISalnum,ISgraph,ISprint} BY 6,
  208.      CClass{ISlower,ISalpha,ISalnum,ISgraph,ISprint}          BY 20,
  209.      CClass{ISpunct,ISgraph,ISprint}                          BY 4,
  210.      CClass{IScntrl}                                          BY 1,
  211.      CClass{ISgraph,ISprint}                                  BY 128
  212.    },
  213.    CTrans{
  214.      0C,1C,2C,3C,4C,5C,6C,7C,10C,11C,
  215.      12C,13C,14C,15C,16C,17C,20C,21C,22C,23C,
  216.      24C,25C,26C,27C,30C,31C,32C,33C,34C,35C,
  217.      36C,37C,40C,41C,42C,43C,44C,45C,46C,47C,
  218.      50C,51C,52C,53C,54C,55C,56C,57C,60C,61C,
  219.      62C,63C,64C,65C,66C,67C,70C,71C,72C,73C,
  220.      74C,75C,76C,77C,100C,141C,142C,143C,144C,145C,
  221.      146C,147C,150C,151C,152C,153C,154C,155C,156C,157C,
  222.      160C,161C,162C,163C,164C,165C,166C,167C,170C,171C,
  223.      172C,133C,134C,135C,136C,137C,140C,141C,142C,143C,
  224.      144C,145C,146C,147C,150C,151C,152C,153C,154C,155C,
  225.      156C,157C,160C,161C,162C,163C,164C,165C,166C,167C,
  226.      170C,171C,172C,173C,174C,175C,176C,177C,200C,201C,
  227.      202C,203C,204C,205C,206C,207C,210C,211C,212C,213C,
  228.      214C,215C,216C,217C,220C,221C,222C,223C,224C,225C,
  229.      226C,227C,230C,231C,232C,233C,234C,235C,236C,237C,
  230.      240C,241C,242C,243C,244C,245C,246C,247C,250C,251C,
  231.      252C,253C,254C,255C,256C,257C,260C,261C,262C,263C,
  232.      264C,265C,266C,267C,270C,271C,272C,273C,274C,275C,
  233.      276C,277C,300C,301C,302C,303C,304C,305C,306C,307C,
  234.      310C,311C,312C,313C,314C,315C,316C,317C,320C,321C,
  235.      322C,323C,324C,325C,326C,327C,330C,331C,332C,333C,
  236.      334C,335C,336C,337C,340C,341C,342C,343C,344C,345C,
  237.      346C,347C,350C,351C,352C,353C,354C,355C,356C,357C,
  238.      360C,361C,362C,363C,364C,365C,366C,367C,370C,371C,
  239.      372C,373C,374C,375C,376C,377C
  240.    },
  241.    CTrans{
  242.      0C,1C,2C,3C,4C,5C,6C,7C,10C,11C,
  243.      12C,13C,14C,15C,16C,17C,20C,21C,22C,23C,
  244.      24C,25C,26C,27C,30C,31C,32C,33C,34C,35C,
  245.      36C,37C,40C,41C,42C,43C,44C,45C,46C,47C,
  246.      50C,51C,52C,53C,54C,55C,56C,57C,60C,61C,
  247.      62C,63C,64C,65C,66C,67C,70C,71C,72C,73C,
  248.      74C,75C,76C,77C,100C,101C,102C,103C,104C,105C,
  249.      106C,107C,110C,111C,112C,113C,114C,115C,116C,117C,
  250.      120C,121C,122C,123C,124C,125C,126C,127C,130C,131C,
  251.      132C,133C,134C,135C,136C,137C,140C,101C,102C,103C,
  252.      104C,105C,106C,107C,110C,111C,112C,113C,114C,115C,
  253.      116C,117C,120C,121C,122C,123C,124C,125C,126C,127C,
  254.      130C,131C,132C,173C,174C,175C,176C,177C,200C,201C,
  255.      202C,203C,204C,205C,206C,207C,210C,211C,212C,213C,
  256.      214C,215C,216C,217C,220C,221C,222C,223C,224C,225C,
  257.      226C,227C,230C,231C,232C,233C,234C,235C,236C,237C,
  258.      240C,241C,242C,243C,244C,245C,246C,247C,250C,251C,
  259.      252C,253C,254C,255C,256C,257C,260C,261C,262C,263C,
  260.      264C,265C,266C,267C,270C,271C,272C,273C,274C,275C,
  261.      276C,277C,300C,301C,302C,303C,304C,305C,306C,307C,
  262.      310C,311C,312C,313C,314C,315C,316C,317C,320C,321C,
  263.      322C,323C,324C,325C,326C,327C,330C,331C,332C,333C,
  264.      334C,335C,336C,337C,340C,341C,342C,343C,344C,345C,
  265.      346C,347C,350C,351C,352C,353C,354C,355C,356C,357C,
  266.      360C,361C,362C,363C,364C,365C,366C,367C,370C,371C,
  267.      372C,373C,374C,375C,376C,377C
  268.    }
  269.  };
  270. #else
  271.  WITH vctype DO
  272.    class := LCPOSIX.Ctype^.class;
  273.    FOR c := 200C TO 377C DO
  274.      class[c] := CClass{ISgraph,ISprint};
  275.    END;
  276.  
  277.    toupper := LCPOSIX.Ctype^.toupper;
  278.    tolower := LCPOSIX.Ctype^.tolower;
  279.  END;
  280. #endif
  281. #endif
  282.  Ctype := ADR(vctype);
  283. END LCusa.
  284.