home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume2 / basic / part2 / newbs / op2.c < prev    next >
Encoding:
C/C++ Source or Header  |  1986-11-30  |  4.1 KB  |  252 lines

  1. /* operat2.c -- more operators for bs.  the ones that are all alike.
  2.  */
  3.  
  4. #include "bsdefs.h"
  5.  
  6. _radd(l,p)
  7. int (*l[])(),p;
  8. {
  9.     union value rg1,rg2,result;
  10.  
  11.     if((status&XMODE)==M_READ){ dtype=T_DBL; goto EXEC;}
  12.     if((status&XMODE) == M_EXECUTE) {
  13. EXEC:
  14.     rg2 = pop();
  15.     rg1 = pop();
  16.     result.rval = rg1.rval + rg2.rval;
  17.     push(result);
  18.     }
  19.     return(p);
  20. }
  21. _rsub(l,p)
  22. int (*l[])(),p;
  23. {
  24.     union value rg1,rg2,result;
  25.  
  26.     if((status&XMODE)==M_READ){ dtype=T_DBL; goto EXEC;}
  27.     if((status&XMODE) == M_EXECUTE) {
  28. EXEC:
  29.     rg2 = pop();
  30.     rg1 = pop();
  31.     result.rval = rg1.rval - rg2.rval;
  32.     push(result);
  33.     }
  34.     return(p);
  35. }
  36. _rmult(l,p)
  37. int (*l[])(),p;
  38. {
  39.     union value rg1,rg2,result;
  40.  
  41.     if((status&XMODE)==M_READ){ dtype=T_DBL; goto EXEC;}
  42.     if((status&XMODE) == M_EXECUTE) {
  43. EXEC:
  44.     rg2 = pop();
  45.     rg1 = pop();
  46.     result.rval = rg1.rval * rg2.rval;
  47.     push(result);
  48.     }
  49.     return(p);
  50. }
  51. _rdiv(l,p)
  52. int (*l[])(),p;
  53. {
  54.     union value rg1,rg2,result;
  55.  
  56.     if((status&XMODE)==M_READ){ dtype=T_DBL; goto EXEC;}
  57.     if((status&XMODE) == M_EXECUTE) {
  58. EXEC:
  59.     rg2 = pop();
  60.     rg1 = pop();
  61.     result.rval = rg1.rval / rg2.rval;
  62.     push(result);
  63.     }
  64.     return(p);
  65. }
  66. _req(l,p)
  67. int (*l[])(),p;
  68. {
  69.     union value rg1,rg2,result;
  70.  
  71.     if((status&XMODE) == M_EXECUTE) {
  72.     rg2 = pop();
  73.     rg1 = pop();
  74.     result.ival = rg1.rval == rg2.rval;
  75.     push(result);
  76.     }
  77.     return(p);
  78. }
  79. _seq(l,p)
  80. int (*l[])(),p;
  81. {
  82.     union value rg1,rg2,result;
  83.  
  84.     if((status&XMODE) == M_EXECUTE) {
  85.     rg2 = pop();
  86.     rg1 = pop();
  87.     result.sval = strcmp(rg1.sval,rg2.sval) == 0;
  88.     push(result);
  89.     }
  90.     return(p);
  91. }
  92. _rneq(l,p)
  93. int (*l[])(),p;
  94. {
  95.     union value rg1,rg2,result;
  96.  
  97.     if((status&XMODE) == M_EXECUTE) {
  98.     rg2 = pop();
  99.     rg1 = pop();
  100.     result.ival = rg1.rval != rg2.rval;
  101.     push(result);
  102.     }
  103.     return(p);
  104. }
  105. _sneq(l,p)
  106. int (*l[])(),p;
  107. {
  108.     union value rg1,rg2,result;
  109.  
  110.     if((status&XMODE) == M_EXECUTE) {
  111.     rg2 = pop();
  112.     rg1 = pop();
  113.     result.sval = strcmp(rg1.sval,rg2.sval) != 0;
  114.     push(result);
  115.     }
  116.     return(p);
  117. }
  118. _rleq(l,p)
  119. int (*l[])(),p;
  120. {
  121.     union value rg1,rg2,result;
  122.  
  123.     if((status&XMODE) == M_EXECUTE) {
  124.     rg2 = pop();
  125.     rg1 = pop();
  126.     result.ival = rg1.rval <= rg2.rval;
  127.     push(result);
  128.     }
  129.     return(p);
  130. }
  131. _sleq(l,p)
  132. int (*l[])(),p;
  133. {
  134.     union value rg1,rg2,result;
  135.  
  136.     if((status&XMODE) == M_EXECUTE) {
  137.     rg2 = pop();
  138.     rg1 = pop();
  139.     result.sval = strcmp(rg1.sval,rg2.sval) <= 0;
  140.     push(result);
  141.     }
  142.     return(p);
  143. }
  144. _rlt(l,p)
  145. int (*l[])(),p;
  146. {
  147.     union value rg1,rg2,result;
  148.  
  149.     if((status&XMODE) == M_EXECUTE) {
  150.     rg2 = pop();
  151.     rg1 = pop();
  152.     result.ival = rg1.rval < rg2.rval;
  153.     push(result);
  154.     }
  155.     return(p);
  156. }
  157. _slt(l,p)
  158. int (*l[])(),p;
  159. {
  160.     union value rg1,rg2,result;
  161.  
  162.     if((status&XMODE) == M_EXECUTE) {
  163.     rg2 = pop();
  164.     rg1 = pop();
  165.     result.sval = strcmp(rg1.sval,rg2.sval) < 0;
  166.     push(result);
  167.     }
  168.     return(p);
  169. }
  170. _rgeq(l,p)
  171. int (*l[])(),p;
  172. {
  173.     union value rg1,rg2,result;
  174.  
  175.     if((status&XMODE) == M_EXECUTE) {
  176.     rg2 = pop();
  177.     rg1 = pop();
  178.     result.ival = rg1.rval >= rg2.rval;
  179.     push(result);
  180.     }
  181.     return(p);
  182. }
  183. _sgeq(l,p)
  184. int (*l[])(),p;
  185. {
  186.     union value rg1,rg2,result;
  187.  
  188.     if((status&XMODE) == M_EXECUTE) {
  189.     rg2 = pop();
  190.     rg1 = pop();
  191.     result.sval = strcmp(rg1.sval,rg2.sval) >= 0;
  192.     push(result);
  193.     }
  194.     return(p);
  195. }
  196. _rgt(l,p)
  197. int (*l[])(),p;
  198. {
  199.     union value rg1,rg2,result;
  200.  
  201.     if((status&XMODE) == M_EXECUTE) {
  202.     rg2 = pop();
  203.     rg1 = pop();
  204.     result.ival = rg1.rval > rg2.rval;
  205.     push(result);
  206.     }
  207.     return(p);
  208. }
  209. _sgt(l,p)
  210. int (*l[])(),p;
  211. {
  212.     union value rg1,rg2,result;
  213.  
  214.     if((status&XMODE) == M_EXECUTE) {
  215.     rg2 = pop();
  216.     rg1 = pop();
  217.     result.sval = strcmp(rg1.sval,rg2.sval) > 0;
  218.     push(result);
  219.     }
  220.     return(p);
  221. }
  222. _or(l,p)
  223. int (*l[])(),p;
  224. {
  225.     union value rg1,rg2,result;
  226.  
  227.     if((status&XMODE)==M_READ){ dtype=T_INT; goto EXEC;}
  228.     if((status&XMODE) == M_EXECUTE) {
  229. EXEC:
  230.     rg2 = pop();
  231.     rg1 = pop();
  232.     result.ival = rg1.ival || rg2.ival;
  233.     push(result);
  234.     }
  235.     return(p);
  236. }
  237. _and(l,p)
  238. int (*l[])(),p;
  239. {
  240.     union value rg1,rg2,result;
  241.  
  242.     if((status&XMODE)==M_READ){ dtype=T_INT; goto EXEC;}
  243.     if((status&XMODE) == M_EXECUTE) {
  244. EXEC:
  245.     rg2 = pop();
  246.     rg1 = pop();
  247.     result.ival = rg1.ival && rg2.ival;
  248.     push(result);
  249.     }
  250.     return(p);
  251. }
  252.