IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

从报告中选择电子邮件ID。


IBM大型机论坛 -> 清单& REXX
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
abhit007

新的用户


已加入:2006年10月18日
帖子:10
地点:班加罗尔

发布发表:2012年3月7日星期三下午12:03
引用回复

嗨,大家好,

我在这里面临一个问题。我想编写一个REXX程序来提取报告中存在的所有电子邮件ID。例如。

XYZ.ABC.DEF.GIH(PS)
****************************************************** ************
此报告用于查找新的电子邮件ID
介绍了
****************************************************** ************
(ABC @ GMAIL.COM,ABC.XYZ @ GMAIL.COM) -
(SUPPORT@GMAIL.COM CARDSSD@GMAIL.COM)-
(REPORT@GMAIL.COM )-
(SUPPORT@GMAIL.COM )-
(XXXXXXXXXXX@GMAIL.COM) -
(SUPPORT@GMAIL.COM )-
(BONUS@GMAIL.COM, 产品@ YAHOO.CO.IN)-


从上面的报告中,我想选择所有电子邮件ID并以其他形式写为:
ABC@GMAIL.COM
ABC.XYZ@GMAIL.COM
支持@ GMAIL.COM
CARDSSD@GMAIL.COM
报告@ GMAIL.COM
支持@ GMAIL.COM
XXXXXXXXXXX@GMAIL.COM
支持@ GMAIL.COM
奖金@ GMAIL.COM
产品@ YAHOO.CO.IN

任何想法??

谢谢,
阿比舍克
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2012年3月7日星期三下午12:26
引用回复

你被困在哪里....
在逻辑还是代码上?
回到顶部
查看用户资料 发送私信
abhit007

新的用户


已加入:2006年10月18日
帖子:10
地点:班加罗尔

发布发表:2012年3月7日星期三下午1点03分
引用回复

首先,我对逻辑本身感到震惊。 :P
回到顶部
查看用户资料 发送私信
dbzTHEdinosauer

全球主持人


已加入:2006年10月20日
帖子:6967
位置:瓷宝座

发布发表:2012年3月7日星期三下午1点10分
引用回复

1.
访问记录
隔离并存储电子邮件地址
更多记录?转到1
输出所有存储的电子邮件地址

您在cobol中的逻辑是什么?

为什么选择这个项目的REXX?

报告中有几行?
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2012年3月7日星期三下午1点11分
引用回复

标识第一个单词或按位置(%e-mail)开头的行。

删除第一个单词,左括号和右括号。

剩下的每个单词都当作电子邮件地址。
回到顶部
查看用户资料 发送私信
普里诺
警告:1

高级会员


已加入:2009年2月7日
职位:1241
地点:立陶宛维尔纽斯

发布发表:2012年3月7日星期三下午2点06分
引用回复

翻译所有非字母数字的'@'和'。并使用REXX的“单词”和“单词”功能。任何包含“ @”符号的“单词”都是(可能是)电子邮件地址。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2012年3月7日星期三下午2点32分
引用回复

更快地编写/测试发布试图解释的代码


码:
#!/ usr / bin / rexx

清单.1 = "%EMAIL (ABC @ GMAIL.COM,ABC.XYZ @ GMAIL.COM) "
清单.2 ="%EMAIL (SUPPORT@GMAIL.COM CARDSSD@GMAIL.COM) "
清单.3 ="%EMAIL (REPORT@GMAIL.COM ) "
清单.4 ="%EMAIL (SUPPORT@GMAIL.COM ) "
清单.5 ="%EMAIL (XXXXXXXXXXX@GMAIL.COM) "
清单.5 ="%EMAIL (SUPPORT@GMAIL.COM ) "
清单.6 ="%EMAIL (BONUS@GMAIL.COM, 产品@ YAHOO.CO.IN) "
清单.0 = 6

addr.0 = 0
do  i = 1 to 清单.0
    增益=清单.i
    if  left(buff,6) = "%EMAIL" then do
       / *检查正确分隔的列表* /
        if  (pos("(",buff)) = 0 | ,
            (pos(")",buff)) = 0 then do
            say " 不良的EMAIL记录" right(i,2) buff
            iterate
        结束
       用解析var buff。"(" 清单 ")" .
       / *同时提供以逗号/ wsp分隔的地址* /
        清单 = translate(list," ",",")
        do  j = 1 to 字s(list)
            a = addr.0 + 1
            addr.a = strip(word(list,j))
            addr.0 = a
        结束
    结束
结束
do  a = 1 to addr.0
    say a addr.a
结束


如果输入格式更改,请自己做一些工作
例如,您可能需要从多卡列表中进行构建
回到顶部
查看用户资料 发送私信
abhit007

新的用户


已加入:2006年10月18日
帖子:10
地点:班加罗尔

发布发表:2012年3月7日星期三下午3:57
引用回复

嗨,恩里科,

经过一些调整,您提供的代码可以正常工作。

我正在将报告从数据集中读入一个词干,然后运行您提供的代码以过滤出邮件地址。逗号和空格是唯一的分隔符。
由于不是一行中唯一的唯一内容,因此我删除了代码的第一段。但是,仍然存在一些小问题,因为它会采用特殊字符(例如“-”)并将其写在新行中。

大家好,

也感谢您的帮助。



非常感谢您的所有帮助。
阿比舍克
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2012年3月7日,星期三8:24 pm
引用回复

发布一个示例,说明我的代码失败了,
我发布的代码段将正确解析括号内的任何列表
并正确构建单个外观,除非包含逗号或空格
回到顶部
查看用户资料 发送私信
唐·雷西

活跃的成员


已加入:2010年7月6日
帖子:696
地点:加拿大安大略省惠特比

发布发表:2012年3月7日,星期三9:45 pm
引用回复

Enrico,请返回您的代码示例:在我的显示器上,小写字母“ l”和数字“ 1”在代码窗口中显示相同。

即,“ do l = 1到list.0”行看起来像“ do l = 1到list.0” icon_smile.gif
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2012年3月7日星期三晚上10:12
引用回复

1l1l1l1l1l1l1l1l1l1
码:
1l1l1l1l1l1l1l1l1l1


1l1l1l1l1l1l1l1l1l1

看来,这不仅仅是恩里科的东西。一个人发现它花了多少年(做得好,唐!)?从编码内容中复制/粘贴时,您将得到正确的选择(如上所述)(首先在预览中键入,复制/粘贴,编码,预览,从编码内容中复制/粘贴)。

还是这是最近的变化?我们怎么能知道:-)

编辑:无论如何,这是使用Firefox的。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2012年3月7日,星期三10:19 pm
引用回复

引用:
Enrico,请返回您的代码示例:在我的显示器上,小写字母“ l”和数字“ 1”在代码窗口中显示相同。

这是某些字体的常见问题

我的代码示例按编码方式运作良好

出于礼貌,我编辑了要使用的代码 j 对于内循环和 i 对于外部
回到顶部
查看用户资料 发送私信
dbzTHEdinosauer

全球主持人


已加入:2006年10月20日
帖子:6967
位置:瓷宝座

发布发表:2012年3月7日,星期三10:52 pm
引用回复

我个人从不使用单个alpha i,l或o作为变量
因为人们倾向于看到他们想要的
而不是那里。
回到顶部
查看用户资料 发送私信
abhit007

新的用户


已加入:2006年10月18日
帖子:10
地点:班加罗尔

发布发表:2012年3月8日星期四1:00上午
引用回复

嗨,恩里科,

您的代码运行良好。我只需要更改它以适合我的需求。

大家好,

问题的下一部分:

现在,我必须从一个数据集中获取所有这些ID,然后在我的数据库(另一个数据集)中进行搜索以查找是否存在。如果不存在任何地址,则写入另一个文件。

该数据库也不是经过格式化的数据库,它具有随机的电子邮件ID,因此我们可能不得不使用POS或类似的工具。

你能帮忙吗?

谢谢,
阿比舍克
回到顶部
查看用户资料 发送私信
佩德罗

全球主持人


已加入:2006年9月1日
帖子:2214
地点:硅谷

发布发表:2012年3月8日,星期四,10:44 pm
引用回复

引用:
该数据库也不是经过格式化的数据库,它具有随机的电子邮件ID,因此我们可能不得不使用POS或类似的工具。


1.将所有'(',')'和','更改为空白。
2.对于每行的每个单词,请使用POS功能查看它是否具有'@'字符。
回到顶部
查看用户资料 发送私信
abhit007

新的用户


已加入:2006年10月18日
帖子:10
地点:班加罗尔

发布发表于:星期五三月09,2012 11:10上午
引用回复

恩里科·索里切蒂写道:
发布一个示例,说明我的代码失败了,
我发布的代码段将正确解析括号内的任何列表
并正确构建单个外观,除非包含逗号或空格


嗨,恩里科,

有一个问题。在某些情况下,括号不存在。例如

%YMAIL(XYZVITY @ GMAIL.COM,XG.RPCZPYRATIZNX @ GMAIL.COM,-
CZYRYL.CZIAM@GMAIL.COM,XYNGCZAI.CZAN @ GMAIL.COM,-
(DZZZA.AZMAD @ GMAIL.COM,MARIYTTA.BZZCZRRYJADZ @ GMAIL.COM,-
DYVAXXY.ATTZKARYN@GMAIL.COM,ALKA.JZA @ GMAIL.COM,-
AAAT.XINGZ3@GMAIL.COM,VIXZAL.ZJZA @ GMAIL.COM)-
FRZM(XYZVITY@GMAIL.COM)-

如何解析?

谢谢,
阿布舍克
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表于:星期五三月09,2012 11:36上午
引用回复

我记下有关...的信息。
引用:
例如,您可能需要从多卡列表中进行构建

暗示某种延续...

但是你必须设定一些规则 ...

从解析的角度来看,字符串连接/序列是一个表达式
并且在任何语言中,表达式中的括号必须保持平衡

您发布的示例不可解析,因为开括号和闭括号不平衡

如果您的输入错误,您不能责怪解析!
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表于:星期五三月09,2012 11:40上午
引用回复

这是一个片段,它将解析一个正确的带括号的字符串

码:


#!/ usr / bin / rexx

清单.1 = "%EMAIL (ABC @ GMAIL.COM,ABC.XYZ @ GMAIL.COM) "
清单.2 ="%EMAIL (SUPPORT@GMAIL.COM CARDSSD@GMAIL.COM -"
清单.3 ="REPORT@GMAIL.COM - "
清单.4 ="SUPPORT@GMAIL.COM ) "
清单.5 ="%EMAIL (XXXXX_XXX.XXX@somefuckng-strange.address.COM) "
清单.6 ="%EMAIL (SUPPORT@GMAIL.COM ) "
清单.7 ="%EMAIL (BONUS@GMAIL.COM, 产品@ YAHOO.CO.IN) "
清单.0 = 7

addr.0 = 0
indx = 1
增益=""
做一会儿( indx <= 清单.0 )

    增益=strip(list.indx)
    say indx "*1 " buff
    indx = indx + 1
    do  while ( right(buff,1) = "-" & indx <= 清单.0 )
        增益=strip(buff,,"-") strip(list.indx)
        say indx "*2 " buff
        indx = indx + 1
    结束
   / *对最后一张卡进行错误的继续检查* /
    say indx "*3 " buff
    if  left(buff,6) = "%EMAIL" then do
       / *检查正确分隔的列表* /
        if  (pos("(",buff)) = 0 | ,
            (pos(")",buff)) = 0 then do
            say "bad EMAIL record" right(indx,2) buff
            iterate
        结束
       用解析var buff。"(" 清单 ")" .
       / *同时提供以逗号/ wsp分隔的地址* /
        清单 = translate(list," ",",")
        do  i = 1 to 字s(list)
            a = addr.0 + 1
            addr.a = strip(word(list,i))
            addr.0 = a
        结束
    结束
结束
do  a = 1 to addr.0
    say a addr.a
结束


回到顶部
查看用户资料 发送私信
abhit007

新的用户


已加入:2006年10月18日
帖子:10
地点:班加罗尔

发布发表于:星期五三月09,2012 11:42上午
引用回复

引用:

您发布的示例不可解析,因为开括号和闭括号不平衡


嗨,恩里科,

(XYZVITY@GMAIL.COM,XG.RPCZPYRATIZNX@GMAIL.COM, -
CZYRYL.CZIAM@GMAIL.COM,XYNGCZAI.CZAN @ GMAIL.COM,-
DZZZA.AZMAD@GMAIL.COM,MARIYTTA.BZZCZRRYJADZ @ GMAIL.COM,-
DYVAXXY.ATTZKARYN@GMAIL.COM,ALKA.JZA @ GMAIL.COM,-
AAAT.XINGZ3@GMAIL.COM,VIXZAL.ZJZA @ GMAIL.COM)-
FRZM(XYZVITY@GMAIL.COM)-

忽略上一篇文章中的示例 ,请考虑括号平衡的示例。
由于存在多个ID,因此它将出现在多行中。

谢谢
阿比舍克
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表于:星期五三月09,2012 11:44上午
引用回复

那呢
引用:
FRZM (XYZVITY@GMAIL.COM)
?
回到顶部
查看用户资料 发送私信
阿努·达万(Anuj Dhawan)

高级会员


已加入:2006年4月22日
帖子:6250
地点:印度孟买

发布发表:2012年3月9日,星期五6:09 pm
引用回复

abhit007写道:
忽略上一篇文章中的示例 ,请考虑括号平衡的示例。
由于存在多个ID,因此它将出现在多行中。
恩里科(Enrico),在远距离合同上工作吗? icon_smile.gif
回到顶部
查看用户资料 发送私信
佩德罗

全球主持人


已加入:2006年9月1日
帖子:2214
地点:硅谷

发布发表:2012年3月9日,星期五8:18 pm
引用回复

我认为这是更简单的逻辑:
引用:
1.将所有'(',')'和','更改为空白。
2.对于每行的每个单词,请使用POS功能查看它是否具有'@'字符。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2012年3月10日星期六1:41 am
引用回复

引用:
恩里科(Enrico),在远距离合同上工作吗?


不!
编写扫描仪和解析器是我的首选主题之一

因此,当我看到相关内容时,我喜欢探索所有替代方法,不仅是工作,
但从扫描/解析算法的角度来看也不是小事

请继续关注,我有一个不错的摘要!
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> 清单& REXX

 


类似主题
话题 论坛 回覆
No new 位置ts TXT2PDF,然后SMTP通过电子邮件发送PDF JCL和VSAM 4
No new 位置ts SARBCH REPORT DD写入错误 CA产品 1
No new 位置ts 从CA Disp中以ARCHIVE格式卸载报告... CA产品 0
No new 位置ts Cobol报告作者的问题 COBOL程式设计 3
No new 位置ts 从Zeke调度程序生成报告 Compuware和其他工具 2
搜索我们的论坛:


回到顶部