问题标签 [clp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - 从 SQL Server 返回参数调用 AS400 RPG
在我的 SQL Server 实例中,我有一个到 AS400 的链接服务器。
我想执行一个 CLP 程序,它需要 2 个参数,一个numeric(8,0)
作为输入,一个alphanumeric(3)
作为输出。
这些是我用来执行此操作的 SQL 命令:
该命令执行没有错误,但没有返回任何结果。
第二个参数是一个varchar(3)
参数,因为 AS400 需要一个字母数字参数来返回结果,但它始终为空。
谁能帮我?
提前致谢
更新:
我还尝试创建一个仅接受 1 个参数并修改其值的简单 CLP。以下是简单的 CLP 代码:
这是一个非常简单的程序,它接受一个 numeric(8,0) 参数并修改它的值。
下面是我用来执行 DB2 RPG 的 Sql Server 代码:
声明@P1 数字(8, 0) 选择@P1 = 00000000
exec ('CALL .<RPG_Name>(''?'')', @P1 OUTPUT) AT AS400 选择 @P1
执行成功,没有错误。在此调用之后,@P1 变量包含初始值而不是修改后的值,因此在此调用之后我无法在 Sql Server 中获取“返回”值。我该怎么做?
或者如何将值从 CLP 返回到 Sql Server?
谢谢
oracle - DB2 CLP 在 .sql 文件中传递变量
由于我的 shell 脚本使用超长 SQL 语句多次调用 Db2,我想从脚本中抽象出 SQL 语句并将它们放入一个.sql
文件中,然后从 Db2 命令行处理器运行它db2 -f xxx.sql
。
我希望某些 SQL 语句使用从 shell 脚本传入的变量。
有没有像 Oracle 的方法可以通过'&1'sqlplus
在文件中传递变量?.sql
这将返回 DB21004E 错误:
prolog - Prolog(CLP)的可变装箱问题
我正在尝试使用约束逻辑编程 (CLP) 在 (Swi-)Prolog 中为 NP-hard 2D Variable Size Bin Packing Problem (2DVSBPP) 找到一种算法。
问题可以这样解释:一些订购的产品需要尽可能高效地包装到一些盒子(箱)中。产品有一些给定的宽度和长度(正方形或矩形,例如 2x3)。有四种不同尺寸的箱子,每种都有给托运人的特定成本(例如,5x5 箱子 4 美元,5x7 箱子 5 美元)。目标是最小化盒子的总成本。
一段时间以来,我一直在寻找这个问题的答案,并阅读了许多其他语言的论文和类似示例。但是,我找不到任何可行的解决方案。我特别为如何处理未知数量的 Boxes (bins) 而苦苦挣扎。
为了能够找到解决这个问题的方法,我尝试了一个类似的问题,但真的不知道如何处理可变数量的盒子。下面的代码可以选择最便宜的盒子来装所有的产品,只要一个盒子就可以装下它们。从我们需要多个盒子的那一刻起,程序就失败了。
盒子和产品:
约束:
一个可能的查询要求包装 4 种产品(编号 2、1、3 和 5)
但是,当我们的订单中有更多产品无法放入一个盒子时,我该如何建模多个盒子?
非常感谢任何帮助或示例!
java - 如何使用 JNA 将 java 原始数组传递给 C dll?
使用 JNA 将 java 代码映射到 DLL时,当 C 的函数参数是指针时,应该如何在 C 调用中传递/使用 java 数组( int[]
, )?double[]
我正面临一个错误,我认为它在我将数组映射到 C 的某个地方。
我尝试了什么:以及我正在尝试修复的错误
对于我的项目,我需要重组clp-java后面的代码库。这样做时,我有一个 C 头文件,其中包含以下函数,它为 LP 问题添加约束(例如:)2.25*x1 - 3.3*x2 =4
。
在 java 中,我有rowLower
、rowUpper
、和作为 java 数组(其中之一)。clp-java使用 BridJ,上面的函数是通过rowStarts
columnscolumns
elements
int[]
double[]
使用纯 JNA,JNA 文档指出数组映射到指针,因此对 C 函数的调用将是:
不幸的是,当我将相同的数组传递给这两种方法并在内存中检索数据时,我对约束中的第二个变量得到不同的答案(第一个没问题):BridJ 产生 -3.3,我的 JNA 方法输出 1.777E-307。相同的 DLL,相同的机器(Java 11)。
在互联网上,我找到了这个例子,它将 Java 中的一个数组映射到一个 JNA 指针,并将这个指针传递给 C 函数。我尝试使用:
虽然如果我在我的 JNA 函数调用中使用它(并相应地更改 JNA 接口),我会收到一个 Java 错误“无效的内存访问”。根据这个 StackOverflow Q/A解决这个问题(偏移量setInt()
需要移动Native.getNativeSize(Integer.TYPE)
,显示相同的错误输出(x2 的系数是 1.777E-307 而不是 -3.3)
额外信息:我使用以下函数/方法检查系数:
db2 - 通过 Cl 程序将 CSV 文件从 AS400 导出到我的电脑
我想将通过查询创建的数据库文件以 csv 文件的形式从 AS400 机器导出到我的电脑。
有没有办法通过 cl 程序创建 AS400 和我的电脑的连接?
可以从以下代码中得出我想要做什么的想法:
我以某种方式获取我的数据库文件,在我的 pc 中给出我希望它保存的路径,最后相应地运行 pc 命令
prolog - 使用 CLP(FD) 进行图形着色
我正在尝试使用 Prolog 中的 CLP(FD) 解决地图/图形着色问题。我从论文“CLP(FD) 和 ASP 解决方案对 NP 完全问题的比较”中获取了谓词,并尝试使用以下示例:
但是当我运行查询时
create_output([1,2,3,4,5],[a,b,c,d],A).
即使对于此图表,它也给了我错误,它只能使用 4 种颜色(a、b、c、d)。当我添加另一种颜色时它工作正常,似乎节点集的大小应该与颜色集相同。但这不是地图着色应该做的。任何人都能够帮助我理解上述谓词有什么问题?
list - CLP(Prolog)中的约束列表长度
我有一个优化问题,我想最小化我尚未构建的列表的长度。这里的语言是 Prolog,使用 swipl 的 clpfd 库。
类似的东西pred(L), length(L,N), labeling([min(N)],[....]).
问题是:length/2 已经设置了长度,即使 L 是一个变量,所以这不是 CLP 优化之后。那么,我可以在不实例化 N 的情况下以某种方式将 L 的长度限制为 N 吗?如果我知道 N 的上限(我知道),也许可以使用具体化 - 但这听起来非常复杂?TBH 我有类似的问题,我的 pred/1 事情停止了,以承诺特定的列表长度,但我主要是对那个长度的事情感到好奇。
optimization - 时间表和学生分配
我想根据学生的意愿优化课程分配。每个学生用数字给所有课程打分(例如1-6,越多越好)20门课程被分配到5个时间段,因此每个时间段中3-6门课程是同步的。我正在寻找课程的最佳时间表和学生的课程分配,以使全球成绩总和最大。
我的问题是冲突,一个学生不能在同一时间段参加两门课程。在 LP 公式中,我有两个布尔变量的乘积
这显然不是线性的,必须用松弛变量和许多松弛变量来解决。甚至更多新的约束。只有非常小的问题是可以解决的。如何改进我的模型?
db2 - 从 CLP 中的另一个脚本调用 sql 脚本
我在 Unix 上使用 DB2,我想调用一个在其中运行其他脚本的主脚本。请注意,我正在使用 CLP。
主脚本在 Oracle 中如下所示:
@@script1 @@script2 等
是否可以使用 CLP 在 DB2 中实现这一点?
请注意,我不想使用 bash 脚本来解决问题。
ibm-midrange - 运行 QSHELL 脚本的 REST webervice
我有一个运行 RPG 程序的 REST Web 服务,因为我需要使用 Openssl 加密一些数据我已经构建了一个 shell 脚本,它通过 ENV vars 接收数据并在数据区域中发送数据。
Rest_RPG 调用运行 qsh 脚本的 CLP,并从数据区检索数据。如果我以交互方式运行 cl,它会完美运行,并且它会从数据区域检索数据,但是当从 REST Web 服务调用时它不会检索任何内容,我已将 QTMHHTTP 和 QTMHHTP1 授权给 QGPL,但没有运气,有什么想法吗?
脚本:打印 -nr $PASS | openssl enc -aes-128-ecb -K $KEY_HEX -nosalt -base64 | 数据区 -wl $DTAPASS
CLP: CRTDTAARA DTAARA(QGPL/DTAPASS) TYPE(*CHAR) LEN(512) AUT(*ALL) ADDENVVAR ENVVAR(PASS) VALUE(&PPASS) CCSID(*JOB) REPLACE(*YES) qsh('/tmp/script. sh') RTVDTAARA DTAARAQGPL/DTAPASS) RTNVAR(&ENC_PASS)