📄 no.051.mal
字号:
# Monet Mil to Mal compiler# Copyright (c) 2001-2004, CWI. All rights reserved.#Predefined code segment#The compiler can not guarantee an accurate compilation,#because MIL unlike MAL is a dynamically typed language.#A few guidelines to maximize usefullness.#- make the type of variables explicit, in particular 'nil'#- upon advice of M2m to remap identifiers, change it in your program directly#use the "mil_schema" for additional support routines# io.print("# >Number: 51\n");# io.print("# >Category: MIL\n");# io.print("# >Synopsis: returns from within a batloop\n");# io.print("# >Confidential: no\n");# io.print("# >Severity: serious\n");# io.print("# >Priority: medium\n");# io.print("# >Responsible: boncz\n");# io.print("# >State: closed\n");# io.print("# >Class: sw-bug\n");# io.print("# >Submitter-Id: unknown\n");# io.print("# >Arrival-Date: Wed Oct 15 13:50:27 1997\n");# io.print("# >Originator: niels\n");# io.print("# >Organization:\n");# io.print("# >Release: 971007\n");# io.print("# >Environment:\n");# io.print("# SOLARIS 2.5.1\n");# io.print("# >Description:\n");# io.print("# When a bat is returned from with a batloop the return value\n");# io.print("# is incorrect. \n");# io.print("# proc create(b) : bat {\n");# io.print("# var a := new (oid,flt);\n");# io.print("# b@batloop(){\n");# io.print("# if (a.count = 0)\n");# io.print("# return a;\n");# io.print("# }\n");# io.print("# return a;\n");# io.print("# }\n");# io.print("# \n");# io.print("# b := new (oid,flt);\n");# io.print("# b.insert(oid(1),flt(2));\n");# io.print("# var c := create(b);\n");# io.print("# b.semijoin(c).print;\n");# io.print("# #output\n");# io.print("# !WARNING: BATdescriptor: range error\n");# io.print("# !ERROR: interpret command/proc: 2nd param: invalid BAT.\n");# io.print("# [ nil ]\n");# io.print("proc create(bat b) : bat {");function create(b:bat[:any_1,:any_2]):bat[:any_1,:any_2];# io.print(" var a := new (oid,flt);"); a := bat.new(nil:oid,nil:flt);# io.print(" b@batloop(){");barrier (aa_a,aa_aH,aa_aT) := bat.newIterator(b);# io.print(" if (a.count() = 0)"); ba_a := aggr.count(a);barrier ca_a := calc.==(ba_a,0);# io.print(" return a;"); return da_a :=a;# io.print(" }");exit ca_a;redo (aa_a,aa_aH,aa_aT) := bat.hasMoreElements(b);exit (aa_a,aa_aH,aa_aT) ;# io.print(" return a;"); return ea_a :=a;end create;# io.print("var b := new (oid,flt);"); b := bat.new(nil:oid,nil:flt);# io.print("b.insert(oid(1),flt(2));"); fa_a := calc.oid(1); ga_a := calc.flt(2); ha_a := bat.insert(b,fa_a,ga_a);# io.print("b.print();"); ia_a := io.print(b);# io.print("var c := create(b);"); c := user.create(b);# io.print("b.print();"); ja_a := io.print(b);# io.print("c.print();"); ka_a := io.print(c);# io.print("b.semijoin(c).print();"); la_a := algebra.semijoin(b,c); ma_a := io.print(la_a);# io.print("quit();"); na_a := clients.quit();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -