Structures?
- Posted by Lucius Hilley III <lhilley at CDC.NET> Jan 18, 1999
- 374 views
Has everyone lost there intrest in structures? The following code works but is yet to be completed. I won't complete it if I don't see any intrest in it. Lucius L. Hilley III --Program name is "struct.ex" --without type_check --with trace --trace(1) sequence s_names, s_fields, s_data, s_var sequence s_var_struct s_names = {} s_fields = {} s_data = {} s_var = {} s_var_struct = {} ----function "Lucius L. Hilley III"() global procedure struct(sequence structure, sequence fields) sequence msg if find(structure, s_names) then msg = "Attempt to redefine struct: " & structure & 10 msg = msg & "\t for detailed information view ex.err" machine_proc(37, msg) ? 1/0 else s_names = append(s_names, structure) s_fields = append(s_fields, fields) end if end procedure ------------------------------------------------------- global procedure assign(sequence var, object data) integer f, name, field f = find('.', var) if f then name = find(var[1..f-1], s_var) field = find(var[f+1..length(var)], s_fields[s_var_struct[name]]) s_data[name][field] = data else name = find(var, s_var) s_data[name][1..length(s_data[name])] = data end if end procedure ------------------------------------------------------- global function value_of(sequence var) integer f, name, field f = find('.', var) if f then name = find(var[1..f-1], s_var) field = find(var[f+1..length(var)], s_fields[s_var_struct[name]]) return s_data[name][field] else name = find(var, s_var) return s_data[name] end if end function ------------------------------------------------------- global procedure init_var(sequence var, sequence structure) integer f sequence msg if find(var, s_var) then msg = "Attempt to redefine var: " & var & 10 msg = msg & "\t for detailed information view ex.err" machine_proc(37, msg) ? 1/0 else f = find(structure, s_names) if f = 0 then msg = "Structure " & structure & " not defined." & 10 msg = msg & "\t for detailed information view ex.err" machine_proc(37, msg) ? 1/0 end if s_var = append(s_var, var) s_var_struct = append(s_var_struct, find(structure, s_names)) s_data = append(s_data, repeat(0, length(s_fields[f]))) end if end procedure ------------------------------------------------------- global procedure del_var(sequence var) integer f, l f = find(var, s_var) if f then l = length(s_var) s_var = s_var[1..f-1] & s_var[f+1..l] s_data = s_data[1..f-1] & s_data[f+1..l] s_var_struct = s_var_struct[1..f-1] & s_var_struct[f+1..l] end if end procedure ------------------------------------------------------- struct("employee", {"name", "wage"}) struct("animal", {"name", "birthyear", "sex"}) init_var("cat", "animal") init_var("dog", "animal") assign("cat", {"Ki Ki", 1998, "male"}) assign("dog.name", "Sierra") assign("dog.birthyear", 0) assign("dog.sex", "female") puts(1, value_of("cat.name")) puts(1, 10) ? value_of("cat.birthyear") puts(1, value_of("cat.sex")) puts(1, {10, 10}) puts(1, value_of("dog.name")) puts(1, 10) ? value_of("dog.birthyear") puts(1, value_of("dog.sex")) puts(1, {10, 10}) ? value_of("cat")