编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   
 3d中奖规则嵌入了cobol
指数 -> 编程,3d中奖规则. -> 3d中奖规则提交
查看上一个主题 可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
Btiffin.




邮政发布: 星期五01,2013 6:37 PM  帖子主题:3d中奖规则嵌入COBOL

满足,

老家伙喜欢cobol,你也应该。真的。有一天可能会得分银行,或政府演出。

代码:

ocobol.>>源格式是固定的
      *>************************************************** *************
      *> Author:    Brian Tiffin
      *> Date:      20130126
      *> Purpose:   Embed 3d中奖规则
      *> Tectonics:cobc -x cobkat.cob -lpython2.6
      *>     NOTES:   泄漏,没有py_decref宏。
      *>************************************************** *************
       识别司。
       program-id. cobkat.

       data division.
       工作存储部分。
       77 python-name          usage pointer.
       77 python-module        usage pointer.
       77 python-dict          usage pointer.
       77 python-func          usage pointer.
       77 python-stringer      usage pointer.
       77 python-args          usage pointer.
       77 python-value         usage pointer.
   
       01 COBOL缓冲区指针使用指针。   
       01 cobol-buffer         pic x(80)                       based.
       01 cobol-string         pic x(80).

       01 cobol-integer        usage binary-long.

       01 command-line-args    pic x(80).

      *>************************************************** *************
       procedure division.
      *>让3d中奖规则扫描当前工作目录脚本
       set environment "PYTHONPATH" to "."

      *>初始引擎,提示如果链接lib问题
       call "Py_Initialize"
           on exception
               display "链接与-lpython的cobpy" end-display
       end-call
       
      *>3d中奖规则喜欢Unicode中的模块名称
       call "pyunicodeucs4_fromstring." using
           by reference "pythonfile" & x"00"
           返回python名称
           on exception
               display "unicode problem" end-display
       end-call

      *>使用3d中奖规则Path导入模块
       call "PyImport_Import" using
           by value python-name
           返回3d中奖规则模块
           on exception
               display "this would be borked" end-display
       end-call

       如果python模块等于null
           display "在pythonpath中没有pythonfile.py" end-display
       end-if

      *>在模块对象中,属性是"pthonfunction"
       call "pyobject_getattrtring." using
           按值3d中奖规则-module
           by reference "pythonfunction" & x"00"
           返回3d中奖规则-Func
           在例外继续
       end-call

      *>
      *>错误处理现在略了出来
      *>

      *>3d中奖规则function采用单个参数
       call "PyTuple_New" using
           by value 1
           返回python-args
       end-call
 
      *>类型的类型,硬编码为最终的答案
       call "PyLong_FromLong" using
           by value 42
           返回3d中奖规则-value
       end-call

      *> set first (only)论证元组的元素
       call "PyTuple_SetItem" using
           by value python-args
           by value 0
           按值3d中奖规则-value
       end-call

      *>调用函数,参数为python编组
       call "PyObject_CallObject" using
           by value python-func
           by value python-args
           返回3d中奖规则-value
       end-call

      *>我们知道我们得到了长时间,希望1764年
       call "PyLong_AsLong" using
           按值3d中奖规则-value
           返回cobol-integer
       end-call
       display "3d中奖规则 returned: "COBOL-INTEGER结束显示

      *>************************************************** ********** *<
      *>接口到函数占用字符串和返回字符串
       call "pyobject_getattrtring." using
           按值3d中奖规则-module
           by reference "pythonstringer" & x"00"
           返回3d中奖规则-Stringer
       end-call

       call "PyTuple_New" using
           by value 1
           返回python-args
       end-call
 
      *>使用OpenCobol命令参数
       接受来自命令行的命令行args-accept
       call "PyString_FromString" using
           by reference
               function concatenate(
                   function trim(command-line-args)
                   x"00")
           返回3d中奖规则-value
       end-call

      *>将函数参数元组设置为指向CLI args
       call "PyTuple_SetItem" using
           by value python-args
           by value 0
           按值3d中奖规则-value
       end-call
 
      *> call the "pythonstringer" function
       call "PyObject_CallObject" using
           按值3d中奖规则-Stringer
           by value python-args
           返回3d中奖规则-value
       end-call

      *> return as String (用3d中奖规则Stringer MD5六角摘要加工)
       call "PyString_AsString" using
           按值3d中奖规则-value
           返回cobol缓冲区指针
       end-call

      *>删除空字节的一种方法和从C中拉出数据
       将COBOL缓冲区的地址设置为COBOL缓冲区指针
       string
           cobol-buffer由x分隔"00"
           into cobol-string
       end-string
       display "3d中奖规则 returned: "COBOL字符串结束显示

      *> and clear out <*
       call "Py_Finalize" end-call
       goback.
       end program cobkat.


而这个简短的测试python脚本
代码:

#
#opencobol嵌入演示的简单3d中奖规则示例
#
def pythonfunction.(i):
    return i * i

进口散列
def pythonstringer(s):
    sum = hashlib.md5()
    sum.update(s)
    return s + ": " + sum.hexdigest()


安装了OpenCobol 1.1,3d中奖规则 2.6(在这种情况下)编译和运行为:

代码:

$ cobc -x -lpython2.6 cobkat.cob
$ ./cobkat一些命令行参数获取md5
3d中奖规则返回: +0000001764
3d中奖规则返回:一些命令行参数获取md5:7015E114DB6F4D41D7458CEF9E6B5E49                                             


干杯
赞助
赞助
赞助
赞助
从上一个显示帖子:   
   指数 -> 编程,3d中奖规则. -> 3d中奖规则提交
查看上一个主题 告诉一个朋友可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题

11  [ 1 Posts ]
跳到:   


Style:  
搜索: