diff --git a/progs/job/fj/13a.sdql b/progs/job/fj/13a.sdql new file mode 100644 index 00000000..d93b3be1 --- /dev/null +++ b/progs/job/fj/13a.sdql @@ -0,0 +1,52 @@ +let t = load[ int}, title: @vec {int -> string}, imdb_index: @vec {int -> string}, kind_id: @vec {int -> int}, production_year: @vec {int -> int}, imdb_id: @vec {int -> string}, phonetic_code: @vec {int -> string}, episode_of_id: @vec {int -> int}, season_nr: @vec {int -> int}, episode_nr: @vec {int -> int}, series_years: @vec {int -> string}, md5sum: @vec {int -> string}, size: int>]("datasets/job/title.csv") +let miidx = load[ int}, movie_id: @vec {int -> int}, info_type_id: @vec {int -> int}, info: @vec {int -> string}, note: @vec {int -> string}, size: int>]("datasets/job/movie_info_idx.csv") +let mi = load[ int}, movie_id: @vec {int -> int}, info_type_id: @vec {int -> int}, info: @vec {int -> string}, note: @vec {int -> string}, size: int>]("datasets/job/movie_info.csv") +let mc = load[ int}, movie_id: @vec {int -> int}, company_id: @vec {int -> int}, company_type_id: @vec {int -> int}, note: @vec {int -> string}, size: int>]("datasets/job/movie_companies.csv") +let kt = load[ int}, kind: @vec {int -> string}, size: int>]("datasets/job/13a/kt.csv") +let it2 = load[ int}, info: @vec {int -> string}, size: int>]("datasets/job/13a/it2.csv") +let it = load[ int}, info: @vec {int -> string}, size: int>]("datasets/job/13a/it.csv") +let ct = load[ int}, kind: @vec {int -> string}, size: int>]("datasets/job/13a/ct.csv") +let cn = load[ int}, name: @vec {int -> string}, country_code: @vec {int -> string}, imdb_id: @vec {int -> string}, name_pcode_nf: @vec {int -> string}, name_pcode_sf: @vec {int -> string}, md5sum: @vec {int -> string}, size: int>]("datasets/job/13a/cn.csv") + +let miidx_trie0 = sum( <- range(miidx.size)) @phmap(miidx.size) { miidx.movie_id(i) -> @smallvecdict(4) { i -> 1 } } in +let interm0_trie0 = sum( <- range(t.size)) + let x0 = t.id(t_off) in + if (x0 ∈ miidx_trie0) then + let miidx_trie1 = miidx_trie0(x0) in + sum( <- miidx_trie1) + @phmap(promote[min_sum](1000000) + promote[min_sum](t.size)) { t.id(t_off) -> @smallvecdict(4) { -> 1 } } +in + +let mc_trie0 = sum( <- range(mc.size)) @phmap(mc.size) { mc.movie_id(i) -> @smallvecdict(4) { i -> 1 } } in +let kt_trie0 = sum( <- range(kt.size)) @phmap(kt.size) { unique(kt.id(i)) -> 1 } in +let it2_trie0 = sum( <- range(it2.size)) @phmap(it2.size) { unique(it2.id(i)) -> 1 } in +let it_trie0 = sum( <- range(it.size)) @phmap(it.size) { unique(it.id(i)) -> 1 } in +let ct_trie0 = sum( <- range(ct.size)) @phmap(ct.size) { unique(ct.id(i)) -> 1 } in +let cn_trie0 = sum( <- range(cn.size)) @phmap(cn.size) { unique(cn.id(i)) -> 1 } in +sum( <- range(mi.size)) + let x0 = mi.movie_id(mi_off) in + if (x0 ∈ interm0_trie0) then + if (x0 ∈ mc_trie0) then + let interm0_trie1 = interm0_trie0(x0) in + let mc_trie1 = mc_trie0(x0) in + sum( <- interm0_trie1) + let x1 = interm0_tuple.col2 in + if (x1 ∈ kt_trie0) then + let kt_trie1 = kt_trie0(x1) in + let x2 = mi.info_type_id(mi_off) in + if (x2 ∈ it2_trie0) then + let it2_trie1 = it2_trie0(x2) in + let x3 = interm0_tuple.col4 in + if (x3 ∈ it_trie0) then + let it_trie1 = it_trie0(x3) in + sum( <- mc_trie1) + let x4 = mc.company_type_id(mc_off) in + if (x4 ∈ ct_trie0) then + let ct_trie1 = ct_trie0(x4) in + let x5 = mc.company_id(mc_off) in + if (x5 ∈ cn_trie0) then + let cn_trie1 = cn_trie0(x5) in + let mn_mi = in + let mn_interm0 = in + promote[min_sum]() + diff --git a/progs/job/fj/13d.sdql b/progs/job/fj/13d.sdql new file mode 100644 index 00000000..2f0a1865 --- /dev/null +++ b/progs/job/fj/13d.sdql @@ -0,0 +1,52 @@ +let t = load[ int}, title: @vec {int -> string}, imdb_index: @vec {int -> string}, kind_id: @vec {int -> int}, production_year: @vec {int -> int}, imdb_id: @vec {int -> string}, phonetic_code: @vec {int -> string}, episode_of_id: @vec {int -> int}, season_nr: @vec {int -> int}, episode_nr: @vec {int -> int}, series_years: @vec {int -> string}, md5sum: @vec {int -> string}, size: int>]("datasets/job/title.csv") +let miidx = load[ int}, movie_id: @vec {int -> int}, info_type_id: @vec {int -> int}, info: @vec {int -> string}, note: @vec {int -> string}, size: int>]("datasets/job/movie_info_idx.csv") +let mi = load[ int}, movie_id: @vec {int -> int}, info_type_id: @vec {int -> int}, info: @vec {int -> string}, note: @vec {int -> string}, size: int>]("datasets/job/movie_info.csv") +let mc = load[ int}, movie_id: @vec {int -> int}, company_id: @vec {int -> int}, company_type_id: @vec {int -> int}, note: @vec {int -> string}, size: int>]("datasets/job/movie_companies.csv") +let kt = load[ int}, kind: @vec {int -> string}, size: int>]("datasets/job/13d/kt.csv") +let it2 = load[ int}, info: @vec {int -> string}, size: int>]("datasets/job/13d/it2.csv") +let it = load[ int}, info: @vec {int -> string}, size: int>]("datasets/job/13d/it.csv") +let ct = load[ int}, kind: @vec {int -> string}, size: int>]("datasets/job/13d/ct.csv") +let cn = load[ int}, name: @vec {int -> string}, country_code: @vec {int -> string}, imdb_id: @vec {int -> string}, name_pcode_nf: @vec {int -> string}, name_pcode_sf: @vec {int -> string}, md5sum: @vec {int -> string}, size: int>]("datasets/job/13d/cn.csv") + +let miidx_trie0 = sum( <- range(miidx.size)) @phmap(miidx.size) { miidx.movie_id(i) -> @smallvecdict(4) { i -> 1 } } in +let interm0_trie0 = sum( <- range(t.size)) + let x0 = t.id(t_off) in + if (x0 ∈ miidx_trie0) then + let miidx_trie1 = miidx_trie0(x0) in + sum( <- miidx_trie1) + @phmap(promote[min_sum](1000000) + promote[min_sum](t.size)) { t.id(t_off) -> @smallvecdict(4) { -> 1 } } +in + +let mc_trie0 = sum( <- range(mc.size)) @phmap(mc.size) { mc.movie_id(i) -> @smallvecdict(4) { i -> 1 } } in +let kt_trie0 = sum( <- range(kt.size)) @phmap(kt.size) { unique(kt.id(i)) -> 1 } in +let it2_trie0 = sum( <- range(it2.size)) @phmap(it2.size) { unique(it2.id(i)) -> 1 } in +let it_trie0 = sum( <- range(it.size)) @phmap(it.size) { unique(it.id(i)) -> 1 } in +let ct_trie0 = sum( <- range(ct.size)) @phmap(ct.size) { unique(ct.id(i)) -> 1 } in +let cn_trie0 = sum( <- range(cn.size)) @phmap(cn.size) { cn.id(i) -> @smallvecdict(4) { i -> 1 } } in +sum( <- range(mi.size)) + let x0 = mi.movie_id(mi_off) in + if (x0 ∈ interm0_trie0) then + if (x0 ∈ mc_trie0) then + let interm0_trie1 = interm0_trie0(x0) in + let mc_trie1 = mc_trie0(x0) in + sum( <- interm0_trie1) + let x1 = interm0_tuple.col2 in + if (x1 ∈ kt_trie0) then + let kt_trie1 = kt_trie0(x1) in + let x2 = mi.info_type_id(mi_off) in + if (x2 ∈ it2_trie0) then + let it2_trie1 = it2_trie0(x2) in + let x3 = interm0_tuple.col4 in + if (x3 ∈ it_trie0) then + let it_trie1 = it_trie0(x3) in + sum( <- mc_trie1) + let x4 = mc.company_type_id(mc_off) in + if (x4 ∈ ct_trie0) then + let ct_trie1 = ct_trie0(x4) in + let x5 = mc.company_id(mc_off) in + if (x5 ∈ cn_trie0) then + let cn_trie1 = cn_trie0(x5) in + let mn_interm0 = in + let mn_cn = sum( <- cn_trie1) promote[min_sum]() in + promote[min_sum]() + diff --git a/progs/job/gj/13a.sdql b/progs/job/gj/13a.sdql new file mode 100644 index 00000000..83b88492 --- /dev/null +++ b/progs/job/gj/13a.sdql @@ -0,0 +1,51 @@ +let t = load[ int}, title: @vec {int -> string}, imdb_index: @vec {int -> string}, kind_id: @vec {int -> int}, production_year: @vec {int -> int}, imdb_id: @vec {int -> string}, phonetic_code: @vec {int -> string}, episode_of_id: @vec {int -> int}, season_nr: @vec {int -> int}, episode_nr: @vec {int -> int}, series_years: @vec {int -> string}, md5sum: @vec {int -> string}, size: int>]("datasets/job/title.csv") +let miidx = load[ int}, movie_id: @vec {int -> int}, info_type_id: @vec {int -> int}, info: @vec {int -> string}, note: @vec {int -> string}, size: int>]("datasets/job/movie_info_idx.csv") +let mi = load[ int}, movie_id: @vec {int -> int}, info_type_id: @vec {int -> int}, info: @vec {int -> string}, note: @vec {int -> string}, size: int>]("datasets/job/movie_info.csv") +let mc = load[ int}, movie_id: @vec {int -> int}, company_id: @vec {int -> int}, company_type_id: @vec {int -> int}, note: @vec {int -> string}, size: int>]("datasets/job/movie_companies.csv") +let kt = load[ int}, kind: @vec {int -> string}, size: int>]("datasets/job/13a/kt.csv") +let it2 = load[ int}, info: @vec {int -> string}, size: int>]("datasets/job/13a/it2.csv") +let it = load[ int}, info: @vec {int -> string}, size: int>]("datasets/job/13a/it.csv") +let ct = load[ int}, kind: @vec {int -> string}, size: int>]("datasets/job/13a/ct.csv") +let cn = load[ int}, name: @vec {int -> string}, country_code: @vec {int -> string}, imdb_id: @vec {int -> string}, name_pcode_nf: @vec {int -> string}, name_pcode_sf: @vec {int -> string}, md5sum: @vec {int -> string}, size: int>]("datasets/job/13a/cn.csv") + +let t_trie0 = sum( <- range(t.size)) @phmap(t.size) { t.id(i) -> @smallvecdict(4) { i -> 1 } } in +let miidx_trie0 = sum( <- range(miidx.size)) @phmap(miidx.size) { miidx.movie_id(i) -> @smallvecdict(4) { i -> 1 } } in +let interm0_trie0 = sum( <- t_trie0) + if (x0 ∈ miidx_trie0) then + let miidx_trie1 = miidx_trie0(x0) in + sum( <- t_trie1) + sum( <- miidx_trie1) + { t.id(t_off) -> { t.kind_id(t_off) -> { miidx.info_type_id(miidx_off) -> @smallvecdict(0) { -> 1 } } } } +in + +let mi_trie0 = sum( <- range(mi.size)) { mi.movie_id(i) -> { mi.info_type_id(i) -> @smallvecdict(0) { i -> 1 } } } in +let mc_trie0 = sum( <- range(mc.size)) { mc.movie_id(i) -> { mc.company_type_id(i) -> { mc.company_id(i) -> 1 } } } in +let kt_trie0 = sum( <- range(kt.size)) { kt.id(i) -> 1 } in +let it2_trie0 = sum( <- range(it2.size)) { it2.id(i) -> 1 } in +let it_trie0 = sum( <- range(it.size)) { it.id(i) -> 1 } in +let ct_trie0 = sum( <- range(ct.size)) { ct.id(i) -> 1 } in +let cn_trie0 = sum( <- range(cn.size)) { cn.id(i) -> 1 } in +sum( <- mi_trie0) + if (x0 ∈ interm0_trie0) then + if (x0 ∈ mc_trie0) then + let interm0_trie1 = interm0_trie0(x0) in + let mc_trie1 = mc_trie0(x0) in + sum( <- interm0_trie1) + if (x1 ∈ kt_trie0) then + let kt_trie1 = kt_trie0(x1) in + sum( <- mi_trie1) + if (x2 ∈ it2_trie0) then + let it2_trie1 = it2_trie0(x2) in + sum( <- interm0_trie2) + if (x3 ∈ it_trie0) then + let it_trie1 = it_trie0(x3) in + sum( <- mc_trie1) + if (x4 ∈ ct_trie0) then + let ct_trie1 = ct_trie0(x4) in + sum( <- mc_trie2) + if (x5 ∈ cn_trie0) then + let cn_trie1 = cn_trie0(x5) in + let mn_mi = sum( <- mi_trie2) promote[min_sum]() in + let mn_interm0 = sum( <- interm0_trie3) promote[min_sum]() in + promote[min_sum]() + diff --git a/progs/job/gj/13d.sdql b/progs/job/gj/13d.sdql new file mode 100644 index 00000000..8ef0b6d9 --- /dev/null +++ b/progs/job/gj/13d.sdql @@ -0,0 +1,51 @@ +let t = load[ int}, title: @vec {int -> string}, imdb_index: @vec {int -> string}, kind_id: @vec {int -> int}, production_year: @vec {int -> int}, imdb_id: @vec {int -> string}, phonetic_code: @vec {int -> string}, episode_of_id: @vec {int -> int}, season_nr: @vec {int -> int}, episode_nr: @vec {int -> int}, series_years: @vec {int -> string}, md5sum: @vec {int -> string}, size: int>]("datasets/job/title.csv") +let miidx = load[ int}, movie_id: @vec {int -> int}, info_type_id: @vec {int -> int}, info: @vec {int -> string}, note: @vec {int -> string}, size: int>]("datasets/job/movie_info_idx.csv") +let mi = load[ int}, movie_id: @vec {int -> int}, info_type_id: @vec {int -> int}, info: @vec {int -> string}, note: @vec {int -> string}, size: int>]("datasets/job/movie_info.csv") +let mc = load[ int}, movie_id: @vec {int -> int}, company_id: @vec {int -> int}, company_type_id: @vec {int -> int}, note: @vec {int -> string}, size: int>]("datasets/job/movie_companies.csv") +let kt = load[ int}, kind: @vec {int -> string}, size: int>]("datasets/job/13d/kt.csv") +let it2 = load[ int}, info: @vec {int -> string}, size: int>]("datasets/job/13d/it2.csv") +let it = load[ int}, info: @vec {int -> string}, size: int>]("datasets/job/13d/it.csv") +let ct = load[ int}, kind: @vec {int -> string}, size: int>]("datasets/job/13d/ct.csv") +let cn = load[ int}, name: @vec {int -> string}, country_code: @vec {int -> string}, imdb_id: @vec {int -> string}, name_pcode_nf: @vec {int -> string}, name_pcode_sf: @vec {int -> string}, md5sum: @vec {int -> string}, size: int>]("datasets/job/13d/cn.csv") + +let t_trie0 = sum( <- range(t.size)) @phmap(t.size) { t.id(i) -> @smallvecdict(4) { i -> 1 } } in +let miidx_trie0 = sum( <- range(miidx.size)) @phmap(miidx.size) { miidx.movie_id(i) -> @smallvecdict(4) { i -> 1 } } in +let interm0_trie0 = sum( <- t_trie0) + if (x0 ∈ miidx_trie0) then + let miidx_trie1 = miidx_trie0(x0) in + sum( <- t_trie1) + sum( <- miidx_trie1) + { t.id(t_off) -> { t.kind_id(t_off) -> { miidx.info_type_id(miidx_off) -> @smallvecdict(0) { -> 1 } } } } +in + +let mi_trie0 = sum( <- range(mi.size)) { mi.movie_id(i) -> { mi.info_type_id(i) -> 1 } } in +let mc_trie0 = sum( <- range(mc.size)) { mc.movie_id(i) -> { mc.company_type_id(i) -> { mc.company_id(i) -> 1 } } } in +let kt_trie0 = sum( <- range(kt.size)) { kt.id(i) -> 1 } in +let it2_trie0 = sum( <- range(it2.size)) { it2.id(i) -> 1 } in +let it_trie0 = sum( <- range(it.size)) { it.id(i) -> 1 } in +let ct_trie0 = sum( <- range(ct.size)) { ct.id(i) -> 1 } in +let cn_trie0 = sum( <- range(cn.size)) @phmap(cn.size) { cn.id(i) -> @smallvecdict(4) { i -> 1 } } in +sum( <- mi_trie0) + if (x0 ∈ interm0_trie0) then + if (x0 ∈ mc_trie0) then + let interm0_trie1 = interm0_trie0(x0) in + let mc_trie1 = mc_trie0(x0) in + sum( <- interm0_trie1) + if (x1 ∈ kt_trie0) then + let kt_trie1 = kt_trie0(x1) in + sum( <- mi_trie1) + if (x2 ∈ it2_trie0) then + let it2_trie1 = it2_trie0(x2) in + sum( <- interm0_trie2) + if (x3 ∈ it_trie0) then + let it_trie1 = it_trie0(x3) in + sum( <- mc_trie1) + if (x4 ∈ ct_trie0) then + let ct_trie1 = ct_trie0(x4) in + sum( <- mc_trie2) + if (x5 ∈ cn_trie0) then + let cn_trie1 = cn_trie0(x5) in + let mn_interm0 = sum( <- interm0_trie3) promote[min_sum]() in + let mn_cn = sum( <- cn_trie1) promote[min_sum]() in + promote[min_sum]() + diff --git a/src/test/scala/sdql/backend/CppCodegenTest.scala b/src/test/scala/sdql/backend/CppCodegenTest.scala index 47fdd4bb..983715db 100644 --- a/src/test/scala/sdql/backend/CppCodegenTest.scala +++ b/src/test/scala/sdql/backend/CppCodegenTest.scala @@ -235,8 +235,10 @@ class CppCodegenTestGJ extends AnyFlatSpec with ParallelTestExecution { CodegenHelpers.compilesFile("progs/job/gj/12c.sdql") } it should "codegen GJ 13" in { + CodegenHelpers.compilesFile("progs/job/gj/13a.sdql") CodegenHelpers.compilesFile("progs/job/gj/13b.sdql") CodegenHelpers.compilesFile("progs/job/gj/13c.sdql") + CodegenHelpers.compilesFile("progs/job/gj/13d.sdql") } it should "codegen GJ 14" in { CodegenHelpers.compilesFile("progs/job/gj/14a.sdql") @@ -410,8 +412,10 @@ class CppCodegenTestFJ extends AnyFlatSpec with ParallelTestExecution { CodegenHelpers.compilesFile("progs/job/fj/12c.sdql") } it should "codegen FJ 13" in { + CodegenHelpers.compilesFile("progs/job/fj/13a.sdql") CodegenHelpers.compilesFile("progs/job/fj/13b.sdql") CodegenHelpers.compilesFile("progs/job/fj/13c.sdql") + CodegenHelpers.compilesFile("progs/job/fj/13d.sdql") } it should "codegen FJ 14" in { CodegenHelpers.compilesFile("progs/job/fj/14a.sdql") diff --git a/src/test/scala/sdql/backend/CppCompileTest.scala b/src/test/scala/sdql/backend/CppCompileTest.scala index 1fbac2da..d2f934d8 100644 --- a/src/test/scala/sdql/backend/CppCompileTest.scala +++ b/src/test/scala/sdql/backend/CppCompileTest.scala @@ -215,8 +215,11 @@ class CppCompileTestGJ extends AnyFlatSpec with ParallelTestExecution { CompileHelpers.assertOutputs("progs/job/gj/12b.sdql", "results/job/12b.result") CompileHelpers.assertOutputs("progs/job/gj/12c.sdql", "results/job/12c.result") + CompileHelpers.assertOutputs("progs/job/gj/13a.sdql", "results/job/13a.result") CompileHelpers.assertOutputs("progs/job/gj/13b.sdql", "results/job/13b.result") CompileHelpers.assertOutputs("progs/job/gj/13c.sdql", "results/job/13c.result") + // note: producing_company min here is '68 Productions instead "O" Films due to ordering of ' < " + CompileHelpers.assertOutputs("progs/job/gj/13d.sdql", "results/job/13d.result") CompileHelpers.assertOutputs("progs/job/gj/14a.sdql", "results/job/14a.result") CompileHelpers.assertOutputs("progs/job/gj/14b.sdql", "results/job/14b.result") @@ -378,8 +381,11 @@ class CppCompileTestFJ extends AnyFlatSpec with ParallelTestExecution { CompileHelpers.assertOutputs("progs/job/fj/12b.sdql", "results/job/12b.result") CompileHelpers.assertOutputs("progs/job/fj/12c.sdql", "results/job/12c.result") + CompileHelpers.assertOutputs("progs/job/fj/13a.sdql", "results/job/13a.result") CompileHelpers.assertOutputs("progs/job/fj/13b.sdql", "results/job/13b.result") CompileHelpers.assertOutputs("progs/job/fj/13c.sdql", "results/job/13c.result") + // note: producing_company min here is '68 Productions instead "O" Films due to ordering of ' < " + CompileHelpers.assertOutputs("progs/job/fj/13d.sdql", "results/job/13d.result") CompileHelpers.assertOutputs("progs/job/fj/14a.sdql", "results/job/14a.result") CompileHelpers.assertOutputs("progs/job/fj/14b.sdql", "results/job/14b.result") diff --git a/src/test/scala/sdql/frontend/ParserTest.scala b/src/test/scala/sdql/frontend/ParserTest.scala index ee2225cc..9051ee55 100644 --- a/src/test/scala/sdql/frontend/ParserTest.scala +++ b/src/test/scala/sdql/frontend/ParserTest.scala @@ -255,8 +255,10 @@ class ParserTest extends AnyFlatSpec with Matchers { SourceCode.fromFile("progs/job/gj/12b.sdql") SourceCode.fromFile("progs/job/gj/12c.sdql") + SourceCode.fromFile("progs/job/gj/13a.sdql") SourceCode.fromFile("progs/job/gj/13b.sdql") SourceCode.fromFile("progs/job/gj/13c.sdql") + SourceCode.fromFile("progs/job/gj/13d.sdql") SourceCode.fromFile("progs/job/gj/14a.sdql") SourceCode.fromFile("progs/job/gj/14b.sdql") @@ -342,4 +344,147 @@ class ParserTest extends AnyFlatSpec with Matchers { SourceCode.fromFile("progs/job/gj/33b.sdql") SourceCode.fromFile("progs/job/gj/33c.sdql") } + + it should "parse FJ" in { + SourceCode.fromFile("progs/job/fj/1a.sdql") + SourceCode.fromFile("progs/job/fj/1b.sdql") + SourceCode.fromFile("progs/job/fj/1c.sdql") + SourceCode.fromFile("progs/job/fj/1d.sdql") + + SourceCode.fromFile("progs/job/fj/2a.sdql") + SourceCode.fromFile("progs/job/fj/2b.sdql") + SourceCode.fromFile("progs/job/fj/2d.sdql") + + SourceCode.fromFile("progs/job/fj/3a.sdql") + SourceCode.fromFile("progs/job/fj/3b.sdql") + SourceCode.fromFile("progs/job/fj/3c.sdql") + + SourceCode.fromFile("progs/job/fj/4a.sdql") + SourceCode.fromFile("progs/job/fj/4b.sdql") + SourceCode.fromFile("progs/job/fj/4c.sdql") + + SourceCode.fromFile("progs/job/fj/5c.sdql") + + SourceCode.fromFile("progs/job/fj/6a.sdql") + SourceCode.fromFile("progs/job/fj/6b.sdql") + SourceCode.fromFile("progs/job/fj/6c.sdql") + SourceCode.fromFile("progs/job/fj/6d.sdql") + SourceCode.fromFile("progs/job/fj/6e.sdql") + SourceCode.fromFile("progs/job/fj/6f.sdql") + + SourceCode.fromFile("progs/job/fj/7a.sdql") + SourceCode.fromFile("progs/job/fj/7b.sdql") + SourceCode.fromFile("progs/job/fj/7c.sdql") + + SourceCode.fromFile("progs/job/fj/8a.sdql") + SourceCode.fromFile("progs/job/fj/8b.sdql") + SourceCode.fromFile("progs/job/fj/8c.sdql") + SourceCode.fromFile("progs/job/fj/8d.sdql") + + SourceCode.fromFile("progs/job/fj/9a.sdql") + SourceCode.fromFile("progs/job/fj/9b.sdql") + SourceCode.fromFile("progs/job/fj/9c.sdql") + SourceCode.fromFile("progs/job/fj/9d.sdql") + + SourceCode.fromFile("progs/job/fj/10a.sdql") + SourceCode.fromFile("progs/job/fj/10c.sdql") + + SourceCode.fromFile("progs/job/fj/11a.sdql") + SourceCode.fromFile("progs/job/fj/11b.sdql") + SourceCode.fromFile("progs/job/fj/11c.sdql") + SourceCode.fromFile("progs/job/fj/11d.sdql") + + SourceCode.fromFile("progs/job/fj/12a.sdql") + SourceCode.fromFile("progs/job/fj/12b.sdql") + SourceCode.fromFile("progs/job/fj/12c.sdql") + + SourceCode.fromFile("progs/job/fj/13a.sdql") + SourceCode.fromFile("progs/job/fj/13b.sdql") + SourceCode.fromFile("progs/job/fj/13c.sdql") + SourceCode.fromFile("progs/job/fj/13d.sdql") + + SourceCode.fromFile("progs/job/fj/14a.sdql") + SourceCode.fromFile("progs/job/fj/14b.sdql") + SourceCode.fromFile("progs/job/fj/14c.sdql") + + SourceCode.fromFile("progs/job/fj/15a.sdql") + SourceCode.fromFile("progs/job/fj/15b.sdql") + SourceCode.fromFile("progs/job/fj/15c.sdql") + SourceCode.fromFile("progs/job/fj/15d.sdql") + + SourceCode.fromFile("progs/job/fj/16a.sdql") + SourceCode.fromFile("progs/job/fj/16b.sdql") + SourceCode.fromFile("progs/job/fj/16c.sdql") + SourceCode.fromFile("progs/job/fj/16d.sdql") + + SourceCode.fromFile("progs/job/fj/17a.sdql") + SourceCode.fromFile("progs/job/fj/17b.sdql") + SourceCode.fromFile("progs/job/fj/17c.sdql") + SourceCode.fromFile("progs/job/fj/17d.sdql") + SourceCode.fromFile("progs/job/fj/17e.sdql") + SourceCode.fromFile("progs/job/fj/17f.sdql") + + SourceCode.fromFile("progs/job/fj/18a.sdql") + SourceCode.fromFile("progs/job/fj/18b.sdql") + SourceCode.fromFile("progs/job/fj/18c.sdql") + + SourceCode.fromFile("progs/job/fj/19a.sdql") + SourceCode.fromFile("progs/job/fj/19b.sdql") + SourceCode.fromFile("progs/job/fj/19c.sdql") + SourceCode.fromFile("progs/job/fj/19d.sdql") + + SourceCode.fromFile("progs/job/fj/20a.sdql") + SourceCode.fromFile("progs/job/fj/20b.sdql") + SourceCode.fromFile("progs/job/fj/20c.sdql") + + SourceCode.fromFile("progs/job/fj/21a.sdql") + SourceCode.fromFile("progs/job/fj/21b.sdql") + SourceCode.fromFile("progs/job/fj/21c.sdql") + + SourceCode.fromFile("progs/job/fj/22a.sdql") + SourceCode.fromFile("progs/job/fj/22b.sdql") + SourceCode.fromFile("progs/job/fj/22c.sdql") + SourceCode.fromFile("progs/job/fj/22d.sdql") + + SourceCode.fromFile("progs/job/fj/23a.sdql") + SourceCode.fromFile("progs/job/fj/23b.sdql") + SourceCode.fromFile("progs/job/fj/23c.sdql") + + SourceCode.fromFile("progs/job/fj/24a.sdql") + SourceCode.fromFile("progs/job/fj/24b.sdql") + + SourceCode.fromFile("progs/job/fj/25a.sdql") + SourceCode.fromFile("progs/job/fj/25b.sdql") + SourceCode.fromFile("progs/job/fj/25c.sdql") + + SourceCode.fromFile("progs/job/fj/26a.sdql") + SourceCode.fromFile("progs/job/fj/26b.sdql") + SourceCode.fromFile("progs/job/fj/26c.sdql") + + SourceCode.fromFile("progs/job/fj/27a.sdql") + SourceCode.fromFile("progs/job/fj/27b.sdql") + SourceCode.fromFile("progs/job/fj/27c.sdql") + + SourceCode.fromFile("progs/job/fj/28a.sdql") + SourceCode.fromFile("progs/job/fj/28b.sdql") + SourceCode.fromFile("progs/job/fj/28c.sdql") + + SourceCode.fromFile("progs/job/fj/29a.sdql") + SourceCode.fromFile("progs/job/fj/29b.sdql") + SourceCode.fromFile("progs/job/fj/29c.sdql") + + SourceCode.fromFile("progs/job/fj/30a.sdql") + SourceCode.fromFile("progs/job/fj/30b.sdql") + SourceCode.fromFile("progs/job/fj/30c.sdql") + + SourceCode.fromFile("progs/job/fj/31a.sdql") + SourceCode.fromFile("progs/job/fj/31b.sdql") + SourceCode.fromFile("progs/job/fj/31c.sdql") + + SourceCode.fromFile("progs/job/fj/32b.sdql") + + SourceCode.fromFile("progs/job/fj/33a.sdql") + SourceCode.fromFile("progs/job/fj/33b.sdql") + SourceCode.fromFile("progs/job/fj/33c.sdql") + } }